ETH Price: $3,484.62 (+0.67%)
Gas: 5 Gwei

Token

Abandoned Society (SOCIETY)
 

Overview

Max Total Supply

442 SOCIETY

Holders

231

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
0y67.eth
0x3e2e55995baf83b9b1fc349d9a4a45d57ad2914b
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:
AbandonedSociety

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-09
*/

// File: @openzeppelin/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/access/Ownable.sol

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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/utils/Address.sol

// OpenZeppelin Contracts v4.4.1 (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: @openzeppelin/contracts/utils/introspection/IERC165.sol

// OpenZeppelin Contracts v4.4.1 (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: @openzeppelin/contracts/utils/introspection/ERC165.sol

// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

/**
 * @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: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155Receiver.sol)

pragma solidity ^0.8.0;

/**
 * @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: @openzeppelin/contracts/token/ERC1155/IERC1155.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;

/**
 * @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: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

pragma solidity ^0.8.0;

/**
 * @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: @openzeppelin/contracts/token/ERC1155/ERC1155.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        _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: contracts/AbandonedSociety.sol

pragma solidity ^0.8.0;

contract AbandonedSociety is ERC1155, Ownable {
    string public constant name = "Abandoned Society";
    string public constant symbol = "SOCIETY";

    uint32 public totalSupply = 0;
    uint32 public constant maxSupply = 5500;

    uint32 public preSaleStart = 1641758400;
    uint32 public constant preSaleMaxPerWallet = 10;
    uint256 public constant preSaleUnitPrice = 0.08 ether;

    uint32 public publicSaleStart = 1641762000;
    uint32 public constant publicSaleMaxPerWallet = 24;
    uint256 public constant publicSaleUnitPrice = 0.09 ether;

    mapping(address => uint32) public minted;

    constructor(string memory uri) ERC1155(uri) {}

    function setURI(string memory uri) public onlyOwner {
        _setURI(uri);
    }

    function setPreSaleStart(uint32 timestamp) public onlyOwner {
        preSaleStart = timestamp;
    }

    function setPublicSaleStart(uint32 timestamp) public onlyOwner {
        publicSaleStart = timestamp;
    }

    function preSaleIsActive() public view returns (bool) {
        return
            preSaleStart <= block.timestamp &&
            publicSaleStart >= block.timestamp;
    }

    function publicSaleIsActive() public view returns (bool) {
        return publicSaleStart <= block.timestamp;
    }

    function internalMint(address to, uint32 count) internal {
        if (count > 1) {
            uint256[] memory ids = new uint256[](uint256(count));
            uint256[] memory amounts = new uint256[](uint256(count));

            for (uint32 i = 0; i < count; i++) {
                ids[i] = totalSupply + i;
                amounts[i] = 1;
            }

            _mintBatch(to, ids, amounts, "");
        } else {
            _mint(to, totalSupply, 1, "");
        }

        totalSupply += count;
    }

    function mint(uint32 count) external payable {
        uint32 maxPerWallet;
        uint256 unitPrice;

        if (preSaleIsActive()) {
            maxPerWallet = preSaleMaxPerWallet;
            unitPrice = preSaleUnitPrice;
        } else if (publicSaleIsActive()) {
            maxPerWallet = publicSaleMaxPerWallet;
            unitPrice = publicSaleUnitPrice;
        } else {
            revert("Sale is not active.");
        }

        require(count > 0, "Count must be greater than 0.");
        require(
            totalSupply + count <= maxSupply,
            "Count exceeds the maximum allowed supply."
        );
        require(msg.value >= unitPrice * count, "Not enough ether.");
        require(
            minted[msg.sender] + count <= maxPerWallet,
            "Count exceeds the maximum allowed per wallet."
        );

        internalMint(msg.sender, count);
        minted[msg.sender] += count;
    }

    function batchMint(address[] memory addresses) external onlyOwner {
        require(
            totalSupply + addresses.length <= maxSupply,
            "Count exceeds the maximum allowed supply."
        );

        for (uint256 i = 0; i < addresses.length; i++) {
            internalMint(addresses[i], 1);
        }
    }

    function withdraw() external onlyOwner {
        address[3] memory addresses = [
            0xA81CfedA5Fb92FDDa1c2bb5bBd47B149a11Bd927,
            0x680E33424c0AE6CD70Cee7E87AD72d4fCC0694dF,
            0xEfDD4689E0a9D9Aaa4D2536f5cb942e7780a5179
        ];

        uint32[3] memory shares = [uint32(500), uint32(6500), uint32(3000)];

        uint256 balance = address(this).balance;

        for (uint32 i = 0; i < addresses.length; i++) {
            uint256 amount = i == addresses.length - 1
                ? address(this).balance
                : (balance * shares[i]) / 10000;
            payable(addresses[i]).transfer(amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint32","name":"timestamp","type":"uint32"}],"name":"setPreSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"timestamp","type":"uint32"}],"name":"setPublicSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","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":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600360146101000a81548163ffffffff021916908363ffffffff1602179055506361db3ec0600360186101000a81548163ffffffff021916908363ffffffff1602179055506361db4cd06003601c6101000a81548163ffffffff021916908363ffffffff1602179055503480156200007d57600080fd5b506040516200499c3803806200499c8339818101604052810190620000a39190620002f5565b80620000b581620000dd60201b60201c565b50620000d6620000ca620000f960201b60201c565b6200010160201b60201c565b50620004ca565b8060029080519060200190620000f5929190620001c7565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001d590620003db565b90600052602060002090601f016020900481019282620001f9576000855562000245565b82601f106200021457805160ff191683800117855562000245565b8280016001018555821562000245579182015b828111156200024457825182559160200191906001019062000227565b5b50905062000254919062000258565b5090565b5b808211156200027357600081600090555060010162000259565b5090565b60006200028e62000288846200036f565b62000346565b905082815260208101848484011115620002ad57620002ac620004aa565b5b620002ba848285620003a5565b509392505050565b600082601f830112620002da57620002d9620004a5565b5b8151620002ec84826020860162000277565b91505092915050565b6000602082840312156200030e576200030d620004b4565b5b600082015167ffffffffffffffff8111156200032f576200032e620004af565b5b6200033d84828501620002c2565b91505092915050565b60006200035262000365565b905062000360828262000411565b919050565b6000604051905090565b600067ffffffffffffffff8211156200038d576200038c62000476565b5b6200039882620004b9565b9050602081019050919050565b60005b83811015620003c5578082015181840152602081019050620003a8565b83811115620003d5576000848401525b50505050565b60006002820490506001821680620003f457607f821691505b602082108114156200040b576200040a62000447565b5b50919050565b6200041c82620004b9565b810181811067ffffffffffffffff821117156200043e576200043d62000476565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6144c280620004da6000396000f3fe6080604052600436106101cc5760003560e01c80634e1273f4116100f7578063a71bbebe11610095578063d67b06c111610064578063d67b06c114610648578063e985e9c514610671578063f242432a146106ae578063f2fde38b146106d7576101cc565b8063a71bbebe146105ab578063b172e133146105c7578063c7667a4b146105f2578063d5abeb011461061d576101cc565b80638da5cb5b116100d15780638da5cb5b146105035780639039903c1461052e57806395d89b4114610557578063a22cb46514610582576101cc565b80634e1273f414610484578063715018a6146104c1578063745e1b3f146104d8576101cc565b806318160ddd1161016f5780633360caa01161013e5780633360caa0146103ee5780633ccfd60b1461041957806340fa89d914610430578063472d3b1b14610459576101cc565b806318160ddd146103325780631e7269c51461035d5780631f0234d81461039a5780632eb2c2d6146103c5576101cc565b806306fdde03116101ab57806306fdde03146102745780630d5624b31461029f5780630e89341c146102ca5780630fcf2e7514610307576101cc565b8062fdd58e146101d157806301ffc9a71461020e57806302fe53051461024b575b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612f52565b610700565b60405161020591906138ac565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613053565b6107c9565b604051610242919061362f565b60405180910390f35b34801561025757600080fd5b50610272600480360381019061026d91906130ad565b6108ab565b005b34801561028057600080fd5b50610289610933565b604051610296919061364a565b60405180910390f35b3480156102ab57600080fd5b506102b461096c565b6040516102c191906138f0565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec91906130f6565b610982565b6040516102fe919061364a565b60405180910390f35b34801561031357600080fd5b5061031c610a16565b604051610329919061362f565b60405180910390f35b34801561033e57600080fd5b50610347610a39565b60405161035491906138f0565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612d3f565b610a4f565b60405161039191906138f0565b60405180910390f35b3480156103a657600080fd5b506103af610a72565b6040516103bc919061362f565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612dac565b610ab9565b005b3480156103fa57600080fd5b50610403610b5a565b60405161041091906138f0565b60405180910390f35b34801561042557600080fd5b5061042e610b70565b005b34801561043c57600080fd5b5061045760048036038101906104529190613123565b610e0a565b005b34801561046557600080fd5b5061046e610eaa565b60405161047b91906138f0565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612fdb565b610eaf565b6040516104b891906135d6565b60405180910390f35b3480156104cd57600080fd5b506104d6610fc8565b005b3480156104e457600080fd5b506104ed611050565b6040516104fa91906138f0565b60405180910390f35b34801561050f57600080fd5b50610518611055565b60405161052591906134f9565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613123565b61107f565b005b34801561056357600080fd5b5061056c61111f565b604051610579919061364a565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190612f12565b611158565b005b6105c560048036038101906105c09190613123565b61116e565b005b3480156105d357600080fd5b506105dc61142e565b6040516105e991906138ac565b60405180910390f35b3480156105fe57600080fd5b5061060761143a565b60405161061491906138ac565b60405180910390f35b34801561062957600080fd5b50610632611446565b60405161063f91906138f0565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612f92565b61144c565b005b34801561067d57600080fd5b5061069860048036038101906106939190612d6c565b61157f565b6040516106a5919061362f565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190612e7b565b611613565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190612d3f565b6116b4565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610768906136ac565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a457506108a3826117ac565b5b9050919050565b6108b3611816565b73ffffffffffffffffffffffffffffffffffffffff166108d1611055565b73ffffffffffffffffffffffffffffffffffffffff1614610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e906137ec565b60405180910390fd5b6109308161181e565b50565b6040518060400160405280601181526020017f4162616e646f6e656420536f636965747900000000000000000000000000000081525081565b600360189054906101000a900463ffffffff1681565b60606002805461099190613c70565b80601f01602080910402602001604051908101604052809291908181526020018280546109bd90613c70565b8015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b50505050509050919050565b6000426003601c9054906101000a900463ffffffff1663ffffffff161115905090565b600360149054906101000a900463ffffffff1681565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b600042600360189054906101000a900463ffffffff1663ffffffff1611158015610ab45750426003601c9054906101000a900463ffffffff1663ffffffff1610155b905090565b610ac1611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b075750610b0685610b01611816565b61157f565b5b610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061376c565b60405180910390fd5b610b538585858585611838565b5050505050565b6003601c9054906101000a900463ffffffff1681565b610b78611816565b73ffffffffffffffffffffffffffffffffffffffff16610b96611055565b73ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be3906137ec565b60405180910390fd5b6000604051806060016040528073a81cfeda5fb92fdda1c2bb5bbd47b149a11bd92773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173680e33424c0ae6cd70cee7e87ad72d4fcc0694df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173efdd4689e0a9d9aaa4d2536f5cb942e7780a517973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152509050600060405180606001604052806101f463ffffffff1663ffffffff16815260200161196463ffffffff1663ffffffff168152602001610bb863ffffffff1663ffffffff168152509050600047905060005b60038163ffffffff161015610e0457600060016003610d3b9190613b76565b8263ffffffff1614610d8857612710848363ffffffff1660038110610d6357610d62613dd6565b5b602002015163ffffffff1684610d799190613b1c565b610d839190613aeb565b610d8a565b475b9050848263ffffffff1660038110610da557610da4613dd6565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610def573d6000803e3d6000fd5b50508080610dfc90613d1c565b915050610d1c565b50505050565b610e12611816565b73ffffffffffffffffffffffffffffffffffffffff16610e30611055565b73ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906137ec565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b601881565b60608151835114610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec9061384c565b60405180910390fd5b6000835167ffffffffffffffff811115610f1257610f11613e05565b5b604051908082528060200260200182016040528015610f405781602001602082028036833780820191505090505b50905060005b8451811015610fbd57610f8d858281518110610f6557610f64613dd6565b5b6020026020010151858381518110610f8057610f7f613dd6565b5b6020026020010151610700565b828281518110610fa057610f9f613dd6565b5b60200260200101818152505080610fb690613cd3565b9050610f46565b508091505092915050565b610fd0611816565b73ffffffffffffffffffffffffffffffffffffffff16610fee611055565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906137ec565b60405180910390fd5b61104e6000611b4c565b565b600a81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611087611816565b73ffffffffffffffffffffffffffffffffffffffff166110a5611055565b73ffffffffffffffffffffffffffffffffffffffff16146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f2906137ec565b60405180910390fd5b806003601c6101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600781526020017f534f43494554590000000000000000000000000000000000000000000000000081525081565b61116a611163611816565b8383611c12565b5050565b600080611179610a72565b1561119257600a915067011c37937e08000090506111ef565b61119a610a16565b156111b3576018915067013fbe85edc9000090506111ee565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061380c565b60405180910390fd5b5b60008363ffffffff1611611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f9061370c565b60405180910390fd5b61157c63ffffffff1683600360149054906101000a900463ffffffff1661125f9190613ab1565b63ffffffff1611156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906137cc565b60405180910390fd5b8263ffffffff16816112b89190613b1c565b3410156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f19061372c565b60405180910390fd5b8163ffffffff1683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1661135c9190613ab1565b63ffffffff1611156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a906137ac565b60405180910390fd5b6113ad3384611d7f565b82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff1661140b9190613ab1565b92506101000a81548163ffffffff021916908363ffffffff160217905550505050565b67013fbe85edc9000081565b67011c37937e08000081565b61157c81565b611454611816565b73ffffffffffffffffffffffffffffffffffffffff16611472611055565b73ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf906137ec565b60405180910390fd5b61157c63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff166114f69190613a5b565b1115611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906137cc565b60405180910390fd5b60005b815181101561157b5761156882828151811061155957611558613dd6565b5b60200260200101516001611d7f565b808061157390613cd3565b91505061153a565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61161b611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061166157506116608561165b611816565b61157f565b5b6116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611697906136ec565b60405180910390fd5b6116ad8585858585611f69565b5050505050565b6116bc611816565b73ffffffffffffffffffffffffffffffffffffffff166116da611055565b73ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611727906137ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906136cc565b60405180910390fd5b6117a981611b4c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611834929190612a02565b5050565b815183511461187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061386c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e39061374c565b60405180910390fd5b60006118f6611816565b90506119068187878787876121eb565b60005b8451811015611ab757600085828151811061192757611926613dd6565b5b60200260200101519050600085838151811061194657611945613dd6565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de9061378c565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a9c9190613a5b565b9250508190555050505080611ab090613cd3565b9050611909565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611b2e9291906135f8565b60405180910390a4611b448187878787876121f3565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061382c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d72919061362f565b60405180910390a3505050565b60018163ffffffff161115611ef15760008163ffffffff1667ffffffffffffffff811115611db057611daf613e05565b5b604051908082528060200260200182016040528015611dde5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff811115611e0357611e02613e05565b5b604051908082528060200260200182016040528015611e315781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff161015611ece5780600360149054906101000a900463ffffffff16611e699190613ab1565b63ffffffff16838263ffffffff1681518110611e8857611e87613dd6565b5b6020026020010181815250506001828263ffffffff1681518110611eaf57611eae613dd6565b5b6020026020010181815250508080611ec690613d1c565b915050611e37565b50611eea848383604051806020016040528060008152506123da565b5050611f26565b611f2582600360149054906101000a900463ffffffff1663ffffffff166001604051806020016040528060008152506125f8565b5b80600360148282829054906101000a900463ffffffff16611f479190613ab1565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd09061374c565b60405180910390fd5b6000611fe3611816565b9050612003818787611ff48861278e565b611ffd8861278e565b876121eb565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561209a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120919061378c565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214f9190613a5b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516121cc9291906138c7565b60405180910390a46121e2828888888888612808565b50505050505050565b505050505050565b6122128473ffffffffffffffffffffffffffffffffffffffff166129ef565b156123d2578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612258959493929190613514565b602060405180830381600087803b15801561227257600080fd5b505af19250505080156122a357506040513d601f19601f820116820180604052508101906122a09190613080565b60015b612349576122af613e34565b806308c379a0141561230c57506122c4614383565b806122cf575061230e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612303919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123409061366c565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c79061368c565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561244a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124419061388c565b60405180910390fd5b815183511461248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124859061386c565b60405180910390fd5b6000612498611816565b90506124a9816000878787876121eb565b60005b8451811015612562578381815181106124c8576124c7613dd6565b5b60200260200101516000808784815181106124e6576124e5613dd6565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125489190613a5b565b92505081905550808061255a90613cd3565b9150506124ac565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516125da9291906135f8565b60405180910390a46125f1816000878787876121f3565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f9061388c565b60405180910390fd5b6000612672611816565b9050612693816000876126848861278e565b61268d8861278e565b876121eb565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126f29190613a5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516127709291906138c7565b60405180910390a461278781600087878787612808565b5050505050565b60606000600167ffffffffffffffff8111156127ad576127ac613e05565b5b6040519080825280602002602001820160405280156127db5781602001602082028036833780820191505090505b50905082816000815181106127f3576127f2613dd6565b5b60200260200101818152505080915050919050565b6128278473ffffffffffffffffffffffffffffffffffffffff166129ef565b156129e7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161286d95949392919061357c565b602060405180830381600087803b15801561288757600080fd5b505af19250505080156128b857506040513d601f19601f820116820180604052508101906128b59190613080565b60015b61295e576128c4613e34565b806308c379a0141561292157506128d9614383565b806128e45750612923565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612918919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129559061366c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc9061368c565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054612a0e90613c70565b90600052602060002090601f016020900481019282612a305760008555612a77565b82601f10612a4957805160ff1916838001178555612a77565b82800160010185558215612a77579182015b82811115612a76578251825591602001919060010190612a5b565b5b509050612a849190612a88565b5090565b5b80821115612aa1576000816000905550600101612a89565b5090565b6000612ab8612ab384613930565b61390b565b90508083825260208201905082856020860282011115612adb57612ada613e5b565b5b60005b85811015612b0b5781612af18882612c09565b845260208401935060208301925050600181019050612ade565b5050509392505050565b6000612b28612b238461395c565b61390b565b90508083825260208201905082856020860282011115612b4b57612b4a613e5b565b5b60005b85811015612b7b5781612b618882612d15565b845260208401935060208301925050600181019050612b4e565b5050509392505050565b6000612b98612b9384613988565b61390b565b905082815260208101848484011115612bb457612bb3613e60565b5b612bbf848285613c2e565b509392505050565b6000612bda612bd5846139b9565b61390b565b905082815260208101848484011115612bf657612bf5613e60565b5b612c01848285613c2e565b509392505050565b600081359050612c1881614419565b92915050565b600082601f830112612c3357612c32613e56565b5b8135612c43848260208601612aa5565b91505092915050565b600082601f830112612c6157612c60613e56565b5b8135612c71848260208601612b15565b91505092915050565b600081359050612c8981614430565b92915050565b600081359050612c9e81614447565b92915050565b600081519050612cb381614447565b92915050565b600082601f830112612cce57612ccd613e56565b5b8135612cde848260208601612b85565b91505092915050565b600082601f830112612cfc57612cfb613e56565b5b8135612d0c848260208601612bc7565b91505092915050565b600081359050612d248161445e565b92915050565b600081359050612d3981614475565b92915050565b600060208284031215612d5557612d54613e6a565b5b6000612d6384828501612c09565b91505092915050565b60008060408385031215612d8357612d82613e6a565b5b6000612d9185828601612c09565b9250506020612da285828601612c09565b9150509250929050565b600080600080600060a08688031215612dc857612dc7613e6a565b5b6000612dd688828901612c09565b9550506020612de788828901612c09565b945050604086013567ffffffffffffffff811115612e0857612e07613e65565b5b612e1488828901612c4c565b935050606086013567ffffffffffffffff811115612e3557612e34613e65565b5b612e4188828901612c4c565b925050608086013567ffffffffffffffff811115612e6257612e61613e65565b5b612e6e88828901612cb9565b9150509295509295909350565b600080600080600060a08688031215612e9757612e96613e6a565b5b6000612ea588828901612c09565b9550506020612eb688828901612c09565b9450506040612ec788828901612d15565b9350506060612ed888828901612d15565b925050608086013567ffffffffffffffff811115612ef957612ef8613e65565b5b612f0588828901612cb9565b9150509295509295909350565b60008060408385031215612f2957612f28613e6a565b5b6000612f3785828601612c09565b9250506020612f4885828601612c7a565b9150509250929050565b60008060408385031215612f6957612f68613e6a565b5b6000612f7785828601612c09565b9250506020612f8885828601612d15565b9150509250929050565b600060208284031215612fa857612fa7613e6a565b5b600082013567ffffffffffffffff811115612fc657612fc5613e65565b5b612fd284828501612c1e565b91505092915050565b60008060408385031215612ff257612ff1613e6a565b5b600083013567ffffffffffffffff8111156130105761300f613e65565b5b61301c85828601612c1e565b925050602083013567ffffffffffffffff81111561303d5761303c613e65565b5b61304985828601612c4c565b9150509250929050565b60006020828403121561306957613068613e6a565b5b600061307784828501612c8f565b91505092915050565b60006020828403121561309657613095613e6a565b5b60006130a484828501612ca4565b91505092915050565b6000602082840312156130c3576130c2613e6a565b5b600082013567ffffffffffffffff8111156130e1576130e0613e65565b5b6130ed84828501612ce7565b91505092915050565b60006020828403121561310c5761310b613e6a565b5b600061311a84828501612d15565b91505092915050565b60006020828403121561313957613138613e6a565b5b600061314784828501612d2a565b91505092915050565b600061315c83836134cc565b60208301905092915050565b61317181613baa565b82525050565b6000613182826139fa565b61318c8185613a28565b9350613197836139ea565b8060005b838110156131c85781516131af8882613150565b97506131ba83613a1b565b92505060018101905061319b565b5085935050505092915050565b6131de81613bbc565b82525050565b60006131ef82613a05565b6131f98185613a39565b9350613209818560208601613c3d565b61321281613e6f565b840191505092915050565b600061322882613a10565b6132328185613a4a565b9350613242818560208601613c3d565b61324b81613e6f565b840191505092915050565b6000613263603483613a4a565b915061326e82613e8d565b604082019050919050565b6000613286602883613a4a565b915061329182613edc565b604082019050919050565b60006132a9602b83613a4a565b91506132b482613f2b565b604082019050919050565b60006132cc602683613a4a565b91506132d782613f7a565b604082019050919050565b60006132ef602983613a4a565b91506132fa82613fc9565b604082019050919050565b6000613312601d83613a4a565b915061331d82614018565b602082019050919050565b6000613335601183613a4a565b915061334082614041565b602082019050919050565b6000613358602583613a4a565b91506133638261406a565b604082019050919050565b600061337b603283613a4a565b9150613386826140b9565b604082019050919050565b600061339e602a83613a4a565b91506133a982614108565b604082019050919050565b60006133c1602d83613a4a565b91506133cc82614157565b604082019050919050565b60006133e4602983613a4a565b91506133ef826141a6565b604082019050919050565b6000613407602083613a4a565b9150613412826141f5565b602082019050919050565b600061342a601383613a4a565b91506134358261421e565b602082019050919050565b600061344d602983613a4a565b915061345882614247565b604082019050919050565b6000613470602983613a4a565b915061347b82614296565b604082019050919050565b6000613493602883613a4a565b915061349e826142e5565b604082019050919050565b60006134b6602183613a4a565b91506134c182614334565b604082019050919050565b6134d581613c14565b82525050565b6134e481613c14565b82525050565b6134f381613c1e565b82525050565b600060208201905061350e6000830184613168565b92915050565b600060a0820190506135296000830188613168565b6135366020830187613168565b81810360408301526135488186613177565b9050818103606083015261355c8185613177565b9050818103608083015261357081846131e4565b90509695505050505050565b600060a0820190506135916000830188613168565b61359e6020830187613168565b6135ab60408301866134db565b6135b860608301856134db565b81810360808301526135ca81846131e4565b90509695505050505050565b600060208201905081810360008301526135f08184613177565b905092915050565b600060408201905081810360008301526136128185613177565b905081810360208301526136268184613177565b90509392505050565b600060208201905061364460008301846131d5565b92915050565b60006020820190508181036000830152613664818461321d565b905092915050565b6000602082019050818103600083015261368581613256565b9050919050565b600060208201905081810360008301526136a581613279565b9050919050565b600060208201905081810360008301526136c58161329c565b9050919050565b600060208201905081810360008301526136e5816132bf565b9050919050565b60006020820190508181036000830152613705816132e2565b9050919050565b6000602082019050818103600083015261372581613305565b9050919050565b6000602082019050818103600083015261374581613328565b9050919050565b600060208201905081810360008301526137658161334b565b9050919050565b600060208201905081810360008301526137858161336e565b9050919050565b600060208201905081810360008301526137a581613391565b9050919050565b600060208201905081810360008301526137c5816133b4565b9050919050565b600060208201905081810360008301526137e5816133d7565b9050919050565b60006020820190508181036000830152613805816133fa565b9050919050565b600060208201905081810360008301526138258161341d565b9050919050565b6000602082019050818103600083015261384581613440565b9050919050565b6000602082019050818103600083015261386581613463565b9050919050565b6000602082019050818103600083015261388581613486565b9050919050565b600060208201905081810360008301526138a5816134a9565b9050919050565b60006020820190506138c160008301846134db565b92915050565b60006040820190506138dc60008301856134db565b6138e960208301846134db565b9392505050565b600060208201905061390560008301846134ea565b92915050565b6000613915613926565b90506139218282613ca2565b919050565b6000604051905090565b600067ffffffffffffffff82111561394b5761394a613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561397757613976613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139a3576139a2613e05565b5b6139ac82613e6f565b9050602081019050919050565b600067ffffffffffffffff8211156139d4576139d3613e05565b5b6139dd82613e6f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a6682613c14565b9150613a7183613c14565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aa657613aa5613d49565b5b828201905092915050565b6000613abc82613c1e565b9150613ac783613c1e565b92508263ffffffff03821115613ae057613adf613d49565b5b828201905092915050565b6000613af682613c14565b9150613b0183613c14565b925082613b1157613b10613d78565b5b828204905092915050565b6000613b2782613c14565b9150613b3283613c14565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6b57613b6a613d49565b5b828202905092915050565b6000613b8182613c14565b9150613b8c83613c14565b925082821015613b9f57613b9e613d49565b5b828203905092915050565b6000613bb582613bf4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015613c5b578082015181840152602081019050613c40565b83811115613c6a576000848401525b50505050565b60006002820490506001821680613c8857607f821691505b60208210811415613c9c57613c9b613da7565b5b50919050565b613cab82613e6f565b810181811067ffffffffffffffff82111715613cca57613cc9613e05565b5b80604052505050565b6000613cde82613c14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d1157613d10613d49565b5b600182019050919050565b6000613d2782613c1e565b915063ffffffff821415613d3e57613d3d613d49565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613e535760046000803e613e50600051613e80565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f64207065722077616c6c65742e00000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206973206e6f74206163746976652e00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561439357614416565b61439b613926565b60043d036004823e80513d602482011167ffffffffffffffff821117156143c3575050614416565b808201805167ffffffffffffffff8111156143e15750505050614416565b80602083010160043d0385018111156143fe575050505050614416565b61440d82602001850186613ca2565b82955050505050505b90565b61442281613baa565b811461442d57600080fd5b50565b61443981613bbc565b811461444457600080fd5b50565b61445081613bc8565b811461445b57600080fd5b50565b61446781613c14565b811461447257600080fd5b50565b61447e81613c1e565b811461448957600080fd5b5056fea264697066735822122002991e57cc0609012e8fd6ee82977fe185a600166a186bac51648dae7ad602f164736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f737472796b65722e6d7970696e6174612e636c6f75642f697066732f516d4e75366b4142516e706e57456362517375626b7132713155786264344d3832583443676b315975646e43426f2f7b69645d2e6a736f6e00000000

Deployed Bytecode

0x6080604052600436106101cc5760003560e01c80634e1273f4116100f7578063a71bbebe11610095578063d67b06c111610064578063d67b06c114610648578063e985e9c514610671578063f242432a146106ae578063f2fde38b146106d7576101cc565b8063a71bbebe146105ab578063b172e133146105c7578063c7667a4b146105f2578063d5abeb011461061d576101cc565b80638da5cb5b116100d15780638da5cb5b146105035780639039903c1461052e57806395d89b4114610557578063a22cb46514610582576101cc565b80634e1273f414610484578063715018a6146104c1578063745e1b3f146104d8576101cc565b806318160ddd1161016f5780633360caa01161013e5780633360caa0146103ee5780633ccfd60b1461041957806340fa89d914610430578063472d3b1b14610459576101cc565b806318160ddd146103325780631e7269c51461035d5780631f0234d81461039a5780632eb2c2d6146103c5576101cc565b806306fdde03116101ab57806306fdde03146102745780630d5624b31461029f5780630e89341c146102ca5780630fcf2e7514610307576101cc565b8062fdd58e146101d157806301ffc9a71461020e57806302fe53051461024b575b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612f52565b610700565b60405161020591906138ac565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613053565b6107c9565b604051610242919061362f565b60405180910390f35b34801561025757600080fd5b50610272600480360381019061026d91906130ad565b6108ab565b005b34801561028057600080fd5b50610289610933565b604051610296919061364a565b60405180910390f35b3480156102ab57600080fd5b506102b461096c565b6040516102c191906138f0565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec91906130f6565b610982565b6040516102fe919061364a565b60405180910390f35b34801561031357600080fd5b5061031c610a16565b604051610329919061362f565b60405180910390f35b34801561033e57600080fd5b50610347610a39565b60405161035491906138f0565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612d3f565b610a4f565b60405161039191906138f0565b60405180910390f35b3480156103a657600080fd5b506103af610a72565b6040516103bc919061362f565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612dac565b610ab9565b005b3480156103fa57600080fd5b50610403610b5a565b60405161041091906138f0565b60405180910390f35b34801561042557600080fd5b5061042e610b70565b005b34801561043c57600080fd5b5061045760048036038101906104529190613123565b610e0a565b005b34801561046557600080fd5b5061046e610eaa565b60405161047b91906138f0565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612fdb565b610eaf565b6040516104b891906135d6565b60405180910390f35b3480156104cd57600080fd5b506104d6610fc8565b005b3480156104e457600080fd5b506104ed611050565b6040516104fa91906138f0565b60405180910390f35b34801561050f57600080fd5b50610518611055565b60405161052591906134f9565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613123565b61107f565b005b34801561056357600080fd5b5061056c61111f565b604051610579919061364a565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190612f12565b611158565b005b6105c560048036038101906105c09190613123565b61116e565b005b3480156105d357600080fd5b506105dc61142e565b6040516105e991906138ac565b60405180910390f35b3480156105fe57600080fd5b5061060761143a565b60405161061491906138ac565b60405180910390f35b34801561062957600080fd5b50610632611446565b60405161063f91906138f0565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612f92565b61144c565b005b34801561067d57600080fd5b5061069860048036038101906106939190612d6c565b61157f565b6040516106a5919061362f565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190612e7b565b611613565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190612d3f565b6116b4565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610768906136ac565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a457506108a3826117ac565b5b9050919050565b6108b3611816565b73ffffffffffffffffffffffffffffffffffffffff166108d1611055565b73ffffffffffffffffffffffffffffffffffffffff1614610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e906137ec565b60405180910390fd5b6109308161181e565b50565b6040518060400160405280601181526020017f4162616e646f6e656420536f636965747900000000000000000000000000000081525081565b600360189054906101000a900463ffffffff1681565b60606002805461099190613c70565b80601f01602080910402602001604051908101604052809291908181526020018280546109bd90613c70565b8015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b50505050509050919050565b6000426003601c9054906101000a900463ffffffff1663ffffffff161115905090565b600360149054906101000a900463ffffffff1681565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b600042600360189054906101000a900463ffffffff1663ffffffff1611158015610ab45750426003601c9054906101000a900463ffffffff1663ffffffff1610155b905090565b610ac1611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b075750610b0685610b01611816565b61157f565b5b610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061376c565b60405180910390fd5b610b538585858585611838565b5050505050565b6003601c9054906101000a900463ffffffff1681565b610b78611816565b73ffffffffffffffffffffffffffffffffffffffff16610b96611055565b73ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be3906137ec565b60405180910390fd5b6000604051806060016040528073a81cfeda5fb92fdda1c2bb5bbd47b149a11bd92773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173680e33424c0ae6cd70cee7e87ad72d4fcc0694df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173efdd4689e0a9d9aaa4d2536f5cb942e7780a517973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152509050600060405180606001604052806101f463ffffffff1663ffffffff16815260200161196463ffffffff1663ffffffff168152602001610bb863ffffffff1663ffffffff168152509050600047905060005b60038163ffffffff161015610e0457600060016003610d3b9190613b76565b8263ffffffff1614610d8857612710848363ffffffff1660038110610d6357610d62613dd6565b5b602002015163ffffffff1684610d799190613b1c565b610d839190613aeb565b610d8a565b475b9050848263ffffffff1660038110610da557610da4613dd6565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610def573d6000803e3d6000fd5b50508080610dfc90613d1c565b915050610d1c565b50505050565b610e12611816565b73ffffffffffffffffffffffffffffffffffffffff16610e30611055565b73ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906137ec565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b601881565b60608151835114610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec9061384c565b60405180910390fd5b6000835167ffffffffffffffff811115610f1257610f11613e05565b5b604051908082528060200260200182016040528015610f405781602001602082028036833780820191505090505b50905060005b8451811015610fbd57610f8d858281518110610f6557610f64613dd6565b5b6020026020010151858381518110610f8057610f7f613dd6565b5b6020026020010151610700565b828281518110610fa057610f9f613dd6565b5b60200260200101818152505080610fb690613cd3565b9050610f46565b508091505092915050565b610fd0611816565b73ffffffffffffffffffffffffffffffffffffffff16610fee611055565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906137ec565b60405180910390fd5b61104e6000611b4c565b565b600a81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611087611816565b73ffffffffffffffffffffffffffffffffffffffff166110a5611055565b73ffffffffffffffffffffffffffffffffffffffff16146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f2906137ec565b60405180910390fd5b806003601c6101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600781526020017f534f43494554590000000000000000000000000000000000000000000000000081525081565b61116a611163611816565b8383611c12565b5050565b600080611179610a72565b1561119257600a915067011c37937e08000090506111ef565b61119a610a16565b156111b3576018915067013fbe85edc9000090506111ee565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061380c565b60405180910390fd5b5b60008363ffffffff1611611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f9061370c565b60405180910390fd5b61157c63ffffffff1683600360149054906101000a900463ffffffff1661125f9190613ab1565b63ffffffff1611156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906137cc565b60405180910390fd5b8263ffffffff16816112b89190613b1c565b3410156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f19061372c565b60405180910390fd5b8163ffffffff1683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1661135c9190613ab1565b63ffffffff1611156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a906137ac565b60405180910390fd5b6113ad3384611d7f565b82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff1661140b9190613ab1565b92506101000a81548163ffffffff021916908363ffffffff160217905550505050565b67013fbe85edc9000081565b67011c37937e08000081565b61157c81565b611454611816565b73ffffffffffffffffffffffffffffffffffffffff16611472611055565b73ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf906137ec565b60405180910390fd5b61157c63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff166114f69190613a5b565b1115611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906137cc565b60405180910390fd5b60005b815181101561157b5761156882828151811061155957611558613dd6565b5b60200260200101516001611d7f565b808061157390613cd3565b91505061153a565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61161b611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061166157506116608561165b611816565b61157f565b5b6116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611697906136ec565b60405180910390fd5b6116ad8585858585611f69565b5050505050565b6116bc611816565b73ffffffffffffffffffffffffffffffffffffffff166116da611055565b73ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611727906137ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906136cc565b60405180910390fd5b6117a981611b4c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611834929190612a02565b5050565b815183511461187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061386c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e39061374c565b60405180910390fd5b60006118f6611816565b90506119068187878787876121eb565b60005b8451811015611ab757600085828151811061192757611926613dd6565b5b60200260200101519050600085838151811061194657611945613dd6565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de9061378c565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a9c9190613a5b565b9250508190555050505080611ab090613cd3565b9050611909565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611b2e9291906135f8565b60405180910390a4611b448187878787876121f3565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061382c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d72919061362f565b60405180910390a3505050565b60018163ffffffff161115611ef15760008163ffffffff1667ffffffffffffffff811115611db057611daf613e05565b5b604051908082528060200260200182016040528015611dde5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff811115611e0357611e02613e05565b5b604051908082528060200260200182016040528015611e315781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff161015611ece5780600360149054906101000a900463ffffffff16611e699190613ab1565b63ffffffff16838263ffffffff1681518110611e8857611e87613dd6565b5b6020026020010181815250506001828263ffffffff1681518110611eaf57611eae613dd6565b5b6020026020010181815250508080611ec690613d1c565b915050611e37565b50611eea848383604051806020016040528060008152506123da565b5050611f26565b611f2582600360149054906101000a900463ffffffff1663ffffffff166001604051806020016040528060008152506125f8565b5b80600360148282829054906101000a900463ffffffff16611f479190613ab1565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd09061374c565b60405180910390fd5b6000611fe3611816565b9050612003818787611ff48861278e565b611ffd8861278e565b876121eb565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561209a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120919061378c565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214f9190613a5b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516121cc9291906138c7565b60405180910390a46121e2828888888888612808565b50505050505050565b505050505050565b6122128473ffffffffffffffffffffffffffffffffffffffff166129ef565b156123d2578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612258959493929190613514565b602060405180830381600087803b15801561227257600080fd5b505af19250505080156122a357506040513d601f19601f820116820180604052508101906122a09190613080565b60015b612349576122af613e34565b806308c379a0141561230c57506122c4614383565b806122cf575061230e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612303919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123409061366c565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c79061368c565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561244a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124419061388c565b60405180910390fd5b815183511461248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124859061386c565b60405180910390fd5b6000612498611816565b90506124a9816000878787876121eb565b60005b8451811015612562578381815181106124c8576124c7613dd6565b5b60200260200101516000808784815181106124e6576124e5613dd6565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125489190613a5b565b92505081905550808061255a90613cd3565b9150506124ac565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516125da9291906135f8565b60405180910390a46125f1816000878787876121f3565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f9061388c565b60405180910390fd5b6000612672611816565b9050612693816000876126848861278e565b61268d8861278e565b876121eb565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126f29190613a5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516127709291906138c7565b60405180910390a461278781600087878787612808565b5050505050565b60606000600167ffffffffffffffff8111156127ad576127ac613e05565b5b6040519080825280602002602001820160405280156127db5781602001602082028036833780820191505090505b50905082816000815181106127f3576127f2613dd6565b5b60200260200101818152505080915050919050565b6128278473ffffffffffffffffffffffffffffffffffffffff166129ef565b156129e7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161286d95949392919061357c565b602060405180830381600087803b15801561288757600080fd5b505af19250505080156128b857506040513d601f19601f820116820180604052508101906128b59190613080565b60015b61295e576128c4613e34565b806308c379a0141561292157506128d9614383565b806128e45750612923565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612918919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129559061366c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc9061368c565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054612a0e90613c70565b90600052602060002090601f016020900481019282612a305760008555612a77565b82601f10612a4957805160ff1916838001178555612a77565b82800160010185558215612a77579182015b82811115612a76578251825591602001919060010190612a5b565b5b509050612a849190612a88565b5090565b5b80821115612aa1576000816000905550600101612a89565b5090565b6000612ab8612ab384613930565b61390b565b90508083825260208201905082856020860282011115612adb57612ada613e5b565b5b60005b85811015612b0b5781612af18882612c09565b845260208401935060208301925050600181019050612ade565b5050509392505050565b6000612b28612b238461395c565b61390b565b90508083825260208201905082856020860282011115612b4b57612b4a613e5b565b5b60005b85811015612b7b5781612b618882612d15565b845260208401935060208301925050600181019050612b4e565b5050509392505050565b6000612b98612b9384613988565b61390b565b905082815260208101848484011115612bb457612bb3613e60565b5b612bbf848285613c2e565b509392505050565b6000612bda612bd5846139b9565b61390b565b905082815260208101848484011115612bf657612bf5613e60565b5b612c01848285613c2e565b509392505050565b600081359050612c1881614419565b92915050565b600082601f830112612c3357612c32613e56565b5b8135612c43848260208601612aa5565b91505092915050565b600082601f830112612c6157612c60613e56565b5b8135612c71848260208601612b15565b91505092915050565b600081359050612c8981614430565b92915050565b600081359050612c9e81614447565b92915050565b600081519050612cb381614447565b92915050565b600082601f830112612cce57612ccd613e56565b5b8135612cde848260208601612b85565b91505092915050565b600082601f830112612cfc57612cfb613e56565b5b8135612d0c848260208601612bc7565b91505092915050565b600081359050612d248161445e565b92915050565b600081359050612d3981614475565b92915050565b600060208284031215612d5557612d54613e6a565b5b6000612d6384828501612c09565b91505092915050565b60008060408385031215612d8357612d82613e6a565b5b6000612d9185828601612c09565b9250506020612da285828601612c09565b9150509250929050565b600080600080600060a08688031215612dc857612dc7613e6a565b5b6000612dd688828901612c09565b9550506020612de788828901612c09565b945050604086013567ffffffffffffffff811115612e0857612e07613e65565b5b612e1488828901612c4c565b935050606086013567ffffffffffffffff811115612e3557612e34613e65565b5b612e4188828901612c4c565b925050608086013567ffffffffffffffff811115612e6257612e61613e65565b5b612e6e88828901612cb9565b9150509295509295909350565b600080600080600060a08688031215612e9757612e96613e6a565b5b6000612ea588828901612c09565b9550506020612eb688828901612c09565b9450506040612ec788828901612d15565b9350506060612ed888828901612d15565b925050608086013567ffffffffffffffff811115612ef957612ef8613e65565b5b612f0588828901612cb9565b9150509295509295909350565b60008060408385031215612f2957612f28613e6a565b5b6000612f3785828601612c09565b9250506020612f4885828601612c7a565b9150509250929050565b60008060408385031215612f6957612f68613e6a565b5b6000612f7785828601612c09565b9250506020612f8885828601612d15565b9150509250929050565b600060208284031215612fa857612fa7613e6a565b5b600082013567ffffffffffffffff811115612fc657612fc5613e65565b5b612fd284828501612c1e565b91505092915050565b60008060408385031215612ff257612ff1613e6a565b5b600083013567ffffffffffffffff8111156130105761300f613e65565b5b61301c85828601612c1e565b925050602083013567ffffffffffffffff81111561303d5761303c613e65565b5b61304985828601612c4c565b9150509250929050565b60006020828403121561306957613068613e6a565b5b600061307784828501612c8f565b91505092915050565b60006020828403121561309657613095613e6a565b5b60006130a484828501612ca4565b91505092915050565b6000602082840312156130c3576130c2613e6a565b5b600082013567ffffffffffffffff8111156130e1576130e0613e65565b5b6130ed84828501612ce7565b91505092915050565b60006020828403121561310c5761310b613e6a565b5b600061311a84828501612d15565b91505092915050565b60006020828403121561313957613138613e6a565b5b600061314784828501612d2a565b91505092915050565b600061315c83836134cc565b60208301905092915050565b61317181613baa565b82525050565b6000613182826139fa565b61318c8185613a28565b9350613197836139ea565b8060005b838110156131c85781516131af8882613150565b97506131ba83613a1b565b92505060018101905061319b565b5085935050505092915050565b6131de81613bbc565b82525050565b60006131ef82613a05565b6131f98185613a39565b9350613209818560208601613c3d565b61321281613e6f565b840191505092915050565b600061322882613a10565b6132328185613a4a565b9350613242818560208601613c3d565b61324b81613e6f565b840191505092915050565b6000613263603483613a4a565b915061326e82613e8d565b604082019050919050565b6000613286602883613a4a565b915061329182613edc565b604082019050919050565b60006132a9602b83613a4a565b91506132b482613f2b565b604082019050919050565b60006132cc602683613a4a565b91506132d782613f7a565b604082019050919050565b60006132ef602983613a4a565b91506132fa82613fc9565b604082019050919050565b6000613312601d83613a4a565b915061331d82614018565b602082019050919050565b6000613335601183613a4a565b915061334082614041565b602082019050919050565b6000613358602583613a4a565b91506133638261406a565b604082019050919050565b600061337b603283613a4a565b9150613386826140b9565b604082019050919050565b600061339e602a83613a4a565b91506133a982614108565b604082019050919050565b60006133c1602d83613a4a565b91506133cc82614157565b604082019050919050565b60006133e4602983613a4a565b91506133ef826141a6565b604082019050919050565b6000613407602083613a4a565b9150613412826141f5565b602082019050919050565b600061342a601383613a4a565b91506134358261421e565b602082019050919050565b600061344d602983613a4a565b915061345882614247565b604082019050919050565b6000613470602983613a4a565b915061347b82614296565b604082019050919050565b6000613493602883613a4a565b915061349e826142e5565b604082019050919050565b60006134b6602183613a4a565b91506134c182614334565b604082019050919050565b6134d581613c14565b82525050565b6134e481613c14565b82525050565b6134f381613c1e565b82525050565b600060208201905061350e6000830184613168565b92915050565b600060a0820190506135296000830188613168565b6135366020830187613168565b81810360408301526135488186613177565b9050818103606083015261355c8185613177565b9050818103608083015261357081846131e4565b90509695505050505050565b600060a0820190506135916000830188613168565b61359e6020830187613168565b6135ab60408301866134db565b6135b860608301856134db565b81810360808301526135ca81846131e4565b90509695505050505050565b600060208201905081810360008301526135f08184613177565b905092915050565b600060408201905081810360008301526136128185613177565b905081810360208301526136268184613177565b90509392505050565b600060208201905061364460008301846131d5565b92915050565b60006020820190508181036000830152613664818461321d565b905092915050565b6000602082019050818103600083015261368581613256565b9050919050565b600060208201905081810360008301526136a581613279565b9050919050565b600060208201905081810360008301526136c58161329c565b9050919050565b600060208201905081810360008301526136e5816132bf565b9050919050565b60006020820190508181036000830152613705816132e2565b9050919050565b6000602082019050818103600083015261372581613305565b9050919050565b6000602082019050818103600083015261374581613328565b9050919050565b600060208201905081810360008301526137658161334b565b9050919050565b600060208201905081810360008301526137858161336e565b9050919050565b600060208201905081810360008301526137a581613391565b9050919050565b600060208201905081810360008301526137c5816133b4565b9050919050565b600060208201905081810360008301526137e5816133d7565b9050919050565b60006020820190508181036000830152613805816133fa565b9050919050565b600060208201905081810360008301526138258161341d565b9050919050565b6000602082019050818103600083015261384581613440565b9050919050565b6000602082019050818103600083015261386581613463565b9050919050565b6000602082019050818103600083015261388581613486565b9050919050565b600060208201905081810360008301526138a5816134a9565b9050919050565b60006020820190506138c160008301846134db565b92915050565b60006040820190506138dc60008301856134db565b6138e960208301846134db565b9392505050565b600060208201905061390560008301846134ea565b92915050565b6000613915613926565b90506139218282613ca2565b919050565b6000604051905090565b600067ffffffffffffffff82111561394b5761394a613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561397757613976613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139a3576139a2613e05565b5b6139ac82613e6f565b9050602081019050919050565b600067ffffffffffffffff8211156139d4576139d3613e05565b5b6139dd82613e6f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a6682613c14565b9150613a7183613c14565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aa657613aa5613d49565b5b828201905092915050565b6000613abc82613c1e565b9150613ac783613c1e565b92508263ffffffff03821115613ae057613adf613d49565b5b828201905092915050565b6000613af682613c14565b9150613b0183613c14565b925082613b1157613b10613d78565b5b828204905092915050565b6000613b2782613c14565b9150613b3283613c14565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6b57613b6a613d49565b5b828202905092915050565b6000613b8182613c14565b9150613b8c83613c14565b925082821015613b9f57613b9e613d49565b5b828203905092915050565b6000613bb582613bf4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015613c5b578082015181840152602081019050613c40565b83811115613c6a576000848401525b50505050565b60006002820490506001821680613c8857607f821691505b60208210811415613c9c57613c9b613da7565b5b50919050565b613cab82613e6f565b810181811067ffffffffffffffff82111715613cca57613cc9613e05565b5b80604052505050565b6000613cde82613c14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d1157613d10613d49565b5b600182019050919050565b6000613d2782613c1e565b915063ffffffff821415613d3e57613d3d613d49565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613e535760046000803e613e50600051613e80565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f64207065722077616c6c65742e00000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206973206e6f74206163746976652e00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561439357614416565b61439b613926565b60043d036004823e80513d602482011167ffffffffffffffff821117156143c3575050614416565b808201805167ffffffffffffffff8111156143e15750505050614416565b80602083010160043d0385018111156143fe575050505050614416565b61440d82602001850186613ca2565b82955050505050505b90565b61442281613baa565b811461442d57600080fd5b50565b61443981613bbc565b811461444457600080fd5b50565b61445081613bc8565b811461445b57600080fd5b50565b61446781613c14565b811461447257600080fd5b50565b61447e81613c1e565b811461448957600080fd5b5056fea264697066735822122002991e57cc0609012e8fd6ee82977fe185a600166a186bac51648dae7ad602f164736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f737472796b65722e6d7970696e6174612e636c6f75642f697066732f516d4e75366b4142516e706e57456362517375626b7132713155786264344d3832583443676b315975646e43426f2f7b69645d2e6a736f6e00000000

-----Decoded View---------------
Arg [0] : uri (string): https://stryker.mypinata.cloud/ipfs/QmNu6kABQnpnWEcbQsubkq2q1Uxbd4M82X4Cgk1YudnCBo/{id].json

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000005c
Arg [2] : 68747470733a2f2f737472796b65722e6d7970696e6174612e636c6f75642f69
Arg [3] : 7066732f516d4e75366b4142516e706e57456362517375626b71327131557862
Arg [4] : 64344d3832583443676b315975646e43426f2f7b69645d2e6a736f6e00000000


Deployed Bytecode Sourcemap

38614:3819:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23707:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22680:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39293:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38667:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38857:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23451:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39795:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38773:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39190:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39612:175;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25852:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39019:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41758:672;;;;;;;;;;;;;:::i;:::-;;39384:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39068:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24191:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2625:103;;;;;;;;;;;;;:::i;:::-;;38903:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1974:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39495:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38723:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24825:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40455:953;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39125:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38957:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38809:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41416:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25084:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25374:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2883:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23707:318;23838:7;23904:1;23885:21;;:7;:21;;;;23863:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;23995:9;:13;24005:2;23995:13;;;;;;;;;;;:22;24009:7;23995:22;;;;;;;;;;;;;;;;23988:29;;23707:318;;;;:::o;22680:360::-;22827:4;22884:26;22869:41;;;:11;:41;;;;:110;;;;22942:37;22927:52;;;:11;:52;;;;22869:110;:163;;;;22996:36;23020:11;22996:23;:36::i;:::-;22869:163;22849:183;;22680:360;;;:::o;39293:83::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39356:12:::1;39364:3;39356:7;:12::i;:::-;39293:83:::0;:::o;38667:49::-;;;;;;;;;;;;;;;;;;;:::o;38857:39::-;;;;;;;;;;;;;:::o;23451:105::-;23511:13;23544:4;23537:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23451:105;;;:::o;39795:117::-;39846:4;39889:15;39870;;;;;;;;;;;:34;;;;39863:41;;39795:117;:::o;38773:29::-;;;;;;;;;;;;;:::o;39190:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;39612:175::-;39660:4;39713:15;39697:12;;;;;;;;;;;:31;;;;:82;;;;;39764:15;39745;;;;;;;;;;;:34;;;;39697:82;39677:102;;39612:175;:::o;25852:442::-;26093:12;:10;:12::i;:::-;26085:20;;:4;:20;;;:60;;;;26109:36;26126:4;26132:12;:10;:12::i;:::-;26109:16;:36::i;:::-;26085:60;26063:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;26234:52;26257:4;26263:2;26267:3;26272:7;26281:4;26234:22;:52::i;:::-;25852:442;;;;;:::o;39019:42::-;;;;;;;;;;;;;:::o;41758:672::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41808:27:::1;:212;;;;;;;;41853:42;41808:212;;;;;;;;41910:42;41808:212;;;;;;;;41967:42;41808:212;;;;;;::::0;::::1;;42033:23;:67;;;;;;;;42067:3;42033:67;;;;;;;;42080:4;42033:67;;;;;;;;42094:4;42033:67;;;;;;::::0;::::1;;42113:15;42131:21;42113:39;;42170:8;42165:258;42188:16;42184:1;:20;;;42165:258;;;42226:14;42267:1;42248:16;:20;;;;:::i;:::-;42243:1;:25;;;:115;;42353:5;42340:6;42347:1;42340:9;;;;;;;;;:::i;:::-;;;;;;42330:19;;:7;:19;;;;:::i;:::-;42329:29;;;;:::i;:::-;42243:115;;;42288:21;42243:115;42226:132;;42381:9;42391:1;42381:12;;;;;;;;;:::i;:::-;;;;;;42373:30;;:38;42404:6;42373:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;42211:212;42206:3;;;;;:::i;:::-;;;;42165:258;;;;41797:633;;;41758:672::o:0;39384:103::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39470:9:::1;39455:12;;:24;;;;;;;;;;;;;;;;;;39384:103:::0;:::o;39068:50::-;39116:2;39068:50;:::o;24191:561::-;24347:16;24422:3;:10;24403:8;:15;:29;24381:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;24514:30;24561:8;:15;24547:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24514:63;;24595:9;24590:122;24614:8;:15;24610:1;:19;24590:122;;;24670:30;24680:8;24689:1;24680:11;;;;;;;;:::i;:::-;;;;;;;;24693:3;24697:1;24693:6;;;;;;;;:::i;:::-;;;;;;;;24670:9;:30::i;:::-;24651:13;24665:1;24651:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;24631:3;;;;:::i;:::-;;;24590:122;;;;24731:13;24724:20;;;24191:561;;;;:::o;2625:103::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2690:30:::1;2717:1;2690:18;:30::i;:::-;2625:103::o:0;38903:47::-;38948:2;38903:47;:::o;1974:87::-;2020:7;2047:6;;;;;;;;;;;2040:13;;1974:87;:::o;39495:109::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39587:9:::1;39569:15;;:27;;;;;;;;;;;;;;;;;;39495:109:::0;:::o;38723:41::-;;;;;;;;;;;;;;;;;;;:::o;24825:187::-;24952:52;24971:12;:10;:12::i;:::-;24985:8;24995;24952:18;:52::i;:::-;24825:187;;:::o;40455:953::-;40511:19;40541:17;40575;:15;:17::i;:::-;40571:331;;;38948:2;40609:34;;39000:10;40658:28;;40571:331;;;40708:20;:18;:20::i;:::-;40704:198;;;39116:2;40745:37;;39171:10;40797:31;;40704:198;;;40861:29;;;;;;;;;;:::i;:::-;;;;;;;;40704:198;40571:331;40930:1;40922:5;:9;;;40914:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;38844:4;40998:32;;41012:5;40998:11;;;;;;;;;;;:19;;;;:::i;:::-;:32;;;;40976:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;41143:5;41131:17;;:9;:17;;;;:::i;:::-;41118:9;:30;;41110:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;41233:12;41203:42;;41224:5;41203:6;:18;41210:10;41203:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:42;;;;41181:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;41331:31;41344:10;41356:5;41331:12;:31::i;:::-;41395:5;41373:6;:18;41380:10;41373:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40500:908;;40455:953;:::o;39125:56::-;39171:10;39125:56;:::o;38957:53::-;39000:10;38957:53;:::o;38809:39::-;38844:4;38809:39;:::o;41416:334::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38844:4:::1;41515:43;;41529:9;:16;41515:11;;;;;;;;;;;:30;;;;;;:::i;:::-;:43;;41493:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;41645:9;41640:103;41664:9;:16;41660:1;:20;41640:103;;;41702:29;41715:9;41725:1;41715:12;;;;;;;;:::i;:::-;;;;;;;;41729:1;41702:12;:29::i;:::-;41682:3;;;;;:::i;:::-;;;;41640:103;;;;41416:334:::0;:::o;25084:218::-;25228:4;25257:18;:27;25276:7;25257:27;;;;;;;;;;;;;;;:37;25285:8;25257:37;;;;;;;;;;;;;;;;;;;;;;;;;25250:44;;25084:218;;;;:::o;25374:401::-;25590:12;:10;:12::i;:::-;25582:20;;:4;:20;;;:60;;;;25606:36;25623:4;25629:12;:10;:12::i;:::-;25606:16;:36::i;:::-;25582:60;25560:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;25722:45;25740:4;25746:2;25750;25754:6;25762:4;25722:17;:45::i;:::-;25374:401;;;;;:::o;2883:238::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3006:1:::1;2986:22;;:8;:22;;;;2964:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3085:28;3104:8;3085:18;:28::i;:::-;2883:238:::0;:::o;13871:207::-;14001:4;14045:25;14030:40;;;:11;:40;;;;14023:47;;13871:207;;;:::o;677:98::-;730:7;757:10;750:17;;677:98;:::o;30155:88::-;30229:6;30222:4;:13;;;;;;;;;;;;:::i;:::-;;30155:88;:::o;28062:1249::-;28303:7;:14;28289:3;:10;:28;28267:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;28418:1;28404:16;;:2;:16;;;;28396:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28475:16;28494:12;:10;:12::i;:::-;28475:31;;28519:60;28540:8;28550:4;28556:2;28560:3;28565:7;28574:4;28519:20;:60::i;:::-;28597:9;28592:470;28616:3;:10;28612:1;:14;28592:470;;;28648:10;28661:3;28665:1;28661:6;;;;;;;;:::i;:::-;;;;;;;;28648:19;;28682:14;28699:7;28707:1;28699:10;;;;;;;;:::i;:::-;;;;;;;;28682:27;;28726:19;28748:9;:13;28758:2;28748:13;;;;;;;;;;;:19;28762:4;28748:19;;;;;;;;;;;;;;;;28726:41;;28823:6;28808:11;:21;;28782:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;28987:6;28973:11;:20;28951:9;:13;28961:2;28951:13;;;;;;;;;;;:19;28965:4;28951:19;;;;;;;;;;;;;;;:42;;;;29044:6;29023:9;:13;29033:2;29023:13;;;;;;;;;;;:17;29037:2;29023:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28633:429;;;28628:3;;;;:::i;:::-;;;28592:470;;;;29109:2;29079:47;;29103:4;29079:47;;29093:8;29079:47;;;29113:3;29118:7;29079:47;;;;;;;:::i;:::-;;;;;;;;29139:164;29189:8;29212:4;29231:2;29248:3;29266:7;29288:4;29139:35;:164::i;:::-;28256:1055;28062:1249;;;;;:::o;3281:191::-;3355:16;3374:6;;;;;;;;;;;3355:25;;3400:8;3391:6;;:17;;;;;;;;;;;;;;;;;;3455:8;3424:40;;3445:8;3424:40;;;;;;;;;;;;3344:128;3281:191;:::o;34902:331::-;35057:8;35048:17;;:5;:17;;;;35040:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;35160:8;35122:18;:25;35141:5;35122:25;;;;;;;;;;;;;;;:35;35148:8;35122:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35206:8;35184:41;;35199:5;35184:41;;;35216:8;35184:41;;;;;;:::i;:::-;;;;;;;;34902:331;;;:::o;39920:527::-;40000:1;39992:5;:9;;;39988:419;;;40018:20;40063:5;40055:14;;40041:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40018:52;;40085:24;40134:5;40126:14;;40112:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40085:56;;40163:8;40158:127;40181:5;40177:9;;:1;:9;;;40158:127;;;40235:1;40221:11;;;;;;;;;;;:15;;;;:::i;:::-;40212:24;;:3;40216:1;40212:6;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;;40268:1;40255:7;40263:1;40255:10;;;;;;;;;;:::i;:::-;;;;;;;:14;;;;;40188:3;;;;;:::i;:::-;;;;40158:127;;;;40301:32;40312:2;40316:3;40321:7;40301:32;;;;;;;;;;;;:10;:32::i;:::-;40003:342;;39988:419;;;40366:29;40372:2;40376:11;;;;;;;;;;;40366:29;;40389:1;40366:29;;;;;;;;;;;;:5;:29::i;:::-;39988:419;40434:5;40419:11;;:20;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39920:527;;:::o;26758:946::-;26960:1;26946:16;;:2;:16;;;;26938:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27017:16;27036:12;:10;:12::i;:::-;27017:31;;27061:185;27096:8;27119:4;27138:2;27155:21;27173:2;27155:17;:21::i;:::-;27191:25;27209:6;27191:17;:25::i;:::-;27231:4;27061:20;:185::i;:::-;27259:19;27281:9;:13;27291:2;27281:13;;;;;;;;;;;:19;27295:4;27281:19;;;;;;;;;;;;;;;;27259:41;;27348:6;27333:11;:21;;27311:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;27496:6;27482:11;:20;27460:9;:13;27470:2;27460:13;;;;;;;;;;;:19;27474:4;27460:19;;;;;;;;;;;;;;;:42;;;;27545:6;27524:9;:13;27534:2;27524:13;;;;;;;;;;;:17;27538:2;27524:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27600:2;27569:46;;27594:4;27569:46;;27584:8;27569:46;;;27604:2;27608:6;27569:46;;;;;;;:::i;:::-;;;;;;;;27628:68;27659:8;27669:4;27675:2;27679;27683:6;27691:4;27628:30;:68::i;:::-;26927:777;;26758:946;;;;;:::o;36189:221::-;;;;;;;:::o;37324:975::-;37564:15;:2;:13;;;:15::i;:::-;37560:732;;;37634:2;37617:43;;;37683:8;37714:4;37741:3;37767:7;37797:4;37617:203;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37596:685;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;38154:6;38147:14;;;;;;;;;;;:::i;:::-;;;;;;;;37596:685;;;38203:62;;;;;;;;;;:::i;:::-;;;;;;;;37596:685;37917:48;;;37905:60;;;:8;:60;;;;37879:199;;38008:50;;;;;;;;;;:::i;:::-;;;;;;;;37879:199;37834:259;37560:732;37324:975;;;;;;:::o;31732:861::-;31924:1;31910:16;;:2;:16;;;;31902:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32011:7;:14;31997:3;:10;:28;31975:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;32106:16;32125:12;:10;:12::i;:::-;32106:31;;32150:66;32171:8;32189:1;32193:2;32197:3;32202:7;32211:4;32150:20;:66::i;:::-;32234:9;32229:103;32253:3;:10;32249:1;:14;32229:103;;;32310:7;32318:1;32310:10;;;;;;;;:::i;:::-;;;;;;;;32285:9;:17;32295:3;32299:1;32295:6;;;;;;;;:::i;:::-;;;;;;;;32285:17;;;;;;;;;;;:21;32303:2;32285:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;32265:3;;;;;:::i;:::-;;;;32229:103;;;;32385:2;32349:53;;32381:1;32349:53;;32363:8;32349:53;;;32389:3;32394:7;32349:53;;;;;;;:::i;:::-;;;;;;;;32415:170;32465:8;32496:1;32513:2;32530:3;32548:7;32570:4;32415:35;:170::i;:::-;31891:702;31732:861;;;;:::o;30629:747::-;30796:1;30782:16;;:2;:16;;;;30774:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30849:16;30868:12;:10;:12::i;:::-;30849:31;;30893:191;30928:8;30959:1;30976:2;30993:21;31011:2;30993:17;:21::i;:::-;31029:25;31047:6;31029:17;:25::i;:::-;31069:4;30893:20;:191::i;:::-;31118:6;31097:9;:13;31107:2;31097:13;;;;;;;;;;;:17;31111:2;31097:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;31177:2;31140:52;;31173:1;31140:52;;31155:8;31140:52;;;31181:2;31185:6;31140:52;;;;;;;:::i;:::-;;;;;;;;31205:163;31250:8;31281:1;31298:2;31315;31332:6;31353:4;31205:30;:163::i;:::-;30763:613;30629:747;;;;:::o;38307:230::-;38400:16;38434:22;38473:1;38459:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38434:41;;38497:7;38486:5;38492:1;38486:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;38524:5;38517:12;;;38307:230;;;:::o;36418:898::-;36633:15;:2;:13;;;:15::i;:::-;36629:680;;;36703:2;36686:38;;;36747:8;36778:4;36805:2;36830:6;36859:4;36686:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36665:633;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;37171:6;37164:14;;;;;;;;;;;:::i;:::-;;;;;;;;36665:633;;;37220:62;;;;;;;;;;:::i;:::-;;;;;;;;36665:633;36957:43;;;36945:55;;;:8;:55;;;;36941:154;;37025:50;;;;;;;;;;:::i;:::-;;;;;;;;36941:154;36896:214;36629:680;36418:898;;;;;;:::o;4297:387::-;4357:4;4565:12;4632:7;4620:20;4612:28;;4675:1;4668:4;:8;4661:15;;;4297:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:137::-;4598:5;4636:6;4623:20;4614:29;;4652:32;4678:5;4652:32;:::i;:::-;4553:137;;;;:::o;4696:329::-;4755:6;4804:2;4792:9;4783:7;4779:23;4775:32;4772:119;;;4810:79;;:::i;:::-;4772:119;4930:1;4955:53;5000:7;4991:6;4980:9;4976:22;4955:53;:::i;:::-;4945:63;;4901:117;4696:329;;;;:::o;5031:474::-;5099:6;5107;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5409:2;5435:53;5480:7;5471:6;5460:9;5456:22;5435:53;:::i;:::-;5425:63;;5380:118;5031:474;;;;;:::o;5511:1509::-;5665:6;5673;5681;5689;5697;5746:3;5734:9;5725:7;5721:23;5717:33;5714:120;;;5753:79;;:::i;:::-;5714:120;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;6000:2;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;:::i;:::-;6016:63;;5971:118;6156:2;6145:9;6141:18;6128:32;6187:18;6179:6;6176:30;6173:117;;;6209:79;;:::i;:::-;6173:117;6314:78;6384:7;6375:6;6364:9;6360:22;6314:78;:::i;:::-;6304:88;;6099:303;6469:2;6458:9;6454:18;6441:32;6500:18;6492:6;6489:30;6486:117;;;6522:79;;:::i;:::-;6486:117;6627:78;6697:7;6688:6;6677:9;6673:22;6627:78;:::i;:::-;6617:88;;6412:303;6782:3;6771:9;6767:19;6754:33;6814:18;6806:6;6803:30;6800:117;;;6836:79;;:::i;:::-;6800:117;6941:62;6995:7;6986:6;6975:9;6971:22;6941:62;:::i;:::-;6931:72;;6725:288;5511:1509;;;;;;;;:::o;7026:1089::-;7130:6;7138;7146;7154;7162;7211:3;7199:9;7190:7;7186:23;7182:33;7179:120;;;7218:79;;:::i;:::-;7179:120;7338:1;7363:53;7408:7;7399:6;7388:9;7384:22;7363:53;:::i;:::-;7353:63;;7309:117;7465:2;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;:::i;:::-;7481:63;;7436:118;7593:2;7619:53;7664:7;7655:6;7644:9;7640:22;7619:53;:::i;:::-;7609:63;;7564:118;7721:2;7747:53;7792:7;7783:6;7772:9;7768:22;7747:53;:::i;:::-;7737:63;;7692:118;7877:3;7866:9;7862:19;7849:33;7909:18;7901:6;7898:30;7895:117;;;7931:79;;:::i;:::-;7895:117;8036:62;8090:7;8081:6;8070:9;8066:22;8036:62;:::i;:::-;8026:72;;7820:288;7026:1089;;;;;;;;:::o;8121:468::-;8186:6;8194;8243:2;8231:9;8222:7;8218:23;8214:32;8211:119;;;8249:79;;:::i;:::-;8211:119;8369:1;8394:53;8439:7;8430:6;8419:9;8415:22;8394:53;:::i;:::-;8384:63;;8340:117;8496:2;8522:50;8564:7;8555:6;8544:9;8540:22;8522:50;:::i;:::-;8512:60;;8467:115;8121:468;;;;;:::o;8595:474::-;8663:6;8671;8720:2;8708:9;8699:7;8695:23;8691:32;8688:119;;;8726:79;;:::i;:::-;8688:119;8846:1;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8817:117;8973:2;8999:53;9044:7;9035:6;9024:9;9020:22;8999:53;:::i;:::-;8989:63;;8944:118;8595:474;;;;;:::o;9075:539::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9362:1;9351:9;9347:17;9334:31;9392:18;9384:6;9381:30;9378:117;;;9414:79;;:::i;:::-;9378:117;9519:78;9589:7;9580:6;9569:9;9565:22;9519:78;:::i;:::-;9509:88;;9305:302;9075:539;;;;:::o;9620:894::-;9738:6;9746;9795:2;9783:9;9774:7;9770:23;9766:32;9763:119;;;9801:79;;:::i;:::-;9763:119;9949:1;9938:9;9934:17;9921:31;9979:18;9971:6;9968:30;9965:117;;;10001:79;;:::i;:::-;9965:117;10106:78;10176:7;10167:6;10156:9;10152:22;10106:78;:::i;:::-;10096:88;;9892:302;10261:2;10250:9;10246:18;10233:32;10292:18;10284:6;10281:30;10278:117;;;10314:79;;:::i;:::-;10278:117;10419:78;10489:7;10480:6;10469:9;10465:22;10419:78;:::i;:::-;10409:88;;10204:303;9620:894;;;;;:::o;10520:327::-;10578:6;10627:2;10615:9;10606:7;10602:23;10598:32;10595:119;;;10633:79;;:::i;:::-;10595:119;10753:1;10778:52;10822:7;10813:6;10802:9;10798:22;10778:52;:::i;:::-;10768:62;;10724:116;10520:327;;;;:::o;10853:349::-;10922:6;10971:2;10959:9;10950:7;10946:23;10942:32;10939:119;;;10977:79;;:::i;:::-;10939:119;11097:1;11122:63;11177:7;11168:6;11157:9;11153:22;11122:63;:::i;:::-;11112:73;;11068:127;10853:349;;;;:::o;11208:509::-;11277:6;11326:2;11314:9;11305:7;11301:23;11297:32;11294:119;;;11332:79;;:::i;:::-;11294:119;11480:1;11469:9;11465:17;11452:31;11510:18;11502:6;11499:30;11496:117;;;11532:79;;:::i;:::-;11496:117;11637:63;11692:7;11683:6;11672:9;11668:22;11637:63;:::i;:::-;11627:73;;11423:287;11208:509;;;;:::o;11723:329::-;11782:6;11831:2;11819:9;11810:7;11806:23;11802:32;11799:119;;;11837:79;;:::i;:::-;11799:119;11957:1;11982:53;12027:7;12018:6;12007:9;12003:22;11982:53;:::i;:::-;11972:63;;11928:117;11723:329;;;;:::o;12058:327::-;12116:6;12165:2;12153:9;12144:7;12140:23;12136:32;12133:119;;;12171:79;;:::i;:::-;12133:119;12291:1;12316:52;12360:7;12351:6;12340:9;12336:22;12316:52;:::i;:::-;12306:62;;12262:116;12058:327;;;;:::o;12391:179::-;12460:10;12481:46;12523:3;12515:6;12481:46;:::i;:::-;12559:4;12554:3;12550:14;12536:28;;12391:179;;;;:::o;12576:118::-;12663:24;12681:5;12663:24;:::i;:::-;12658:3;12651:37;12576:118;;:::o;12730:732::-;12849:3;12878:54;12926:5;12878:54;:::i;:::-;12948:86;13027:6;13022:3;12948:86;:::i;:::-;12941:93;;13058:56;13108:5;13058:56;:::i;:::-;13137:7;13168:1;13153:284;13178:6;13175:1;13172:13;13153:284;;;13254:6;13248:13;13281:63;13340:3;13325:13;13281:63;:::i;:::-;13274:70;;13367:60;13420:6;13367:60;:::i;:::-;13357:70;;13213:224;13200:1;13197;13193:9;13188:14;;13153:284;;;13157:14;13453:3;13446:10;;12854:608;;;12730:732;;;;:::o;13468:109::-;13549:21;13564:5;13549:21;:::i;:::-;13544:3;13537:34;13468:109;;:::o;13583:360::-;13669:3;13697:38;13729:5;13697:38;:::i;:::-;13751:70;13814:6;13809:3;13751:70;:::i;:::-;13744:77;;13830:52;13875:6;13870:3;13863:4;13856:5;13852:16;13830:52;:::i;:::-;13907:29;13929:6;13907:29;:::i;:::-;13902:3;13898:39;13891:46;;13673:270;13583:360;;;;:::o;13949:364::-;14037:3;14065:39;14098:5;14065:39;:::i;:::-;14120:71;14184:6;14179:3;14120:71;:::i;:::-;14113:78;;14200:52;14245:6;14240:3;14233:4;14226:5;14222:16;14200:52;:::i;:::-;14277:29;14299:6;14277:29;:::i;:::-;14272:3;14268:39;14261:46;;14041:272;13949:364;;;;:::o;14319:366::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:::-;14833:3;14854:67;14918:2;14913:3;14854:67;:::i;:::-;14847:74;;14930:93;15019:3;14930:93;:::i;:::-;15048:2;15043:3;15039:12;15032:19;;14691:366;;;:::o;15063:::-;15205:3;15226:67;15290:2;15285:3;15226:67;:::i;:::-;15219:74;;15302:93;15391:3;15302:93;:::i;:::-;15420:2;15415:3;15411:12;15404:19;;15063:366;;;:::o;15435:::-;15577:3;15598:67;15662:2;15657:3;15598:67;:::i;:::-;15591:74;;15674:93;15763:3;15674:93;:::i;:::-;15792:2;15787:3;15783:12;15776:19;;15435:366;;;:::o;15807:::-;15949:3;15970:67;16034:2;16029:3;15970:67;:::i;:::-;15963:74;;16046:93;16135:3;16046:93;:::i;:::-;16164:2;16159:3;16155:12;16148:19;;15807:366;;;:::o;16179:::-;16321:3;16342:67;16406:2;16401:3;16342:67;:::i;:::-;16335:74;;16418:93;16507:3;16418:93;:::i;:::-;16536:2;16531:3;16527:12;16520:19;;16179:366;;;:::o;16551:::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:::-;17065:3;17086:67;17150:2;17145:3;17086:67;:::i;:::-;17079:74;;17162:93;17251:3;17162:93;:::i;:::-;17280:2;17275:3;17271:12;17264:19;;16923:366;;;:::o;17295:::-;17437:3;17458:67;17522:2;17517:3;17458:67;:::i;:::-;17451:74;;17534:93;17623:3;17534:93;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17295:366;;;:::o;17667:::-;17809:3;17830:67;17894:2;17889:3;17830:67;:::i;:::-;17823:74;;17906:93;17995:3;17906:93;:::i;:::-;18024:2;18019:3;18015:12;18008:19;;17667:366;;;:::o;18039:::-;18181:3;18202:67;18266:2;18261:3;18202:67;:::i;:::-;18195:74;;18278:93;18367:3;18278:93;:::i;:::-;18396:2;18391:3;18387:12;18380:19;;18039:366;;;:::o;18411:::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:::-;19297:3;19318:67;19382:2;19377:3;19318:67;:::i;:::-;19311:74;;19394:93;19483:3;19394:93;:::i;:::-;19512:2;19507:3;19503:12;19496:19;;19155:366;;;:::o;19527:::-;19669:3;19690:67;19754:2;19749:3;19690:67;:::i;:::-;19683:74;;19766:93;19855:3;19766:93;:::i;:::-;19884:2;19879:3;19875:12;19868:19;;19527:366;;;:::o;19899:::-;20041:3;20062:67;20126:2;20121:3;20062:67;:::i;:::-;20055:74;;20138:93;20227:3;20138:93;:::i;:::-;20256:2;20251:3;20247:12;20240:19;;19899:366;;;:::o;20271:::-;20413:3;20434:67;20498:2;20493:3;20434:67;:::i;:::-;20427:74;;20510:93;20599:3;20510:93;:::i;:::-;20628:2;20623:3;20619:12;20612:19;;20271:366;;;:::o;20643:::-;20785:3;20806:67;20870:2;20865:3;20806:67;:::i;:::-;20799:74;;20882:93;20971:3;20882:93;:::i;:::-;21000:2;20995:3;20991:12;20984:19;;20643:366;;;:::o;21015:108::-;21092:24;21110:5;21092:24;:::i;:::-;21087:3;21080:37;21015:108;;:::o;21129:118::-;21216:24;21234:5;21216:24;:::i;:::-;21211:3;21204:37;21129:118;;:::o;21253:115::-;21338:23;21355:5;21338:23;:::i;:::-;21333:3;21326:36;21253:115;;:::o;21374:222::-;21467:4;21505:2;21494:9;21490:18;21482:26;;21518:71;21586:1;21575:9;21571:17;21562:6;21518:71;:::i;:::-;21374:222;;;;:::o;21602:1053::-;21925:4;21963:3;21952:9;21948:19;21940:27;;21977:71;22045:1;22034:9;22030:17;22021:6;21977:71;:::i;:::-;22058:72;22126:2;22115:9;22111:18;22102:6;22058:72;:::i;:::-;22177:9;22171:4;22167:20;22162:2;22151:9;22147:18;22140:48;22205:108;22308:4;22299:6;22205:108;:::i;:::-;22197:116;;22360:9;22354:4;22350:20;22345:2;22334:9;22330:18;22323:48;22388:108;22491:4;22482:6;22388:108;:::i;:::-;22380:116;;22544:9;22538:4;22534:20;22528:3;22517:9;22513:19;22506:49;22572:76;22643:4;22634:6;22572:76;:::i;:::-;22564:84;;21602:1053;;;;;;;;:::o;22661:751::-;22884:4;22922:3;22911:9;22907:19;22899:27;;22936:71;23004:1;22993:9;22989:17;22980:6;22936:71;:::i;:::-;23017:72;23085:2;23074:9;23070:18;23061:6;23017:72;:::i;:::-;23099;23167:2;23156:9;23152:18;23143:6;23099:72;:::i;:::-;23181;23249:2;23238:9;23234:18;23225:6;23181:72;:::i;:::-;23301:9;23295:4;23291:20;23285:3;23274:9;23270:19;23263:49;23329:76;23400:4;23391:6;23329:76;:::i;:::-;23321:84;;22661:751;;;;;;;;:::o;23418:373::-;23561:4;23599:2;23588:9;23584:18;23576:26;;23648:9;23642:4;23638:20;23634:1;23623:9;23619:17;23612:47;23676:108;23779:4;23770:6;23676:108;:::i;:::-;23668:116;;23418:373;;;;:::o;23797:634::-;24018:4;24056:2;24045:9;24041:18;24033:26;;24105:9;24099:4;24095:20;24091:1;24080:9;24076:17;24069:47;24133:108;24236:4;24227:6;24133:108;:::i;:::-;24125:116;;24288:9;24282:4;24278:20;24273:2;24262:9;24258:18;24251:48;24316:108;24419:4;24410:6;24316:108;:::i;:::-;24308:116;;23797:634;;;;;:::o;24437:210::-;24524:4;24562:2;24551:9;24547:18;24539:26;;24575:65;24637:1;24626:9;24622:17;24613:6;24575:65;:::i;:::-;24437:210;;;;:::o;24653:313::-;24766:4;24804:2;24793:9;24789:18;24781:26;;24853:9;24847:4;24843:20;24839:1;24828:9;24824:17;24817:47;24881:78;24954:4;24945:6;24881:78;:::i;:::-;24873:86;;24653:313;;;;:::o;24972:419::-;25138:4;25176:2;25165:9;25161:18;25153:26;;25225:9;25219:4;25215:20;25211:1;25200:9;25196:17;25189:47;25253:131;25379:4;25253:131;:::i;:::-;25245:139;;24972:419;;;:::o;25397:::-;25563:4;25601:2;25590:9;25586:18;25578:26;;25650:9;25644:4;25640:20;25636:1;25625:9;25621:17;25614:47;25678:131;25804:4;25678:131;:::i;:::-;25670:139;;25397:419;;;:::o;25822:::-;25988:4;26026:2;26015:9;26011:18;26003:26;;26075:9;26069:4;26065:20;26061:1;26050:9;26046:17;26039:47;26103:131;26229:4;26103:131;:::i;:::-;26095:139;;25822:419;;;:::o;26247:::-;26413:4;26451:2;26440:9;26436:18;26428:26;;26500:9;26494:4;26490:20;26486:1;26475:9;26471:17;26464:47;26528:131;26654:4;26528:131;:::i;:::-;26520:139;;26247:419;;;:::o;26672:::-;26838:4;26876:2;26865:9;26861:18;26853:26;;26925:9;26919:4;26915:20;26911:1;26900:9;26896:17;26889:47;26953:131;27079:4;26953:131;:::i;:::-;26945:139;;26672:419;;;:::o;27097:::-;27263:4;27301:2;27290:9;27286:18;27278:26;;27350:9;27344:4;27340:20;27336:1;27325:9;27321:17;27314:47;27378:131;27504:4;27378:131;:::i;:::-;27370:139;;27097:419;;;:::o;27522:::-;27688:4;27726:2;27715:9;27711:18;27703:26;;27775:9;27769:4;27765:20;27761:1;27750:9;27746:17;27739:47;27803:131;27929:4;27803:131;:::i;:::-;27795:139;;27522:419;;;:::o;27947:::-;28113:4;28151:2;28140:9;28136:18;28128:26;;28200:9;28194:4;28190:20;28186:1;28175:9;28171:17;28164:47;28228:131;28354:4;28228:131;:::i;:::-;28220:139;;27947:419;;;:::o;28372:::-;28538:4;28576:2;28565:9;28561:18;28553:26;;28625:9;28619:4;28615:20;28611:1;28600:9;28596:17;28589:47;28653:131;28779:4;28653:131;:::i;:::-;28645:139;;28372:419;;;:::o;28797:::-;28963:4;29001:2;28990:9;28986:18;28978:26;;29050:9;29044:4;29040:20;29036:1;29025:9;29021:17;29014:47;29078:131;29204:4;29078:131;:::i;:::-;29070:139;;28797:419;;;:::o;29222:::-;29388:4;29426:2;29415:9;29411:18;29403:26;;29475:9;29469:4;29465:20;29461:1;29450:9;29446:17;29439:47;29503:131;29629:4;29503:131;:::i;:::-;29495:139;;29222:419;;;:::o;29647:::-;29813:4;29851:2;29840:9;29836:18;29828:26;;29900:9;29894:4;29890:20;29886:1;29875:9;29871:17;29864:47;29928:131;30054:4;29928:131;:::i;:::-;29920:139;;29647:419;;;:::o;30072:::-;30238:4;30276:2;30265:9;30261:18;30253:26;;30325:9;30319:4;30315:20;30311:1;30300:9;30296:17;30289:47;30353:131;30479:4;30353:131;:::i;:::-;30345:139;;30072:419;;;:::o;30497:::-;30663:4;30701:2;30690:9;30686:18;30678:26;;30750:9;30744:4;30740:20;30736:1;30725:9;30721:17;30714:47;30778:131;30904:4;30778:131;:::i;:::-;30770:139;;30497:419;;;:::o;30922:::-;31088:4;31126:2;31115:9;31111:18;31103:26;;31175:9;31169:4;31165:20;31161:1;31150:9;31146:17;31139:47;31203:131;31329:4;31203:131;:::i;:::-;31195:139;;30922:419;;;:::o;31347:::-;31513:4;31551:2;31540:9;31536:18;31528:26;;31600:9;31594:4;31590:20;31586:1;31575:9;31571:17;31564:47;31628:131;31754:4;31628:131;:::i;:::-;31620:139;;31347:419;;;:::o;31772:::-;31938:4;31976:2;31965:9;31961:18;31953:26;;32025:9;32019:4;32015:20;32011:1;32000:9;31996:17;31989:47;32053:131;32179:4;32053:131;:::i;:::-;32045:139;;31772:419;;;:::o;32197:::-;32363:4;32401:2;32390:9;32386:18;32378:26;;32450:9;32444:4;32440:20;32436:1;32425:9;32421:17;32414:47;32478:131;32604:4;32478:131;:::i;:::-;32470:139;;32197:419;;;:::o;32622:222::-;32715:4;32753:2;32742:9;32738:18;32730:26;;32766:71;32834:1;32823:9;32819:17;32810:6;32766:71;:::i;:::-;32622:222;;;;:::o;32850:332::-;32971:4;33009:2;32998:9;32994:18;32986:26;;33022:71;33090:1;33079:9;33075:17;33066:6;33022:71;:::i;:::-;33103:72;33171:2;33160:9;33156:18;33147:6;33103:72;:::i;:::-;32850:332;;;;;:::o;33188:218::-;33279:4;33317:2;33306:9;33302:18;33294:26;;33330:69;33396:1;33385:9;33381:17;33372:6;33330:69;:::i;:::-;33188:218;;;;:::o;33412:129::-;33446:6;33473:20;;:::i;:::-;33463:30;;33502:33;33530:4;33522:6;33502:33;:::i;:::-;33412:129;;;:::o;33547:75::-;33580:6;33613:2;33607:9;33597:19;;33547:75;:::o;33628:311::-;33705:4;33795:18;33787:6;33784:30;33781:56;;;33817:18;;:::i;:::-;33781:56;33867:4;33859:6;33855:17;33847:25;;33927:4;33921;33917:15;33909:23;;33628:311;;;:::o;33945:::-;34022:4;34112:18;34104:6;34101:30;34098:56;;;34134:18;;:::i;:::-;34098:56;34184:4;34176:6;34172:17;34164:25;;34244:4;34238;34234:15;34226:23;;33945:311;;;:::o;34262:307::-;34323:4;34413:18;34405:6;34402:30;34399:56;;;34435:18;;:::i;:::-;34399:56;34473:29;34495:6;34473:29;:::i;:::-;34465:37;;34557:4;34551;34547:15;34539:23;;34262:307;;;:::o;34575:308::-;34637:4;34727:18;34719:6;34716:30;34713:56;;;34749:18;;:::i;:::-;34713:56;34787:29;34809:6;34787:29;:::i;:::-;34779:37;;34871:4;34865;34861:15;34853:23;;34575:308;;;:::o;34889:132::-;34956:4;34979:3;34971:11;;35009:4;35004:3;35000:14;34992:22;;34889:132;;;:::o;35027:114::-;35094:6;35128:5;35122:12;35112:22;;35027:114;;;:::o;35147:98::-;35198:6;35232:5;35226:12;35216:22;;35147:98;;;:::o;35251:99::-;35303:6;35337:5;35331:12;35321:22;;35251:99;;;:::o;35356:113::-;35426:4;35458;35453:3;35449:14;35441:22;;35356:113;;;:::o;35475:184::-;35574:11;35608:6;35603:3;35596:19;35648:4;35643:3;35639:14;35624:29;;35475:184;;;;:::o;35665:168::-;35748:11;35782:6;35777:3;35770:19;35822:4;35817:3;35813:14;35798:29;;35665:168;;;;:::o;35839:169::-;35923:11;35957:6;35952:3;35945:19;35997:4;35992:3;35988:14;35973:29;;35839:169;;;;:::o;36014:305::-;36054:3;36073:20;36091:1;36073:20;:::i;:::-;36068:25;;36107:20;36125:1;36107:20;:::i;:::-;36102:25;;36261:1;36193:66;36189:74;36186:1;36183:81;36180:107;;;36267:18;;:::i;:::-;36180:107;36311:1;36308;36304:9;36297:16;;36014:305;;;;:::o;36325:246::-;36364:3;36383:19;36400:1;36383:19;:::i;:::-;36378:24;;36416:19;36433:1;36416:19;:::i;:::-;36411:24;;36513:1;36501:10;36497:18;36494:1;36491:25;36488:51;;;36519:18;;:::i;:::-;36488:51;36563:1;36560;36556:9;36549:16;;36325:246;;;;:::o;36577:185::-;36617:1;36634:20;36652:1;36634:20;:::i;:::-;36629:25;;36668:20;36686:1;36668:20;:::i;:::-;36663:25;;36707:1;36697:35;;36712:18;;:::i;:::-;36697:35;36754:1;36751;36747:9;36742:14;;36577:185;;;;:::o;36768:348::-;36808:7;36831:20;36849:1;36831:20;:::i;:::-;36826:25;;36865:20;36883:1;36865:20;:::i;:::-;36860:25;;37053:1;36985:66;36981:74;36978:1;36975:81;36970:1;36963:9;36956:17;36952:105;36949:131;;;37060:18;;:::i;:::-;36949:131;37108:1;37105;37101:9;37090:20;;36768:348;;;;:::o;37122:191::-;37162:4;37182:20;37200:1;37182:20;:::i;:::-;37177:25;;37216:20;37234:1;37216:20;:::i;:::-;37211:25;;37255:1;37252;37249:8;37246:34;;;37260:18;;:::i;:::-;37246:34;37305:1;37302;37298:9;37290:17;;37122:191;;;;:::o;37319:96::-;37356:7;37385:24;37403:5;37385:24;:::i;:::-;37374:35;;37319:96;;;:::o;37421:90::-;37455:7;37498:5;37491:13;37484:21;37473:32;;37421:90;;;:::o;37517:149::-;37553:7;37593:66;37586:5;37582:78;37571:89;;37517:149;;;:::o;37672:126::-;37709:7;37749:42;37742:5;37738:54;37727:65;;37672:126;;;:::o;37804:77::-;37841:7;37870:5;37859:16;;37804:77;;;:::o;37887:93::-;37923:7;37963:10;37956:5;37952:22;37941:33;;37887:93;;;:::o;37986:154::-;38070:6;38065:3;38060;38047:30;38132:1;38123:6;38118:3;38114:16;38107:27;37986:154;;;:::o;38146:307::-;38214:1;38224:113;38238:6;38235:1;38232:13;38224:113;;;38323:1;38318:3;38314:11;38308:18;38304:1;38299:3;38295:11;38288:39;38260:2;38257:1;38253:10;38248:15;;38224:113;;;38355:6;38352:1;38349:13;38346:101;;;38435:1;38426:6;38421:3;38417:16;38410:27;38346:101;38195:258;38146:307;;;:::o;38459:320::-;38503:6;38540:1;38534:4;38530:12;38520:22;;38587:1;38581:4;38577:12;38608:18;38598:81;;38664:4;38656:6;38652:17;38642:27;;38598:81;38726:2;38718:6;38715:14;38695:18;38692:38;38689:84;;;38745:18;;:::i;:::-;38689:84;38510:269;38459:320;;;:::o;38785:281::-;38868:27;38890:4;38868:27;:::i;:::-;38860:6;38856:40;38998:6;38986:10;38983:22;38962:18;38950:10;38947:34;38944:62;38941:88;;;39009:18;;:::i;:::-;38941:88;39049:10;39045:2;39038:22;38828:238;38785:281;;:::o;39072:233::-;39111:3;39134:24;39152:5;39134:24;:::i;:::-;39125:33;;39180:66;39173:5;39170:77;39167:103;;;39250:18;;:::i;:::-;39167:103;39297:1;39290:5;39286:13;39279:20;;39072:233;;;:::o;39311:175::-;39349:3;39372:23;39389:5;39372:23;:::i;:::-;39363:32;;39417:10;39410:5;39407:21;39404:47;;;39431:18;;:::i;:::-;39404:47;39478:1;39471:5;39467:13;39460:20;;39311:175;;;:::o;39492:180::-;39540:77;39537:1;39530:88;39637:4;39634:1;39627:15;39661:4;39658:1;39651:15;39678:180;39726:77;39723:1;39716:88;39823:4;39820:1;39813:15;39847:4;39844:1;39837:15;39864:180;39912:77;39909:1;39902:88;40009:4;40006:1;39999:15;40033:4;40030:1;40023:15;40050:180;40098:77;40095:1;40088:88;40195:4;40192:1;40185:15;40219:4;40216:1;40209:15;40236:180;40284:77;40281:1;40274:88;40381:4;40378:1;40371:15;40405:4;40402:1;40395:15;40422:183;40457:3;40495:1;40477:16;40474:23;40471:128;;;40533:1;40530;40527;40512:23;40555:34;40586:1;40580:8;40555:34;:::i;:::-;40548:41;;40471:128;40422:183;:::o;40611:117::-;40720:1;40717;40710:12;40734:117;40843:1;40840;40833:12;40857:117;40966:1;40963;40956:12;40980:117;41089:1;41086;41079:12;41103:117;41212:1;41209;41202:12;41226:102;41267:6;41318:2;41314:7;41309:2;41302:5;41298:14;41294:28;41284:38;;41226:102;;;:::o;41334:106::-;41378:8;41427:5;41422:3;41418:15;41397:36;;41334:106;;;:::o;41446:239::-;41586:34;41582:1;41574:6;41570:14;41563:58;41655:22;41650:2;41642:6;41638:15;41631:47;41446:239;:::o;41691:227::-;41831:34;41827:1;41819:6;41815:14;41808:58;41900:10;41895:2;41887:6;41883:15;41876:35;41691:227;:::o;41924:230::-;42064:34;42060:1;42052:6;42048:14;42041:58;42133:13;42128:2;42120:6;42116:15;42109:38;41924:230;:::o;42160:225::-;42300:34;42296:1;42288:6;42284:14;42277:58;42369:8;42364:2;42356:6;42352:15;42345:33;42160:225;:::o;42391:228::-;42531:34;42527:1;42519:6;42515:14;42508:58;42600:11;42595:2;42587:6;42583:15;42576:36;42391:228;:::o;42625:179::-;42765:31;42761:1;42753:6;42749:14;42742:55;42625:179;:::o;42810:167::-;42950:19;42946:1;42938:6;42934:14;42927:43;42810:167;:::o;42983:224::-;43123:34;43119:1;43111:6;43107:14;43100:58;43192:7;43187:2;43179:6;43175:15;43168:32;42983:224;:::o;43213:237::-;43353:34;43349:1;43341:6;43337:14;43330:58;43422:20;43417:2;43409:6;43405:15;43398:45;43213:237;:::o;43456:229::-;43596:34;43592:1;43584:6;43580:14;43573:58;43665:12;43660:2;43652:6;43648:15;43641:37;43456:229;:::o;43691:232::-;43831:34;43827:1;43819:6;43815:14;43808:58;43900:15;43895:2;43887:6;43883:15;43876:40;43691:232;:::o;43929:228::-;44069:34;44065:1;44057:6;44053:14;44046:58;44138:11;44133:2;44125:6;44121:15;44114:36;43929:228;:::o;44163:182::-;44303:34;44299:1;44291:6;44287:14;44280:58;44163:182;:::o;44351:169::-;44491:21;44487:1;44479:6;44475:14;44468:45;44351:169;:::o;44526:228::-;44666:34;44662:1;44654:6;44650:14;44643:58;44735:11;44730:2;44722:6;44718:15;44711:36;44526:228;:::o;44760:::-;44900:34;44896:1;44888:6;44884:14;44877:58;44969:11;44964:2;44956:6;44952:15;44945:36;44760:228;:::o;44994:227::-;45134:34;45130:1;45122:6;45118:14;45111:58;45203:10;45198:2;45190:6;45186:15;45179:35;44994:227;:::o;45227:220::-;45367:34;45363:1;45355:6;45351:14;45344:58;45436:3;45431:2;45423:6;45419:15;45412:28;45227:220;:::o;45453:711::-;45492:3;45530:4;45512:16;45509:26;45506:39;;;45538:5;;45506:39;45567:20;;:::i;:::-;45642:1;45624:16;45620:24;45617:1;45611:4;45596:49;45675:4;45669:11;45774:16;45767:4;45759:6;45755:17;45752:39;45719:18;45711:6;45708:30;45692:113;45689:146;;;45820:5;;;;45689:146;45866:6;45860:4;45856:17;45902:3;45896:10;45929:18;45921:6;45918:30;45915:43;;;45951:5;;;;;;45915:43;45999:6;45992:4;45987:3;45983:14;45979:27;46058:1;46040:16;46036:24;46030:4;46026:35;46021:3;46018:44;46015:57;;;46065:5;;;;;;;46015:57;46082;46130:6;46124:4;46120:17;46112:6;46108:30;46102:4;46082:57;:::i;:::-;46155:3;46148:10;;45496:668;;;;;45453:711;;:::o;46170:122::-;46243:24;46261:5;46243:24;:::i;:::-;46236:5;46233:35;46223:63;;46282:1;46279;46272:12;46223:63;46170:122;:::o;46298:116::-;46368:21;46383:5;46368:21;:::i;:::-;46361:5;46358:32;46348:60;;46404:1;46401;46394:12;46348:60;46298:116;:::o;46420:120::-;46492:23;46509:5;46492:23;:::i;:::-;46485:5;46482:34;46472:62;;46530:1;46527;46520:12;46472:62;46420:120;:::o;46546:122::-;46619:24;46637:5;46619:24;:::i;:::-;46612:5;46609:35;46599:63;;46658:1;46655;46648:12;46599:63;46546:122;:::o;46674:120::-;46746:23;46763:5;46746:23;:::i;:::-;46739:5;46736:34;46726:62;;46784:1;46781;46774:12;46726:62;46674:120;:::o

Swarm Source

ipfs://02991e57cc0609012e8fd6ee82977fe185a600166a186bac51648dae7ad602f1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.