ETH Price: $2,326.75 (+1.66%)

MetaScyra X (SCYRAX)
 

Overview

TokenID

9

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

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

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 11: contract.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

contract MetaScyraX is ERC1155Supply, Ownable  {

    // Contract name
    string public name;
    // Contract symbol
    string public symbol;

    constructor(
        string memory uri,
        string memory _symbol,
        string memory _name
    ) ERC1155(
        uri
    ) { 
        name = _name;
        symbol = _symbol;
    }

    function mint(address _to, uint _tokenId, uint _qty) external onlyOwner {
       _mint(_to, _tokenId, _qty, "");
    }

    function setUri(string memory _newUri) public onlyOwner {
        _setURI(_newUri);
    }

    function withdraw() external onlyOwner {
        _withdraw(msg.sender, address(this).balance);
    }

    function _withdraw(address addr, uint256 amount) private {
        (bool success, ) = addr.call{value: amount}("");
        require(success, "TRANSFER_FAIL");
    }
}

File 1 of 11: Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Address.sol)

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 11: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

File 4 of 11: ERC1155.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC1155/ERC1155.sol)

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);
    }

    function uint2str(uint _i) internal pure returns (string memory _uintAsString) {
        if (_i == 0) {
            return "0";
        }
        uint j = _i;
        uint len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len;
        while (_i != 0) {
            k = k-1;
            uint8 temp = (48 + uint8(_i - _i / 10 * 10));
            bytes1 b1 = bytes1(temp);
            bstr[k] = b1;
            _i /= 10;
        }
        return string(bstr);
    }

    /**
     * @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 id) public view virtual override returns (string memory) {
        return string(abi.encodePacked(_uri, uint2str(id)));
    }

    /**
     * @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 {
        _setApprovalForAll(_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 `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

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

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

        _doSafeTransferAcceptanceCheck(operator, address(0), to, 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 `from`
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `from` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

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

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

        emit TransferSingle(operator, from, 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 from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

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

        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: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

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

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @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 11: ERC1155Supply.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC1155/extensions/ERC1155Supply.sol)

pragma solidity ^0.8.0;

import "./ERC1155.sol";

/**
 * @dev Extension of ERC1155 that adds tracking of total supply per id.
 *
 * Useful for scenarios where Fungible and Non-fungible tokens have to be
 * clearly identified. Note: While a totalSupply of 1 might mean the
 * corresponding is an NFT, there is no guarantees that no other token with the
 * same id are not going to be minted.
 */
abstract contract ERC1155Supply is ERC1155 {
    mapping(uint256 => uint256) private _totalSupply;

    /**
     * @dev Total amount of tokens in with a given id.
     */
    function totalSupply(uint256 id) public view virtual returns (uint256) {
        return _totalSupply[id];
    }

    /**
     * @dev Indicates whether any token exist with a given id, or not.
     */
    function exists(uint256 id) public view virtual returns (bool) {
        return ERC1155Supply.totalSupply(id) > 0;
    }

    /**
     * @dev See {ERC1155-_beforeTokenTransfer}.
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual override {
        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);

        if (from == address(0)) {
            for (uint256 i = 0; i < ids.length; ++i) {
                _totalSupply[ids[i]] += amounts[i];
            }
        }

        if (to == address(0)) {
            for (uint256 i = 0; i < ids.length; ++i) {
                _totalSupply[ids[i]] -= amounts[i];
            }
        }
    }
}

File 6 of 11: ERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol)

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 7 of 11: IERC1155.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC1155/IERC1155.sol)

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 8 of 11: IERC1155MetadataURI.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

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 9 of 11: IERC1155Receiver.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC1155/IERC1155Receiver.sol)

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 10 of 11: IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/introspection/IERC165.sol)

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 11 of 11: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

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() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_name","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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"string","name":"_newUri","type":"string"}],"name":"setUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620021183803806200211883398101604081905262000034916200025f565b82620000408162000081565b506200004c336200009a565b805162000061906005906020840190620000ec565b50815162000077906006906020850190620000ec565b505050506200032d565b805162000096906002906020840190620000ec565b5050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000fa90620002f0565b90600052602060002090601f0160209004810192826200011e576000855562000169565b82601f106200013957805160ff191683800117855562000169565b8280016001018555821562000169579182015b82811115620001695782518255916020019190600101906200014c565b50620001779291506200017b565b5090565b5b808211156200017757600081556001016200017c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ba57600080fd5b81516001600160401b0380821115620001d757620001d762000192565b604051601f8301601f19908116603f0116810190828211818310171562000202576200020262000192565b816040528381526020925086838588010111156200021f57600080fd5b600091505b8382101562000243578582018301518183018401529082019062000224565b83821115620002555760008385830101525b9695505050505050565b6000806000606084860312156200027557600080fd5b83516001600160401b03808211156200028d57600080fd5b6200029b87838801620001a8565b94506020860151915080821115620002b257600080fd5b620002c087838801620001a8565b93506040860151915080821115620002d757600080fd5b50620002e686828701620001a8565b9150509250925092565b600181811c908216806200030557607f821691505b602082108114156200032757634e487b7160e01b600052602260045260246000fd5b50919050565b611ddb806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c8063715018a6116100a2578063a22cb46511610071578063a22cb4651461023b578063bd85b0391461024e578063e985e9c51461026e578063f242432a146102aa578063f2fde38b146102bd57600080fd5b8063715018a6146101fd5780638da5cb5b1461020557806395d89b41146102205780639b642de11461022857600080fd5b8063156e29f6116100e9578063156e29f61461018b5780632eb2c2d6146101a05780633ccfd60b146101b35780634e1273f4146101bb5780634f558e79146101db57600080fd5b8062fdd58e1461011a57806301ffc9a71461014057806306fdde03146101635780630e89341c14610178575b600080fd5b61012d6101283660046113bc565b6102d0565b6040519081526020015b60405180910390f35b61015361014e3660046113fc565b610367565b6040519015158152602001610137565b61016b6103b9565b604051610137919061147c565b61016b61018636600461148f565b610447565b61019e6101993660046114a8565b61047b565b005b61019e6101ae366004611631565b6104c5565b61019e61055c565b6101ce6101c93660046116db565b610592565b60405161013791906117e1565b6101536101e936600461148f565b600090815260036020526040902054151590565b61019e6106bc565b6004546040516001600160a01b039091168152602001610137565b61016b6106f0565b61019e6102363660046117f4565b6106fd565b61019e610249366004611845565b610733565b61012d61025c36600461148f565b60009081526003602052604090205490565b61015361027c366004611881565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61019e6102b83660046118b4565b610742565b61019e6102cb366004611919565b6107c9565b60006001600160a01b0383166103415760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061039857506001600160e01b031982166303a24d0760e21b145b806103b357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600580546103c690611934565b80601f01602080910402602001604051908101604052809291908181526020018280546103f290611934565b801561043f5780601f106104145761010080835404028352916020019161043f565b820191906000526020600020905b81548152906001019060200180831161042257829003601f168201915b505050505081565b6060600261045483610861565b60405160200161046592919061198b565b6040516020818303038152906040529050919050565b6004546001600160a01b031633146104a55760405162461bcd60e51b815260040161033890611a32565b6104c08383836040518060200160405280600081525061098a565b505050565b6001600160a01b0385163314806104e157506104e1853361027c565b6105485760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610338565b6105558585858585610a9a565b5050505050565b6004546001600160a01b031633146105865760405162461bcd60e51b815260040161033890611a32565b6105903347610c85565b565b606081518351146105f75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610338565b6000835167ffffffffffffffff811115610613576106136114db565b60405190808252806020026020018201604052801561063c578160200160208202803683370190505b50905060005b84518110156106b45761068785828151811061066057610660611a67565b602002602001015185838151811061067a5761067a611a67565b60200260200101516102d0565b82828151811061069957610699611a67565b60209081029190910101526106ad81611a93565b9050610642565b509392505050565b6004546001600160a01b031633146106e65760405162461bcd60e51b815260040161033890611a32565b6105906000610d18565b600680546103c690611934565b6004546001600160a01b031633146107275760405162461bcd60e51b815260040161033890611a32565b61073081610d6a565b50565b61073e338383610d7d565b5050565b6001600160a01b03851633148061075e575061075e853361027c565b6107bc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610338565b6105558585858585610e5e565b6004546001600160a01b031633146107f35760405162461bcd60e51b815260040161033890611a32565b6001600160a01b0381166108585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b61073081610d18565b6060816108855750506040805180820190915260018152600360fc1b602082015290565b8160005b81156108af578061089981611a93565b91506108a89050600a83611aae565b9150610889565b60008167ffffffffffffffff8111156108ca576108ca6114db565b6040519080825280601f01601f1916602001820160405280156108f4576020820181803683370190505b509050815b85156109815761090a600182611ad0565b90506000610919600a88611aae565b61092490600a611ae7565b61092e9088611ad0565b610939906030611b06565b905060008160f81b90508084848151811061095657610956611a67565b60200101906001600160f81b031916908160001a905350610978600a89611aae565b975050506108f9565b50949350505050565b6001600160a01b0384166109ea5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b33610a0a816000876109fb88610f7b565b610a0488610f7b565b87610fc6565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610a3a908490611b2b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610555816000878787876110d2565b8151835114610afc5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610338565b6001600160a01b038416610b225760405162461bcd60e51b815260040161033890611b43565b33610b31818787878787610fc6565b60005b8451811015610c17576000858281518110610b5157610b51611a67565b602002602001015190506000858381518110610b6f57610b6f611a67565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610bbf5760405162461bcd60e51b815260040161033890611b88565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610bfc908490611b2b565b9250508190555050505080610c1090611a93565b9050610b34565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610c67929190611bd2565b60405180910390a4610c7d81878787878761123d565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610cd2576040519150601f19603f3d011682016040523d82523d6000602084013e610cd7565b606091505b50509050806104c05760405162461bcd60e51b815260206004820152600d60248201526c1514905394d1915497d1905253609a1b6044820152606401610338565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b805161073e906002906020840190611307565b816001600160a01b0316836001600160a01b03161415610df15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610338565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610e845760405162461bcd60e51b815260040161033890611b43565b33610e948187876109fb88610f7b565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015610ed55760405162461bcd60e51b815260040161033890611b88565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290610f12908490611b2b565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610f728288888888886110d2565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fb557610fb5611a67565b602090810291909101015292915050565b6001600160a01b03851661104d5760005b835181101561104b57828181518110610ff257610ff2611a67565b60200260200101516003600086848151811061101057611010611a67565b6020026020010151815260200190815260200160002060008282546110359190611b2b565b90915550611044905081611a93565b9050610fd7565b505b6001600160a01b038416610c7d5760005b8351811015610f725782818151811061107957611079611a67565b60200260200101516003600086848151811061109757611097611a67565b6020026020010151815260200190815260200160002060008282546110bc9190611ad0565b909155506110cb905081611a93565b905061105e565b6001600160a01b0384163b15610c7d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906111169089908990889088908890600401611bf7565b602060405180830381600087803b15801561113057600080fd5b505af1925050508015611160575060408051601f3d908101601f1916820190925261115d91810190611c3c565b60015b61120d5761116c611c59565b806308c379a014156111a65750611181611c75565b8061118c57506111a8565b8060405162461bcd60e51b8152600401610338919061147c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610338565b6001600160e01b0319811663f23a6e6160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b6001600160a01b0384163b15610c7d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906112819089908990889088908890600401611d47565b602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112cb575060408051601f3d908101601f191682019092526112c891810190611c3c565b60015b6112d75761116c611c59565b6001600160e01b0319811663bc197c8160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b82805461131390611934565b90600052602060002090601f016020900481019282611335576000855561137b565b82601f1061134e57805160ff191683800117855561137b565b8280016001018555821561137b579182015b8281111561137b578251825591602001919060010190611360565b5061138792915061138b565b5090565b5b80821115611387576000815560010161138c565b80356001600160a01b03811681146113b757600080fd5b919050565b600080604083850312156113cf57600080fd5b6113d8836113a0565b946020939093013593505050565b6001600160e01b03198116811461073057600080fd5b60006020828403121561140e57600080fd5b8135611419816113e6565b9392505050565b60005b8381101561143b578181015183820152602001611423565b8381111561144a576000848401525b50505050565b60008151808452611468816020860160208601611420565b601f01601f19169290920160200192915050565b6020815260006114196020830184611450565b6000602082840312156114a157600080fd5b5035919050565b6000806000606084860312156114bd57600080fd5b6114c6846113a0565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611517576115176114db565b6040525050565b600067ffffffffffffffff821115611538576115386114db565b5060051b60200190565b600082601f83011261155357600080fd5b813560206115608261151e565b60405161156d82826114f1565b83815260059390931b850182019282810191508684111561158d57600080fd5b8286015b848110156115a85780358352918301918301611591565b509695505050505050565b600067ffffffffffffffff8311156115cd576115cd6114db565b6040516115e4601f8501601f1916602001826114f1565b8091508381528484840111156115f957600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261162257600080fd5b611419838335602085016115b3565b600080600080600060a0868803121561164957600080fd5b611652866113a0565b9450611660602087016113a0565b9350604086013567ffffffffffffffff8082111561167d57600080fd5b61168989838a01611542565b9450606088013591508082111561169f57600080fd5b6116ab89838a01611542565b935060808801359150808211156116c157600080fd5b506116ce88828901611611565b9150509295509295909350565b600080604083850312156116ee57600080fd5b823567ffffffffffffffff8082111561170657600080fd5b818501915085601f83011261171a57600080fd5b813560206117278261151e565b60405161173482826114f1565b83815260059390931b850182019282810191508984111561175457600080fd5b948201945b838610156117795761176a866113a0565b82529482019490820190611759565b9650508601359250508082111561178f57600080fd5b5061179c85828601611542565b9150509250929050565b600081518084526020808501945080840160005b838110156117d6578151875295820195908201906001016117ba565b509495945050505050565b60208152600061141960208301846117a6565b60006020828403121561180657600080fd5b813567ffffffffffffffff81111561181d57600080fd5b8201601f8101841361182e57600080fd5b61183d848235602084016115b3565b949350505050565b6000806040838503121561185857600080fd5b611861836113a0565b91506020830135801515811461187657600080fd5b809150509250929050565b6000806040838503121561189457600080fd5b61189d836113a0565b91506118ab602084016113a0565b90509250929050565b600080600080600060a086880312156118cc57600080fd5b6118d5866113a0565b94506118e3602087016113a0565b93506040860135925060608601359150608086013567ffffffffffffffff81111561190d57600080fd5b6116ce88828901611611565b60006020828403121561192b57600080fd5b611419826113a0565b600181811c9082168061194857607f821691505b6020821081141561196957634e487b7160e01b600052602260045260246000fd5b50919050565b60008151611981818560208601611420565b9290920192915050565b600080845481600182811c9150808316806119a757607f831692505b60208084108214156119c757634e487b7160e01b86526022600452602486fd5b8180156119db57600181146119ec57611a19565b60ff19861689528489019650611a19565b60008b81526020902060005b86811015611a115781548b8201529085019083016119f8565b505084890196505b505050505050611a29818561196f565b95945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611aa757611aa7611a7d565b5060010190565b600082611acb57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ae257611ae2611a7d565b500390565b6000816000190483118215151615611b0157611b01611a7d565b500290565b600060ff821660ff84168060ff03821115611b2357611b23611a7d565b019392505050565b60008219821115611b3e57611b3e611a7d565b500190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000611be560408301856117a6565b8281036020840152611a2981856117a6565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611c3190830184611450565b979650505050505050565b600060208284031215611c4e57600080fd5b8151611419816113e6565b600060033d1115611c725760046000803e5060005160e01c5b90565b600060443d1015611c835790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611cb357505050505090565b8285019150815181811115611ccb5750505050505090565b843d8701016020828501011115611ce55750505050505090565b611cf4602082860101876114f1565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090611d73908301866117a6565b8281036060840152611d8581866117a6565b90508281036080840152611d998185611450565b9897505050505050505056fea264697066735822122084571e5ca6da02e64fd4ffa14f0f4a6ae2a7814c1ade32538033f31ca6933faa64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f6d65746173637972612e636f6d2f6170692f313135352f0000000000000000000000000000000000000000000000000000000000000000065343595241580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4d65746153637972612058000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101155760003560e01c8063715018a6116100a2578063a22cb46511610071578063a22cb4651461023b578063bd85b0391461024e578063e985e9c51461026e578063f242432a146102aa578063f2fde38b146102bd57600080fd5b8063715018a6146101fd5780638da5cb5b1461020557806395d89b41146102205780639b642de11461022857600080fd5b8063156e29f6116100e9578063156e29f61461018b5780632eb2c2d6146101a05780633ccfd60b146101b35780634e1273f4146101bb5780634f558e79146101db57600080fd5b8062fdd58e1461011a57806301ffc9a71461014057806306fdde03146101635780630e89341c14610178575b600080fd5b61012d6101283660046113bc565b6102d0565b6040519081526020015b60405180910390f35b61015361014e3660046113fc565b610367565b6040519015158152602001610137565b61016b6103b9565b604051610137919061147c565b61016b61018636600461148f565b610447565b61019e6101993660046114a8565b61047b565b005b61019e6101ae366004611631565b6104c5565b61019e61055c565b6101ce6101c93660046116db565b610592565b60405161013791906117e1565b6101536101e936600461148f565b600090815260036020526040902054151590565b61019e6106bc565b6004546040516001600160a01b039091168152602001610137565b61016b6106f0565b61019e6102363660046117f4565b6106fd565b61019e610249366004611845565b610733565b61012d61025c36600461148f565b60009081526003602052604090205490565b61015361027c366004611881565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61019e6102b83660046118b4565b610742565b61019e6102cb366004611919565b6107c9565b60006001600160a01b0383166103415760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061039857506001600160e01b031982166303a24d0760e21b145b806103b357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600580546103c690611934565b80601f01602080910402602001604051908101604052809291908181526020018280546103f290611934565b801561043f5780601f106104145761010080835404028352916020019161043f565b820191906000526020600020905b81548152906001019060200180831161042257829003601f168201915b505050505081565b6060600261045483610861565b60405160200161046592919061198b565b6040516020818303038152906040529050919050565b6004546001600160a01b031633146104a55760405162461bcd60e51b815260040161033890611a32565b6104c08383836040518060200160405280600081525061098a565b505050565b6001600160a01b0385163314806104e157506104e1853361027c565b6105485760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610338565b6105558585858585610a9a565b5050505050565b6004546001600160a01b031633146105865760405162461bcd60e51b815260040161033890611a32565b6105903347610c85565b565b606081518351146105f75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610338565b6000835167ffffffffffffffff811115610613576106136114db565b60405190808252806020026020018201604052801561063c578160200160208202803683370190505b50905060005b84518110156106b45761068785828151811061066057610660611a67565b602002602001015185838151811061067a5761067a611a67565b60200260200101516102d0565b82828151811061069957610699611a67565b60209081029190910101526106ad81611a93565b9050610642565b509392505050565b6004546001600160a01b031633146106e65760405162461bcd60e51b815260040161033890611a32565b6105906000610d18565b600680546103c690611934565b6004546001600160a01b031633146107275760405162461bcd60e51b815260040161033890611a32565b61073081610d6a565b50565b61073e338383610d7d565b5050565b6001600160a01b03851633148061075e575061075e853361027c565b6107bc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610338565b6105558585858585610e5e565b6004546001600160a01b031633146107f35760405162461bcd60e51b815260040161033890611a32565b6001600160a01b0381166108585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b61073081610d18565b6060816108855750506040805180820190915260018152600360fc1b602082015290565b8160005b81156108af578061089981611a93565b91506108a89050600a83611aae565b9150610889565b60008167ffffffffffffffff8111156108ca576108ca6114db565b6040519080825280601f01601f1916602001820160405280156108f4576020820181803683370190505b509050815b85156109815761090a600182611ad0565b90506000610919600a88611aae565b61092490600a611ae7565b61092e9088611ad0565b610939906030611b06565b905060008160f81b90508084848151811061095657610956611a67565b60200101906001600160f81b031916908160001a905350610978600a89611aae565b975050506108f9565b50949350505050565b6001600160a01b0384166109ea5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b33610a0a816000876109fb88610f7b565b610a0488610f7b565b87610fc6565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610a3a908490611b2b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610555816000878787876110d2565b8151835114610afc5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610338565b6001600160a01b038416610b225760405162461bcd60e51b815260040161033890611b43565b33610b31818787878787610fc6565b60005b8451811015610c17576000858281518110610b5157610b51611a67565b602002602001015190506000858381518110610b6f57610b6f611a67565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610bbf5760405162461bcd60e51b815260040161033890611b88565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610bfc908490611b2b565b9250508190555050505080610c1090611a93565b9050610b34565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610c67929190611bd2565b60405180910390a4610c7d81878787878761123d565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610cd2576040519150601f19603f3d011682016040523d82523d6000602084013e610cd7565b606091505b50509050806104c05760405162461bcd60e51b815260206004820152600d60248201526c1514905394d1915497d1905253609a1b6044820152606401610338565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b805161073e906002906020840190611307565b816001600160a01b0316836001600160a01b03161415610df15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610338565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610e845760405162461bcd60e51b815260040161033890611b43565b33610e948187876109fb88610f7b565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015610ed55760405162461bcd60e51b815260040161033890611b88565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290610f12908490611b2b565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610f728288888888886110d2565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fb557610fb5611a67565b602090810291909101015292915050565b6001600160a01b03851661104d5760005b835181101561104b57828181518110610ff257610ff2611a67565b60200260200101516003600086848151811061101057611010611a67565b6020026020010151815260200190815260200160002060008282546110359190611b2b565b90915550611044905081611a93565b9050610fd7565b505b6001600160a01b038416610c7d5760005b8351811015610f725782818151811061107957611079611a67565b60200260200101516003600086848151811061109757611097611a67565b6020026020010151815260200190815260200160002060008282546110bc9190611ad0565b909155506110cb905081611a93565b905061105e565b6001600160a01b0384163b15610c7d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906111169089908990889088908890600401611bf7565b602060405180830381600087803b15801561113057600080fd5b505af1925050508015611160575060408051601f3d908101601f1916820190925261115d91810190611c3c565b60015b61120d5761116c611c59565b806308c379a014156111a65750611181611c75565b8061118c57506111a8565b8060405162461bcd60e51b8152600401610338919061147c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610338565b6001600160e01b0319811663f23a6e6160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b6001600160a01b0384163b15610c7d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906112819089908990889088908890600401611d47565b602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112cb575060408051601f3d908101601f191682019092526112c891810190611c3c565b60015b6112d75761116c611c59565b6001600160e01b0319811663bc197c8160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b82805461131390611934565b90600052602060002090601f016020900481019282611335576000855561137b565b82601f1061134e57805160ff191683800117855561137b565b8280016001018555821561137b579182015b8281111561137b578251825591602001919060010190611360565b5061138792915061138b565b5090565b5b80821115611387576000815560010161138c565b80356001600160a01b03811681146113b757600080fd5b919050565b600080604083850312156113cf57600080fd5b6113d8836113a0565b946020939093013593505050565b6001600160e01b03198116811461073057600080fd5b60006020828403121561140e57600080fd5b8135611419816113e6565b9392505050565b60005b8381101561143b578181015183820152602001611423565b8381111561144a576000848401525b50505050565b60008151808452611468816020860160208601611420565b601f01601f19169290920160200192915050565b6020815260006114196020830184611450565b6000602082840312156114a157600080fd5b5035919050565b6000806000606084860312156114bd57600080fd5b6114c6846113a0565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611517576115176114db565b6040525050565b600067ffffffffffffffff821115611538576115386114db565b5060051b60200190565b600082601f83011261155357600080fd5b813560206115608261151e565b60405161156d82826114f1565b83815260059390931b850182019282810191508684111561158d57600080fd5b8286015b848110156115a85780358352918301918301611591565b509695505050505050565b600067ffffffffffffffff8311156115cd576115cd6114db565b6040516115e4601f8501601f1916602001826114f1565b8091508381528484840111156115f957600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261162257600080fd5b611419838335602085016115b3565b600080600080600060a0868803121561164957600080fd5b611652866113a0565b9450611660602087016113a0565b9350604086013567ffffffffffffffff8082111561167d57600080fd5b61168989838a01611542565b9450606088013591508082111561169f57600080fd5b6116ab89838a01611542565b935060808801359150808211156116c157600080fd5b506116ce88828901611611565b9150509295509295909350565b600080604083850312156116ee57600080fd5b823567ffffffffffffffff8082111561170657600080fd5b818501915085601f83011261171a57600080fd5b813560206117278261151e565b60405161173482826114f1565b83815260059390931b850182019282810191508984111561175457600080fd5b948201945b838610156117795761176a866113a0565b82529482019490820190611759565b9650508601359250508082111561178f57600080fd5b5061179c85828601611542565b9150509250929050565b600081518084526020808501945080840160005b838110156117d6578151875295820195908201906001016117ba565b509495945050505050565b60208152600061141960208301846117a6565b60006020828403121561180657600080fd5b813567ffffffffffffffff81111561181d57600080fd5b8201601f8101841361182e57600080fd5b61183d848235602084016115b3565b949350505050565b6000806040838503121561185857600080fd5b611861836113a0565b91506020830135801515811461187657600080fd5b809150509250929050565b6000806040838503121561189457600080fd5b61189d836113a0565b91506118ab602084016113a0565b90509250929050565b600080600080600060a086880312156118cc57600080fd5b6118d5866113a0565b94506118e3602087016113a0565b93506040860135925060608601359150608086013567ffffffffffffffff81111561190d57600080fd5b6116ce88828901611611565b60006020828403121561192b57600080fd5b611419826113a0565b600181811c9082168061194857607f821691505b6020821081141561196957634e487b7160e01b600052602260045260246000fd5b50919050565b60008151611981818560208601611420565b9290920192915050565b600080845481600182811c9150808316806119a757607f831692505b60208084108214156119c757634e487b7160e01b86526022600452602486fd5b8180156119db57600181146119ec57611a19565b60ff19861689528489019650611a19565b60008b81526020902060005b86811015611a115781548b8201529085019083016119f8565b505084890196505b505050505050611a29818561196f565b95945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611aa757611aa7611a7d565b5060010190565b600082611acb57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ae257611ae2611a7d565b500390565b6000816000190483118215151615611b0157611b01611a7d565b500290565b600060ff821660ff84168060ff03821115611b2357611b23611a7d565b019392505050565b60008219821115611b3e57611b3e611a7d565b500190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000611be560408301856117a6565b8281036020840152611a2981856117a6565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611c3190830184611450565b979650505050505050565b600060208284031215611c4e57600080fd5b8151611419816113e6565b600060033d1115611c725760046000803e5060005160e01c5b90565b600060443d1015611c835790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611cb357505050505090565b8285019150815181811115611ccb5750505050505090565b843d8701016020828501011115611ce55750505050505090565b611cf4602082860101876114f1565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090611d73908301866117a6565b8281036060840152611d8581866117a6565b90508281036080840152611d998185611450565b9897505050505050505056fea264697066735822122084571e5ca6da02e64fd4ffa14f0f4a6ae2a7814c1ade32538033f31ca6933faa64736f6c63430008090033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f6d65746173637972612e636f6d2f6170692f313135352f0000000000000000000000000000000000000000000000000000000000000000065343595241580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4d65746153637972612058000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : uri (string): https://metascyra.com/api/1155/
Arg [1] : _symbol (string): SCYRAX
Arg [2] : _name (string): MetaScyra X

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000001f
Arg [4] : 68747470733a2f2f6d65746173637972612e636f6d2f6170692f313135352f00
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 5343595241580000000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [8] : 4d65746153637972612058000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

145:868:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2808:231:2;;;;;;:::i;:::-;;:::i;:::-;;;597:25:11;;;585:2;570:18;2808:231:2;;;;;;;;1207:310;;;;;;:::i;:::-;;:::i;:::-;;;1184:14:11;;1177:22;1159:41;;1147:2;1132:18;1207:310:2;1019:187:11;223:18:10;;;:::i;:::-;;;;;;;:::i;2509:148:2:-;;;;;;:::i;:::-;;:::i;506:120:10:-;;;;;;:::i;:::-;;:::i;:::-;;4747:442:2;;;;;;:::i;:::-;;:::i;733:102:10:-;;;:::i;3205:524:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;913:122:3:-;;;;;;:::i;:::-;970:4;791:16;;;:12;:16;;;;;;-1:-1:-1;;;913:122:3;1714:103:9;;;:::i;1063:87::-;1136:6;;1063:87;;-1:-1:-1;;;;;1136:6:9;;;7510:51:11;;7498:2;7483:18;1063:87:9;7364:203:11;272:20:10;;;:::i;634:91::-;;;;;;:::i;:::-;;:::i;3802:155:2:-;;;;;;:::i;:::-;;:::i;702:113:3:-;;;;;;:::i;:::-;764:7;791:16;;;:12;:16;;;;;;;702:113;4029:168:2;;;;;;:::i;:::-;-1:-1:-1;;;;;4152:27:2;;;4128:4;4152:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4029:168;4269:401;;;;;;:::i;:::-;;:::i;1972:201:9:-;;;;;;:::i;:::-;;:::i;2808:231:2:-;2894:7;-1:-1:-1;;;;;2922:21:2;;2914:77;;;;-1:-1:-1;;;2914:77:2;;9648:2:11;2914:77:2;;;9630:21:11;9687:2;9667:18;;;9660:30;9726:34;9706:18;;;9699:62;-1:-1:-1;;;9777:18:11;;;9770:41;9828:19;;2914:77:2;;;;;;;;;-1:-1:-1;3009:9:2;:13;;;;;;;;;;;-1:-1:-1;;;;;3009:22:2;;;;;;;;;;;;2808:231::o;1207:310::-;1309:4;-1:-1:-1;;;;;;1346:41:2;;-1:-1:-1;;;1346:41:2;;:110;;-1:-1:-1;;;;;;;1404:52:2;;-1:-1:-1;;;1404:52:2;1346:110;:163;;;-1:-1:-1;;;;;;;;;;963:40:4;;;1473:36:2;1326:183;1207:310;-1:-1:-1;;1207:310:2:o;223:18:10:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2509:148:2:-;2572:13;2629:4;2635:12;2644:2;2635:8;:12::i;:::-;2612:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2598:51;;2509:148;;;:::o;506:120:10:-;1136:6:9;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;588:30:10::1;594:3;599:8;609:4;588:30;;;;;;;;;;;::::0;:5:::1;:30::i;:::-;506:120:::0;;;:::o;4747:442:2:-;-1:-1:-1;;;;;4980:20:2;;736:10:1;4980:20:2;;:60;;-1:-1:-1;5004:36:2;5021:4;736:10:1;4029:168:2;:::i;5004:36::-;4958:160;;;;-1:-1:-1;;;4958:160:2;;12301:2:11;4958:160:2;;;12283:21:11;12340:2;12320:18;;;12313:30;12379:34;12359:18;;;12352:62;-1:-1:-1;;;12430:18:11;;;12423:48;12488:19;;4958:160:2;12099:414:11;4958:160:2;5129:52;5152:4;5158:2;5162:3;5167:7;5176:4;5129:22;:52::i;:::-;4747:442;;;;;:::o;733:102:10:-;1136:6:9;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;783:44:10::1;793:10;805:21;783:9;:44::i;:::-;733:102::o:0;3205:524:2:-;3361:16;3422:3;:10;3403:8;:15;:29;3395:83;;;;-1:-1:-1;;;3395:83:2;;12720:2:11;3395:83:2;;;12702:21:11;12759:2;12739:18;;;12732:30;12798:34;12778:18;;;12771:62;-1:-1:-1;;;12849:18:11;;;12842:39;12898:19;;3395:83:2;12518:405:11;3395:83:2;3491:30;3538:8;:15;3524:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:2;;3491:63;;3572:9;3567:122;3591:8;:15;3587:1;:19;3567:122;;;3647:30;3657:8;3666:1;3657:11;;;;;;;;:::i;:::-;;;;;;;3670:3;3674:1;3670:6;;;;;;;;:::i;:::-;;;;;;;3647:9;:30::i;:::-;3628:13;3642:1;3628:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;3608:3;;;:::i;:::-;;;3567:122;;;-1:-1:-1;3708:13:2;3205:524;-1:-1:-1;;;3205:524:2:o;1714:103:9:-;1136:6;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;1779:30:::1;1806:1;1779:18;:30::i;272:20:10:-:0;;;;;;;:::i;634:91::-;1136:6:9;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;701:16:10::1;709:7;701;:16::i;:::-;634:91:::0;:::o;3802:155:2:-;3897:52;736:10:1;3930:8:2;3940;3897:18;:52::i;:::-;3802:155;;:::o;4269:401::-;-1:-1:-1;;;;;4477:20:2;;736:10:1;4477:20:2;;:60;;-1:-1:-1;4501:36:2;4518:4;736:10:1;4029:168:2;:::i;4501:36::-;4455:151;;;;-1:-1:-1;;;4455:151:2;;13534:2:11;4455:151:2;;;13516:21:11;13573:2;13553:18;;;13546:30;13612:34;13592:18;;;13585:62;-1:-1:-1;;;13663:18:11;;;13656:39;13712:19;;4455:151:2;13332:405:11;4455:151:2;4617:45;4635:4;4641:2;4645;4649:6;4657:4;4617:17;:45::i;1972:201:9:-;1136:6;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;2061:22:9;::::1;2053:73;;;::::0;-1:-1:-1;;;2053:73:9;;13944:2:11;2053:73:9::1;::::0;::::1;13926:21:11::0;13983:2;13963:18;;;13956:30;14022:34;14002:18;;;13995:62;-1:-1:-1;;;14073:18:11;;;14066:36;14119:19;;2053:73:9::1;13742:402:11::0;2053:73:9::1;2137:28;2156:8;2137:18;:28::i;1525:573:2:-:0;1575:27;1619:7;1615:50;;-1:-1:-1;;1643:10:2;;;;;;;;;;;;-1:-1:-1;;;1643:10:2;;;;;1525:573::o;1615:50::-;1684:2;1675:6;1716:69;1723:6;;1716:69;;1746:5;;;;:::i;:::-;;-1:-1:-1;1766:7:2;;-1:-1:-1;1771:2:2;1766:7;;:::i;:::-;;;1716:69;;;1795:17;1825:3;1815:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1815:14:2;-1:-1:-1;1795:34:2;-1:-1:-1;1849:3:2;1863:198;1870:7;;1863:198;;1898:3;1900:1;1898;:3;:::i;:::-;1894:7;-1:-1:-1;1916:10:2;1946:7;1951:2;1946;:7;:::i;:::-;:12;;1956:2;1946:12;:::i;:::-;1941:17;;:2;:17;:::i;:::-;1930:29;;:2;:29;:::i;:::-;1916:44;;1975:9;1994:4;1987:12;;1975:24;;2024:2;2014:4;2019:1;2014:7;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;2014:12:2;;;;;;;;-1:-1:-1;2041:8:2;2047:2;2041:8;;:::i;:::-;;;1879:182;;1863:198;;;-1:-1:-1;2085:4:2;1525:573;-1:-1:-1;;;;1525:573:2:o;9223:569::-;-1:-1:-1;;;;;9376:16:2;;9368:62;;;;-1:-1:-1;;;9368:62:2;;15085:2:11;9368:62:2;;;15067:21:11;15124:2;15104:18;;;15097:30;15163:34;15143:18;;;15136:62;-1:-1:-1;;;15214:18:11;;;15207:31;15255:19;;9368:62:2;14883:397:11;9368:62:2;736:10:1;9487:102:2;736:10:1;9443:16:2;9530:2;9534:21;9552:2;9534:17;:21::i;:::-;9557:25;9575:6;9557:17;:25::i;:::-;9584:4;9487:20;:102::i;:::-;9602:9;:13;;;;;;;;;;;-1:-1:-1;;;;;9602:17:2;;;;;;;;;:27;;9623:6;;9602:9;:27;;9623:6;;9602:27;:::i;:::-;;;;-1:-1:-1;;9645:52:2;;;15592:25:11;;;15648:2;15633:18;;15626:34;;;-1:-1:-1;;;;;9645:52:2;;;;9678:1;;9645:52;;;;;;15565:18:11;9645:52:2;;;;;;;9710:74;9741:8;9759:1;9763:2;9767;9771:6;9779:4;9710:30;:74::i;6831:1074::-;7058:7;:14;7044:3;:10;:28;7036:81;;;;-1:-1:-1;;;7036:81:2;;15873:2:11;7036:81:2;;;15855:21:11;15912:2;15892:18;;;15885:30;15951:34;15931:18;;;15924:62;-1:-1:-1;;;16002:18:11;;;15995:38;16050:19;;7036:81:2;15671:404:11;7036:81:2;-1:-1:-1;;;;;7136:16:2;;7128:66;;;;-1:-1:-1;;;7128:66:2;;;;;;;:::i;:::-;736:10:1;7251:60:2;736:10:1;7282:4:2;7288:2;7292:3;7297:7;7306:4;7251:20;:60::i;:::-;7329:9;7324:421;7348:3;:10;7344:1;:14;7324:421;;;7380:10;7393:3;7397:1;7393:6;;;;;;;;:::i;:::-;;;;;;;7380:19;;7414:14;7431:7;7439:1;7431:10;;;;;;;;:::i;:::-;;;;;;;;;;;;7458:19;7480:13;;;;;;;;;;-1:-1:-1;;;;;7480:19:2;;;;;;;;;;;;7431:10;;-1:-1:-1;7522:21:2;;;;7514:76;;;;-1:-1:-1;;;7514:76:2;;;;;;;:::i;:::-;7634:9;:13;;;;;;;;;;;-1:-1:-1;;;;;7634:19:2;;;;;;;;;;7656:20;;;7634:42;;7706:17;;;;;;;:27;;7656:20;;7634:9;7706:27;;7656:20;;7706:27;:::i;:::-;;;;;;;;7365:380;;;7360:3;;;;:::i;:::-;;;7324:421;;;;7792:2;-1:-1:-1;;;;;7762:47:2;7786:4;-1:-1:-1;;;;;7762:47:2;7776:8;-1:-1:-1;;;;;7762:47:2;;7796:3;7801:7;7762:47;;;;;;;:::i;:::-;;;;;;;;7822:75;7858:8;7868:4;7874:2;7878:3;7883:7;7892:4;7822:35;:75::i;:::-;7025:880;6831:1074;;;;;:::o;843:167:10:-;912:12;930:4;-1:-1:-1;;;;;930:9:10;947:6;930:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:47;;;977:7;969:33;;;;-1:-1:-1;;;969:33:10;;17779:2:11;969:33:10;;;17761:21:11;17818:2;17798:18;;;17791:30;-1:-1:-1;;;17837:18:11;;;17830:43;17890:18;;969:33:10;17577:337:11;2333:191:9;2426:6;;;-1:-1:-1;;;;;2443:17:9;;;-1:-1:-1;;;;;;2443:17:9;;;;;;;2476:40;;2426:6;;;2443:17;2426:6;;2476:40;;2407:16;;2476:40;2396:128;2333:191;:::o;8749:88:2:-;8816:13;;;;:4;;:13;;;;;:::i;13017:331::-;13172:8;-1:-1:-1;;;;;13163:17:2;:5;-1:-1:-1;;;;;13163:17:2;;;13155:71;;;;-1:-1:-1;;;13155:71:2;;18121:2:11;13155:71:2;;;18103:21:11;18160:2;18140:18;;;18133:30;18199:34;18179:18;;;18172:62;-1:-1:-1;;;18250:18:11;;;18243:39;18299:19;;13155:71:2;17919:405:11;13155:71:2;-1:-1:-1;;;;;13237:25:2;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13237:46:2;;;;;;;;;;13299:41;;1159::11;;;13299::2;;1132:18:11;13299:41:2;;;;;;;13017:331;;;:::o;5653:820::-;-1:-1:-1;;;;;5841:16:2;;5833:66;;;;-1:-1:-1;;;5833:66:2;;;;;;;:::i;:::-;736:10:1;5956:96:2;736:10:1;5987:4:2;5993:2;5997:21;6015:2;5997:17;:21::i;5956:96::-;6065:19;6087:13;;;;;;;;;;;-1:-1:-1;;;;;6087:19:2;;;;;;;;;;6125:21;;;;6117:76;;;;-1:-1:-1;;;6117:76:2;;;;;;;:::i;:::-;6229:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6229:19:2;;;;;;;;;;6251:20;;;6229:42;;6293:17;;;;;;;:27;;6251:20;;6229:9;6293:27;;6251:20;;6293:27;:::i;:::-;;;;-1:-1:-1;;6338:46:2;;;15592:25:11;;;15648:2;15633:18;;15626:34;;;-1:-1:-1;;;;;6338:46:2;;;;;;;;;;;;;;15565:18:11;6338:46:2;;;;;;;6397:68;6428:8;6438:4;6444:2;6448;6452:6;6460:4;6397:30;:68::i;:::-;5822:651;;5653:820;;;;;:::o;16106:198::-;16226:16;;;16240:1;16226:16;;;;;;;;;16172;;16201:22;;16226:16;;;;;;;;;;;;-1:-1:-1;16226:16:2;16201:41;;16264:7;16253:5;16259:1;16253:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;16291:5;16106:198;-1:-1:-1;;16106:198:2:o;1110:655:3:-;-1:-1:-1;;;;;1432:18:3;;1428:160;;1472:9;1467:110;1491:3;:10;1487:1;:14;1467:110;;;1551:7;1559:1;1551:10;;;;;;;;:::i;:::-;;;;;;;1527:12;:20;1540:3;1544:1;1540:6;;;;;;;;:::i;:::-;;;;;;;1527:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;1503:3:3;;-1:-1:-1;1503:3:3;;:::i;:::-;;;1467:110;;;;1428:160;-1:-1:-1;;;;;1604:16:3;;1600:158;;1642:9;1637:110;1661:3;:10;1657:1;:14;1637:110;;;1721:7;1729:1;1721:10;;;;;;;;:::i;:::-;;;;;;;1697:12;:20;1710:3;1714:1;1710:6;;;;;;;;:::i;:::-;;;;;;;1697:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;1673:3:3;;-1:-1:-1;1673:3:3;;:::i;:::-;;;1637:110;;14533:744:2;-1:-1:-1;;;;;14748:13:2;;1120:20:0;1168:8;14744:526:2;;14784:72;;-1:-1:-1;;;14784:72:2;;-1:-1:-1;;;;;14784:38:2;;;;;:72;;14823:8;;14833:4;;14839:2;;14843:6;;14851:4;;14784:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14784:72:2;;;;;;;;-1:-1:-1;;14784:72:2;;;;;;;;;;;;:::i;:::-;;;14780:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15132:6;15125:14;;-1:-1:-1;;;15125:14:2;;;;;;;;:::i;14780:479::-;;;15181:62;;-1:-1:-1;;;15181:62:2;;20222:2:11;15181:62:2;;;20204:21:11;20261:2;20241:18;;;20234:30;20300:34;20280:18;;;20273:62;-1:-1:-1;;;20351:18:11;;;20344:50;20411:19;;15181:62:2;20020:416:11;14780:479:2;-1:-1:-1;;;;;;14906:55:2;;-1:-1:-1;;;14906:55:2;14902:154;;14986:50;;-1:-1:-1;;;14986:50:2;;;;;;;:::i;15285:813::-;-1:-1:-1;;;;;15525:13:2;;1120:20:0;1168:8;15521:570:2;;15561:79;;-1:-1:-1;;;15561:79:2;;-1:-1:-1;;;;;15561:43:2;;;;;:79;;15605:8;;15615:4;;15621:3;;15626:7;;15635:4;;15561:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15561:79:2;;;;;;;;-1:-1:-1;;15561:79:2;;;;;;;;;;;;:::i;:::-;;;15557:523;;;;:::i;:::-;-1:-1:-1;;;;;;15722:60:2;;-1:-1:-1;;;15722:60:2;15718:159;;15807:50;;-1:-1:-1;;;15807:50:2;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:11;82:20;;-1:-1:-1;;;;;131:31:11;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:11:o;633:131::-;-1:-1:-1;;;;;;707:32:11;;697:43;;687:71;;754:1;751;744:12;769:245;827:6;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;935:9;922:23;954:30;978:5;954:30;:::i;:::-;1003:5;769:245;-1:-1:-1;;;769:245:11:o;1211:258::-;1283:1;1293:113;1307:6;1304:1;1301:13;1293:113;;;1383:11;;;1377:18;1364:11;;;1357:39;1329:2;1322:10;1293:113;;;1424:6;1421:1;1418:13;1415:48;;;1459:1;1450:6;1445:3;1441:16;1434:27;1415:48;;1211:258;;;:::o;1474:269::-;1527:3;1565:5;1559:12;1592:6;1587:3;1580:19;1608:63;1664:6;1657:4;1652:3;1648:14;1641:4;1634:5;1630:16;1608:63;:::i;:::-;1725:2;1704:15;-1:-1:-1;;1700:29:11;1691:39;;;;1732:4;1687:50;;1474:269;-1:-1:-1;;1474:269:11:o;1748:231::-;1897:2;1886:9;1879:21;1860:4;1917:56;1969:2;1958:9;1954:18;1946:6;1917:56;:::i;1984:180::-;2043:6;2096:2;2084:9;2075:7;2071:23;2067:32;2064:52;;;2112:1;2109;2102:12;2064:52;-1:-1:-1;2135:23:11;;1984:180;-1:-1:-1;1984:180:11:o;2169:322::-;2246:6;2254;2262;2315:2;2303:9;2294:7;2290:23;2286:32;2283:52;;;2331:1;2328;2321:12;2283:52;2354:29;2373:9;2354:29;:::i;:::-;2344:39;2430:2;2415:18;;2402:32;;-1:-1:-1;2481:2:11;2466:18;;;2453:32;;2169:322;-1:-1:-1;;;2169:322:11:o;2496:127::-;2557:10;2552:3;2548:20;2545:1;2538:31;2588:4;2585:1;2578:15;2612:4;2609:1;2602:15;2628:249;2738:2;2719:13;;-1:-1:-1;;2715:27:11;2703:40;;2773:18;2758:34;;2794:22;;;2755:62;2752:88;;;2820:18;;:::i;:::-;2856:2;2849:22;-1:-1:-1;;2628:249:11:o;2882:183::-;2942:4;2975:18;2967:6;2964:30;2961:56;;;2997:18;;:::i;:::-;-1:-1:-1;3042:1:11;3038:14;3054:4;3034:25;;2882:183::o;3070:724::-;3124:5;3177:3;3170:4;3162:6;3158:17;3154:27;3144:55;;3195:1;3192;3185:12;3144:55;3231:6;3218:20;3257:4;3280:43;3320:2;3280:43;:::i;:::-;3352:2;3346:9;3364:31;3392:2;3384:6;3364:31;:::i;:::-;3430:18;;;3522:1;3518:10;;;;3506:23;;3502:32;;;3464:15;;;;-1:-1:-1;3546:15:11;;;3543:35;;;3574:1;3571;3564:12;3543:35;3610:2;3602:6;3598:15;3622:142;3638:6;3633:3;3630:15;3622:142;;;3704:17;;3692:30;;3742:12;;;;3655;;3622:142;;;-1:-1:-1;3782:6:11;3070:724;-1:-1:-1;;;;;;3070:724:11:o;3799:468::-;3863:5;3897:18;3889:6;3886:30;3883:56;;;3919:18;;:::i;:::-;3968:2;3962:9;3980:69;4037:2;4016:15;;-1:-1:-1;;4012:29:11;4043:4;4008:40;3962:9;3980:69;:::i;:::-;4067:6;4058:15;;4097:6;4089;4082:22;4137:3;4128:6;4123:3;4119:16;4116:25;4113:45;;;4154:1;4151;4144:12;4113:45;4204:6;4199:3;4192:4;4184:6;4180:17;4167:44;4259:1;4252:4;4243:6;4235;4231:19;4227:30;4220:41;;3799:468;;;;;:::o;4272:220::-;4314:5;4367:3;4360:4;4352:6;4348:17;4344:27;4334:55;;4385:1;4382;4375:12;4334:55;4407:79;4482:3;4473:6;4460:20;4453:4;4445:6;4441:17;4407:79;:::i;4497:943::-;4651:6;4659;4667;4675;4683;4736:3;4724:9;4715:7;4711:23;4707:33;4704:53;;;4753:1;4750;4743:12;4704:53;4776:29;4795:9;4776:29;:::i;:::-;4766:39;;4824:38;4858:2;4847:9;4843:18;4824:38;:::i;:::-;4814:48;;4913:2;4902:9;4898:18;4885:32;4936:18;4977:2;4969:6;4966:14;4963:34;;;4993:1;4990;4983:12;4963:34;5016:61;5069:7;5060:6;5049:9;5045:22;5016:61;:::i;:::-;5006:71;;5130:2;5119:9;5115:18;5102:32;5086:48;;5159:2;5149:8;5146:16;5143:36;;;5175:1;5172;5165:12;5143:36;5198:63;5253:7;5242:8;5231:9;5227:24;5198:63;:::i;:::-;5188:73;;5314:3;5303:9;5299:19;5286:33;5270:49;;5344:2;5334:8;5331:16;5328:36;;;5360:1;5357;5350:12;5328:36;;5383:51;5426:7;5415:8;5404:9;5400:24;5383:51;:::i;:::-;5373:61;;;4497:943;;;;;;;;:::o;5445:1208::-;5563:6;5571;5624:2;5612:9;5603:7;5599:23;5595:32;5592:52;;;5640:1;5637;5630:12;5592:52;5680:9;5667:23;5709:18;5750:2;5742:6;5739:14;5736:34;;;5766:1;5763;5756:12;5736:34;5804:6;5793:9;5789:22;5779:32;;5849:7;5842:4;5838:2;5834:13;5830:27;5820:55;;5871:1;5868;5861:12;5820:55;5907:2;5894:16;5929:4;5952:43;5992:2;5952:43;:::i;:::-;6024:2;6018:9;6036:31;6064:2;6056:6;6036:31;:::i;:::-;6102:18;;;6190:1;6186:10;;;;6178:19;;6174:28;;;6136:15;;;;-1:-1:-1;6214:19:11;;;6211:39;;;6246:1;6243;6236:12;6211:39;6270:11;;;;6290:148;6306:6;6301:3;6298:15;6290:148;;;6372:23;6391:3;6372:23;:::i;:::-;6360:36;;6323:12;;;;6416;;;;6290:148;;;6457:6;-1:-1:-1;;6501:18:11;;6488:32;;-1:-1:-1;;6532:16:11;;;6529:36;;;6561:1;6558;6551:12;6529:36;;6584:63;6639:7;6628:8;6617:9;6613:24;6584:63;:::i;:::-;6574:73;;;5445:1208;;;;;:::o;6658:435::-;6711:3;6749:5;6743:12;6776:6;6771:3;6764:19;6802:4;6831:2;6826:3;6822:12;6815:19;;6868:2;6861:5;6857:14;6889:1;6899:169;6913:6;6910:1;6907:13;6899:169;;;6974:13;;6962:26;;7008:12;;;;7043:15;;;;6935:1;6928:9;6899:169;;;-1:-1:-1;7084:3:11;;6658:435;-1:-1:-1;;;;;6658:435:11:o;7098:261::-;7277:2;7266:9;7259:21;7240:4;7297:56;7349:2;7338:9;7334:18;7326:6;7297:56;:::i;7572:450::-;7641:6;7694:2;7682:9;7673:7;7669:23;7665:32;7662:52;;;7710:1;7707;7700:12;7662:52;7750:9;7737:23;7783:18;7775:6;7772:30;7769:50;;;7815:1;7812;7805:12;7769:50;7838:22;;7891:4;7883:13;;7879:27;-1:-1:-1;7869:55:11;;7920:1;7917;7910:12;7869:55;7943:73;8008:7;8003:2;7990:16;7985:2;7981;7977:11;7943:73;:::i;:::-;7933:83;7572:450;-1:-1:-1;;;;7572:450:11:o;8027:347::-;8092:6;8100;8153:2;8141:9;8132:7;8128:23;8124:32;8121:52;;;8169:1;8166;8159:12;8121:52;8192:29;8211:9;8192:29;:::i;:::-;8182:39;;8271:2;8260:9;8256:18;8243:32;8318:5;8311:13;8304:21;8297:5;8294:32;8284:60;;8340:1;8337;8330:12;8284:60;8363:5;8353:15;;;8027:347;;;;;:::o;8379:260::-;8447:6;8455;8508:2;8496:9;8487:7;8483:23;8479:32;8476:52;;;8524:1;8521;8514:12;8476:52;8547:29;8566:9;8547:29;:::i;:::-;8537:39;;8595:38;8629:2;8618:9;8614:18;8595:38;:::i;:::-;8585:48;;8379:260;;;;;:::o;8644:606::-;8748:6;8756;8764;8772;8780;8833:3;8821:9;8812:7;8808:23;8804:33;8801:53;;;8850:1;8847;8840:12;8801:53;8873:29;8892:9;8873:29;:::i;:::-;8863:39;;8921:38;8955:2;8944:9;8940:18;8921:38;:::i;:::-;8911:48;;9006:2;8995:9;8991:18;8978:32;8968:42;;9057:2;9046:9;9042:18;9029:32;9019:42;;9112:3;9101:9;9097:19;9084:33;9140:18;9132:6;9129:30;9126:50;;;9172:1;9169;9162:12;9126:50;9195:49;9236:7;9227:6;9216:9;9212:22;9195:49;:::i;9255:186::-;9314:6;9367:2;9355:9;9346:7;9342:23;9338:32;9335:52;;;9383:1;9380;9373:12;9335:52;9406:29;9425:9;9406:29;:::i;9858:380::-;9937:1;9933:12;;;;9980;;;10001:61;;10055:4;10047:6;10043:17;10033:27;;10001:61;10108:2;10100:6;10097:14;10077:18;10074:38;10071:161;;;10154:10;10149:3;10145:20;10142:1;10135:31;10189:4;10186:1;10179:15;10217:4;10214:1;10207:15;10071:161;;9858:380;;;:::o;10369:185::-;10411:3;10449:5;10443:12;10464:52;10509:6;10504:3;10497:4;10490:5;10486:16;10464:52;:::i;:::-;10532:16;;;;;10369:185;-1:-1:-1;;10369:185:11:o;10559:1174::-;10735:3;10764:1;10797:6;10791:13;10827:3;10849:1;10877:9;10873:2;10869:18;10859:28;;10937:2;10926:9;10922:18;10959;10949:61;;11003:4;10995:6;10991:17;10981:27;;10949:61;11029:2;11077;11069:6;11066:14;11046:18;11043:38;11040:165;;;-1:-1:-1;;;11104:33:11;;11160:4;11157:1;11150:15;11190:4;11111:3;11178:17;11040:165;11221:18;11248:104;;;;11366:1;11361:320;;;;11214:467;;11248:104;-1:-1:-1;;11281:24:11;;11269:37;;11326:16;;;;-1:-1:-1;11248:104:11;;11361:320;10316:1;10309:14;;;10353:4;10340:18;;11456:1;11470:165;11484:6;11481:1;11478:13;11470:165;;;11562:14;;11549:11;;;11542:35;11605:16;;;;11499:10;;11470:165;;;11474:3;;11664:6;11659:3;11655:16;11648:23;;11214:467;;;;;;;11697:30;11723:3;11715:6;11697:30;:::i;:::-;11690:37;10559:1174;-1:-1:-1;;;;;10559:1174:11:o;11738:356::-;11940:2;11922:21;;;11959:18;;;11952:30;12018:34;12013:2;11998:18;;11991:62;12085:2;12070:18;;11738:356::o;12928:127::-;12989:10;12984:3;12980:20;12977:1;12970:31;13020:4;13017:1;13010:15;13044:4;13041:1;13034:15;13060:127;13121:10;13116:3;13112:20;13109:1;13102:31;13152:4;13149:1;13142:15;13176:4;13173:1;13166:15;13192:135;13231:3;-1:-1:-1;;13252:17:11;;13249:43;;;13272:18;;:::i;:::-;-1:-1:-1;13319:1:11;13308:13;;13192:135::o;14149:217::-;14189:1;14215;14205:132;;14259:10;14254:3;14250:20;14247:1;14240:31;14294:4;14291:1;14284:15;14322:4;14319:1;14312:15;14205:132;-1:-1:-1;14351:9:11;;14149:217::o;14371:125::-;14411:4;14439:1;14436;14433:8;14430:34;;;14444:18;;:::i;:::-;-1:-1:-1;14481:9:11;;14371:125::o;14501:168::-;14541:7;14607:1;14603;14599:6;14595:14;14592:1;14589:21;14584:1;14577:9;14570:17;14566:45;14563:71;;;14614:18;;:::i;:::-;-1:-1:-1;14654:9:11;;14501:168::o;14674:204::-;14712:3;14748:4;14745:1;14741:12;14780:4;14777:1;14773:12;14815:3;14809:4;14805:14;14800:3;14797:23;14794:49;;;14823:18;;:::i;:::-;14859:13;;14674:204;-1:-1:-1;;;14674:204:11:o;15285:128::-;15325:3;15356:1;15352:6;15349:1;15346:13;15343:39;;;15362:18;;:::i;:::-;-1:-1:-1;15398:9:11;;15285:128::o;16080:401::-;16282:2;16264:21;;;16321:2;16301:18;;;16294:30;16360:34;16355:2;16340:18;;16333:62;-1:-1:-1;;;16426:2:11;16411:18;;16404:35;16471:3;16456:19;;16080:401::o;16486:406::-;16688:2;16670:21;;;16727:2;16707:18;;;16700:30;16766:34;16761:2;16746:18;;16739:62;-1:-1:-1;;;16832:2:11;16817:18;;16810:40;16882:3;16867:19;;16486:406::o;16897:465::-;17154:2;17143:9;17136:21;17117:4;17180:56;17232:2;17221:9;17217:18;17209:6;17180:56;:::i;:::-;17284:9;17276:6;17272:22;17267:2;17256:9;17252:18;17245:50;17312:44;17349:6;17341;17312:44;:::i;18329:572::-;-1:-1:-1;;;;;18626:15:11;;;18608:34;;18678:15;;18673:2;18658:18;;18651:43;18725:2;18710:18;;18703:34;;;18768:2;18753:18;;18746:34;;;18588:3;18811;18796:19;;18789:32;;;18551:4;;18838:57;;18875:19;;18867:6;18838:57;:::i;:::-;18830:65;18329:572;-1:-1:-1;;;;;;;18329:572:11:o;18906:249::-;18975:6;19028:2;19016:9;19007:7;19003:23;18999:32;18996:52;;;19044:1;19041;19034:12;18996:52;19076:9;19070:16;19095:30;19119:5;19095:30;:::i;19160:179::-;19195:3;19237:1;19219:16;19216:23;19213:120;;;19283:1;19280;19277;19262:23;-1:-1:-1;19320:1:11;19314:8;19309:3;19305:18;19213:120;19160:179;:::o;19344:671::-;19383:3;19425:4;19407:16;19404:26;19401:39;;;19344:671;:::o;19401:39::-;19467:2;19461:9;-1:-1:-1;;19532:16:11;19528:25;;19525:1;19461:9;19504:50;19583:4;19577:11;19607:16;19642:18;19713:2;19706:4;19698:6;19694:17;19691:25;19686:2;19678:6;19675:14;19672:45;19669:58;;;19720:5;;;;;19344:671;:::o;19669:58::-;19757:6;19751:4;19747:17;19736:28;;19793:3;19787:10;19820:2;19812:6;19809:14;19806:27;;;19826:5;;;;;;19344:671;:::o;19806:27::-;19910:2;19891:16;19885:4;19881:27;19877:36;19870:4;19861:6;19856:3;19852:16;19848:27;19845:69;19842:82;;;19917:5;;;;;;19344:671;:::o;19842:82::-;19933:57;19984:4;19975:6;19967;19963:19;19959:30;19953:4;19933:57;:::i;:::-;-1:-1:-1;20006:3:11;;19344:671;-1:-1:-1;;;;;19344:671:11:o;20441:404::-;20643:2;20625:21;;;20682:2;20662:18;;;20655:30;20721:34;20716:2;20701:18;;20694:62;-1:-1:-1;;;20787:2:11;20772:18;;20765:38;20835:3;20820:19;;20441:404::o;20850:838::-;-1:-1:-1;;;;;21247:15:11;;;21229:34;;21299:15;;21294:2;21279:18;;21272:43;21209:3;21346:2;21331:18;;21324:31;;;21172:4;;21378:57;;21415:19;;21407:6;21378:57;:::i;:::-;21483:9;21475:6;21471:22;21466:2;21455:9;21451:18;21444:50;21517:44;21554:6;21546;21517:44;:::i;:::-;21503:58;;21610:9;21602:6;21598:22;21592:3;21581:9;21577:19;21570:51;21638:44;21675:6;21667;21638:44;:::i;:::-;21630:52;20850:838;-1:-1:-1;;;;;;;;20850:838:11:o

Swarm Source

ipfs://84571e5ca6da02e64fd4ffa14f0f4a6ae2a7814c1ade32538033f31ca6933faa
Loading...
Loading
Loading...
Loading
[ 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.