ETH Price: $3,112.84 (+1.48%)
Gas: 21 Gwei

Token

 

Overview

Max Total Supply

294

Holders

292

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0x73ea52b81cf18c6db256518576ba23a4e89eecda
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EnchantedGolemsCrystalFragments

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 3 of 10: EnchantedGolemsCrystalFragments.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./ERC1155.sol";
import "./Ownable.sol";

contract EnchantedGolemsCrystalFragments is ERC1155, Ownable {
    using Address for address;
    
    bool public manualMintAllowed = true;
    
    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory _uri)
        ERC1155(_uri)
    {}
    
    /**
     * @dev Lock further manual minting by owner
     */
    function disableManualMint() public onlyOwner {
        manualMintAllowed = false;
    }
    
    /**
     * @dev Updates the metadata URI
     */
    function updateUri(string calldata newUri) public onlyOwner {
        _setURI(newUri);
    }
            
    /**
     * @dev Airdrop tokens to owners
     */
    function mintOwner(address[] calldata owners) public onlyOwner {
      require(manualMintAllowed, "Not allowed");
         
      for (uint256 i = 0; i < owners.length; i++) {
        _mint(owners[i], 0, 1, "");
      }
    }
}

File 1 of 10: Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 2 of 10: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

File 4 of 10: ERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC1155.sol";
import "./IERC1155Receiver.sol";
import "./IERC1155MetadataURI.sol";
import "./Address.sol";
import "./Context.sol";
import "./ERC165.sol";

/**
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

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

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    constructor(string memory uri_) {
        _setURI(uri_);
    }

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

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");

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

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

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][account] += amount;
        emit TransferSingle(operator, address(0), account, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `account`
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address account,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 accountBalance = _balances[id][account];
        require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][account] = accountBalance - amount;
        }

        emit TransferSingle(operator, account, address(0), id, amount);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(
        address account,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 accountBalance = _balances[id][account];
            require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][account] = accountBalance - amount;
            }
        }

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

File 5 of 10: ERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC165.sol";

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

File 6 of 10: IERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

File 7 of 10: IERC1155MetadataURI.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC1155.sol";

/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

File 8 of 10: IERC1155Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
        @dev Handles the receipt of a single ERC1155 token type. This function is
        called at the end of a `safeTransferFrom` after the balance has been updated.
        To accept the transfer, this must return
        `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
        (i.e. 0xf23a6e61, or its own function selector).
        @param operator The address which initiated the transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param id The ID of the token being transferred
        @param value The amount of tokens being transferred
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
        @dev Handles the receipt of a multiple ERC1155 token types. This function
        is called at the end of a `safeBatchTransferFrom` after the balances have
        been updated. To accept the transfer(s), this must return
        `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
        (i.e. 0xbc197c81, or its own function selector).
        @param operator The address which initiated the batch transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param ids An array containing ids of each token being transferred (order and length must match values array)
        @param values An array containing amounts of each token being transferred (order and length must match ids array)
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

File 9 of 10: IERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

File 10 of 10: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";

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

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

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

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableManualMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualMintAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"}],"name":"mintOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUri","type":"string"}],"name":"updateUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526001600360146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162003646380380620036468339818101604052810190620000529190620002a4565b8062000064816200008c60201b60201c565b506200008562000079620000a860201b60201c565b620000b060201b60201c565b5062000479565b8060029080519060200190620000a492919062000176565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805462000184906200038a565b90600052602060002090601f016020900481019282620001a85760008555620001f4565b82601f10620001c357805160ff1916838001178555620001f4565b82800160010185558215620001f4579182015b82811115620001f3578251825591602001919060010190620001d6565b5b50905062000203919062000207565b5090565b5b808211156200022257600081600090555060010162000208565b5090565b60006200023d62000237846200031e565b620002f5565b9050828152602081018484840111156200025c576200025b62000459565b5b6200026984828562000354565b509392505050565b600082601f83011262000289576200028862000454565b5b81516200029b84826020860162000226565b91505092915050565b600060208284031215620002bd57620002bc62000463565b5b600082015167ffffffffffffffff811115620002de57620002dd6200045e565b5b620002ec8482850162000271565b91505092915050565b60006200030162000314565b90506200030f8282620003c0565b919050565b6000604051905090565b600067ffffffffffffffff8211156200033c576200033b62000425565b5b620003478262000468565b9050602081019050919050565b60005b838110156200037457808201518184015260208101905062000357565b8381111562000384576000848401525b50505050565b60006002820490506001821680620003a357607f821691505b60208210811415620003ba57620003b9620003f6565b5b50919050565b620003cb8262000468565b810181811067ffffffffffffffff82111715620003ed57620003ec62000425565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6131bd80620004896000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c8063570b3c6a11610097578063dbe7db3b11610066578063dbe7db3b1461025d578063e985e9c514610279578063f242432a146102a9578063f2fde38b146102c5576100f4565b8063570b3c6a146101fd578063715018a6146102195780638da5cb5b14610223578063a22cb46514610241576100f4565b80630f52b76e116100d35780630f52b76e146101895780632be9279d146101935780632eb2c2d6146101b15780634e1273f4146101cd576100f4565b8062fdd58e146100f957806301ffc9a7146101295780630e89341c14610159575b600080fd5b610113600480360381019061010e9190612040565b6102e1565b604051610120919061285a565b60405180910390f35b610143600480360381019061013e9190612145565b6103aa565b604051610150919061265d565b60405180910390f35b610173600480360381019061016e91906121ec565b61048c565b6040516101809190612678565b60405180910390f35b610191610520565b005b61019b6105b9565b6040516101a8919061265d565b60405180910390f35b6101cb60048036038101906101c69190611e9a565b6105cc565b005b6101e760048036038101906101e291906120cd565b61066d565b6040516101f49190612604565b60405180910390f35b6102176004803603810190610212919061219f565b610786565b005b610221610853565b005b61022b6108db565b6040516102389190612527565b60405180910390f35b61025b60048036038101906102569190612000565b610905565b005b61027760048036038101906102729190612080565b610a86565b005b610293600480360381019061028e9190611e5a565b610bbb565b6040516102a0919061265d565b60405180910390f35b6102c360048036038101906102be9190611f69565b610c4f565b005b6102df60048036038101906102da9190611e2d565b610cf0565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610349906126da565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610485575061048482610de8565b5b9050919050565b60606002805461049b90612ac9565b80601f01602080910402602001604051908101604052809291908181526020018280546104c790612ac9565b80156105145780601f106104e957610100808354040283529160200191610514565b820191906000526020600020905b8154815290600101906020018083116104f757829003601f168201915b50505050509050919050565b610528610e52565b73ffffffffffffffffffffffffffffffffffffffff166105466108db565b73ffffffffffffffffffffffffffffffffffffffff161461059c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610593906127ba565b60405180910390fd5b6000600360146101000a81548160ff021916908315150217905550565b600360149054906101000a900460ff1681565b6105d4610e52565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061061a575061061985610614610e52565b610bbb565b5b610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106509061275a565b60405180910390fd5b6106668585858585610e5a565b5050505050565b606081518351146106b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106aa906127fa565b60405180910390fd5b6000835167ffffffffffffffff8111156106d0576106cf612c02565b5b6040519080825280602002602001820160405280156106fe5781602001602082028036833780820191505090505b50905060005b845181101561077b5761074b85828151811061072357610722612bd3565b5b602002602001015185838151811061073e5761073d612bd3565b5b60200260200101516102e1565b82828151811061075e5761075d612bd3565b5b6020026020010181815250508061077490612b2c565b9050610704565b508091505092915050565b61078e610e52565b73ffffffffffffffffffffffffffffffffffffffff166107ac6108db565b73ffffffffffffffffffffffffffffffffffffffff1614610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f9906127ba565b60405180910390fd5b61084f82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061116e565b5050565b61085b610e52565b73ffffffffffffffffffffffffffffffffffffffff166108796108db565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c6906127ba565b60405180910390fd5b6108d96000611188565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8173ffffffffffffffffffffffffffffffffffffffff16610924610e52565b73ffffffffffffffffffffffffffffffffffffffff16141561097b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610972906127da565b60405180910390fd5b8060016000610988610e52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610a35610e52565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a7a919061265d565b60405180910390a35050565b610a8e610e52565b73ffffffffffffffffffffffffffffffffffffffff16610aac6108db565b73ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af9906127ba565b60405180910390fd5b600360149054906101000a900460ff16610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b489061279a565b60405180910390fd5b60005b82829050811015610bb657610ba3838383818110610b7557610b74612bd3565b5b9050602002016020810190610b8a9190611e2d565b600060016040518060200160405280600081525061124e565b8080610bae90612b2c565b915050610b54565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610c57610e52565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c9d5750610c9c85610c97610e52565b610bbb565b5b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd39061271a565b60405180910390fd5b610ce985858585856113e4565b5050505050565b610cf8610e52565b73ffffffffffffffffffffffffffffffffffffffff16610d166108db565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d63906127ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd3906126fa565b60405180910390fd5b610de581611188565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e959061281a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061273a565b60405180910390fd5b6000610f18610e52565b9050610f28818787878787611666565b60005b84518110156110d9576000858281518110610f4957610f48612bd3565b5b602002602001015190506000858381518110610f6857610f67612bd3565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110009061277a565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110be91906129bd565b92505081905550505050806110d290612b2c565b9050610f2b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611150929190612626565b60405180910390a461116681878787878761166e565b505050505050565b8060029080519060200190611184929190611ac9565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b59061283a565b60405180910390fd5b60006112c8610e52565b90506112e9816000876112da88611855565b6112e388611855565b87611666565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461134891906129bd565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516113c6929190612875565b60405180910390a46113dd816000878787876118cf565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b9061273a565b60405180910390fd5b600061145e610e52565b905061147e81878761146f88611855565b61147888611855565b87611666565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c9061277a565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115ca91906129bd565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611647929190612875565b60405180910390a461165d8288888888886118cf565b50505050505050565b505050505050565b61168d8473ffffffffffffffffffffffffffffffffffffffff16611ab6565b1561184d578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016116d3959493929190612542565b602060405180830381600087803b1580156116ed57600080fd5b505af192505050801561171e57506040513d601f19601f8201168201806040525081019061171b9190612172565b60015b6117c45761172a612c31565b806308c379a01415611787575061173f613095565b8061174a5750611789565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e9190612678565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb9061269a565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461184b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611842906126ba565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561187457611873612c02565b5b6040519080825280602002602001820160405280156118a25781602001602082028036833780820191505090505b50905082816000815181106118ba576118b9612bd3565b5b60200260200101818152505080915050919050565b6118ee8473ffffffffffffffffffffffffffffffffffffffff16611ab6565b15611aae578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016119349594939291906125aa565b602060405180830381600087803b15801561194e57600080fd5b505af192505050801561197f57506040513d601f19601f8201168201806040525081019061197c9190612172565b60015b611a255761198b612c31565b806308c379a014156119e857506119a0613095565b806119ab57506119ea565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df9190612678565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c9061269a565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa3906126ba565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054611ad590612ac9565b90600052602060002090601f016020900481019282611af75760008555611b3e565b82601f10611b1057805160ff1916838001178555611b3e565b82800160010185558215611b3e579182015b82811115611b3d578251825591602001919060010190611b22565b5b509050611b4b9190611b4f565b5090565b5b80821115611b68576000816000905550600101611b50565b5090565b6000611b7f611b7a846128c3565b61289e565b90508083825260208201905082856020860282011115611ba257611ba1612c5d565b5b60005b85811015611bd25781611bb88882611c8e565b845260208401935060208301925050600181019050611ba5565b5050509392505050565b6000611bef611bea846128ef565b61289e565b90508083825260208201905082856020860282011115611c1257611c11612c5d565b5b60005b85811015611c425781611c288882611e18565b845260208401935060208301925050600181019050611c15565b5050509392505050565b6000611c5f611c5a8461291b565b61289e565b905082815260208101848484011115611c7b57611c7a612c62565b5b611c86848285612a87565b509392505050565b600081359050611c9d8161312b565b92915050565b60008083601f840112611cb957611cb8612c58565b5b8235905067ffffffffffffffff811115611cd657611cd5612c53565b5b602083019150836020820283011115611cf257611cf1612c5d565b5b9250929050565b600082601f830112611d0e57611d0d612c58565b5b8135611d1e848260208601611b6c565b91505092915050565b600082601f830112611d3c57611d3b612c58565b5b8135611d4c848260208601611bdc565b91505092915050565b600081359050611d6481613142565b92915050565b600081359050611d7981613159565b92915050565b600081519050611d8e81613159565b92915050565b600082601f830112611da957611da8612c58565b5b8135611db9848260208601611c4c565b91505092915050565b60008083601f840112611dd857611dd7612c58565b5b8235905067ffffffffffffffff811115611df557611df4612c53565b5b602083019150836001820283011115611e1157611e10612c5d565b5b9250929050565b600081359050611e2781613170565b92915050565b600060208284031215611e4357611e42612c6c565b5b6000611e5184828501611c8e565b91505092915050565b60008060408385031215611e7157611e70612c6c565b5b6000611e7f85828601611c8e565b9250506020611e9085828601611c8e565b9150509250929050565b600080600080600060a08688031215611eb657611eb5612c6c565b5b6000611ec488828901611c8e565b9550506020611ed588828901611c8e565b945050604086013567ffffffffffffffff811115611ef657611ef5612c67565b5b611f0288828901611d27565b935050606086013567ffffffffffffffff811115611f2357611f22612c67565b5b611f2f88828901611d27565b925050608086013567ffffffffffffffff811115611f5057611f4f612c67565b5b611f5c88828901611d94565b9150509295509295909350565b600080600080600060a08688031215611f8557611f84612c6c565b5b6000611f9388828901611c8e565b9550506020611fa488828901611c8e565b9450506040611fb588828901611e18565b9350506060611fc688828901611e18565b925050608086013567ffffffffffffffff811115611fe757611fe6612c67565b5b611ff388828901611d94565b9150509295509295909350565b6000806040838503121561201757612016612c6c565b5b600061202585828601611c8e565b925050602061203685828601611d55565b9150509250929050565b6000806040838503121561205757612056612c6c565b5b600061206585828601611c8e565b925050602061207685828601611e18565b9150509250929050565b6000806020838503121561209757612096612c6c565b5b600083013567ffffffffffffffff8111156120b5576120b4612c67565b5b6120c185828601611ca3565b92509250509250929050565b600080604083850312156120e4576120e3612c6c565b5b600083013567ffffffffffffffff81111561210257612101612c67565b5b61210e85828601611cf9565b925050602083013567ffffffffffffffff81111561212f5761212e612c67565b5b61213b85828601611d27565b9150509250929050565b60006020828403121561215b5761215a612c6c565b5b600061216984828501611d6a565b91505092915050565b60006020828403121561218857612187612c6c565b5b600061219684828501611d7f565b91505092915050565b600080602083850312156121b6576121b5612c6c565b5b600083013567ffffffffffffffff8111156121d4576121d3612c67565b5b6121e085828601611dc2565b92509250509250929050565b60006020828403121561220257612201612c6c565b5b600061221084828501611e18565b91505092915050565b60006122258383612509565b60208301905092915050565b61223a81612a13565b82525050565b600061224b8261295c565b612255818561298a565b93506122608361294c565b8060005b838110156122915781516122788882612219565b97506122838361297d565b925050600181019050612264565b5085935050505092915050565b6122a781612a25565b82525050565b60006122b882612967565b6122c2818561299b565b93506122d2818560208601612a96565b6122db81612c71565b840191505092915050565b60006122f182612972565b6122fb81856129ac565b935061230b818560208601612a96565b61231481612c71565b840191505092915050565b600061232c6034836129ac565b915061233782612c8f565b604082019050919050565b600061234f6028836129ac565b915061235a82612cde565b604082019050919050565b6000612372602b836129ac565b915061237d82612d2d565b604082019050919050565b60006123956026836129ac565b91506123a082612d7c565b604082019050919050565b60006123b86029836129ac565b91506123c382612dcb565b604082019050919050565b60006123db6025836129ac565b91506123e682612e1a565b604082019050919050565b60006123fe6032836129ac565b915061240982612e69565b604082019050919050565b6000612421602a836129ac565b915061242c82612eb8565b604082019050919050565b6000612444600b836129ac565b915061244f82612f07565b602082019050919050565b60006124676020836129ac565b915061247282612f30565b602082019050919050565b600061248a6029836129ac565b915061249582612f59565b604082019050919050565b60006124ad6029836129ac565b91506124b882612fa8565b604082019050919050565b60006124d06028836129ac565b91506124db82612ff7565b604082019050919050565b60006124f36021836129ac565b91506124fe82613046565b604082019050919050565b61251281612a7d565b82525050565b61252181612a7d565b82525050565b600060208201905061253c6000830184612231565b92915050565b600060a0820190506125576000830188612231565b6125646020830187612231565b81810360408301526125768186612240565b9050818103606083015261258a8185612240565b9050818103608083015261259e81846122ad565b90509695505050505050565b600060a0820190506125bf6000830188612231565b6125cc6020830187612231565b6125d96040830186612518565b6125e66060830185612518565b81810360808301526125f881846122ad565b90509695505050505050565b6000602082019050818103600083015261261e8184612240565b905092915050565b600060408201905081810360008301526126408185612240565b905081810360208301526126548184612240565b90509392505050565b6000602082019050612672600083018461229e565b92915050565b6000602082019050818103600083015261269281846122e6565b905092915050565b600060208201905081810360008301526126b38161231f565b9050919050565b600060208201905081810360008301526126d381612342565b9050919050565b600060208201905081810360008301526126f381612365565b9050919050565b6000602082019050818103600083015261271381612388565b9050919050565b60006020820190508181036000830152612733816123ab565b9050919050565b60006020820190508181036000830152612753816123ce565b9050919050565b60006020820190508181036000830152612773816123f1565b9050919050565b6000602082019050818103600083015261279381612414565b9050919050565b600060208201905081810360008301526127b381612437565b9050919050565b600060208201905081810360008301526127d38161245a565b9050919050565b600060208201905081810360008301526127f38161247d565b9050919050565b60006020820190508181036000830152612813816124a0565b9050919050565b60006020820190508181036000830152612833816124c3565b9050919050565b60006020820190508181036000830152612853816124e6565b9050919050565b600060208201905061286f6000830184612518565b92915050565b600060408201905061288a6000830185612518565b6128976020830184612518565b9392505050565b60006128a86128b9565b90506128b48282612afb565b919050565b6000604051905090565b600067ffffffffffffffff8211156128de576128dd612c02565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561290a57612909612c02565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561293657612935612c02565b5b61293f82612c71565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006129c882612a7d565b91506129d383612a7d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a0857612a07612b75565b5b828201905092915050565b6000612a1e82612a5d565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612ab4578082015181840152602081019050612a99565b83811115612ac3576000848401525b50505050565b60006002820490506001821680612ae157607f821691505b60208210811415612af557612af4612ba4565b5b50919050565b612b0482612c71565b810181811067ffffffffffffffff82111715612b2357612b22612c02565b5b80604052505050565b6000612b3782612a7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b6a57612b69612b75565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612c505760046000803e612c4d600051612c82565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d10156130a557613128565b6130ad6128b9565b60043d036004823e80513d602482011167ffffffffffffffff821117156130d5575050613128565b808201805167ffffffffffffffff8111156130f35750505050613128565b80602083010160043d038501811115613110575050505050613128565b61311f82602001850186612afb565b82955050505050505b90565b61313481612a13565b811461313f57600080fd5b50565b61314b81612a25565b811461315657600080fd5b50565b61316281612a31565b811461316d57600080fd5b50565b61317981612a7d565b811461318457600080fd5b5056fea26469706673582212202339a968482b19728c5387ac5373d9f8cf1c090c444209a05e7b99d7a4bff48564736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f617277656176652e6e65742f7847373844733767433538384e496d6a6876523256517939734154536a754f434e663353646138626d347700

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f45760003560e01c8063570b3c6a11610097578063dbe7db3b11610066578063dbe7db3b1461025d578063e985e9c514610279578063f242432a146102a9578063f2fde38b146102c5576100f4565b8063570b3c6a146101fd578063715018a6146102195780638da5cb5b14610223578063a22cb46514610241576100f4565b80630f52b76e116100d35780630f52b76e146101895780632be9279d146101935780632eb2c2d6146101b15780634e1273f4146101cd576100f4565b8062fdd58e146100f957806301ffc9a7146101295780630e89341c14610159575b600080fd5b610113600480360381019061010e9190612040565b6102e1565b604051610120919061285a565b60405180910390f35b610143600480360381019061013e9190612145565b6103aa565b604051610150919061265d565b60405180910390f35b610173600480360381019061016e91906121ec565b61048c565b6040516101809190612678565b60405180910390f35b610191610520565b005b61019b6105b9565b6040516101a8919061265d565b60405180910390f35b6101cb60048036038101906101c69190611e9a565b6105cc565b005b6101e760048036038101906101e291906120cd565b61066d565b6040516101f49190612604565b60405180910390f35b6102176004803603810190610212919061219f565b610786565b005b610221610853565b005b61022b6108db565b6040516102389190612527565b60405180910390f35b61025b60048036038101906102569190612000565b610905565b005b61027760048036038101906102729190612080565b610a86565b005b610293600480360381019061028e9190611e5a565b610bbb565b6040516102a0919061265d565b60405180910390f35b6102c360048036038101906102be9190611f69565b610c4f565b005b6102df60048036038101906102da9190611e2d565b610cf0565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610349906126da565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610485575061048482610de8565b5b9050919050565b60606002805461049b90612ac9565b80601f01602080910402602001604051908101604052809291908181526020018280546104c790612ac9565b80156105145780601f106104e957610100808354040283529160200191610514565b820191906000526020600020905b8154815290600101906020018083116104f757829003601f168201915b50505050509050919050565b610528610e52565b73ffffffffffffffffffffffffffffffffffffffff166105466108db565b73ffffffffffffffffffffffffffffffffffffffff161461059c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610593906127ba565b60405180910390fd5b6000600360146101000a81548160ff021916908315150217905550565b600360149054906101000a900460ff1681565b6105d4610e52565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061061a575061061985610614610e52565b610bbb565b5b610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106509061275a565b60405180910390fd5b6106668585858585610e5a565b5050505050565b606081518351146106b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106aa906127fa565b60405180910390fd5b6000835167ffffffffffffffff8111156106d0576106cf612c02565b5b6040519080825280602002602001820160405280156106fe5781602001602082028036833780820191505090505b50905060005b845181101561077b5761074b85828151811061072357610722612bd3565b5b602002602001015185838151811061073e5761073d612bd3565b5b60200260200101516102e1565b82828151811061075e5761075d612bd3565b5b6020026020010181815250508061077490612b2c565b9050610704565b508091505092915050565b61078e610e52565b73ffffffffffffffffffffffffffffffffffffffff166107ac6108db565b73ffffffffffffffffffffffffffffffffffffffff1614610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f9906127ba565b60405180910390fd5b61084f82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061116e565b5050565b61085b610e52565b73ffffffffffffffffffffffffffffffffffffffff166108796108db565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c6906127ba565b60405180910390fd5b6108d96000611188565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8173ffffffffffffffffffffffffffffffffffffffff16610924610e52565b73ffffffffffffffffffffffffffffffffffffffff16141561097b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610972906127da565b60405180910390fd5b8060016000610988610e52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610a35610e52565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a7a919061265d565b60405180910390a35050565b610a8e610e52565b73ffffffffffffffffffffffffffffffffffffffff16610aac6108db565b73ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af9906127ba565b60405180910390fd5b600360149054906101000a900460ff16610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b489061279a565b60405180910390fd5b60005b82829050811015610bb657610ba3838383818110610b7557610b74612bd3565b5b9050602002016020810190610b8a9190611e2d565b600060016040518060200160405280600081525061124e565b8080610bae90612b2c565b915050610b54565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610c57610e52565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c9d5750610c9c85610c97610e52565b610bbb565b5b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd39061271a565b60405180910390fd5b610ce985858585856113e4565b5050505050565b610cf8610e52565b73ffffffffffffffffffffffffffffffffffffffff16610d166108db565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d63906127ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd3906126fa565b60405180910390fd5b610de581611188565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e959061281a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061273a565b60405180910390fd5b6000610f18610e52565b9050610f28818787878787611666565b60005b84518110156110d9576000858281518110610f4957610f48612bd3565b5b602002602001015190506000858381518110610f6857610f67612bd3565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110009061277a565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110be91906129bd565b92505081905550505050806110d290612b2c565b9050610f2b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611150929190612626565b60405180910390a461116681878787878761166e565b505050505050565b8060029080519060200190611184929190611ac9565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b59061283a565b60405180910390fd5b60006112c8610e52565b90506112e9816000876112da88611855565b6112e388611855565b87611666565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461134891906129bd565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516113c6929190612875565b60405180910390a46113dd816000878787876118cf565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b9061273a565b60405180910390fd5b600061145e610e52565b905061147e81878761146f88611855565b61147888611855565b87611666565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c9061277a565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115ca91906129bd565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611647929190612875565b60405180910390a461165d8288888888886118cf565b50505050505050565b505050505050565b61168d8473ffffffffffffffffffffffffffffffffffffffff16611ab6565b1561184d578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016116d3959493929190612542565b602060405180830381600087803b1580156116ed57600080fd5b505af192505050801561171e57506040513d601f19601f8201168201806040525081019061171b9190612172565b60015b6117c45761172a612c31565b806308c379a01415611787575061173f613095565b8061174a5750611789565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e9190612678565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb9061269a565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461184b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611842906126ba565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561187457611873612c02565b5b6040519080825280602002602001820160405280156118a25781602001602082028036833780820191505090505b50905082816000815181106118ba576118b9612bd3565b5b60200260200101818152505080915050919050565b6118ee8473ffffffffffffffffffffffffffffffffffffffff16611ab6565b15611aae578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016119349594939291906125aa565b602060405180830381600087803b15801561194e57600080fd5b505af192505050801561197f57506040513d601f19601f8201168201806040525081019061197c9190612172565b60015b611a255761198b612c31565b806308c379a014156119e857506119a0613095565b806119ab57506119ea565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df9190612678565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c9061269a565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa3906126ba565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054611ad590612ac9565b90600052602060002090601f016020900481019282611af75760008555611b3e565b82601f10611b1057805160ff1916838001178555611b3e565b82800160010185558215611b3e579182015b82811115611b3d578251825591602001919060010190611b22565b5b509050611b4b9190611b4f565b5090565b5b80821115611b68576000816000905550600101611b50565b5090565b6000611b7f611b7a846128c3565b61289e565b90508083825260208201905082856020860282011115611ba257611ba1612c5d565b5b60005b85811015611bd25781611bb88882611c8e565b845260208401935060208301925050600181019050611ba5565b5050509392505050565b6000611bef611bea846128ef565b61289e565b90508083825260208201905082856020860282011115611c1257611c11612c5d565b5b60005b85811015611c425781611c288882611e18565b845260208401935060208301925050600181019050611c15565b5050509392505050565b6000611c5f611c5a8461291b565b61289e565b905082815260208101848484011115611c7b57611c7a612c62565b5b611c86848285612a87565b509392505050565b600081359050611c9d8161312b565b92915050565b60008083601f840112611cb957611cb8612c58565b5b8235905067ffffffffffffffff811115611cd657611cd5612c53565b5b602083019150836020820283011115611cf257611cf1612c5d565b5b9250929050565b600082601f830112611d0e57611d0d612c58565b5b8135611d1e848260208601611b6c565b91505092915050565b600082601f830112611d3c57611d3b612c58565b5b8135611d4c848260208601611bdc565b91505092915050565b600081359050611d6481613142565b92915050565b600081359050611d7981613159565b92915050565b600081519050611d8e81613159565b92915050565b600082601f830112611da957611da8612c58565b5b8135611db9848260208601611c4c565b91505092915050565b60008083601f840112611dd857611dd7612c58565b5b8235905067ffffffffffffffff811115611df557611df4612c53565b5b602083019150836001820283011115611e1157611e10612c5d565b5b9250929050565b600081359050611e2781613170565b92915050565b600060208284031215611e4357611e42612c6c565b5b6000611e5184828501611c8e565b91505092915050565b60008060408385031215611e7157611e70612c6c565b5b6000611e7f85828601611c8e565b9250506020611e9085828601611c8e565b9150509250929050565b600080600080600060a08688031215611eb657611eb5612c6c565b5b6000611ec488828901611c8e565b9550506020611ed588828901611c8e565b945050604086013567ffffffffffffffff811115611ef657611ef5612c67565b5b611f0288828901611d27565b935050606086013567ffffffffffffffff811115611f2357611f22612c67565b5b611f2f88828901611d27565b925050608086013567ffffffffffffffff811115611f5057611f4f612c67565b5b611f5c88828901611d94565b9150509295509295909350565b600080600080600060a08688031215611f8557611f84612c6c565b5b6000611f9388828901611c8e565b9550506020611fa488828901611c8e565b9450506040611fb588828901611e18565b9350506060611fc688828901611e18565b925050608086013567ffffffffffffffff811115611fe757611fe6612c67565b5b611ff388828901611d94565b9150509295509295909350565b6000806040838503121561201757612016612c6c565b5b600061202585828601611c8e565b925050602061203685828601611d55565b9150509250929050565b6000806040838503121561205757612056612c6c565b5b600061206585828601611c8e565b925050602061207685828601611e18565b9150509250929050565b6000806020838503121561209757612096612c6c565b5b600083013567ffffffffffffffff8111156120b5576120b4612c67565b5b6120c185828601611ca3565b92509250509250929050565b600080604083850312156120e4576120e3612c6c565b5b600083013567ffffffffffffffff81111561210257612101612c67565b5b61210e85828601611cf9565b925050602083013567ffffffffffffffff81111561212f5761212e612c67565b5b61213b85828601611d27565b9150509250929050565b60006020828403121561215b5761215a612c6c565b5b600061216984828501611d6a565b91505092915050565b60006020828403121561218857612187612c6c565b5b600061219684828501611d7f565b91505092915050565b600080602083850312156121b6576121b5612c6c565b5b600083013567ffffffffffffffff8111156121d4576121d3612c67565b5b6121e085828601611dc2565b92509250509250929050565b60006020828403121561220257612201612c6c565b5b600061221084828501611e18565b91505092915050565b60006122258383612509565b60208301905092915050565b61223a81612a13565b82525050565b600061224b8261295c565b612255818561298a565b93506122608361294c565b8060005b838110156122915781516122788882612219565b97506122838361297d565b925050600181019050612264565b5085935050505092915050565b6122a781612a25565b82525050565b60006122b882612967565b6122c2818561299b565b93506122d2818560208601612a96565b6122db81612c71565b840191505092915050565b60006122f182612972565b6122fb81856129ac565b935061230b818560208601612a96565b61231481612c71565b840191505092915050565b600061232c6034836129ac565b915061233782612c8f565b604082019050919050565b600061234f6028836129ac565b915061235a82612cde565b604082019050919050565b6000612372602b836129ac565b915061237d82612d2d565b604082019050919050565b60006123956026836129ac565b91506123a082612d7c565b604082019050919050565b60006123b86029836129ac565b91506123c382612dcb565b604082019050919050565b60006123db6025836129ac565b91506123e682612e1a565b604082019050919050565b60006123fe6032836129ac565b915061240982612e69565b604082019050919050565b6000612421602a836129ac565b915061242c82612eb8565b604082019050919050565b6000612444600b836129ac565b915061244f82612f07565b602082019050919050565b60006124676020836129ac565b915061247282612f30565b602082019050919050565b600061248a6029836129ac565b915061249582612f59565b604082019050919050565b60006124ad6029836129ac565b91506124b882612fa8565b604082019050919050565b60006124d06028836129ac565b91506124db82612ff7565b604082019050919050565b60006124f36021836129ac565b91506124fe82613046565b604082019050919050565b61251281612a7d565b82525050565b61252181612a7d565b82525050565b600060208201905061253c6000830184612231565b92915050565b600060a0820190506125576000830188612231565b6125646020830187612231565b81810360408301526125768186612240565b9050818103606083015261258a8185612240565b9050818103608083015261259e81846122ad565b90509695505050505050565b600060a0820190506125bf6000830188612231565b6125cc6020830187612231565b6125d96040830186612518565b6125e66060830185612518565b81810360808301526125f881846122ad565b90509695505050505050565b6000602082019050818103600083015261261e8184612240565b905092915050565b600060408201905081810360008301526126408185612240565b905081810360208301526126548184612240565b90509392505050565b6000602082019050612672600083018461229e565b92915050565b6000602082019050818103600083015261269281846122e6565b905092915050565b600060208201905081810360008301526126b38161231f565b9050919050565b600060208201905081810360008301526126d381612342565b9050919050565b600060208201905081810360008301526126f381612365565b9050919050565b6000602082019050818103600083015261271381612388565b9050919050565b60006020820190508181036000830152612733816123ab565b9050919050565b60006020820190508181036000830152612753816123ce565b9050919050565b60006020820190508181036000830152612773816123f1565b9050919050565b6000602082019050818103600083015261279381612414565b9050919050565b600060208201905081810360008301526127b381612437565b9050919050565b600060208201905081810360008301526127d38161245a565b9050919050565b600060208201905081810360008301526127f38161247d565b9050919050565b60006020820190508181036000830152612813816124a0565b9050919050565b60006020820190508181036000830152612833816124c3565b9050919050565b60006020820190508181036000830152612853816124e6565b9050919050565b600060208201905061286f6000830184612518565b92915050565b600060408201905061288a6000830185612518565b6128976020830184612518565b9392505050565b60006128a86128b9565b90506128b48282612afb565b919050565b6000604051905090565b600067ffffffffffffffff8211156128de576128dd612c02565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561290a57612909612c02565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561293657612935612c02565b5b61293f82612c71565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006129c882612a7d565b91506129d383612a7d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a0857612a07612b75565b5b828201905092915050565b6000612a1e82612a5d565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612ab4578082015181840152602081019050612a99565b83811115612ac3576000848401525b50505050565b60006002820490506001821680612ae157607f821691505b60208210811415612af557612af4612ba4565b5b50919050565b612b0482612c71565b810181811067ffffffffffffffff82111715612b2357612b22612c02565b5b80604052505050565b6000612b3782612a7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b6a57612b69612b75565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612c505760046000803e612c4d600051612c82565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d10156130a557613128565b6130ad6128b9565b60043d036004823e80513d602482011167ffffffffffffffff821117156130d5575050613128565b808201805167ffffffffffffffff8111156130f35750505050613128565b80602083010160043d038501811115613110575050505050613128565b61311f82602001850186612afb565b82955050505050505b90565b61313481612a13565b811461313f57600080fd5b50565b61314b81612a25565b811461315657600080fd5b50565b61316281612a31565b811461316d57600080fd5b50565b61317981612a7d565b811461318457600080fd5b5056fea26469706673582212202339a968482b19728c5387ac5373d9f8cf1c090c444209a05e7b99d7a4bff48564736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f617277656176652e6e65742f7847373844733767433538384e496d6a6876523256517939734154536a754f434e663353646138626d347700

-----Decoded View---------------
Arg [0] : _uri (string): https://arweave.net/xG78Ds7gC588NImjhvR2VQy9sATSjuOCNf3Sda8bm4w

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000003f
Arg [2] : 68747470733a2f2f617277656176652e6e65742f784737384473376743353838
Arg [3] : 4e496d6a6876523256517939734154536a754f434e663353646138626d347700


Deployed Bytecode Sourcemap

114:975:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2054:228:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1809:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;527:90:4;;;:::i;:::-;;220:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4082:430:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2439:508;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;685:94:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1598:92:9;;;:::i;:::-;;966:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3015:306:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;855:231:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3388:166:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3621:389;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1839:189:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2054:228:2;2140:7;2186:1;2167:21;;:7;:21;;;;2159:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;2253:9;:13;2263:2;2253:13;;;;;;;;;;;:22;2267:7;2253:22;;;;;;;;;;;;;;;;2246:29;;2054:228;;;;:::o;1105:305::-;1207:4;1257:26;1242:41;;;:11;:41;;;;:109;;;;1314:37;1299:52;;;:11;:52;;;;1242:109;:161;;;;1367:36;1391:11;1367:23;:36::i;:::-;1242:161;1223:180;;1105:305;;;:::o;1809:103::-;1869:13;1901:4;1894:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:103;;;:::o;527:90:4:-;1189:12:9;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;604:5:4::1;584:17;;:25;;;;;;;;;;;;;;;;;;527:90::o:0;220:36::-;;;;;;;;;;;;;:::o;4082:430:2:-;4315:12;:10;:12::i;:::-;4307:20;;:4;:20;;;:60;;;;4331:36;4348:4;4354:12;:10;:12::i;:::-;4331:16;:36::i;:::-;4307:60;4286:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;4453:52;4476:4;4482:2;4486:3;4491:7;4500:4;4453:22;:52::i;:::-;4082:430;;;;;:::o;2439:508::-;2590:16;2649:3;:10;2630:8;:15;:29;2622:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2716:30;2763:8;:15;2749:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:63;;2795:9;2790:120;2814:8;:15;2810:1;:19;2790:120;;;2869:30;2879:8;2888:1;2879:11;;;;;;;;:::i;:::-;;;;;;;;2892:3;2896:1;2892:6;;;;;;;;:::i;:::-;;;;;;;;2869:9;:30::i;:::-;2850:13;2864:1;2850:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;2831:3;;;;:::i;:::-;;;2790:120;;;;2927:13;2920:20;;;2439:508;;;;:::o;685:94:4:-;1189:12:9;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;756:15:4::1;764:6;;756:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:15::i;:::-;685:94:::0;;:::o;1598:92:9:-;1189:12;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:21:::1;1680:1;1662:9;:21::i;:::-;1598:92::o:0;966:85::-;1012:7;1038:6;;;;;;;;;;;1031:13;;966:85;:::o;3015:306:2:-;3133:8;3117:24;;:12;:10;:12::i;:::-;:24;;;;3109:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:8;3198:18;:32;3217:12;:10;:12::i;:::-;3198:32;;;;;;;;;;;;;;;:42;3231:8;3198:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;3295:8;3266:48;;3281:12;:10;:12::i;:::-;3266:48;;;3305:8;3266:48;;;;;;:::i;:::-;;;;;;;;3015:306;;:::o;855:231:4:-;1189:12:9;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;935:17:4::1;;;;;;;;;;;927:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;993:9;988:91;1012:6;;:13;;1008:1;:17;988:91;;;1043:26;1049:6;;1056:1;1049:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1060:1;1063;1043:26;;;;;;;;;;;::::0;:5:::1;:26::i;:::-;1027:3;;;;;:::i;:::-;;;;988:91;;;;855:231:::0;;:::o;3388:166:2:-;3487:4;3510:18;:27;3529:7;3510:27;;;;;;;;;;;;;;;:37;3538:8;3510:37;;;;;;;;;;;;;;;;;;;;;;;;;3503:44;;3388:166;;;;:::o;3621:389::-;3829:12;:10;:12::i;:::-;3821:20;;:4;:20;;;:60;;;;3845:36;3862:4;3868:12;:10;:12::i;:::-;3845:16;:36::i;:::-;3821:60;3800:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;3958:45;3976:4;3982:2;3986;3990:6;3998:4;3958:17;:45::i;:::-;3621:389;;;;;:::o;1839:189:9:-;1189:12;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1947:1:::1;1927:22;;:8;:22;;;;1919:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2002:19;2012:8;2002:9;:19::i;:::-;1839:189:::0;:::o;763:155:3:-;848:4;886:25;871:40;;;:11;:40;;;;864:47;;763:155;;;:::o;587:96:1:-;640:7;666:10;659:17;;587:96;:::o;6105:1045:2:-;6325:7;:14;6311:3;:10;:28;6303:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;6416:1;6402:16;;:2;:16;;;;6394:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6471:16;6490:12;:10;:12::i;:::-;6471:31;;6513:60;6534:8;6544:4;6550:2;6554:3;6559:7;6568:4;6513:20;:60::i;:::-;6589:9;6584:411;6608:3;:10;6604:1;:14;6584:411;;;6639:10;6652:3;6656:1;6652:6;;;;;;;;:::i;:::-;;;;;;;;6639:19;;6672:14;6689:7;6697:1;6689:10;;;;;;;;:::i;:::-;;;;;;;;6672:27;;6714:19;6736:9;:13;6746:2;6736:13;;;;;;;;;;;:19;6750:4;6736:19;;;;;;;;;;;;;;;;6714:41;;6792:6;6777:11;:21;;6769:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6923:6;6909:11;:20;6887:9;:13;6897:2;6887:13;;;;;;;;;;;:19;6901:4;6887:19;;;;;;;;;;;;;;;:42;;;;6978:6;6957:9;:13;6967:2;6957:13;;;;;;;;;;;:17;6971:2;6957:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;6625:370;;;6620:3;;;;:::i;:::-;;;6584:411;;;;7040:2;7010:47;;7034:4;7010:47;;7024:8;7010:47;;;7044:3;7049:7;7010:47;;;;;;;:::i;:::-;;;;;;;;7068:75;7104:8;7114:4;7120:2;7124:3;7129:7;7138:4;7068:35;:75::i;:::-;6293:857;6105:1045;;;;;:::o;7973:86::-;8046:6;8039:4;:13;;;;;;;;;;;;:::i;:::-;;7973:86;:::o;2034:169:9:-;2089:16;2108:6;;;;;;;;;;;2089:25;;2133:8;2124:6;;:17;;;;;;;;;;;;;;;;;;2187:8;2156:40;;2177:8;2156:40;;;;;;;;;;;;2079:124;2034:169;:::o;8447:583:2:-;8618:1;8599:21;;:7;:21;;;;8591:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8669:16;8688:12;:10;:12::i;:::-;8669:31;;8711:107;8732:8;8750:1;8754:7;8763:21;8781:2;8763:17;:21::i;:::-;8786:25;8804:6;8786:17;:25::i;:::-;8813:4;8711:20;:107::i;:::-;8855:6;8829:9;:13;8839:2;8829:13;;;;;;;;;;;:22;8843:7;8829:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;8913:7;8876:57;;8909:1;8876:57;;8891:8;8876:57;;;8922:2;8926:6;8876:57;;;;;;;:::i;:::-;;;;;;;;8944:79;8975:8;8993:1;8997:7;9006:2;9010:6;9018:4;8944:30;:79::i;:::-;8581:449;8447:583;;;;:::o;4962:797::-;5157:1;5143:16;;:2;:16;;;;5135:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;5212:16;5231:12;:10;:12::i;:::-;5212:31;;5254:96;5275:8;5285:4;5291:2;5295:21;5313:2;5295:17;:21::i;:::-;5318:25;5336:6;5318:17;:25::i;:::-;5345:4;5254:20;:96::i;:::-;5361:19;5383:9;:13;5393:2;5383:13;;;;;;;;;;;:19;5397:4;5383:19;;;;;;;;;;;;;;;;5361:41;;5435:6;5420:11;:21;;5412:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5558:6;5544:11;:20;5522:9;:13;5532:2;5522:13;;;;;;;;;;;:19;5536:4;5522:19;;;;;;;;;;;;;;;:42;;;;5605:6;5584:9;:13;5594:2;5584:13;;;;;;;;;;;:17;5598:2;5584:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;5658:2;5627:46;;5652:4;5627:46;;5642:8;5627:46;;;5662:2;5666:6;5627:46;;;;;;;:::i;:::-;;;;;;;;5684:68;5715:8;5725:4;5731:2;5735;5739:6;5747:4;5684:30;:68::i;:::-;5125:634;;4962:797;;;;;:::o;13018:214::-;;;;;;;:::o;13969:792::-;14201:15;:2;:13;;;:15::i;:::-;14197:558;;;14253:2;14236:43;;;14280:8;14290:4;14296:3;14301:7;14310:4;14236:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14232:513;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14621:6;14614:14;;;;;;;;;;;:::i;:::-;;;;;;;;14232:513;;;14668:62;;;;;;;;;;:::i;:::-;;;;;;;;14232:513;14406:48;;;14394:60;;;:8;:60;;;;14390:157;;14478:50;;;;;;;;;;:::i;:::-;;;;;;;;14390:157;14316:245;14197:558;13969:792;;;;;;:::o;14767:193::-;14833:16;14861:22;14900:1;14886:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14861:41;;14923:7;14912:5;14918:1;14912:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;14948:5;14941:12;;;14767:193;;;:::o;13238:725::-;13445:15;:2;:13;;;:15::i;:::-;13441:516;;;13497:2;13480:38;;;13519:8;13529:4;13535:2;13539:6;13547:4;13480:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13476:471;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;13823:6;13816:14;;;;;;;;;;;:::i;:::-;;;;;;;;13476:471;;;13870:62;;;;;;;;;;:::i;:::-;;;;;;;;13476:471;13613:43;;;13601:55;;;:8;:55;;;;13597:152;;13680:50;;;;;;;;;;:::i;:::-;;;;;;;;13597:152;13553:210;13441:516;13238:725;;;;;;:::o;718:377:0:-;778:4;981:12;1046:7;1034:20;1026:28;;1087:1;1080:4;:8;1073:15;;;718:377;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:10:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1913:139;;;;:::o;2075:568::-;2148:8;2158:6;2208:3;2201:4;2193:6;2189:17;2185:27;2175:122;;2216:79;;:::i;:::-;2175:122;2329:6;2316:20;2306:30;;2359:18;2351:6;2348:30;2345:117;;;2381:79;;:::i;:::-;2345:117;2495:4;2487:6;2483:17;2471:29;;2549:3;2541:4;2533:6;2529:17;2519:8;2515:32;2512:41;2509:128;;;2556:79;;:::i;:::-;2509:128;2075:568;;;;;:::o;2666:370::-;2737:5;2786:3;2779:4;2771:6;2767:17;2763:27;2753:122;;2794:79;;:::i;:::-;2753:122;2911:6;2898:20;2936:94;3026:3;3018:6;3011:4;3003:6;2999:17;2936:94;:::i;:::-;2927:103;;2743:293;2666:370;;;;:::o;3059:::-;3130:5;3179:3;3172:4;3164:6;3160:17;3156:27;3146:122;;3187:79;;:::i;:::-;3146:122;3304:6;3291:20;3329:94;3419:3;3411:6;3404:4;3396:6;3392:17;3329:94;:::i;:::-;3320:103;;3136:293;3059:370;;;;:::o;3435:133::-;3478:5;3516:6;3503:20;3494:29;;3532:30;3556:5;3532:30;:::i;:::-;3435:133;;;;:::o;3574:137::-;3619:5;3657:6;3644:20;3635:29;;3673:32;3699:5;3673:32;:::i;:::-;3574:137;;;;:::o;3717:141::-;3773:5;3804:6;3798:13;3789:22;;3820:32;3846:5;3820:32;:::i;:::-;3717:141;;;;:::o;3877:338::-;3932:5;3981:3;3974:4;3966:6;3962:17;3958:27;3948:122;;3989:79;;:::i;:::-;3948:122;4106:6;4093:20;4131:78;4205:3;4197:6;4190:4;4182:6;4178:17;4131:78;:::i;:::-;4122:87;;3938:277;3877:338;;;;:::o;4235:553::-;4293:8;4303:6;4353:3;4346:4;4338:6;4334:17;4330:27;4320:122;;4361:79;;:::i;:::-;4320:122;4474:6;4461:20;4451:30;;4504:18;4496:6;4493:30;4490:117;;;4526:79;;:::i;:::-;4490:117;4640:4;4632:6;4628:17;4616:29;;4694:3;4686:4;4678:6;4674:17;4664:8;4660:32;4657:41;4654:128;;;4701:79;;:::i;:::-;4654:128;4235:553;;;;;:::o;4794:139::-;4840:5;4878:6;4865:20;4856:29;;4894:33;4921:5;4894:33;:::i;:::-;4794:139;;;;:::o;4939:329::-;4998:6;5047:2;5035:9;5026:7;5022:23;5018:32;5015:119;;;5053:79;;:::i;:::-;5015:119;5173:1;5198:53;5243:7;5234:6;5223:9;5219:22;5198:53;:::i;:::-;5188:63;;5144:117;4939:329;;;;:::o;5274:474::-;5342:6;5350;5399:2;5387:9;5378:7;5374:23;5370:32;5367:119;;;5405:79;;:::i;:::-;5367:119;5525:1;5550:53;5595:7;5586:6;5575:9;5571:22;5550:53;:::i;:::-;5540:63;;5496:117;5652:2;5678:53;5723:7;5714:6;5703:9;5699:22;5678:53;:::i;:::-;5668:63;;5623:118;5274:474;;;;;:::o;5754:1509::-;5908:6;5916;5924;5932;5940;5989:3;5977:9;5968:7;5964:23;5960:33;5957:120;;;5996:79;;:::i;:::-;5957:120;6116:1;6141:53;6186:7;6177:6;6166:9;6162:22;6141:53;:::i;:::-;6131:63;;6087:117;6243:2;6269:53;6314:7;6305:6;6294:9;6290:22;6269:53;:::i;:::-;6259:63;;6214:118;6399:2;6388:9;6384:18;6371:32;6430:18;6422:6;6419:30;6416:117;;;6452:79;;:::i;:::-;6416:117;6557:78;6627:7;6618:6;6607:9;6603:22;6557:78;:::i;:::-;6547:88;;6342:303;6712:2;6701:9;6697:18;6684:32;6743:18;6735:6;6732:30;6729:117;;;6765:79;;:::i;:::-;6729:117;6870:78;6940:7;6931:6;6920:9;6916:22;6870:78;:::i;:::-;6860:88;;6655:303;7025:3;7014:9;7010:19;6997:33;7057:18;7049:6;7046:30;7043:117;;;7079:79;;:::i;:::-;7043:117;7184:62;7238:7;7229:6;7218:9;7214:22;7184:62;:::i;:::-;7174:72;;6968:288;5754:1509;;;;;;;;:::o;7269:1089::-;7373:6;7381;7389;7397;7405;7454:3;7442:9;7433:7;7429:23;7425:33;7422:120;;;7461:79;;:::i;:::-;7422:120;7581:1;7606:53;7651:7;7642:6;7631:9;7627:22;7606:53;:::i;:::-;7596:63;;7552:117;7708:2;7734:53;7779:7;7770:6;7759:9;7755:22;7734:53;:::i;:::-;7724:63;;7679:118;7836:2;7862:53;7907:7;7898:6;7887:9;7883:22;7862:53;:::i;:::-;7852:63;;7807:118;7964:2;7990:53;8035:7;8026:6;8015:9;8011:22;7990:53;:::i;:::-;7980:63;;7935:118;8120:3;8109:9;8105:19;8092:33;8152:18;8144:6;8141:30;8138:117;;;8174:79;;:::i;:::-;8138:117;8279:62;8333:7;8324:6;8313:9;8309:22;8279:62;:::i;:::-;8269:72;;8063:288;7269:1089;;;;;;;;:::o;8364:468::-;8429:6;8437;8486:2;8474:9;8465:7;8461:23;8457:32;8454:119;;;8492:79;;:::i;:::-;8454:119;8612:1;8637:53;8682:7;8673:6;8662:9;8658:22;8637:53;:::i;:::-;8627:63;;8583:117;8739:2;8765:50;8807:7;8798:6;8787:9;8783:22;8765:50;:::i;:::-;8755:60;;8710:115;8364:468;;;;;:::o;8838:474::-;8906:6;8914;8963:2;8951:9;8942:7;8938:23;8934:32;8931:119;;;8969:79;;:::i;:::-;8931:119;9089:1;9114:53;9159:7;9150:6;9139:9;9135:22;9114:53;:::i;:::-;9104:63;;9060:117;9216:2;9242:53;9287:7;9278:6;9267:9;9263:22;9242:53;:::i;:::-;9232:63;;9187:118;8838:474;;;;;:::o;9318:559::-;9404:6;9412;9461:2;9449:9;9440:7;9436:23;9432:32;9429:119;;;9467:79;;:::i;:::-;9429:119;9615:1;9604:9;9600:17;9587:31;9645:18;9637:6;9634:30;9631:117;;;9667:79;;:::i;:::-;9631:117;9780:80;9852:7;9843:6;9832:9;9828:22;9780:80;:::i;:::-;9762:98;;;;9558:312;9318:559;;;;;:::o;9883:894::-;10001:6;10009;10058:2;10046:9;10037:7;10033:23;10029:32;10026:119;;;10064:79;;:::i;:::-;10026:119;10212:1;10201:9;10197:17;10184:31;10242:18;10234:6;10231:30;10228:117;;;10264:79;;:::i;:::-;10228:117;10369:78;10439:7;10430:6;10419:9;10415:22;10369:78;:::i;:::-;10359:88;;10155:302;10524:2;10513:9;10509:18;10496:32;10555:18;10547:6;10544:30;10541:117;;;10577:79;;:::i;:::-;10541:117;10682:78;10752:7;10743:6;10732:9;10728:22;10682:78;:::i;:::-;10672:88;;10467:303;9883:894;;;;;:::o;10783:327::-;10841:6;10890:2;10878:9;10869:7;10865:23;10861:32;10858:119;;;10896:79;;:::i;:::-;10858:119;11016:1;11041:52;11085:7;11076:6;11065:9;11061:22;11041:52;:::i;:::-;11031:62;;10987:116;10783:327;;;;:::o;11116:349::-;11185:6;11234:2;11222:9;11213:7;11209:23;11205:32;11202:119;;;11240:79;;:::i;:::-;11202:119;11360:1;11385:63;11440:7;11431:6;11420:9;11416:22;11385:63;:::i;:::-;11375:73;;11331:127;11116:349;;;;:::o;11471:529::-;11542:6;11550;11599:2;11587:9;11578:7;11574:23;11570:32;11567:119;;;11605:79;;:::i;:::-;11567:119;11753:1;11742:9;11738:17;11725:31;11783:18;11775:6;11772:30;11769:117;;;11805:79;;:::i;:::-;11769:117;11918:65;11975:7;11966:6;11955:9;11951:22;11918:65;:::i;:::-;11900:83;;;;11696:297;11471:529;;;;;:::o;12006:329::-;12065:6;12114:2;12102:9;12093:7;12089:23;12085:32;12082:119;;;12120:79;;:::i;:::-;12082:119;12240:1;12265:53;12310:7;12301:6;12290:9;12286:22;12265:53;:::i;:::-;12255:63;;12211:117;12006:329;;;;:::o;12341:179::-;12410:10;12431:46;12473:3;12465:6;12431:46;:::i;:::-;12509:4;12504:3;12500:14;12486:28;;12341:179;;;;:::o;12526:118::-;12613:24;12631:5;12613:24;:::i;:::-;12608:3;12601:37;12526:118;;:::o;12680:732::-;12799:3;12828:54;12876:5;12828:54;:::i;:::-;12898:86;12977:6;12972:3;12898:86;:::i;:::-;12891:93;;13008:56;13058:5;13008:56;:::i;:::-;13087:7;13118:1;13103:284;13128:6;13125:1;13122:13;13103:284;;;13204:6;13198:13;13231:63;13290:3;13275:13;13231:63;:::i;:::-;13224:70;;13317:60;13370:6;13317:60;:::i;:::-;13307:70;;13163:224;13150:1;13147;13143:9;13138:14;;13103:284;;;13107:14;13403:3;13396:10;;12804:608;;;12680:732;;;;:::o;13418:109::-;13499:21;13514:5;13499:21;:::i;:::-;13494:3;13487:34;13418:109;;:::o;13533:360::-;13619:3;13647:38;13679:5;13647:38;:::i;:::-;13701:70;13764:6;13759:3;13701:70;:::i;:::-;13694:77;;13780:52;13825:6;13820:3;13813:4;13806:5;13802:16;13780:52;:::i;:::-;13857:29;13879:6;13857:29;:::i;:::-;13852:3;13848:39;13841:46;;13623:270;13533:360;;;;:::o;13899:364::-;13987:3;14015:39;14048:5;14015:39;:::i;:::-;14070:71;14134:6;14129:3;14070:71;:::i;:::-;14063:78;;14150:52;14195:6;14190:3;14183:4;14176:5;14172:16;14150:52;:::i;:::-;14227:29;14249:6;14227:29;:::i;:::-;14222:3;14218:39;14211:46;;13991:272;13899:364;;;;:::o;14269:366::-;14411:3;14432:67;14496:2;14491:3;14432:67;:::i;:::-;14425:74;;14508:93;14597:3;14508:93;:::i;:::-;14626:2;14621:3;14617:12;14610:19;;14269:366;;;:::o;14641:::-;14783:3;14804:67;14868:2;14863:3;14804:67;:::i;:::-;14797:74;;14880:93;14969:3;14880:93;:::i;:::-;14998:2;14993:3;14989:12;14982:19;;14641:366;;;:::o;15013:::-;15155:3;15176:67;15240:2;15235:3;15176:67;:::i;:::-;15169:74;;15252:93;15341:3;15252:93;:::i;:::-;15370:2;15365:3;15361:12;15354:19;;15013:366;;;:::o;15385:::-;15527:3;15548:67;15612:2;15607:3;15548:67;:::i;:::-;15541:74;;15624:93;15713:3;15624:93;:::i;:::-;15742:2;15737:3;15733:12;15726:19;;15385:366;;;:::o;15757:::-;15899:3;15920:67;15984:2;15979:3;15920:67;:::i;:::-;15913:74;;15996:93;16085:3;15996:93;:::i;:::-;16114:2;16109:3;16105:12;16098:19;;15757:366;;;:::o;16129:::-;16271:3;16292:67;16356:2;16351:3;16292:67;:::i;:::-;16285:74;;16368:93;16457:3;16368:93;:::i;:::-;16486:2;16481:3;16477:12;16470:19;;16129:366;;;:::o;16501:::-;16643:3;16664:67;16728:2;16723:3;16664:67;:::i;:::-;16657:74;;16740:93;16829:3;16740:93;:::i;:::-;16858:2;16853:3;16849:12;16842:19;;16501:366;;;:::o;16873:::-;17015:3;17036:67;17100:2;17095:3;17036:67;:::i;:::-;17029:74;;17112:93;17201:3;17112:93;:::i;:::-;17230:2;17225:3;17221:12;17214:19;;16873:366;;;:::o;17245:::-;17387:3;17408:67;17472:2;17467:3;17408:67;:::i;:::-;17401:74;;17484:93;17573:3;17484:93;:::i;:::-;17602:2;17597:3;17593:12;17586:19;;17245:366;;;:::o;17617:::-;17759:3;17780:67;17844:2;17839:3;17780:67;:::i;:::-;17773:74;;17856:93;17945:3;17856:93;:::i;:::-;17974:2;17969:3;17965:12;17958:19;;17617:366;;;:::o;17989:::-;18131:3;18152:67;18216:2;18211:3;18152:67;:::i;:::-;18145:74;;18228:93;18317:3;18228:93;:::i;:::-;18346:2;18341:3;18337:12;18330:19;;17989:366;;;:::o;18361:::-;18503:3;18524:67;18588:2;18583:3;18524:67;:::i;:::-;18517:74;;18600:93;18689:3;18600:93;:::i;:::-;18718:2;18713:3;18709:12;18702:19;;18361:366;;;:::o;18733:::-;18875:3;18896:67;18960:2;18955:3;18896:67;:::i;:::-;18889:74;;18972:93;19061:3;18972:93;:::i;:::-;19090:2;19085:3;19081:12;19074:19;;18733:366;;;:::o;19105:::-;19247:3;19268:67;19332:2;19327:3;19268:67;:::i;:::-;19261:74;;19344:93;19433:3;19344:93;:::i;:::-;19462:2;19457:3;19453:12;19446:19;;19105:366;;;:::o;19477:108::-;19554:24;19572:5;19554:24;:::i;:::-;19549:3;19542:37;19477:108;;:::o;19591:118::-;19678:24;19696:5;19678:24;:::i;:::-;19673:3;19666:37;19591:118;;:::o;19715:222::-;19808:4;19846:2;19835:9;19831:18;19823:26;;19859:71;19927:1;19916:9;19912:17;19903:6;19859:71;:::i;:::-;19715:222;;;;:::o;19943:1053::-;20266:4;20304:3;20293:9;20289:19;20281:27;;20318:71;20386:1;20375:9;20371:17;20362:6;20318:71;:::i;:::-;20399:72;20467:2;20456:9;20452:18;20443:6;20399:72;:::i;:::-;20518:9;20512:4;20508:20;20503:2;20492:9;20488:18;20481:48;20546:108;20649:4;20640:6;20546:108;:::i;:::-;20538:116;;20701:9;20695:4;20691:20;20686:2;20675:9;20671:18;20664:48;20729:108;20832:4;20823:6;20729:108;:::i;:::-;20721:116;;20885:9;20879:4;20875:20;20869:3;20858:9;20854:19;20847:49;20913:76;20984:4;20975:6;20913:76;:::i;:::-;20905:84;;19943:1053;;;;;;;;:::o;21002:751::-;21225:4;21263:3;21252:9;21248:19;21240:27;;21277:71;21345:1;21334:9;21330:17;21321:6;21277:71;:::i;:::-;21358:72;21426:2;21415:9;21411:18;21402:6;21358:72;:::i;:::-;21440;21508:2;21497:9;21493:18;21484:6;21440:72;:::i;:::-;21522;21590:2;21579:9;21575:18;21566:6;21522:72;:::i;:::-;21642:9;21636:4;21632:20;21626:3;21615:9;21611:19;21604:49;21670:76;21741:4;21732:6;21670:76;:::i;:::-;21662:84;;21002:751;;;;;;;;:::o;21759:373::-;21902:4;21940:2;21929:9;21925:18;21917:26;;21989:9;21983:4;21979:20;21975:1;21964:9;21960:17;21953:47;22017:108;22120:4;22111:6;22017:108;:::i;:::-;22009:116;;21759:373;;;;:::o;22138:634::-;22359:4;22397:2;22386:9;22382:18;22374:26;;22446:9;22440:4;22436:20;22432:1;22421:9;22417:17;22410:47;22474:108;22577:4;22568:6;22474:108;:::i;:::-;22466:116;;22629:9;22623:4;22619:20;22614:2;22603:9;22599:18;22592:48;22657:108;22760:4;22751:6;22657:108;:::i;:::-;22649:116;;22138:634;;;;;:::o;22778:210::-;22865:4;22903:2;22892:9;22888:18;22880:26;;22916:65;22978:1;22967:9;22963:17;22954:6;22916:65;:::i;:::-;22778:210;;;;:::o;22994:313::-;23107:4;23145:2;23134:9;23130:18;23122:26;;23194:9;23188:4;23184:20;23180:1;23169:9;23165:17;23158:47;23222:78;23295:4;23286:6;23222:78;:::i;:::-;23214:86;;22994:313;;;;:::o;23313:419::-;23479:4;23517:2;23506:9;23502:18;23494:26;;23566:9;23560:4;23556:20;23552:1;23541:9;23537:17;23530:47;23594:131;23720:4;23594:131;:::i;:::-;23586:139;;23313:419;;;:::o;23738:::-;23904:4;23942:2;23931:9;23927:18;23919:26;;23991:9;23985:4;23981:20;23977:1;23966:9;23962:17;23955:47;24019:131;24145:4;24019:131;:::i;:::-;24011:139;;23738:419;;;:::o;24163:::-;24329:4;24367:2;24356:9;24352:18;24344:26;;24416:9;24410:4;24406:20;24402:1;24391:9;24387:17;24380:47;24444:131;24570:4;24444:131;:::i;:::-;24436:139;;24163:419;;;:::o;24588:::-;24754:4;24792:2;24781:9;24777:18;24769:26;;24841:9;24835:4;24831:20;24827:1;24816:9;24812:17;24805:47;24869:131;24995:4;24869:131;:::i;:::-;24861:139;;24588:419;;;:::o;25013:::-;25179:4;25217:2;25206:9;25202:18;25194:26;;25266:9;25260:4;25256:20;25252:1;25241:9;25237:17;25230:47;25294:131;25420:4;25294:131;:::i;:::-;25286:139;;25013:419;;;:::o;25438:::-;25604:4;25642:2;25631:9;25627:18;25619:26;;25691:9;25685:4;25681:20;25677:1;25666:9;25662:17;25655:47;25719:131;25845:4;25719:131;:::i;:::-;25711:139;;25438:419;;;:::o;25863:::-;26029:4;26067:2;26056:9;26052:18;26044:26;;26116:9;26110:4;26106:20;26102:1;26091:9;26087:17;26080:47;26144:131;26270:4;26144:131;:::i;:::-;26136:139;;25863:419;;;:::o;26288:::-;26454:4;26492:2;26481:9;26477:18;26469:26;;26541:9;26535:4;26531:20;26527:1;26516:9;26512:17;26505:47;26569:131;26695:4;26569:131;:::i;:::-;26561:139;;26288:419;;;:::o;26713:::-;26879:4;26917:2;26906:9;26902:18;26894:26;;26966:9;26960:4;26956:20;26952:1;26941:9;26937:17;26930:47;26994:131;27120:4;26994:131;:::i;:::-;26986:139;;26713:419;;;:::o;27138:::-;27304:4;27342:2;27331:9;27327:18;27319:26;;27391:9;27385:4;27381:20;27377:1;27366:9;27362:17;27355:47;27419:131;27545:4;27419:131;:::i;:::-;27411:139;;27138:419;;;:::o;27563:::-;27729:4;27767:2;27756:9;27752:18;27744:26;;27816:9;27810:4;27806:20;27802:1;27791:9;27787:17;27780:47;27844:131;27970:4;27844:131;:::i;:::-;27836:139;;27563:419;;;:::o;27988:::-;28154:4;28192:2;28181:9;28177:18;28169:26;;28241:9;28235:4;28231:20;28227:1;28216:9;28212:17;28205:47;28269:131;28395:4;28269:131;:::i;:::-;28261:139;;27988:419;;;:::o;28413:::-;28579:4;28617:2;28606:9;28602:18;28594:26;;28666:9;28660:4;28656:20;28652:1;28641:9;28637:17;28630:47;28694:131;28820:4;28694:131;:::i;:::-;28686:139;;28413:419;;;:::o;28838:::-;29004:4;29042:2;29031:9;29027:18;29019:26;;29091:9;29085:4;29081:20;29077:1;29066:9;29062:17;29055:47;29119:131;29245:4;29119:131;:::i;:::-;29111:139;;28838:419;;;:::o;29263:222::-;29356:4;29394:2;29383:9;29379:18;29371:26;;29407:71;29475:1;29464:9;29460:17;29451:6;29407:71;:::i;:::-;29263:222;;;;:::o;29491:332::-;29612:4;29650:2;29639:9;29635:18;29627:26;;29663:71;29731:1;29720:9;29716:17;29707:6;29663:71;:::i;:::-;29744:72;29812:2;29801:9;29797:18;29788:6;29744:72;:::i;:::-;29491:332;;;;;:::o;29829:129::-;29863:6;29890:20;;:::i;:::-;29880:30;;29919:33;29947:4;29939:6;29919:33;:::i;:::-;29829:129;;;:::o;29964:75::-;29997:6;30030:2;30024:9;30014:19;;29964:75;:::o;30045:311::-;30122:4;30212:18;30204:6;30201:30;30198:56;;;30234:18;;:::i;:::-;30198:56;30284:4;30276:6;30272:17;30264:25;;30344:4;30338;30334:15;30326:23;;30045:311;;;:::o;30362:::-;30439:4;30529:18;30521:6;30518:30;30515:56;;;30551:18;;:::i;:::-;30515:56;30601:4;30593:6;30589:17;30581:25;;30661:4;30655;30651:15;30643:23;;30362:311;;;:::o;30679:307::-;30740:4;30830:18;30822:6;30819:30;30816:56;;;30852:18;;:::i;:::-;30816:56;30890:29;30912:6;30890:29;:::i;:::-;30882:37;;30974:4;30968;30964:15;30956:23;;30679:307;;;:::o;30992:132::-;31059:4;31082:3;31074:11;;31112:4;31107:3;31103:14;31095:22;;30992:132;;;:::o;31130:114::-;31197:6;31231:5;31225:12;31215:22;;31130:114;;;:::o;31250:98::-;31301:6;31335:5;31329:12;31319:22;;31250:98;;;:::o;31354:99::-;31406:6;31440:5;31434:12;31424:22;;31354:99;;;:::o;31459:113::-;31529:4;31561;31556:3;31552:14;31544:22;;31459:113;;;:::o;31578:184::-;31677:11;31711:6;31706:3;31699:19;31751:4;31746:3;31742:14;31727:29;;31578:184;;;;:::o;31768:168::-;31851:11;31885:6;31880:3;31873:19;31925:4;31920:3;31916:14;31901:29;;31768:168;;;;:::o;31942:169::-;32026:11;32060:6;32055:3;32048:19;32100:4;32095:3;32091:14;32076:29;;31942:169;;;;:::o;32117:305::-;32157:3;32176:20;32194:1;32176:20;:::i;:::-;32171:25;;32210:20;32228:1;32210:20;:::i;:::-;32205:25;;32364:1;32296:66;32292:74;32289:1;32286:81;32283:107;;;32370:18;;:::i;:::-;32283:107;32414:1;32411;32407:9;32400:16;;32117:305;;;;:::o;32428:96::-;32465:7;32494:24;32512:5;32494:24;:::i;:::-;32483:35;;32428:96;;;:::o;32530:90::-;32564:7;32607:5;32600:13;32593:21;32582:32;;32530:90;;;:::o;32626:149::-;32662:7;32702:66;32695:5;32691:78;32680:89;;32626:149;;;:::o;32781:126::-;32818:7;32858:42;32851:5;32847:54;32836:65;;32781:126;;;:::o;32913:77::-;32950:7;32979:5;32968:16;;32913:77;;;:::o;32996:154::-;33080:6;33075:3;33070;33057:30;33142:1;33133:6;33128:3;33124:16;33117:27;32996:154;;;:::o;33156:307::-;33224:1;33234:113;33248:6;33245:1;33242:13;33234:113;;;33333:1;33328:3;33324:11;33318:18;33314:1;33309:3;33305:11;33298:39;33270:2;33267:1;33263:10;33258:15;;33234:113;;;33365:6;33362:1;33359:13;33356:101;;;33445:1;33436:6;33431:3;33427:16;33420:27;33356:101;33205:258;33156:307;;;:::o;33469:320::-;33513:6;33550:1;33544:4;33540:12;33530:22;;33597:1;33591:4;33587:12;33618:18;33608:81;;33674:4;33666:6;33662:17;33652:27;;33608:81;33736:2;33728:6;33725:14;33705:18;33702:38;33699:84;;;33755:18;;:::i;:::-;33699:84;33520:269;33469:320;;;:::o;33795:281::-;33878:27;33900:4;33878:27;:::i;:::-;33870:6;33866:40;34008:6;33996:10;33993:22;33972:18;33960:10;33957:34;33954:62;33951:88;;;34019:18;;:::i;:::-;33951:88;34059:10;34055:2;34048:22;33838:238;33795:281;;:::o;34082:233::-;34121:3;34144:24;34162:5;34144:24;:::i;:::-;34135:33;;34190:66;34183:5;34180:77;34177:103;;;34260:18;;:::i;:::-;34177:103;34307:1;34300:5;34296:13;34289:20;;34082:233;;;:::o;34321:180::-;34369:77;34366:1;34359:88;34466:4;34463:1;34456:15;34490:4;34487:1;34480:15;34507:180;34555:77;34552:1;34545:88;34652:4;34649:1;34642:15;34676:4;34673:1;34666:15;34693:180;34741:77;34738:1;34731:88;34838:4;34835:1;34828:15;34862:4;34859:1;34852:15;34879:180;34927:77;34924:1;34917:88;35024:4;35021:1;35014:15;35048:4;35045:1;35038:15;35065:183;35100:3;35138:1;35120:16;35117:23;35114:128;;;35176:1;35173;35170;35155:23;35198:34;35229:1;35223:8;35198:34;:::i;:::-;35191:41;;35114:128;35065:183;:::o;35254:117::-;35363:1;35360;35353:12;35377:117;35486:1;35483;35476:12;35500:117;35609:1;35606;35599:12;35623:117;35732:1;35729;35722:12;35746:117;35855:1;35852;35845:12;35869:117;35978:1;35975;35968:12;35992:102;36033:6;36084:2;36080:7;36075:2;36068:5;36064:14;36060:28;36050:38;;35992:102;;;:::o;36100:106::-;36144:8;36193:5;36188:3;36184:15;36163:36;;36100:106;;;:::o;36212:239::-;36352:34;36348:1;36340:6;36336:14;36329:58;36421:22;36416:2;36408:6;36404:15;36397:47;36212:239;:::o;36457:227::-;36597:34;36593:1;36585:6;36581:14;36574:58;36666:10;36661:2;36653:6;36649:15;36642:35;36457:227;:::o;36690:230::-;36830:34;36826:1;36818:6;36814:14;36807:58;36899:13;36894:2;36886:6;36882:15;36875:38;36690:230;:::o;36926:225::-;37066:34;37062:1;37054:6;37050:14;37043:58;37135:8;37130:2;37122:6;37118:15;37111:33;36926:225;:::o;37157:228::-;37297:34;37293:1;37285:6;37281:14;37274:58;37366:11;37361:2;37353:6;37349:15;37342:36;37157:228;:::o;37391:224::-;37531:34;37527:1;37519:6;37515:14;37508:58;37600:7;37595:2;37587:6;37583:15;37576:32;37391:224;:::o;37621:237::-;37761:34;37757:1;37749:6;37745:14;37738:58;37830:20;37825:2;37817:6;37813:15;37806:45;37621:237;:::o;37864:229::-;38004:34;38000:1;37992:6;37988:14;37981:58;38073:12;38068:2;38060:6;38056:15;38049:37;37864:229;:::o;38099:161::-;38239:13;38235:1;38227:6;38223:14;38216:37;38099:161;:::o;38266:182::-;38406:34;38402:1;38394:6;38390:14;38383:58;38266:182;:::o;38454:228::-;38594:34;38590:1;38582:6;38578:14;38571:58;38663:11;38658:2;38650:6;38646:15;38639:36;38454:228;:::o;38688:::-;38828:34;38824:1;38816:6;38812:14;38805:58;38897:11;38892:2;38884:6;38880:15;38873:36;38688:228;:::o;38922:227::-;39062:34;39058:1;39050:6;39046:14;39039:58;39131:10;39126:2;39118:6;39114:15;39107:35;38922:227;:::o;39155:220::-;39295:34;39291:1;39283:6;39279:14;39272:58;39364:3;39359:2;39351:6;39347:15;39340:28;39155:220;:::o;39381:711::-;39420:3;39458:4;39440:16;39437:26;39434:39;;;39466:5;;39434:39;39495:20;;:::i;:::-;39570:1;39552:16;39548:24;39545:1;39539:4;39524:49;39603:4;39597:11;39702:16;39695:4;39687:6;39683:17;39680:39;39647:18;39639:6;39636:30;39620:113;39617:146;;;39748:5;;;;39617:146;39794:6;39788:4;39784:17;39830:3;39824:10;39857:18;39849:6;39846:30;39843:43;;;39879:5;;;;;;39843:43;39927:6;39920:4;39915:3;39911:14;39907:27;39986:1;39968:16;39964:24;39958:4;39954:35;39949:3;39946:44;39943:57;;;39993:5;;;;;;;39943:57;40010;40058:6;40052:4;40048:17;40040:6;40036:30;40030:4;40010:57;:::i;:::-;40083:3;40076:10;;39424:668;;;;;39381:711;;:::o;40098:122::-;40171:24;40189:5;40171:24;:::i;:::-;40164:5;40161:35;40151:63;;40210:1;40207;40200:12;40151:63;40098:122;:::o;40226:116::-;40296:21;40311:5;40296:21;:::i;:::-;40289:5;40286:32;40276:60;;40332:1;40329;40322:12;40276:60;40226:116;:::o;40348:120::-;40420:23;40437:5;40420:23;:::i;:::-;40413:5;40410:34;40400:62;;40458:1;40455;40448:12;40400:62;40348:120;:::o;40474:122::-;40547:24;40565:5;40547:24;:::i;:::-;40540:5;40537:35;40527:63;;40586:1;40583;40576:12;40527:63;40474:122;:::o

Swarm Source

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