Feature Tip: Add private address tag to any address under My Name Tag !
Overview
TokenID
18
Total Transfers
-
Market
Fully Diluted Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TimeartNFT
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-26 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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); } 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); } 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); } } } } 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; } 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); } abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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); } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } 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; } } contract TimeartNFT is ERC1155 { string public constant WEBSITE ="https://timeart.co/"; string public name="TIMEART"; string public symbol="HubAuto Racing"; struct NftInfo{ string jsonCid; } mapping(uint256 => NftInfo) nftInfoList; constructor() ERC1155( "https://null/{id}.json") { nftInfoList[1] = NftInfo({jsonCid:"QmRT1UkPPDrAae335F11iyLdCsYZDHRvepXhJCYxNsy6W9"}); nftInfoList[2] = NftInfo({jsonCid:"QmZzQYuuUAKdDtwKbGM7kkMzmeoFWd6jfrHCFiQRBfbUqg"}); nftInfoList[3] = NftInfo({jsonCid:"QmeFqJxsQMeQuJCGyhk21LcA7VEkFJ1CXdjaid3esXn9Nb"}); nftInfoList[4] = NftInfo({jsonCid:"QmRw4fM916aXSa6MWM8ZBSgQtarQkwtLcZ6U1CDziYks8L"}); nftInfoList[5] = NftInfo({jsonCid:"Qmde1s5ZHHUPLQ6qcbGVTveHegWPirdG3GwXctHrchMkH3"}); nftInfoList[6] = NftInfo({jsonCid:"QmYAcbjpsBtfw995Ct3JUFuNDKjgjNsSbgZRVsXfGw5QzR"}); nftInfoList[7] = NftInfo({jsonCid:"QmPSJupWLmcwsiMnqR6yhgFp714BkCN7dz7fUYVdYvwUdt"}); nftInfoList[8] = NftInfo({jsonCid:"QmSsqsmze2wE4Tzm2WwXkodwGoWobWquf9ykrkdRZpS6oa"}); nftInfoList[9] = NftInfo({jsonCid:"QmUXxD8UF71DiicFQCQqkr91zeWzZHSvnbGtdVZa9DA8aH"}); nftInfoList[10] = NftInfo({jsonCid:"QmVwDwQCA4W659uXcYdGspUfStzdu6QH9T8KsiffqQYtPt"}); nftInfoList[11] = NftInfo({jsonCid:"QmRoTNhCFHB7Jfd7fzoGsifAfYHf9G7fMvcEneZnCaryLa"}); nftInfoList[12] = NftInfo({jsonCid:"QmctPH4QN2fNcYVsBPNomtyji42LrDxRetTdnAJcVwoVyV"}); nftInfoList[13] = NftInfo({jsonCid:"QmXeu2y9YFbJ1rU1e3TWyfLPJ4MUsPGZ59UHvrEXB46sfn"}); nftInfoList[14] = NftInfo({jsonCid:"QmXRcM9h3iUmSUzGas8xAtsEAM5tYaKerTWN3NhvcSmZGf"}); nftInfoList[15] = NftInfo({jsonCid:"QmYXTVZEgpT4KszRYi7oFAARtTxtocpnEYo1oz95qgD5id"}); nftInfoList[16] = NftInfo({jsonCid:"QmUcmykyJ4bruT4ttp52bk6MphezM14LF2uju7oKkQu5q6"}); nftInfoList[17] = NftInfo({jsonCid:"QmdoVXcUvEbjRp9B6oYLA8ZFHD35E8ZdSdfwEJcKTxUzE1"}); nftInfoList[18] = NftInfo({jsonCid:"QmS1xkai85CrkhBqG1DaTze6n6BCfnr9xztnZrBBLCpQRS"}); nftInfoList[19] = NftInfo({jsonCid:"QmejQYMT8e1cM12ikPD2fDUrjmNNHFVzMqJqdXKXV5az1w"}); nftInfoList[20] = NftInfo({jsonCid:"QmWwbNQk5RAt9F5FqPc8818xqMu2Ux5mecbsw9BFsDPNLE"}); nftInfoList[21] = NftInfo({jsonCid:"QmaHKAbyTWbCLkb95BWrdRznV7oP4dYWo7SsbaPDh17gVU"}); nftInfoList[22] = NftInfo({jsonCid:"QmYi4iYXrb2h82APhFoDgxwskJVj7SMnGHs5ATwkwtxLwf"}); nftInfoList[23] = NftInfo({jsonCid:"QmSnSUAgjq8CruuEbqXghqZcq1LDrRbnWXpMnZuto75c2k"}); nftInfoList[24] = NftInfo({jsonCid:"QmaYgjdXGXCLQ9wdK1KLysqFBqu7bguXqPjXMPaDdZcAqM"}); nftInfoList[25] = NftInfo({jsonCid:"QmYc76cBAQR7cB35G4tD63fsb3v2Ao8Pd16n28gGGb5orP"}); nftInfoList[26] = NftInfo({jsonCid:"QmWtyX4LLmMzMLvzoFNXJqDfVmaPmAzhYm3iugty67myBQ"}); nftInfoList[27] = NftInfo({jsonCid:"Qmdejdsp58thxTC1YLYcpAEB2tn6JN54Rhzs9xnJomqCho"}); nftInfoList[28] = NftInfo({jsonCid:"QmSZVBEdDJkLrNhecvmFgqg574vBWLkavS5Ln8JNejTHrP"}); nftInfoList[29] = NftInfo({jsonCid:"QmfEU7DtF1pdP5rWzoSsELwsuESSTRVVyBeUFRPEZSTfJf"}); nftInfoList[30] = NftInfo({jsonCid:"QmZmzK26Km19cDBpK1vyejqUoU6PXHqRCjp7RfMNoM5vt6"}); nftInfoList[31] = NftInfo({jsonCid:"QmNxizhwPcXnfHZPrxeyPusUp3F3DPQieiDhg9W2BxPhqY"}); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,1,2,""); _mint(0xeB0B4552E4ad469e01b6161472b85b0447554582,1,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,1,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,1,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,1,34,""); _mint(0xEAa2FE51bff163E97984d9386D924ab96336aB14,2,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,2,2,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,2,12,""); _mint(0x911E2C579fb81444036aF62280B83d161c91Ad26,3,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,3,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,3,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,3,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,3,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,4,5,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,4,5,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,4,30,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,5,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,5,2,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,5,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,5,11,""); _mint(0x5e88aB59f5f8b75cB39766E3B70B549bE9bA1c8E,6,1,""); _mint(0x7B26297c3d1c89697cb93812edEAd6E443e052BA,6,1,""); _mint(0xD035fA308469aFD2352393CF3Fa54Fc829647Cd8,6,1,""); _mint(0xFB0df28c50D0C9C6aB4FF6F5d0092D09bD8164ad,6,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,6,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,7,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,7,2,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,7,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,7,16,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,8,2,""); _mint(0x3086746Cf567157ED1c7fDCAf7Ea5b174305b166,8,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,8,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,8,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,8,10,""); _mint(0xB224B133E1f43931484Ad820fF3EdAa55e479A22,9,1,""); _mint(0xEaf9681470A98B25bDEAf3752E4671372d558173,9,1,""); _mint(0x3AcCd34Cd9096ca3E3707Ea43e3dDAd38402fdcd,9,1,""); _mint(0xFB0df28c50D0C9C6aB4FF6F5d0092D09bD8164ad,9,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,9,6,""); _mint(0x3086746Cf567157ED1c7fDCAf7Ea5b174305b166,10,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,10,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,10,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,10,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,10,6,""); _mint(0xD6bf1A7926f8fAAc7e39100D04A901243eA9ccF7,11,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,11,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,11,2,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,11,11,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,12,1,""); _mint(0x3Dc9cD23Ec937d36BB70823E21fd65795C9Cf412,12,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,12,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,12,12,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,13,1,""); _mint(0xD6bf1A7926f8fAAc7e39100D04A901243eA9ccF7,13,1,""); _mint(0x9aeD1548337949AcD4f3b0d61F7E3f6ae3E8Dc7A,13,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,13,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,13,11,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,14,1,""); _mint(0x911E2C579fb81444036aF62280B83d161c91Ad26,14,1,""); _mint(0xeB0B4552E4ad469e01b6161472b85b0447554582,14,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,14,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,14,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,14,5,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,15,2,""); _mint(0x4d014b7Fde1277b46A3d22c5DD8e9686ffc44EDf,15,1,""); _mint(0xE3aAC873c96E1ad87022590b53B7aCF7A99AD182,15,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,15,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,15,10,""); _mint(0xB6DEF4D80d7bAae5012245AE616EF32d0C31160b,16,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,16,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,16,13,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,17,5,""); _mint(0xB6DEF4D80d7bAae5012245AE616EF32d0C31160b,17,1,""); _mint(0x502A7911411A4327f04C42418b3a161593D2546d,17,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,17,2,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,17,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,17,30,""); _mint(0x911E2C579fb81444036aF62280B83d161c91Ad26,18,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,18,1,""); _mint(0xB224B133E1f43931484Ad820fF3EdAa55e479A22,18,1,""); _mint(0xD24D0055cE145D580F6fA8682814B31Aad0Caf47,18,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,18,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,19,1,""); _mint(0xB6DEF4D80d7bAae5012245AE616EF32d0C31160b,19,1,""); _mint(0x5f7eFD589a48D86cf707DCc7CF2abbb0a76427A4,19,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,19,12,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,20,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,20,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,20,3,""); _mint(0x5e88aB59f5f8b75cB39766E3B70B549bE9bA1c8E,21,1,""); _mint(0xbb9BF1dc59D6e474f85e965C65b663Aa5c2d8029,21,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,21,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,21,12,""); _mint(0x883B5D54bE575f650a597415b19eCE50cb2d6DA5,22,1,""); _mint(0x4D17D4A93F12482B75f46fc4Cc7e407835de2696,22,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,22,1,""); _mint(0xD6bf1A7926f8fAAc7e39100D04A901243eA9ccF7,22,1,""); _mint(0xFB0df28c50D0C9C6aB4FF6F5d0092D09bD8164ad,22,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,22,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,22,9,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,23,3,""); _mint(0x9670d0B0158e11281a921B34bCA75105d4764C53,23,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,23,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,23,10,""); _mint(0x902E591eb4f328465B92080A6F4504A59b7Bf09f,24,1,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,24,2,""); _mint(0xB6DEF4D80d7bAae5012245AE616EF32d0C31160b,24,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,24,11,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,25,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,25,14,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,26,2,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,26,2,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,26,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,26,5,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,27,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,27,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,27,13,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,28,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,28,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,28,13,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,29,4,""); _mint(0x9aeD1548337949AcD4f3b0d61F7E3f6ae3E8Dc7A,29,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,29,2,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,29,2,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,29,31,""); _mint(0xA25f06b190A5C8D202Bd7411686e5595749fc5e6,30,1,""); _mint(0xFB0df28c50D0C9C6aB4FF6F5d0092D09bD8164ad,30,1,""); _mint(0x7564cDA45B0A2c64a4c695940B8078E24939A90b,30,1,""); _mint(0x7088E06A843378FBd93A5a8c53dCD63bF53999c6,30,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,30,1,""); _mint(0xD6bf1A7926f8fAAc7e39100D04A901243eA9ccF7,31,1,""); _mint(0xFB0df28c50D0C9C6aB4FF6F5d0092D09bD8164ad,31,1,""); _mint(0xa202C68862A19D43F681911A176d6e62A6419062,31,13,""); } function uri(uint256 _tokenId) override public view returns (string memory) { return string( abi.encodePacked( "https://ipfs.io/ipfs/" ,nftInfoList[_tokenId].jsonCid ,"?filename=", Strings.toString(_tokenId), ".json" ) ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":"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":[],"name":"WEBSITE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"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":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600781526020017f54494d4541525400000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062002eb2565b506040518060400160405280600e81526020017f4875624175746f20526163696e67000000000000000000000000000000000000815250600490805190602001906200009f92919062002eb2565b50348015620000ad57600080fd5b506040518060400160405280601681526020017f68747470733a2f2f6e756c6c2f7b69647d2e6a736f6e00000000000000000000815250620000f581620029f560201b60201c565b5060405180602001604052806040518060600160405280602e8152602001620065e6602e9139815250600560006001815260200190815260200160002060008201518160000190805190602001906200015092919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620060b0602e913981525060056000600281526020019081526020016000206000820151816000019080519060200190620001ae92919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620063ec602e9139815250600560006003815260200190815260200160002060008201518160000190805190602001906200020c92919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200652e602e9139815250600560006004815260200190815260200160002060008201518160000190805190602001906200026a92919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620061c4602e913981525060056000600581526020019081526020016000206000820151816000019080519060200190620002c892919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620062d8602e9139815250600560006006815260200190815260200160002060008201518160000190805190602001906200032692919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620064d2602e9139815250600560006007815260200190815260200160002060008201518160000190805190602001906200038492919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620063be602e913981525060056000600881526020019081526020016000206000820151816000019080519060200190620003e292919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006334602e9139815250600560006009815260200190815260200160002060008201518160000190805190602001906200044092919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006220602e913981525060056000600a815260200190815260200160002060008201518160000190805190602001906200049e92919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200624e602e913981525060056000600b81526020019081526020016000206000820151816000019080519060200190620004fc92919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006448602e913981525060056000600c815260200190815260200160002060008201518160000190805190602001906200055a92919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620064a4602e913981525060056000600d81526020019081526020016000206000820151816000019080519060200190620005b892919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006500602e913981525060056000600e815260200190815260200160002060008201518160000190805190602001906200061692919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200627c602e913981525060056000600f815260200190815260200160002060008201518160000190805190602001906200067492919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006196602e913981525060056000601081526020019081526020016000206000820151816000019080519060200190620006d292919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200658a602e9139815250600560006011815260200190815260200160002060008201518160000190805190602001906200073092919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620060de602e9139815250600560006012815260200190815260200160002060008201518160000190805190602001906200078e92919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006168602e913981525060056000601381526020019081526020016000206000820151816000019080519060200190620007ec92919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006476602e9139815250600560006014815260200190815260200160002060008201518160000190805190602001906200084a92919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006306602e913981525060056000601581526020019081526020016000206000820151816000019080519060200190620008a892919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200641a602e9139815250600560006016815260200190815260200160002060008201518160000190805190602001906200090692919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200610c602e9139815250600560006017815260200190815260200160002060008201518160000190805190602001906200096492919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200655c602e913981525060056000601881526020019081526020016000206000820151816000019080519060200190620009c292919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006390602e91398152506005600060198152602001908152602001600020600082015181600001908051906020019062000a2092919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620065b8602e913981525060056000601a8152602001908152602001600020600082015181600001908051906020019062000a7e92919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620062aa602e913981525060056000601b8152602001908152602001600020600082015181600001908051906020019062000adc92919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006362602e913981525060056000601c8152602001908152602001600020600082015181600001908051906020019062000b3a92919062002eb2565b5090505060405180602001604052806040518060600160405280602e8152602001620061f2602e913981525060056000601d8152602001908152602001600020600082015181600001908051906020019062000b9892919062002eb2565b5090505060405180602001604052806040518060600160405280602e81526020016200613a602e913981525060056000601e8152602001908152602001600020600082015181600001908051906020019062000bf692919062002eb2565b5090505060405180602001604052806040518060600160405280602e815260200162006614602e913981525060056000601f8152602001908152602001600020600082015181600001908051906020019062000c5492919062002eb2565b5090505062000c9173a25f06b190a5c8d202bd7411686e5595749fc5e6600160026040518060200160405280600081525062002a1160201b60201c565b62000cc973eb0b4552e4ad469e01b6161472b85b04475545826001806040518060200160405280600081525062002a1160201b60201c565b62000d01737564cda45b0a2c64a4c695940b8078e24939a90b6001806040518060200160405280600081525062002a1160201b60201c565b62000d39737088e06a843378fbd93a5a8c53dcd63bf53999c66001806040518060200160405280600081525062002a1160201b60201c565b62000d7273a202c68862a19d43f681911a176d6e62a6419062600160226040518060200160405280600081525062002a1160201b60201c565b62000dab73eaa2fe51bff163e97984d9386d924ab96336ab14600260016040518060200160405280600081525062002a1160201b60201c565b62000de3737564cda45b0a2c64a4c695940b8078e24939a90b6002806040518060200160405280600081525062002a1160201b60201c565b62000e1c73a202c68862a19d43f681911a176d6e62a64190626002600c6040518060200160405280600081525062002a1160201b60201c565b62000e5573911e2c579fb81444036af62280b83d161c91ad26600360016040518060200160405280600081525062002a1160201b60201c565b62000e8e73a25f06b190a5c8d202bd7411686e5595749fc5e6600360016040518060200160405280600081525062002a1160201b60201c565b62000ec7737564cda45b0a2c64a4c695940b8078e24939a90b600360016040518060200160405280600081525062002a1160201b60201c565b62000f00737088e06a843378fbd93a5a8c53dcd63bf53999c6600360016040518060200160405280600081525062002a1160201b60201c565b62000f3973a202c68862a19d43f681911a176d6e62a6419062600360016040518060200160405280600081525062002a1160201b60201c565b62000f7273a25f06b190a5c8d202bd7411686e5595749fc5e6600460056040518060200160405280600081525062002a1160201b60201c565b62000fab737564cda45b0a2c64a4c695940b8078e24939a90b600460056040518060200160405280600081525062002a1160201b60201c565b62000fe473a202c68862a19d43f681911a176d6e62a64190626004601e6040518060200160405280600081525062002a1160201b60201c565b6200101d73a25f06b190a5c8d202bd7411686e5595749fc5e6600560016040518060200160405280600081525062002a1160201b60201c565b62001056737564cda45b0a2c64a4c695940b8078e24939a90b600560026040518060200160405280600081525062002a1160201b60201c565b6200108f737088e06a843378fbd93a5a8c53dcd63bf53999c6600560016040518060200160405280600081525062002a1160201b60201c565b620010c873a202c68862a19d43f681911a176d6e62a64190626005600b6040518060200160405280600081525062002a1160201b60201c565b62001101735e88ab59f5f8b75cb39766e3b70b549be9ba1c8e600660016040518060200160405280600081525062002a1160201b60201c565b6200113a737b26297c3d1c89697cb93812edead6e443e052ba600660016040518060200160405280600081525062002a1160201b60201c565b6200117373d035fa308469afd2352393cf3fa54fc829647cd8600660016040518060200160405280600081525062002a1160201b60201c565b620011ac73fb0df28c50d0c9c6ab4ff6f5d0092d09bd8164ad600660016040518060200160405280600081525062002a1160201b60201c565b620011e5737088e06a843378fbd93a5a8c53dcd63bf53999c6600660016040518060200160405280600081525062002a1160201b60201c565b6200121e73a25f06b190a5c8d202bd7411686e5595749fc5e6600760016040518060200160405280600081525062002a1160201b60201c565b62001257737564cda45b0a2c64a4c695940b8078e24939a90b600760026040518060200160405280600081525062002a1160201b60201c565b62001290737088e06a843378fbd93a5a8c53dcd63bf53999c6600760016040518060200160405280600081525062002a1160201b60201c565b620012c973a202c68862a19d43f681911a176d6e62a6419062600760106040518060200160405280600081525062002a1160201b60201c565b6200130273a25f06b190a5c8d202bd7411686e5595749fc5e6600860026040518060200160405280600081525062002a1160201b60201c565b6200133b733086746cf567157ed1c7fdcaf7ea5b174305b166600860016040518060200160405280600081525062002a1160201b60201c565b62001374737564cda45b0a2c64a4c695940b8078e24939a90b600860016040518060200160405280600081525062002a1160201b60201c565b620013ad737088e06a843378fbd93a5a8c53dcd63bf53999c6600860016040518060200160405280600081525062002a1160201b60201c565b620013e673a202c68862a19d43f681911a176d6e62a64190626008600a6040518060200160405280600081525062002a1160201b60201c565b6200141f73b224b133e1f43931484ad820ff3edaa55e479a22600960016040518060200160405280600081525062002a1160201b60201c565b6200145873eaf9681470a98b25bdeaf3752e4671372d558173600960016040518060200160405280600081525062002a1160201b60201c565b62001491733accd34cd9096ca3e3707ea43e3ddad38402fdcd600960016040518060200160405280600081525062002a1160201b60201c565b620014ca73fb0df28c50d0c9c6ab4ff6f5d0092d09bd8164ad600960016040518060200160405280600081525062002a1160201b60201c565b6200150373a202c68862a19d43f681911a176d6e62a6419062600960066040518060200160405280600081525062002a1160201b60201c565b6200153c733086746cf567157ed1c7fdcaf7ea5b174305b166600a60016040518060200160405280600081525062002a1160201b60201c565b6200157573a25f06b190a5c8d202bd7411686e5595749fc5e6600a60016040518060200160405280600081525062002a1160201b60201c565b620015ae737564cda45b0a2c64a4c695940b8078e24939a90b600a60016040518060200160405280600081525062002a1160201b60201c565b620015e7737088e06a843378fbd93a5a8c53dcd63bf53999c6600a60016040518060200160405280600081525062002a1160201b60201c565b6200162073a202c68862a19d43f681911a176d6e62a6419062600a60066040518060200160405280600081525062002a1160201b60201c565b6200165973d6bf1a7926f8faac7e39100d04a901243ea9ccf7600b60016040518060200160405280600081525062002a1160201b60201c565b62001692737564cda45b0a2c64a4c695940b8078e24939a90b600b60016040518060200160405280600081525062002a1160201b60201c565b620016cb737088e06a843378fbd93a5a8c53dcd63bf53999c6600b60026040518060200160405280600081525062002a1160201b60201c565b6200170373a202c68862a19d43f681911a176d6e62a6419062600b806040518060200160405280600081525062002a1160201b60201c565b6200173c73a25f06b190a5c8d202bd7411686e5595749fc5e6600c60016040518060200160405280600081525062002a1160201b60201c565b62001775733dc9cd23ec937d36bb70823e21fd65795c9cf412600c60016040518060200160405280600081525062002a1160201b60201c565b620017ae737088e06a843378fbd93a5a8c53dcd63bf53999c6600c60016040518060200160405280600081525062002a1160201b60201c565b620017e673a202c68862a19d43f681911a176d6e62a6419062600c806040518060200160405280600081525062002a1160201b60201c565b6200181f73a25f06b190a5c8d202bd7411686e5595749fc5e6600d60016040518060200160405280600081525062002a1160201b60201c565b6200185873d6bf1a7926f8faac7e39100d04a901243ea9ccf7600d60016040518060200160405280600081525062002a1160201b60201c565b62001891739aed1548337949acd4f3b0d61f7e3f6ae3e8dc7a600d60016040518060200160405280600081525062002a1160201b60201c565b620018ca737564cda45b0a2c64a4c695940b8078e24939a90b600d60016040518060200160405280600081525062002a1160201b60201c565b6200190373a202c68862a19d43f681911a176d6e62a6419062600d600b6040518060200160405280600081525062002a1160201b60201c565b6200193c73a25f06b190a5c8d202bd7411686e5595749fc5e6600e60016040518060200160405280600081525062002a1160201b60201c565b6200197573911e2c579fb81444036af62280b83d161c91ad26600e60016040518060200160405280600081525062002a1160201b60201c565b620019ae73eb0b4552e4ad469e01b6161472b85b0447554582600e60016040518060200160405280600081525062002a1160201b60201c565b620019e7737564cda45b0a2c64a4c695940b8078e24939a90b600e60016040518060200160405280600081525062002a1160201b60201c565b62001a20737088e06a843378fbd93a5a8c53dcd63bf53999c6600e60016040518060200160405280600081525062002a1160201b60201c565b62001a5973a202c68862a19d43f681911a176d6e62a6419062600e60056040518060200160405280600081525062002a1160201b60201c565b62001a9273a25f06b190a5c8d202bd7411686e5595749fc5e6600f60026040518060200160405280600081525062002a1160201b60201c565b62001acb734d014b7fde1277b46a3d22c5dd8e9686ffc44edf600f60016040518060200160405280600081525062002a1160201b60201c565b62001b0473e3aac873c96e1ad87022590b53b7acf7a99ad182600f60016040518060200160405280600081525062002a1160201b60201c565b62001b3d737564cda45b0a2c64a4c695940b8078e24939a90b600f60016040518060200160405280600081525062002a1160201b60201c565b62001b7673a202c68862a19d43f681911a176d6e62a6419062600f600a6040518060200160405280600081525062002a1160201b60201c565b62001baf73b6def4d80d7baae5012245ae616ef32d0c31160b601060016040518060200160405280600081525062002a1160201b60201c565b62001be8737564cda45b0a2c64a4c695940b8078e24939a90b601060016040518060200160405280600081525062002a1160201b60201c565b62001c2173a202c68862a19d43f681911a176d6e62a64190626010600d6040518060200160405280600081525062002a1160201b60201c565b62001c5a73a25f06b190a5c8d202bd7411686e5595749fc5e6601160056040518060200160405280600081525062002a1160201b60201c565b62001c9373b6def4d80d7baae5012245ae616ef32d0c31160b601160016040518060200160405280600081525062002a1160201b60201c565b62001ccc73502a7911411a4327f04c42418b3a161593d2546d601160016040518060200160405280600081525062002a1160201b60201c565b62001d05737564cda45b0a2c64a4c695940b8078e24939a90b601160026040518060200160405280600081525062002a1160201b60201c565b62001d3e737088e06a843378fbd93a5a8c53dcd63bf53999c6601160016040518060200160405280600081525062002a1160201b60201c565b62001d7773a202c68862a19d43f681911a176d6e62a64190626011601e6040518060200160405280600081525062002a1160201b60201c565b62001db073911e2c579fb81444036af62280b83d161c91ad26601260016040518060200160405280600081525062002a1160201b60201c565b62001de973a25f06b190a5c8d202bd7411686e5595749fc5e6601260016040518060200160405280600081525062002a1160201b60201c565b62001e2273b224b133e1f43931484ad820ff3edaa55e479a22601260016040518060200160405280600081525062002a1160201b60201c565b62001e5b73d24d0055ce145d580f6fa8682814b31aad0caf47601260016040518060200160405280600081525062002a1160201b60201c565b62001e94737088e06a843378fbd93a5a8c53dcd63bf53999c6601260016040518060200160405280600081525062002a1160201b60201c565b62001ecd73a25f06b190a5c8d202bd7411686e5595749fc5e6601360016040518060200160405280600081525062002a1160201b60201c565b62001f0673b6def4d80d7baae5012245ae616ef32d0c31160b601360016040518060200160405280600081525062002a1160201b60201c565b62001f3f735f7efd589a48d86cf707dcc7cf2abbb0a76427a4601360016040518060200160405280600081525062002a1160201b60201c565b62001f7873a202c68862a19d43f681911a176d6e62a64190626013600c6040518060200160405280600081525062002a1160201b60201c565b62001fb173a25f06b190a5c8d202bd7411686e5595749fc5e6601460016040518060200160405280600081525062002a1160201b60201c565b62001fea737564cda45b0a2c64a4c695940b8078e24939a90b601460016040518060200160405280600081525062002a1160201b60201c565b6200202373a202c68862a19d43f681911a176d6e62a6419062601460036040518060200160405280600081525062002a1160201b60201c565b6200205c735e88ab59f5f8b75cb39766e3b70b549be9ba1c8e601560016040518060200160405280600081525062002a1160201b60201c565b6200209573bb9bf1dc59d6e474f85e965c65b663aa5c2d8029601560016040518060200160405280600081525062002a1160201b60201c565b620020ce737564cda45b0a2c64a4c695940b8078e24939a90b601560016040518060200160405280600081525062002a1160201b60201c565b6200210773a202c68862a19d43f681911a176d6e62a64190626015600c6040518060200160405280600081525062002a1160201b60201c565b6200214073883b5d54be575f650a597415b19ece50cb2d6da5601660016040518060200160405280600081525062002a1160201b60201c565b62002179734d17d4a93f12482b75f46fc4cc7e407835de2696601660016040518060200160405280600081525062002a1160201b60201c565b620021b273a25f06b190a5c8d202bd7411686e5595749fc5e6601660016040518060200160405280600081525062002a1160201b60201c565b620021eb73d6bf1a7926f8faac7e39100d04a901243ea9ccf7601660016040518060200160405280600081525062002a1160201b60201c565b6200222473fb0df28c50d0c9c6ab4ff6f5d0092d09bd8164ad601660016040518060200160405280600081525062002a1160201b60201c565b6200225d737564cda45b0a2c64a4c695940b8078e24939a90b601660016040518060200160405280600081525062002a1160201b60201c565b6200229673a202c68862a19d43f681911a176d6e62a6419062601660096040518060200160405280600081525062002a1160201b60201c565b620022cf73a25f06b190a5c8d202bd7411686e5595749fc5e6601760036040518060200160405280600081525062002a1160201b60201c565b62002308739670d0b0158e11281a921b34bca75105d4764c53601760016040518060200160405280600081525062002a1160201b60201c565b62002341737088e06a843378fbd93a5a8c53dcd63bf53999c6601760016040518060200160405280600081525062002a1160201b60201c565b6200237a73a202c68862a19d43f681911a176d6e62a64190626017600a6040518060200160405280600081525062002a1160201b60201c565b620023b373902e591eb4f328465b92080a6f4504a59b7bf09f601860016040518060200160405280600081525062002a1160201b60201c565b620023ec73a25f06b190a5c8d202bd7411686e5595749fc5e6601860026040518060200160405280600081525062002a1160201b60201c565b6200242573b6def4d80d7baae5012245ae616ef32d0c31160b601860016040518060200160405280600081525062002a1160201b60201c565b6200245e73a202c68862a19d43f681911a176d6e62a64190626018600b6040518060200160405280600081525062002a1160201b60201c565b6200249773a25f06b190a5c8d202bd7411686e5595749fc5e6601960016040518060200160405280600081525062002a1160201b60201c565b620024d073a202c68862a19d43f681911a176d6e62a64190626019600e6040518060200160405280600081525062002a1160201b60201c565b6200250973a25f06b190a5c8d202bd7411686e5595749fc5e6601a60026040518060200160405280600081525062002a1160201b60201c565b62002542737564cda45b0a2c64a4c695940b8078e24939a90b601a60026040518060200160405280600081525062002a1160201b60201c565b6200257b737088e06a843378fbd93a5a8c53dcd63bf53999c6601a60016040518060200160405280600081525062002a1160201b60201c565b620025b473a202c68862a19d43f681911a176d6e62a6419062601a60056040518060200160405280600081525062002a1160201b60201c565b620025ed73a25f06b190a5c8d202bd7411686e5595749fc5e6601b60016040518060200160405280600081525062002a1160201b60201c565b62002626737088e06a843378fbd93a5a8c53dcd63bf53999c6601b60016040518060200160405280600081525062002a1160201b60201c565b6200265f73a202c68862a19d43f681911a176d6e62a6419062601b600d6040518060200160405280600081525062002a1160201b60201c565b6200269873a25f06b190a5c8d202bd7411686e5595749fc5e6601c60016040518060200160405280600081525062002a1160201b60201c565b620026d1737088e06a843378fbd93a5a8c53dcd63bf53999c6601c60016040518060200160405280600081525062002a1160201b60201c565b6200270a73a202c68862a19d43f681911a176d6e62a6419062601c600d6040518060200160405280600081525062002a1160201b60201c565b6200274373a25f06b190a5c8d202bd7411686e5595749fc5e6601d60046040518060200160405280600081525062002a1160201b60201c565b6200277c739aed1548337949acd4f3b0d61f7e3f6ae3e8dc7a601d60016040518060200160405280600081525062002a1160201b60201c565b620027b5737564cda45b0a2c64a4c695940b8078e24939a90b601d60026040518060200160405280600081525062002a1160201b60201c565b620027ee737088e06a843378fbd93a5a8c53dcd63bf53999c6601d60026040518060200160405280600081525062002a1160201b60201c565b6200282773a202c68862a19d43f681911a176d6e62a6419062601d601f6040518060200160405280600081525062002a1160201b60201c565b6200286073a25f06b190a5c8d202bd7411686e5595749fc5e6601e60016040518060200160405280600081525062002a1160201b60201c565b6200289973fb0df28c50d0c9c6ab4ff6f5d0092d09bd8164ad601e60016040518060200160405280600081525062002a1160201b60201c565b620028d2737564cda45b0a2c64a4c695940b8078e24939a90b601e60016040518060200160405280600081525062002a1160201b60201c565b6200290b737088e06a843378fbd93a5a8c53dcd63bf53999c6601e60016040518060200160405280600081525062002a1160201b60201c565b6200294473a202c68862a19d43f681911a176d6e62a6419062601e60016040518060200160405280600081525062002a1160201b60201c565b6200297d73d6bf1a7926f8faac7e39100d04a901243ea9ccf7601f60016040518060200160405280600081525062002a1160201b60201c565b620029b673fb0df28c50d0c9c6ab4ff6f5d0092d09bd8164ad601f60016040518060200160405280600081525062002a1160201b60201c565b620029ef73a202c68862a19d43f681911a176d6e62a6419062601f600d6040518060200160405280600081525062002a1160201b60201c565b62003561565b806002908051906020019062002a0d92919062002eb2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141562002a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002a7b906200324d565b60405180910390fd5b600062002a9662002bd660201b60201c565b905062002acf8160008762002ab18862002bde60201b60201c565b62002ac28862002bde60201b60201c565b8762002ca760201b60201c565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462002b309190620032d4565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405162002bb09291906200326f565b60405180910390a462002bcf8160008787878762002caf60201b60201c565b5050505050565b600033905090565b60606000600167ffffffffffffffff81111562002c24577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801562002c535781602001602082028036833780820191505090505b509050828160008151811062002c92577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b505050505050565b62002cdb8473ffffffffffffffffffffffffffffffffffffffff1662002e9f60201b620009301760201c565b1562002e97578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040162002d2495949392919062003181565b602060405180830381600087803b15801562002d3f57600080fd5b505af192505050801562002d7357506040513d601f19601f8201168201806040525081019062002d70919062002f79565b60015b62002e0b5762002d8262003483565b8062002d8f575062002dce565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002dc59190620031e5565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002e029062003209565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462002e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002e8c906200322b565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b82805462002ec090620033d1565b90600052602060002090601f01602090048101928262002ee4576000855562002f30565b82601f1062002eff57805160ff191683800117855562002f30565b8280016001018555821562002f30579182015b8281111562002f2f57825182559160200191906001019062002f12565b5b50905062002f3f919062002f43565b5090565b5b8082111562002f5e57600081600090555060010162002f44565b5090565b60008151905062002f738162003547565b92915050565b60006020828403121562002f8c57600080fd5b600062002f9c8482850162002f62565b91505092915050565b62002fb08162003331565b82525050565b600062002fc3826200329c565b62002fcf8185620032b2565b935062002fe18185602086016200339b565b62002fec8162003465565b840191505092915050565b60006200300482620032a7565b620030108185620032c3565b9350620030228185602086016200339b565b6200302d8162003465565b840191505092915050565b600062003047603483620032c3565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b6000620030af602883620032c3565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b600062003117602183620032c3565b91507f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6200317b8162003391565b82525050565b600060a08201905062003198600083018862002fa5565b620031a7602083018762002fa5565b620031b6604083018662003170565b620031c5606083018562003170565b8181036080830152620031d9818462002fb6565b90509695505050505050565b6000602082019050818103600083015262003201818462002ff7565b905092915050565b60006020820190508181036000830152620032248162003038565b9050919050565b600060208201905081810360008301526200324681620030a0565b9050919050565b60006020820190508181036000830152620032688162003108565b9050919050565b600060408201905062003286600083018562003170565b62003295602083018462003170565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620032e18262003391565b9150620032ee8362003391565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562003326576200332562003407565b5b828201905092915050565b60006200333e8262003371565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620033bb5780820151818401526020810190506200339e565b83811115620033cb576000848401525b50505050565b60006002820490506001821680620033ea57607f821691505b6020821081141562003401576200340062003436565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015620034955762003544565b60046000803e620034a860005162003476565b6308c379a08114620034bb575062003544565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715620034e95750505062003544565b808201805167ffffffffffffffff8111156200350a57505050505062003544565b8060208301013d8501811115620035275750505050505062003544565b620035328262003465565b60208401016040528296505050505050505b90565b620035528162003345565b81146200355e57600080fd5b50565b612b3f80620035716000396000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c80632eb2c2d6116100715780632eb2c2d6146101795780634e1273f41461019557806395d89b41146101c5578063a22cb465146101e3578063e985e9c5146101ff578063f242432a1461022f576100a8565b8062fdd58e146100ad57806301ffc9a7146100dd57806306fdde031461010d5780630e89341c1461012b578063283dc96f1461015b575b600080fd5b6100c760048036038101906100c29190611ae2565b61024b565b6040516100d49190612572565b60405180910390f35b6100f760048036038101906100f29190611b8a565b610314565b60405161010491906123f5565b60405180910390f35b6101156103f6565b6040516101229190612410565b60405180910390f35b61014560048036038101906101409190611bdc565b610484565b6040516101529190612410565b60405180910390f35b6101636104cc565b6040516101709190612410565b60405180910390f35b610193600480360381019061018e9190611958565b610505565b005b6101af60048036038101906101aa9190611b1e565b6105a6565b6040516101bc919061239c565b60405180910390f35b6101cd610757565b6040516101da9190612410565b60405180910390f35b6101fd60048036038101906101f89190611aa6565b6107e5565b005b6102196004803603810190610214919061191c565b6107fb565b60405161022691906123f5565b60405180910390f35b61024960048036038101906102449190611a17565b61088f565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b390612472565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103df57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ef57506103ee82610943565b5b9050919050565b6003805461040390612871565b80601f016020809104026020016040519081016040528092919081815260200182805461042f90612871565b801561047c5780601f106104515761010080835404028352916020019161047c565b820191906000526020600020905b81548152906001019060200180831161045f57829003601f168201915b505050505081565b6060600560008381526020019081526020016000206000016104a5836109ad565b6040516020016104b6929190612295565b6040516020818303038152906040529050919050565b6040518060400160405280601381526020017f68747470733a2f2f74696d656172742e636f2f0000000000000000000000000081525081565b61050d610b5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061055357506105528561054d610b5a565b6107fb565b5b610592576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906124d2565b60405180910390fd5b61059f8585858585610b62565b5050505050565b606081518351146105ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e390612532565b60405180910390fd5b6000835167ffffffffffffffff81111561062f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561065d5781602001602082028036833780820191505090505b50905060005b845181101561074c576106f68582815181106106a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518583815181106106e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161024b565b82828151811061072f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610745906128a3565b9050610663565b508091505092915050565b6004805461076490612871565b80601f016020809104026020016040519081016040528092919081815260200182805461079090612871565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b505050505081565b6107f76107f0610b5a565b8383610ec2565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610897610b5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108dd57506108dc856108d7610b5a565b6107fb565b5b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612492565b60405180910390fd5b610929858585858561102f565b5050505050565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060008214156109f5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610b55565b600082905060005b60008214610a27578080610a10906128a3565b915050600a82610a209190612756565b91506109fd565b60008167ffffffffffffffff811115610a69577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610a9b5781602001600182028036833780820191505090505b5090505b60008514610b4e57600182610ab49190612787565b9150600a85610ac391906128ec565b6030610acf9190612700565b60f81b818381518110610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610b479190612756565b9450610a9f565b8093505050505b919050565b600033905090565b8151835114610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d90612552565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d906124b2565b60405180910390fd5b6000610c20610b5a565b9050610c308187878787876112b1565b60005b8451811015610e2d576000858281518110610c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110610cbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d54906124f2565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e129190612700565b9250508190555050505080610e26906128a3565b9050610c33565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ea49291906123be565b60405180910390a4610eba8187878787876112b9565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890612512565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161102291906123f5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561109f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611096906124b2565b60405180910390fd5b60006110a9610b5a565b90506110c98187876110ba88611489565b6110c388611489565b876112b1565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611157906124f2565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112159190612700565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161129292919061258d565b60405180910390a46112a882888888888861154f565b50505050505050565b505050505050565b6112d88473ffffffffffffffffffffffffffffffffffffffff16610930565b15611481578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161131e9594939291906122da565b602060405180830381600087803b15801561133857600080fd5b505af192505050801561136957506040513d601f19601f820116820180604052508101906113669190611bb3565b60015b6113f8576113756129f7565b8061138057506113bd565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b49190612410565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612432565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690612452565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156114ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156114fc5781602001602082028036833780820191505090505b509050828160008151811061153a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b61156e8473ffffffffffffffffffffffffffffffffffffffff16610930565b15611717578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016115b4959493929190612342565b602060405180830381600087803b1580156115ce57600080fd5b505af19250505080156115ff57506040513d601f19601f820116820180604052508101906115fc9190611bb3565b60015b61168e5761160b6129f7565b806116165750611653565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9190612410565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590612432565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90612452565b60405180910390fd5b505b505050505050565b600061173261172d846125e7565b6125b6565b9050808382526020820190508285602086028201111561175157600080fd5b60005b8581101561178157816117678882611835565b845260208401935060208301925050600181019050611754565b5050509392505050565b600061179e61179984612613565b6125b6565b905080838252602082019050828560208602820111156117bd57600080fd5b60005b858110156117ed57816117d38882611907565b8452602084019350602083019250506001810190506117c0565b5050509392505050565b600061180a6118058461263f565b6125b6565b90508281526020810184848401111561182257600080fd5b61182d84828561282f565b509392505050565b60008135905061184481612aad565b92915050565b600082601f83011261185b57600080fd5b813561186b84826020860161171f565b91505092915050565b600082601f83011261188557600080fd5b813561189584826020860161178b565b91505092915050565b6000813590506118ad81612ac4565b92915050565b6000813590506118c281612adb565b92915050565b6000815190506118d781612adb565b92915050565b600082601f8301126118ee57600080fd5b81356118fe8482602086016117f7565b91505092915050565b60008135905061191681612af2565b92915050565b6000806040838503121561192f57600080fd5b600061193d85828601611835565b925050602061194e85828601611835565b9150509250929050565b600080600080600060a0868803121561197057600080fd5b600061197e88828901611835565b955050602061198f88828901611835565b945050604086013567ffffffffffffffff8111156119ac57600080fd5b6119b888828901611874565b935050606086013567ffffffffffffffff8111156119d557600080fd5b6119e188828901611874565b925050608086013567ffffffffffffffff8111156119fe57600080fd5b611a0a888289016118dd565b9150509295509295909350565b600080600080600060a08688031215611a2f57600080fd5b6000611a3d88828901611835565b9550506020611a4e88828901611835565b9450506040611a5f88828901611907565b9350506060611a7088828901611907565b925050608086013567ffffffffffffffff811115611a8d57600080fd5b611a99888289016118dd565b9150509295509295909350565b60008060408385031215611ab957600080fd5b6000611ac785828601611835565b9250506020611ad88582860161189e565b9150509250929050565b60008060408385031215611af557600080fd5b6000611b0385828601611835565b9250506020611b1485828601611907565b9150509250929050565b60008060408385031215611b3157600080fd5b600083013567ffffffffffffffff811115611b4b57600080fd5b611b578582860161184a565b925050602083013567ffffffffffffffff811115611b7457600080fd5b611b8085828601611874565b9150509250929050565b600060208284031215611b9c57600080fd5b6000611baa848285016118b3565b91505092915050565b600060208284031215611bc557600080fd5b6000611bd3848285016118c8565b91505092915050565b600060208284031215611bee57600080fd5b6000611bfc84828501611907565b91505092915050565b6000611c118383612277565b60208301905092915050565b611c26816127bb565b82525050565b6000611c3782612694565b611c4181856126c2565b9350611c4c8361266f565b8060005b83811015611c7d578151611c648882611c05565b9750611c6f836126b5565b925050600181019050611c50565b5085935050505092915050565b611c93816127cd565b82525050565b6000611ca48261269f565b611cae81856126d3565b9350611cbe81856020860161283e565b611cc7816129d9565b840191505092915050565b6000611cdd826126aa565b611ce781856126e4565b9350611cf781856020860161283e565b611d00816129d9565b840191505092915050565b6000611d16826126aa565b611d2081856126f5565b9350611d3081856020860161283e565b80840191505092915050565b60008154611d4981612871565b611d5381866126f5565b94506001821660008114611d6e5760018114611d7f57611db2565b60ff19831686528186019350611db2565b611d888561267f565b60005b83811015611daa57815481890152600182019150602081019050611d8b565b838801955050505b50505092915050565b6000611dc86034836126e4565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b6000611e2e6028836126e4565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e94600a836126f5565b91507f3f66696c656e616d653d000000000000000000000000000000000000000000006000830152600a82019050919050565b6000611ed4602b836126e4565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000611f3a6029836126e4565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fa06015836126f5565b91507f68747470733a2f2f697066732e696f2f697066732f00000000000000000000006000830152601582019050919050565b6000611fe06025836126e4565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120466032836126e4565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b60006120ac602a836126e4565b91507f455243313135353a20696e73756666696369656e742062616c616e636520666f60008301527f72207472616e73666572000000000000000000000000000000000000000000006020830152604082019050919050565b60006121126005836126f5565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b60006121526029836126e4565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b60006121b86029836126e4565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b600061221e6028836126e4565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b61228081612825565b82525050565b61228f81612825565b82525050565b60006122a082611f93565b91506122ac8285611d3c565b91506122b782611e87565b91506122c38284611d0b565b91506122ce82612105565b91508190509392505050565b600060a0820190506122ef6000830188611c1d565b6122fc6020830187611c1d565b818103604083015261230e8186611c2c565b905081810360608301526123228185611c2c565b905081810360808301526123368184611c99565b90509695505050505050565b600060a0820190506123576000830188611c1d565b6123646020830187611c1d565b6123716040830186612286565b61237e6060830185612286565b81810360808301526123908184611c99565b90509695505050505050565b600060208201905081810360008301526123b68184611c2c565b905092915050565b600060408201905081810360008301526123d88185611c2c565b905081810360208301526123ec8184611c2c565b90509392505050565b600060208201905061240a6000830184611c8a565b92915050565b6000602082019050818103600083015261242a8184611cd2565b905092915050565b6000602082019050818103600083015261244b81611dbb565b9050919050565b6000602082019050818103600083015261246b81611e21565b9050919050565b6000602082019050818103600083015261248b81611ec7565b9050919050565b600060208201905081810360008301526124ab81611f2d565b9050919050565b600060208201905081810360008301526124cb81611fd3565b9050919050565b600060208201905081810360008301526124eb81612039565b9050919050565b6000602082019050818103600083015261250b8161209f565b9050919050565b6000602082019050818103600083015261252b81612145565b9050919050565b6000602082019050818103600083015261254b816121ab565b9050919050565b6000602082019050818103600083015261256b81612211565b9050919050565b60006020820190506125876000830184612286565b92915050565b60006040820190506125a26000830185612286565b6125af6020830184612286565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156125dd576125dc6129aa565b5b8060405250919050565b600067ffffffffffffffff821115612602576126016129aa565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561262e5761262d6129aa565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561265a576126596129aa565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061270b82612825565b915061271683612825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561274b5761274a61291d565b5b828201905092915050565b600061276182612825565b915061276c83612825565b92508261277c5761277b61294c565b5b828204905092915050565b600061279282612825565b915061279d83612825565b9250828210156127b0576127af61291d565b5b828203905092915050565b60006127c682612805565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561285c578082015181840152602081019050612841565b8381111561286b576000848401525b50505050565b6000600282049050600182168061288957607f821691505b6020821081141561289d5761289c61297b565b5b50919050565b60006128ae82612825565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128e1576128e061291d565b5b600182019050919050565b60006128f782612825565b915061290283612825565b9250826129125761291161294c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015612a0757612aaa565b60046000803e612a186000516129ea565b6308c379a08114612a295750612aaa565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715612a5557505050612aaa565b808201805167ffffffffffffffff811115612a74575050505050612aaa565b8060208301013d8501811115612a8f57505050505050612aaa565b612a98826129d9565b60208401016040528296505050505050505b90565b612ab6816127bb565b8114612ac157600080fd5b50565b612acd816127cd565b8114612ad857600080fd5b50565b612ae4816127d9565b8114612aef57600080fd5b50565b612afb81612825565b8114612b0657600080fd5b5056fea2646970667358221220f5ed84ad9092e57aaf59dfd67fd6064ec69baba3c25211dacd0cb7b014c94deb64736f6c63430008000033516d5a7a5159757555414b644474774b62474d376b6b4d7a6d656f465764366a6672484346695152426662557167516d5331786b6169383543726b68427147314461547a65366e364243666e7239787a746e5a7242424c4370515253516d536e535541676a713843727575456271586768715a6371314c447252626e5758704d6e5a75746f373563326b516d5a6d7a4b32364b6d3139634442704b317679656a71556f55365058487152436a703752664d4e6f4d35767436516d656a51594d54386531634d3132696b504432664455726a6d4e4e4846567a4d714a7164584b585635617a3177516d55636d796b794a3462727554347474703532626b364d7068657a4d31344c4632756a75376f4b6b5175357136516d64653173355a484855504c51367163624756547665486567575069726447334777586374487263684d6b4833516d66455537447446317064503572577a6f5373454c7773754553535452565679426555465250455a5354664a66516d5677447751434134573635397558635964477370556653747a64753651483954384b73696666715159745074516d526f544e6843464842374a666437667a6f477369664166594866394737664d7663456e655a6e436172794c61516d595854565a45677054344b737a525969376f46414152745478746f63706e45596f316f7a3935716744356964516d64656a6473703538746878544331594c59637041454232746e364a4e353452687a7339786e4a6f6d7143686f516d594163626a7073427466773939354374334a5546754e444b6a676a4e735362675a5256735866477735517a52516d61484b416279545762434c6b62393542577264527a6e56376f50346459576f37537362615044683137675655516d5558784438554637314469696346514351716b7239317a65577a5a4853766e62477464565a61394441386148516d535a56424564444a6b4c724e686563766d466771673537347642574c6b617653354c6e384a4e656a54487250516d5963373663424151523763423335473474443633667362337632416f38506431366e323867474762356f7250516d537371736d7a6532774534547a6d325777586b6f6477476f576f625771756639796b726b64525a7053366f61516d6546714a7873514d6551754a434779686b32314c63413756456b464a314358646a616964336573586e394e62516d596934695958726232683832415068466f44677877736b4a566a37534d6e474873354154776b7774784c7766516d6374504834514e32664e6359567342504e6f6d74796a6934324c72447852657454646e414a6356776f567956516d5777624e516b35524174394635467150633838313878714d75325578356d65636273773942467344504e4c45516d5865753279395946624a317255316533545779664c504a344d557350475a353955487672455842343673666e516d50534a7570574c6d637773694d6e7152367968674670373134426b434e37647a376655595664597677556474516d5852634d39683369556d53557a476173387841747345414d357459614b657254574e334e687663536d5a4766516d527734664d39313661585361364d574d385a42536751746172516b77744c635a36553143447a69596b73384c516d6159676a64584758434c513977644b314b4c79737146427175376267755871506a584d506144645a6341714d516d646f565863557645626a52703942366f594c41385a464844333545385a6453646677454a634b5478557a4531516d57747958344c4c6d4d7a4d4c767a6f464e584a714466566d61506d417a68596d33697567747936376d794251516d525431556b5050447241616533333546313169794c644373595a44485276657058684a4359784e7379365739516d4e78697a68775063586e66485a50727865795075735570334633445051696569446867395732427850687159
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a85760003560e01c80632eb2c2d6116100715780632eb2c2d6146101795780634e1273f41461019557806395d89b41146101c5578063a22cb465146101e3578063e985e9c5146101ff578063f242432a1461022f576100a8565b8062fdd58e146100ad57806301ffc9a7146100dd57806306fdde031461010d5780630e89341c1461012b578063283dc96f1461015b575b600080fd5b6100c760048036038101906100c29190611ae2565b61024b565b6040516100d49190612572565b60405180910390f35b6100f760048036038101906100f29190611b8a565b610314565b60405161010491906123f5565b60405180910390f35b6101156103f6565b6040516101229190612410565b60405180910390f35b61014560048036038101906101409190611bdc565b610484565b6040516101529190612410565b60405180910390f35b6101636104cc565b6040516101709190612410565b60405180910390f35b610193600480360381019061018e9190611958565b610505565b005b6101af60048036038101906101aa9190611b1e565b6105a6565b6040516101bc919061239c565b60405180910390f35b6101cd610757565b6040516101da9190612410565b60405180910390f35b6101fd60048036038101906101f89190611aa6565b6107e5565b005b6102196004803603810190610214919061191c565b6107fb565b60405161022691906123f5565b60405180910390f35b61024960048036038101906102449190611a17565b61088f565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b390612472565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103df57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ef57506103ee82610943565b5b9050919050565b6003805461040390612871565b80601f016020809104026020016040519081016040528092919081815260200182805461042f90612871565b801561047c5780601f106104515761010080835404028352916020019161047c565b820191906000526020600020905b81548152906001019060200180831161045f57829003601f168201915b505050505081565b6060600560008381526020019081526020016000206000016104a5836109ad565b6040516020016104b6929190612295565b6040516020818303038152906040529050919050565b6040518060400160405280601381526020017f68747470733a2f2f74696d656172742e636f2f0000000000000000000000000081525081565b61050d610b5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061055357506105528561054d610b5a565b6107fb565b5b610592576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906124d2565b60405180910390fd5b61059f8585858585610b62565b5050505050565b606081518351146105ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e390612532565b60405180910390fd5b6000835167ffffffffffffffff81111561062f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561065d5781602001602082028036833780820191505090505b50905060005b845181101561074c576106f68582815181106106a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518583815181106106e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161024b565b82828151811061072f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610745906128a3565b9050610663565b508091505092915050565b6004805461076490612871565b80601f016020809104026020016040519081016040528092919081815260200182805461079090612871565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b505050505081565b6107f76107f0610b5a565b8383610ec2565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610897610b5a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108dd57506108dc856108d7610b5a565b6107fb565b5b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612492565b60405180910390fd5b610929858585858561102f565b5050505050565b600080823b905060008111915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060008214156109f5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610b55565b600082905060005b60008214610a27578080610a10906128a3565b915050600a82610a209190612756565b91506109fd565b60008167ffffffffffffffff811115610a69577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610a9b5781602001600182028036833780820191505090505b5090505b60008514610b4e57600182610ab49190612787565b9150600a85610ac391906128ec565b6030610acf9190612700565b60f81b818381518110610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610b479190612756565b9450610a9f565b8093505050505b919050565b600033905090565b8151835114610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d90612552565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d906124b2565b60405180910390fd5b6000610c20610b5a565b9050610c308187878787876112b1565b60005b8451811015610e2d576000858281518110610c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110610cbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d54906124f2565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e129190612700565b9250508190555050505080610e26906128a3565b9050610c33565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ea49291906123be565b60405180910390a4610eba8187878787876112b9565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890612512565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161102291906123f5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561109f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611096906124b2565b60405180910390fd5b60006110a9610b5a565b90506110c98187876110ba88611489565b6110c388611489565b876112b1565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611157906124f2565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112159190612700565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161129292919061258d565b60405180910390a46112a882888888888861154f565b50505050505050565b505050505050565b6112d88473ffffffffffffffffffffffffffffffffffffffff16610930565b15611481578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161131e9594939291906122da565b602060405180830381600087803b15801561133857600080fd5b505af192505050801561136957506040513d601f19601f820116820180604052508101906113669190611bb3565b60015b6113f8576113756129f7565b8061138057506113bd565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b49190612410565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612432565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690612452565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156114ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156114fc5781602001602082028036833780820191505090505b509050828160008151811061153a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b61156e8473ffffffffffffffffffffffffffffffffffffffff16610930565b15611717578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016115b4959493929190612342565b602060405180830381600087803b1580156115ce57600080fd5b505af19250505080156115ff57506040513d601f19601f820116820180604052508101906115fc9190611bb3565b60015b61168e5761160b6129f7565b806116165750611653565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9190612410565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590612432565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90612452565b60405180910390fd5b505b505050505050565b600061173261172d846125e7565b6125b6565b9050808382526020820190508285602086028201111561175157600080fd5b60005b8581101561178157816117678882611835565b845260208401935060208301925050600181019050611754565b5050509392505050565b600061179e61179984612613565b6125b6565b905080838252602082019050828560208602820111156117bd57600080fd5b60005b858110156117ed57816117d38882611907565b8452602084019350602083019250506001810190506117c0565b5050509392505050565b600061180a6118058461263f565b6125b6565b90508281526020810184848401111561182257600080fd5b61182d84828561282f565b509392505050565b60008135905061184481612aad565b92915050565b600082601f83011261185b57600080fd5b813561186b84826020860161171f565b91505092915050565b600082601f83011261188557600080fd5b813561189584826020860161178b565b91505092915050565b6000813590506118ad81612ac4565b92915050565b6000813590506118c281612adb565b92915050565b6000815190506118d781612adb565b92915050565b600082601f8301126118ee57600080fd5b81356118fe8482602086016117f7565b91505092915050565b60008135905061191681612af2565b92915050565b6000806040838503121561192f57600080fd5b600061193d85828601611835565b925050602061194e85828601611835565b9150509250929050565b600080600080600060a0868803121561197057600080fd5b600061197e88828901611835565b955050602061198f88828901611835565b945050604086013567ffffffffffffffff8111156119ac57600080fd5b6119b888828901611874565b935050606086013567ffffffffffffffff8111156119d557600080fd5b6119e188828901611874565b925050608086013567ffffffffffffffff8111156119fe57600080fd5b611a0a888289016118dd565b9150509295509295909350565b600080600080600060a08688031215611a2f57600080fd5b6000611a3d88828901611835565b9550506020611a4e88828901611835565b9450506040611a5f88828901611907565b9350506060611a7088828901611907565b925050608086013567ffffffffffffffff811115611a8d57600080fd5b611a99888289016118dd565b9150509295509295909350565b60008060408385031215611ab957600080fd5b6000611ac785828601611835565b9250506020611ad88582860161189e565b9150509250929050565b60008060408385031215611af557600080fd5b6000611b0385828601611835565b9250506020611b1485828601611907565b9150509250929050565b60008060408385031215611b3157600080fd5b600083013567ffffffffffffffff811115611b4b57600080fd5b611b578582860161184a565b925050602083013567ffffffffffffffff811115611b7457600080fd5b611b8085828601611874565b9150509250929050565b600060208284031215611b9c57600080fd5b6000611baa848285016118b3565b91505092915050565b600060208284031215611bc557600080fd5b6000611bd3848285016118c8565b91505092915050565b600060208284031215611bee57600080fd5b6000611bfc84828501611907565b91505092915050565b6000611c118383612277565b60208301905092915050565b611c26816127bb565b82525050565b6000611c3782612694565b611c4181856126c2565b9350611c4c8361266f565b8060005b83811015611c7d578151611c648882611c05565b9750611c6f836126b5565b925050600181019050611c50565b5085935050505092915050565b611c93816127cd565b82525050565b6000611ca48261269f565b611cae81856126d3565b9350611cbe81856020860161283e565b611cc7816129d9565b840191505092915050565b6000611cdd826126aa565b611ce781856126e4565b9350611cf781856020860161283e565b611d00816129d9565b840191505092915050565b6000611d16826126aa565b611d2081856126f5565b9350611d3081856020860161283e565b80840191505092915050565b60008154611d4981612871565b611d5381866126f5565b94506001821660008114611d6e5760018114611d7f57611db2565b60ff19831686528186019350611db2565b611d888561267f565b60005b83811015611daa57815481890152600182019150602081019050611d8b565b838801955050505b50505092915050565b6000611dc86034836126e4565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b6000611e2e6028836126e4565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e94600a836126f5565b91507f3f66696c656e616d653d000000000000000000000000000000000000000000006000830152600a82019050919050565b6000611ed4602b836126e4565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000611f3a6029836126e4565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fa06015836126f5565b91507f68747470733a2f2f697066732e696f2f697066732f00000000000000000000006000830152601582019050919050565b6000611fe06025836126e4565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120466032836126e4565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b60006120ac602a836126e4565b91507f455243313135353a20696e73756666696369656e742062616c616e636520666f60008301527f72207472616e73666572000000000000000000000000000000000000000000006020830152604082019050919050565b60006121126005836126f5565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b60006121526029836126e4565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b60006121b86029836126e4565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b600061221e6028836126e4565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b61228081612825565b82525050565b61228f81612825565b82525050565b60006122a082611f93565b91506122ac8285611d3c565b91506122b782611e87565b91506122c38284611d0b565b91506122ce82612105565b91508190509392505050565b600060a0820190506122ef6000830188611c1d565b6122fc6020830187611c1d565b818103604083015261230e8186611c2c565b905081810360608301526123228185611c2c565b905081810360808301526123368184611c99565b90509695505050505050565b600060a0820190506123576000830188611c1d565b6123646020830187611c1d565b6123716040830186612286565b61237e6060830185612286565b81810360808301526123908184611c99565b90509695505050505050565b600060208201905081810360008301526123b68184611c2c565b905092915050565b600060408201905081810360008301526123d88185611c2c565b905081810360208301526123ec8184611c2c565b90509392505050565b600060208201905061240a6000830184611c8a565b92915050565b6000602082019050818103600083015261242a8184611cd2565b905092915050565b6000602082019050818103600083015261244b81611dbb565b9050919050565b6000602082019050818103600083015261246b81611e21565b9050919050565b6000602082019050818103600083015261248b81611ec7565b9050919050565b600060208201905081810360008301526124ab81611f2d565b9050919050565b600060208201905081810360008301526124cb81611fd3565b9050919050565b600060208201905081810360008301526124eb81612039565b9050919050565b6000602082019050818103600083015261250b8161209f565b9050919050565b6000602082019050818103600083015261252b81612145565b9050919050565b6000602082019050818103600083015261254b816121ab565b9050919050565b6000602082019050818103600083015261256b81612211565b9050919050565b60006020820190506125876000830184612286565b92915050565b60006040820190506125a26000830185612286565b6125af6020830184612286565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156125dd576125dc6129aa565b5b8060405250919050565b600067ffffffffffffffff821115612602576126016129aa565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561262e5761262d6129aa565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561265a576126596129aa565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061270b82612825565b915061271683612825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561274b5761274a61291d565b5b828201905092915050565b600061276182612825565b915061276c83612825565b92508261277c5761277b61294c565b5b828204905092915050565b600061279282612825565b915061279d83612825565b9250828210156127b0576127af61291d565b5b828203905092915050565b60006127c682612805565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561285c578082015181840152602081019050612841565b8381111561286b576000848401525b50505050565b6000600282049050600182168061288957607f821691505b6020821081141561289d5761289c61297b565b5b50919050565b60006128ae82612825565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128e1576128e061291d565b5b600182019050919050565b60006128f782612825565b915061290283612825565b9250826129125761291161294c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015612a0757612aaa565b60046000803e612a186000516129ea565b6308c379a08114612a295750612aaa565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715612a5557505050612aaa565b808201805167ffffffffffffffff811115612a74575050505050612aaa565b8060208301013d8501811115612a8f57505050505050612aaa565b612a98826129d9565b60208401016040528296505050505050505b90565b612ab6816127bb565b8114612ac157600080fd5b50565b612acd816127cd565b8114612ad857600080fd5b50565b612ae4816127d9565b8114612aef57600080fd5b50565b612afb81612825565b8114612b0657600080fd5b5056fea2646970667358221220f5ed84ad9092e57aaf59dfd67fd6064ec69baba3c25211dacd0cb7b014c94deb64736f6c63430008000033
Deployed Bytecode Sourcemap
34472:12731:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20967:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19990:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34570:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46837:357;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34510:53;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22906:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21364:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34605:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21961:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22188:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22428:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20967:231;21053:7;21100:1;21081:21;;:7;:21;;;;21073:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21168:9;:13;21178:2;21168:13;;;;;;;;;;;:22;21182:7;21168:22;;;;;;;;;;;;;;;;21161:29;;20967:231;;;;:::o;19990:310::-;20092:4;20144:26;20129:41;;;:11;:41;;;;:110;;;;20202:37;20187:52;;;:11;:52;;;;20129:110;:163;;;;20256:36;20280:11;20256:23;:36::i;:::-;20129:163;20109:183;;19990:310;;;:::o;34570:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;46837:357::-;46898:13;47029:11;:21;47041:8;47029:21;;;;;;;;;;;:29;;47108:26;47125:8;47108:16;:26::i;:::-;46952:223;;;;;;;;;:::i;:::-;;;;;;;;;;;;;46924:262;;46837:357;;;:::o;34510:53::-;;;;;;;;;;;;;;;;;;;:::o;22906:442::-;23147:12;:10;:12::i;:::-;23139:20;;:4;:20;;;:60;;;;23163:36;23180:4;23186:12;:10;:12::i;:::-;23163:16;:36::i;:::-;23139:60;23117:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;23288:52;23311:4;23317:2;23321:3;23326:7;23335:4;23288:22;:52::i;:::-;22906:442;;;;;:::o;21364:524::-;21520:16;21581:3;:10;21562:8;:15;:29;21554:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21650:30;21697:8;:15;21683:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21650:63;;21731:9;21726:122;21750:8;:15;21746:1;:19;21726:122;;;21806:30;21816:8;21825:1;21816:11;;;;;;;;;;;;;;;;;;;;;;21829:3;21833:1;21829:6;;;;;;;;;;;;;;;;;;;;;;21806:9;:30::i;:::-;21787:13;21801:1;21787:16;;;;;;;;;;;;;;;;;;;;;:49;;;;;21767:3;;;;:::i;:::-;;;21726:122;;;;21867:13;21860:20;;;21364:524;;;;:::o;34605:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21961:155::-;22056:52;22075:12;:10;:12::i;:::-;22089:8;22099;22056:18;:52::i;:::-;21961:155;;:::o;22188:168::-;22287:4;22311:18;:27;22330:7;22311:27;;;;;;;;;;;;;;;:37;22339:8;22311:37;;;;;;;;;;;;;;;;;;;;;;;;;22304:44;;22188:168;;;;:::o;22428:401::-;22644:12;:10;:12::i;:::-;22636:20;;:4;:20;;;:60;;;;22660:36;22677:4;22683:12;:10;:12::i;:::-;22660:16;:36::i;:::-;22636:60;22614:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;22776:45;22794:4;22800:2;22804;22808:6;22816:4;22776:17;:45::i;:::-;22428:401;;;;;:::o;3429:387::-;3489:4;3697:12;3764:7;3752:20;3744:28;;3807:1;3800:4;:8;3793:15;;;3429:387;;;:::o;15046:157::-;15131:4;15170:25;15155:40;;;:11;:40;;;;15148:47;;15046:157;;;:::o;17537:723::-;17593:13;17823:1;17814:5;:10;17810:53;;;17841:10;;;;;;;;;;;;;;;;;;;;;17810:53;17873:12;17888:5;17873:20;;17904:14;17929:78;17944:1;17936:4;:9;17929:78;;17962:8;;;;;:::i;:::-;;;;17993:2;17985:10;;;;;:::i;:::-;;;17929:78;;;18017:19;18049:6;18039:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18017:39;;18067:154;18083:1;18074:5;:10;18067:154;;18111:1;18101:11;;;;;:::i;:::-;;;18178:2;18170:5;:10;;;;:::i;:::-;18157:2;:24;;;;:::i;:::-;18144:39;;18127:6;18134;18127:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;18207:2;18198:11;;;;;:::i;:::-;;;18067:154;;;18245:6;18231:21;;;;;17537:723;;;;:::o;15247:98::-;15300:7;15327:10;15320:17;;15247:98;:::o;24990:1074::-;25217:7;:14;25203:3;:10;:28;25195:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25309:1;25295:16;;:2;:16;;;;25287:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25366:16;25385:12;:10;:12::i;:::-;25366:31;;25410:60;25431:8;25441:4;25447:2;25451:3;25456:7;25465:4;25410:20;:60::i;:::-;25488:9;25483:421;25507:3;:10;25503:1;:14;25483:421;;;25539:10;25552:3;25556:1;25552:6;;;;;;;;;;;;;;;;;;;;;;25539:19;;25573:14;25590:7;25598:1;25590:10;;;;;;;;;;;;;;;;;;;;;;25573:27;;25617:19;25639:9;:13;25649:2;25639:13;;;;;;;;;;;:19;25653:4;25639:19;;;;;;;;;;;;;;;;25617:41;;25696:6;25681:11;:21;;25673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25829:6;25815:11;:20;25793:9;:13;25803:2;25793:13;;;;;;;;;;;:19;25807:4;25793:19;;;;;;;;;;;;;;;:42;;;;25886:6;25865:9;:13;25875:2;25865:13;;;;;;;;;;;:17;25879:2;25865:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25483:421;;;25519:3;;;;:::i;:::-;;;25483:421;;;;25951:2;25921:47;;25945:4;25921:47;;25935:8;25921:47;;;25955:3;25960:7;25921:47;;;;;;;:::i;:::-;;;;;;;;25981:75;26017:8;26027:4;26033:2;26037:3;26042:7;26051:4;25981:35;:75::i;:::-;24990:1074;;;;;;:::o;31176:331::-;31331:8;31322:17;;:5;:17;;;;31314:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31434:8;31396:18;:25;31415:5;31396:25;;;;;;;;;;;;;;;:35;31422:8;31396:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31480:8;31458:41;;31473:5;31458:41;;;31490:8;31458:41;;;;;;:::i;:::-;;;;;;;;31176:331;;;:::o;23812:820::-;24014:1;24000:16;;:2;:16;;;;23992:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24071:16;24090:12;:10;:12::i;:::-;24071:31;;24115:96;24136:8;24146:4;24152:2;24156:21;24174:2;24156:17;:21::i;:::-;24179:25;24197:6;24179:17;:25::i;:::-;24206:4;24115:20;:96::i;:::-;24224:19;24246:9;:13;24256:2;24246:13;;;;;;;;;;;:19;24260:4;24246:19;;;;;;;;;;;;;;;;24224:41;;24299:6;24284:11;:21;;24276:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24424:6;24410:11;:20;24388:9;:13;24398:2;24388:13;;;;;;;;;;;:19;24402:4;24388:19;;;;;;;;;;;;;;;:42;;;;24473:6;24452:9;:13;24462:2;24452:13;;;;;;;;;;;:17;24466:2;24452:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;24528:2;24497:46;;24522:4;24497:46;;24512:8;24497:46;;;24532:2;24536:6;24497:46;;;;;;;:::i;:::-;;;;;;;;24556:68;24587:8;24597:4;24603:2;24607;24611:6;24619:4;24556:30;:68::i;:::-;23812:820;;;;;;;:::o;32463:221::-;;;;;;;:::o;33444:813::-;33684:15;:2;:13;;;:15::i;:::-;33680:570;;;33737:2;33720:43;;;33764:8;33774:4;33780:3;33785:7;33794:4;33720:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33716:523;;;;:::i;:::-;;;;;;;;34112:6;34105:14;;;;;;;;;;;:::i;:::-;;;;;;;;33716:523;34161:62;;;;;;;;;;:::i;:::-;;;;;;;;33716:523;33893:48;;;33881:60;;;:8;:60;;;;33877:159;;33966:50;;;;;;;;;;:::i;:::-;;;;;;;;33877:159;33800:251;33680:570;33444:813;;;;;;:::o;34265:198::-;34331:16;34360:22;34399:1;34385:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34360:41;;34423:7;34412:5;34418:1;34412:8;;;;;;;;;;;;;;;;;;;;;:18;;;;;34450:5;34443:12;;;34265:198;;;:::o;32692:744::-;32907:15;:2;:13;;;:15::i;:::-;32903:526;;;32960:2;32943:38;;;32982:8;32992:4;32998:2;33002:6;33010:4;32943:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32939:479;;;;:::i;:::-;;;;;;;;33291:6;33284:14;;;;;;;;;;;:::i;:::-;;;;;;;;32939:479;33340:62;;;;;;;;;;:::i;:::-;;;;;;;;32939:479;33077:43;;;33065:55;;;:8;:55;;;;33061:154;;33145:50;;;;;;;;;;:::i;:::-;;;;;;;;33061:154;33016:214;32903:526;32692:744;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:342::-;;1399:64;1414:48;1455:6;1414:48;:::i;:::-;1399:64;:::i;:::-;1390:73;;1486:6;1479:5;1472:21;1524:4;1517:5;1513:16;1562:3;1553:6;1548:3;1544:16;1541:25;1538:2;;;1579:1;1576;1569:12;1538:2;1592:41;1626:6;1621:3;1616;1592:41;:::i;:::-;1380:259;;;;;;:::o;1645:139::-;;1729:6;1716:20;1707:29;;1745:33;1772:5;1745:33;:::i;:::-;1697:87;;;;:::o;1807:303::-;;1927:3;1920:4;1912:6;1908:17;1904:27;1894:2;;1945:1;1942;1935:12;1894:2;1985:6;1972:20;2010:94;2100:3;2092:6;2085:4;2077:6;2073:17;2010:94;:::i;:::-;2001:103;;1884:226;;;;;:::o;2133:303::-;;2253:3;2246:4;2238:6;2234:17;2230:27;2220:2;;2271:1;2268;2261:12;2220:2;2311:6;2298:20;2336:94;2426:3;2418:6;2411:4;2403:6;2399:17;2336:94;:::i;:::-;2327:103;;2210:226;;;;;:::o;2442:133::-;;2523:6;2510:20;2501:29;;2539:30;2563:5;2539:30;:::i;:::-;2491:84;;;;:::o;2581:137::-;;2664:6;2651:20;2642:29;;2680:32;2706:5;2680:32;:::i;:::-;2632:86;;;;:::o;2724:141::-;;2811:6;2805:13;2796:22;;2827:32;2853:5;2827:32;:::i;:::-;2786:79;;;;:::o;2884:271::-;;2988:3;2981:4;2973:6;2969:17;2965:27;2955:2;;3006:1;3003;2996:12;2955:2;3046:6;3033:20;3071:78;3145:3;3137:6;3130:4;3122:6;3118:17;3071:78;:::i;:::-;3062:87;;2945:210;;;;;:::o;3161:139::-;;3245:6;3232:20;3223:29;;3261:33;3288:5;3261:33;:::i;:::-;3213:87;;;;:::o;3306:407::-;;;3431:2;3419:9;3410:7;3406:23;3402:32;3399:2;;;3447:1;3444;3437:12;3399:2;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3389:324;;;;;:::o;3719:1241::-;;;;;;3954:3;3942:9;3933:7;3929:23;3925:33;3922:2;;;3971:1;3968;3961:12;3922:2;4014:1;4039:53;4084:7;4075:6;4064:9;4060:22;4039:53;:::i;:::-;4029:63;;3985:117;4141:2;4167:53;4212:7;4203:6;4192:9;4188:22;4167:53;:::i;:::-;4157:63;;4112:118;4297:2;4286:9;4282:18;4269:32;4328:18;4320:6;4317:30;4314:2;;;4360:1;4357;4350:12;4314:2;4388:78;4458:7;4449:6;4438:9;4434:22;4388:78;:::i;:::-;4378:88;;4240:236;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4634:78;4704:7;4695:6;4684:9;4680:22;4634:78;:::i;:::-;4624:88;;4486:236;4789:3;4778:9;4774:19;4761:33;4821:18;4813:6;4810:30;4807:2;;;4853:1;4850;4843:12;4807:2;4881:62;4935:7;4926:6;4915:9;4911:22;4881:62;:::i;:::-;4871:72;;4732:221;3912:1048;;;;;;;;:::o;4966:955::-;;;;;;5151:3;5139:9;5130:7;5126:23;5122:33;5119:2;;;5168:1;5165;5158:12;5119:2;5211:1;5236:53;5281:7;5272:6;5261:9;5257:22;5236:53;:::i;:::-;5226:63;;5182:117;5338:2;5364:53;5409:7;5400:6;5389:9;5385:22;5364:53;:::i;:::-;5354:63;;5309:118;5466:2;5492:53;5537:7;5528:6;5517:9;5513:22;5492:53;:::i;:::-;5482:63;;5437:118;5594:2;5620:53;5665:7;5656:6;5645:9;5641:22;5620:53;:::i;:::-;5610:63;;5565:118;5750:3;5739:9;5735:19;5722:33;5782:18;5774:6;5771:30;5768:2;;;5814:1;5811;5804:12;5768:2;5842:62;5896:7;5887:6;5876:9;5872:22;5842:62;:::i;:::-;5832:72;;5693:221;5109:812;;;;;;;;:::o;5927:401::-;;;6049:2;6037:9;6028:7;6024:23;6020:32;6017:2;;;6065:1;6062;6055:12;6017:2;6108:1;6133:53;6178:7;6169:6;6158:9;6154:22;6133:53;:::i;:::-;6123:63;;6079:117;6235:2;6261:50;6303:7;6294:6;6283:9;6279:22;6261:50;:::i;:::-;6251:60;;6206:115;6007:321;;;;;:::o;6334:407::-;;;6459:2;6447:9;6438:7;6434:23;6430:32;6427:2;;;6475:1;6472;6465:12;6427:2;6518:1;6543:53;6588:7;6579:6;6568:9;6564:22;6543:53;:::i;:::-;6533:63;;6489:117;6645:2;6671:53;6716:7;6707:6;6696:9;6692:22;6671:53;:::i;:::-;6661:63;;6616:118;6417:324;;;;;:::o;6747:693::-;;;6922:2;6910:9;6901:7;6897:23;6893:32;6890:2;;;6938:1;6935;6928:12;6890:2;7009:1;6998:9;6994:17;6981:31;7039:18;7031:6;7028:30;7025:2;;;7071:1;7068;7061:12;7025:2;7099:78;7169:7;7160:6;7149:9;7145:22;7099:78;:::i;:::-;7089:88;;6952:235;7254:2;7243:9;7239:18;7226:32;7285:18;7277:6;7274:30;7271:2;;;7317:1;7314;7307:12;7271:2;7345:78;7415:7;7406:6;7395:9;7391:22;7345:78;:::i;:::-;7335:88;;7197:236;6880:560;;;;;:::o;7446:260::-;;7553:2;7541:9;7532:7;7528:23;7524:32;7521:2;;;7569:1;7566;7559:12;7521:2;7612:1;7637:52;7681:7;7672:6;7661:9;7657:22;7637:52;:::i;:::-;7627:62;;7583:116;7511:195;;;;:::o;7712:282::-;;7830:2;7818:9;7809:7;7805:23;7801:32;7798:2;;;7846:1;7843;7836:12;7798:2;7889:1;7914:63;7969:7;7960:6;7949:9;7945:22;7914:63;:::i;:::-;7904:73;;7860:127;7788:206;;;;:::o;8000:262::-;;8108:2;8096:9;8087:7;8083:23;8079:32;8076:2;;;8124:1;8121;8114:12;8076:2;8167:1;8192:53;8237:7;8228:6;8217:9;8213:22;8192:53;:::i;:::-;8182:63;;8138:117;8066:196;;;;:::o;8268:179::-;;8358:46;8400:3;8392:6;8358:46;:::i;:::-;8436:4;8431:3;8427:14;8413:28;;8348:99;;;;:::o;8453:118::-;8540:24;8558:5;8540:24;:::i;:::-;8535:3;8528:37;8518:53;;:::o;8607:732::-;;8755:54;8803:5;8755:54;:::i;:::-;8825:86;8904:6;8899:3;8825:86;:::i;:::-;8818:93;;8935:56;8985:5;8935:56;:::i;:::-;9014:7;9045:1;9030:284;9055:6;9052:1;9049:13;9030:284;;;9131:6;9125:13;9158:63;9217:3;9202:13;9158:63;:::i;:::-;9151:70;;9244:60;9297:6;9244:60;:::i;:::-;9234:70;;9090:224;9077:1;9074;9070:9;9065:14;;9030:284;;;9034:14;9330:3;9323:10;;8731:608;;;;;;;:::o;9345:109::-;9426:21;9441:5;9426:21;:::i;:::-;9421:3;9414:34;9404:50;;:::o;9460:360::-;;9574:38;9606:5;9574:38;:::i;:::-;9628:70;9691:6;9686:3;9628:70;:::i;:::-;9621:77;;9707:52;9752:6;9747:3;9740:4;9733:5;9729:16;9707:52;:::i;:::-;9784:29;9806:6;9784:29;:::i;:::-;9779:3;9775:39;9768:46;;9550:270;;;;;:::o;9826:364::-;;9942:39;9975:5;9942:39;:::i;:::-;9997:71;10061:6;10056:3;9997:71;:::i;:::-;9990:78;;10077:52;10122:6;10117:3;10110:4;10103:5;10099:16;10077:52;:::i;:::-;10154:29;10176:6;10154:29;:::i;:::-;10149:3;10145:39;10138:46;;9918:272;;;;;:::o;10196:377::-;;10330:39;10363:5;10330:39;:::i;:::-;10385:89;10467:6;10462:3;10385:89;:::i;:::-;10378:96;;10483:52;10528:6;10523:3;10516:4;10509:5;10505:16;10483:52;:::i;:::-;10560:6;10555:3;10551:16;10544:23;;10306:267;;;;;:::o;10603:845::-;;10743:5;10737:12;10772:36;10798:9;10772:36;:::i;:::-;10824:89;10906:6;10901:3;10824:89;:::i;:::-;10817:96;;10944:1;10933:9;10929:17;10960:1;10955:137;;;;11106:1;11101:341;;;;10922:520;;10955:137;11039:4;11035:9;11024;11020:25;11015:3;11008:38;11075:6;11070:3;11066:16;11059:23;;10955:137;;11101:341;11168:38;11200:5;11168:38;:::i;:::-;11228:1;11242:154;11256:6;11253:1;11250:13;11242:154;;;11330:7;11324:14;11320:1;11315:3;11311:11;11304:35;11380:1;11371:7;11367:15;11356:26;;11278:4;11275:1;11271:12;11266:17;;11242:154;;;11425:6;11420:3;11416:16;11409:23;;11108:334;;10922:520;;10710:738;;;;;;:::o;11454:384::-;;11617:67;11681:2;11676:3;11617:67;:::i;:::-;11610:74;;11714:34;11710:1;11705:3;11701:11;11694:55;11780:22;11775:2;11770:3;11766:12;11759:44;11829:2;11824:3;11820:12;11813:19;;11600:238;;;:::o;11844:372::-;;12007:67;12071:2;12066:3;12007:67;:::i;:::-;12000:74;;12104:34;12100:1;12095:3;12091:11;12084:55;12170:10;12165:2;12160:3;12156:12;12149:32;12207:2;12202:3;12198:12;12191:19;;11990:226;;;:::o;12222:344::-;;12403:85;12485:2;12480:3;12403:85;:::i;:::-;12396:92;;12518:12;12514:1;12509:3;12505:11;12498:33;12557:2;12552:3;12548:12;12541:19;;12386:180;;;:::o;12572:375::-;;12735:67;12799:2;12794:3;12735:67;:::i;:::-;12728:74;;12832:34;12828:1;12823:3;12819:11;12812:55;12898:13;12893:2;12888:3;12884:12;12877:35;12938:2;12933:3;12929:12;12922:19;;12718:229;;;:::o;12953:373::-;;13116:67;13180:2;13175:3;13116:67;:::i;:::-;13109:74;;13213:34;13209:1;13204:3;13200:11;13193:55;13279:11;13274:2;13269:3;13265:12;13258:33;13317:2;13312:3;13308:12;13301:19;;13099:227;;;:::o;13332:363::-;;13513:85;13595:2;13590:3;13513:85;:::i;:::-;13506:92;;13628:23;13624:1;13619:3;13615:11;13608:44;13682:2;13677:3;13673:12;13666:19;;13496:199;;;:::o;13705:389::-;;13872:67;13936:2;13931:3;13872:67;:::i;:::-;13865:74;;13973:34;13969:1;13964:3;13960:11;13953:55;14043:7;14038:2;14033:3;14029:12;14022:29;14081:2;14076:3;14072:12;14065:19;;13851:243;;;:::o;14104:402::-;;14271:67;14335:2;14330:3;14271:67;:::i;:::-;14264:74;;14372:34;14368:1;14363:3;14359:11;14352:55;14442:20;14437:2;14432:3;14428:12;14421:42;14493:2;14488:3;14484:12;14477:19;;14250:256;;;:::o;14516:394::-;;14683:67;14747:2;14742:3;14683:67;:::i;:::-;14676:74;;14784:34;14780:1;14775:3;14771:11;14764:55;14854:12;14849:2;14844:3;14840:12;14833:34;14897:2;14892:3;14888:12;14881:19;;14662:248;;;:::o;14920:353::-;;15105:84;15187:1;15182:3;15105:84;:::i;:::-;15098:91;;15223:7;15219:1;15214:3;15210:11;15203:28;15261:1;15256:3;15252:11;15245:18;;15084:189;;;:::o;15283:393::-;;15450:67;15514:2;15509:3;15450:67;:::i;:::-;15443:74;;15551:34;15547:1;15542:3;15538:11;15531:55;15621:11;15616:2;15611:3;15607:12;15600:33;15663:2;15658:3;15654:12;15647:19;;15429:247;;;:::o;15686:393::-;;15853:67;15917:2;15912:3;15853:67;:::i;:::-;15846:74;;15954:34;15950:1;15945:3;15941:11;15934:55;16024:11;16019:2;16014:3;16010:12;16003:33;16066:2;16061:3;16057:12;16050:19;;15832:247;;;:::o;16089:392::-;;16256:67;16320:2;16315:3;16256:67;:::i;:::-;16249:74;;16357:34;16353:1;16348:3;16344:11;16337:55;16427:10;16422:2;16417:3;16413:12;16406:32;16468:2;16463:3;16459:12;16452:19;;16235:246;;;:::o;16491:116::-;16572:24;16590:5;16572:24;:::i;:::-;16567:3;16560:37;16546:61;;:::o;16617:126::-;16708:24;16726:5;16708:24;:::i;:::-;16703:3;16696:37;16682:61;;:::o;16753:1255::-;;17259:148;17403:3;17259:148;:::i;:::-;17252:155;;17428:92;17516:3;17507:6;17428:92;:::i;:::-;17421:99;;17541:148;17685:3;17541:148;:::i;:::-;17534:155;;17710:95;17801:3;17792:6;17710:95;:::i;:::-;17703:102;;17826:148;17970:3;17826:148;:::i;:::-;17819:155;;17995:3;17988:10;;17237:771;;;;;:::o;18018:1093::-;;18383:3;18372:9;18368:19;18360:27;;18401:71;18469:1;18458:9;18454:17;18445:6;18401:71;:::i;:::-;18486:72;18554:2;18543:9;18539:18;18530:6;18486:72;:::i;:::-;18609:9;18603:4;18599:20;18594:2;18583:9;18579:18;18572:48;18641:108;18744:4;18735:6;18641:108;:::i;:::-;18633:116;;18800:9;18794:4;18790:20;18785:2;18774:9;18770:18;18763:48;18832:108;18935:4;18926:6;18832:108;:::i;:::-;18824:116;;18992:9;18986:4;18982:20;18976:3;18965:9;18961:19;18954:49;19024:76;19095:4;19086:6;19024:76;:::i;:::-;19016:84;;18346:765;;;;;;;;:::o;19121:783::-;;19386:3;19375:9;19371:19;19363:27;;19404:71;19472:1;19461:9;19457:17;19448:6;19404:71;:::i;:::-;19489:72;19557:2;19546:9;19542:18;19533:6;19489:72;:::i;:::-;19575;19643:2;19632:9;19628:18;19619:6;19575:72;:::i;:::-;19661;19729:2;19718:9;19714:18;19705:6;19661:72;:::i;:::-;19785:9;19779:4;19775:20;19769:3;19758:9;19754:19;19747:49;19817:76;19888:4;19879:6;19817:76;:::i;:::-;19809:84;;19349:555;;;;;;;;:::o;19914:389::-;;20099:2;20088:9;20084:18;20076:26;;20152:9;20146:4;20142:20;20138:1;20127:9;20123:17;20116:47;20184:108;20287:4;20278:6;20184:108;:::i;:::-;20176:116;;20062:241;;;;:::o;20313:658::-;;20576:2;20565:9;20561:18;20553:26;;20629:9;20623:4;20619:20;20615:1;20604:9;20600:17;20593:47;20661:108;20764:4;20755:6;20661:108;:::i;:::-;20653:116;;20820:9;20814:4;20810:20;20805:2;20794:9;20790:18;20783:48;20852:108;20955:4;20946:6;20852:108;:::i;:::-;20844:116;;20539:432;;;;;:::o;20981:222::-;;21110:2;21099:9;21095:18;21087:26;;21127:65;21189:1;21178:9;21174:17;21165:6;21127:65;:::i;:::-;21073:130;;;;:::o;21213:329::-;;21368:2;21357:9;21353:18;21345:26;;21421:9;21415:4;21411:20;21407:1;21396:9;21392:17;21385:47;21453:78;21526:4;21517:6;21453:78;:::i;:::-;21445:86;;21331:211;;;;:::o;21552:435::-;;21760:2;21749:9;21745:18;21737:26;;21813:9;21807:4;21803:20;21799:1;21788:9;21784:17;21777:47;21845:131;21971:4;21845:131;:::i;:::-;21837:139;;21723:264;;;:::o;21997:435::-;;22205:2;22194:9;22190:18;22182:26;;22258:9;22252:4;22248:20;22244:1;22233:9;22229:17;22222:47;22290:131;22416:4;22290:131;:::i;:::-;22282:139;;22168:264;;;:::o;22442:435::-;;22650:2;22639:9;22635:18;22627:26;;22703:9;22697:4;22693:20;22689:1;22678:9;22674:17;22667:47;22735:131;22861:4;22735:131;:::i;:::-;22727:139;;22613:264;;;:::o;22887:435::-;;23095:2;23084:9;23080:18;23072:26;;23148:9;23142:4;23138:20;23134:1;23123:9;23119:17;23112:47;23180:131;23306:4;23180:131;:::i;:::-;23172:139;;23058:264;;;:::o;23332:435::-;;23540:2;23529:9;23525:18;23517:26;;23593:9;23587:4;23583:20;23579:1;23568:9;23564:17;23557:47;23625:131;23751:4;23625:131;:::i;:::-;23617:139;;23503:264;;;:::o;23777:435::-;;23985:2;23974:9;23970:18;23962:26;;24038:9;24032:4;24028:20;24024:1;24013:9;24009:17;24002:47;24070:131;24196:4;24070:131;:::i;:::-;24062:139;;23948:264;;;:::o;24222:435::-;;24430:2;24419:9;24415:18;24407:26;;24483:9;24477:4;24473:20;24469:1;24458:9;24454:17;24447:47;24515:131;24641:4;24515:131;:::i;:::-;24507:139;;24393:264;;;:::o;24667:435::-;;24875:2;24864:9;24860:18;24852:26;;24928:9;24922:4;24918:20;24914:1;24903:9;24899:17;24892:47;24960:131;25086:4;24960:131;:::i;:::-;24952:139;;24838:264;;;:::o;25112:435::-;;25320:2;25309:9;25305:18;25297:26;;25373:9;25367:4;25363:20;25359:1;25348:9;25344:17;25337:47;25405:131;25531:4;25405:131;:::i;:::-;25397:139;;25283:264;;;:::o;25557:435::-;;25765:2;25754:9;25750:18;25742:26;;25818:9;25812:4;25808:20;25804:1;25793:9;25789:17;25782:47;25850:131;25976:4;25850:131;:::i;:::-;25842:139;;25728:264;;;:::o;26002:234::-;;26137:2;26126:9;26122:18;26114:26;;26154:71;26222:1;26211:9;26207:17;26198:6;26154:71;:::i;:::-;26100:136;;;;:::o;26246:348::-;;26409:2;26398:9;26394:18;26386:26;;26426:71;26494:1;26483:9;26479:17;26470:6;26426:71;:::i;:::-;26511:72;26579:2;26568:9;26564:18;26555:6;26511:72;:::i;:::-;26372:222;;;;;:::o;26604:307::-;;26674:2;26668:9;26658:19;;26720:4;26712:6;26708:17;26835:6;26823:10;26820:22;26799:18;26787:10;26784:34;26781:62;26778:2;;;26846:18;;:::i;:::-;26778:2;26890:10;26886:2;26879:22;26644:267;;;;:::o;26921:335::-;;27096:18;27088:6;27085:30;27082:2;;;27118:18;;:::i;:::-;27082:2;27172:4;27164:6;27160:17;27152:25;;27240:4;27234;27230:15;27222:23;;27003:253;;;:::o;27266:335::-;;27441:18;27433:6;27430:30;27427:2;;;27463:18;;:::i;:::-;27427:2;27517:4;27509:6;27505:17;27497:25;;27585:4;27579;27575:15;27567:23;;27348:253;;;:::o;27611:359::-;;27770:18;27762:6;27759:30;27756:2;;;27792:18;;:::i;:::-;27756:2;27885:4;27881:9;27874:4;27866:6;27862:17;27858:33;27850:41;;27954:4;27948;27944:15;27936:23;;27677:293;;;:::o;27980:144::-;;28074:3;28066:11;;28108:4;28103:3;28099:14;28091:22;;28052:72;;;:::o;28134:157::-;;28210:3;28202:11;;28237:3;28234:1;28227:14;28275:4;28272:1;28262:18;28254:26;;28188:103;;;:::o;28301:122::-;;28406:5;28400:12;28390:22;;28375:48;;;:::o;28433:106::-;;28522:5;28516:12;28506:22;;28491:48;;;:::o;28549:107::-;;28639:5;28633:12;28623:22;;28608:48;;;:::o;28666:121::-;;28772:4;28767:3;28763:14;28755:22;;28741:46;;;:::o;28797:196::-;;28934:6;28929:3;28922:19;28978:4;28973:3;28969:14;28954:29;;28908:85;;;;:::o;29003:180::-;;29124:6;29119:3;29112:19;29168:4;29163:3;29159:14;29144:29;;29098:85;;;;:::o;29193:181::-;;29315:6;29310:3;29303:19;29359:4;29354:3;29350:14;29335:29;;29289:85;;;;:::o;29384:156::-;;29527:3;29512:18;;29498:42;;;;:::o;29550:329::-;;29613:20;29631:1;29613:20;:::i;:::-;29608:25;;29651:20;29669:1;29651:20;:::i;:::-;29646:25;;29813:1;29745:66;29741:74;29738:1;29735:81;29732:2;;;29819:18;;:::i;:::-;29732:2;29867:1;29864;29860:9;29853:16;;29594:285;;;;:::o;29889:205::-;;29950:20;29968:1;29950:20;:::i;:::-;29945:25;;29988:20;30006:1;29988:20;:::i;:::-;29983:25;;30031:1;30021:2;;30036:18;;:::i;:::-;30021:2;30082:1;30079;30075:9;30070:14;;29931:163;;;;:::o;30104:211::-;;30168:20;30186:1;30168:20;:::i;:::-;30163:25;;30206:20;30224:1;30206:20;:::i;:::-;30201:25;;30249:1;30246;30243:8;30240:2;;;30254:18;;:::i;:::-;30240:2;30303:1;30300;30296:9;30288:17;;30149:166;;;;:::o;30325:104::-;;30395:24;30413:5;30395:24;:::i;:::-;30384:35;;30370:59;;;:::o;30439:98::-;;30520:5;30513:13;30506:21;30495:32;;30481:56;;;:::o;30547:157::-;;30627:66;30620:5;30616:78;30605:89;;30591:113;;;:::o;30714:134::-;;30795:42;30788:5;30784:54;30773:65;;30759:89;;;:::o;30858:85::-;;30928:5;30917:16;;30903:40;;;:::o;30953:170::-;31041:6;31036:3;31031;31018:30;31111:1;31102:6;31097:3;31093:16;31086:27;31004:119;;;:::o;31133:351::-;31205:1;31219:125;31233:6;31230:1;31227:13;31219:125;;;31326:1;31321:3;31317:11;31311:18;31307:1;31302:3;31298:11;31291:39;31255:2;31252:1;31248:10;31243:15;;31219:125;;;31366:6;31363:1;31360:13;31357:2;;;31458:1;31449:6;31444:3;31440:16;31433:27;31357:2;31182:302;;;;:::o;31494:356::-;;31579:1;31573:4;31569:12;31559:22;;31630:1;31624:4;31620:12;31655:18;31645:2;;31715:4;31707:6;31703:17;31693:27;;31645:2;31785;31777:6;31774:14;31754:18;31751:38;31748:2;;;31808:18;;:::i;:::-;31748:2;31545:305;;;;:::o;31860:249::-;;31926:24;31944:5;31926:24;:::i;:::-;31917:33;;31976:66;31969:5;31966:77;31963:2;;;32046:18;;:::i;:::-;31963:2;32097:1;32090:5;32086:13;32079:20;;31903:206;;;:::o;32119:196::-;;32172:20;32190:1;32172:20;:::i;:::-;32167:25;;32210:20;32228:1;32210:20;:::i;:::-;32205:25;;32253:1;32243:2;;32258:18;;:::i;:::-;32243:2;32303:1;32300;32296:9;32291:14;;32153:162;;;;:::o;32325:196::-;32377:77;32374:1;32367:88;32478:4;32475:1;32468:15;32506:4;32503:1;32496:15;32531:196;32583:77;32580:1;32573:88;32684:4;32681:1;32674:15;32712:4;32709:1;32702:15;32737:196;32789:77;32786:1;32779:88;32890:4;32887:1;32880:15;32918:4;32915:1;32908:15;32943:196;32995:77;32992:1;32985:88;33096:4;33093:1;33086:15;33124:4;33121:1;33114:15;33149:110;;33245:2;33241:7;33236:2;33229:5;33225:14;33221:28;33211:38;;33197:62;;;:::o;33269:118::-;;33370:5;33365:3;33361:15;33336:40;;33322:65;;;:::o;33397:917::-;;33478:4;33460:16;33457:26;33454:2;;;33486:5;;33454:2;33528:1;33525;33522;33507:23;33554:34;33585:1;33579:8;33554:34;:::i;:::-;33619:10;33614:3;33611:19;33601:2;;33634:5;;;33601:2;33673;33667:9;33735:1;33717:16;33713:24;33710:1;33704:4;33689:49;33772:4;33766:11;33883:16;33876:4;33868:6;33864:17;33861:39;33824:18;33816:6;33813:30;33793:125;33790:2;;;33937:5;;;;;33790:2;33991:6;33985:4;33981:17;34031:3;34025:10;34062:18;34054:6;34051:30;34048:2;;;34084:5;;;;;;;34048:2;34136:6;34129:4;34124:3;34120:14;34116:27;34177:16;34171:4;34167:27;34162:3;34159:36;34156:2;;;34198:5;;;;;;;;34156:2;34250:29;34272:6;34250:29;:::i;:::-;34243:4;34238:3;34234:14;34230:50;34226:2;34219:62;34301:3;34294:10;;33440:874;;;;;;;;:::o;34324:130::-;34401:24;34419:5;34401:24;:::i;:::-;34394:5;34391:35;34381:2;;34440:1;34437;34430:12;34381:2;34367:87;:::o;34464:124::-;34538:21;34553:5;34538:21;:::i;:::-;34531:5;34528:32;34518:2;;34574:1;34571;34564:12;34518:2;34504:84;:::o;34598:128::-;34674:23;34691:5;34674:23;:::i;:::-;34667:5;34664:34;34654:2;;34712:1;34709;34702:12;34654:2;34640:86;:::o;34736:130::-;34813:24;34831:5;34813:24;:::i;:::-;34806:5;34803:35;34793:2;;34852:1;34849;34842:12;34793:2;34779:87;:::o
Swarm Source
ipfs://f5ed84ad9092e57aaf59dfd67fd6064ec69baba3c25211dacd0cb7b014c94deb
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.