Contract 0x51e26eeb6cc3272487faee77f67b502cc3fdc272

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa37bb640c541095edbf34cdefc7fc74f396ab803615cffafca45b8040ee0c109Safe Transfer Fr...363376372022-12-02 14:21:482 days 7 hrs ago0xf32c16386e0dc8569c50ff0a782a1b77acebf67e IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.006689943043 69.019004046
0x2314035f09c9605f0abd175a07813cc6c7736112ac1c6ed47105d71ef9e35e72Set Approval For...362709532022-11-30 22:54:253 days 22 hrs ago0x0ca4843f9d69e3078acda032617008dfc89881a5 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.00138537 30.000000014
0x191becd6714336ad88252d1a07aea0810c327a7b12f16bc0fd8cefa1d2c6552dSet Approval For...362286892022-11-29 21:54:504 days 23 hrs ago0x1a8561b275f58575a137bc1cc37d1d89c944cec6 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.001489663501 32.258461664
0x0c52795788648ed1c73ce40c796616a7cc60f41ec26d9872af38bc843b185059Set Approval For...359566772022-11-23 6:36:0811 days 15 hrs ago0x692631c1df5fbc597358ca357072ea70ac828373 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.001540791832 33.305056581
0x09060d896602408d2dc90ba367276fd2df69ee0bead548eefde1b53fe4399849Set Approval For...358927452022-11-21 17:26:1513 days 4 hrs ago0xac8425704e0374a1b2b918cbe690e28a2db1d347 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.001808538532 39.163657344
0x5e6f93d391dbc2dd9782c0df702cba632395196417cc834e07425a6d2e793e0bMint358385612022-11-20 9:50:2814 days 11 hrs ago0x86508532f72f1f78f95369ea7605f6eae727e659 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2723 MATIC0.005014341465 31.971266494
0x3cee99e5681d03bf7f3cd464e5afbdd0d45149ab709a53b14b33aee8b2db01e1Set Approval For...358022372022-11-19 12:51:2815 days 8 hrs ago0xbfe0339c79481125a902f54157d2fbf01e305822 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.000837583929 34.396284738
0x9280178270cd0b3eaa16866389ffb452f70395f860dadcd03894b9b791df69ffSet Approval For...357894842022-11-19 5:27:4715 days 16 hrs ago0xd62617c23291b8bec26100d69ef4c138082834f3 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.00138830522 30.063561813
0x4ebb93f3c25feb672fe93b69c46dd95ab384983924ab18459ccd2bbdbb34c668Set Approval For...356329952022-11-15 10:03:3419 days 11 hrs ago0xa4af6f5e7e0a406edc7ec39a913531ba25da4606 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.00260826495556.379070858
0x05e77a1d5e94b4d60efc956e525aef91bd4ddf8e15e4637e4e7783a897ef07feSafe Transfer Fr...356068852022-11-14 18:46:2020 days 2 hrs ago0xff4570052aa05335dc7a709ab74c3eb5be250d52 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.002685210096 30.041619735
0xfce0caf51ca1b9ada7823e62ecdeb89c0d6eb527fd260a8fd9d398853bceb037Set Approval For...355573632022-11-13 14:06:4921 days 7 hrs ago0x692631c1df5fbc597358ca357072ea70ac828373 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.001924753209 41.60459135
0x5f0bcd05fd361dfb8b0902a797aa653649ce1c96077a001067c2580c39f9b90cSet Approval For...355368262022-11-13 2:05:0621 days 19 hrs ago0x91ded90670d0525e967899826bca1874c4a3f199 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.001436678626 31.111081366
0xa53e4244e229a52d2bab1f63050c9d44c31c29b3ef149fcf3f1eeee0fd688ebeSet Approval For...355162292022-11-12 13:13:0022 days 8 hrs ago0x4cb0448fee5f8eb8c40490f88b995f0a1a5f34cd IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.016445896012355.579252606
0x484e3d21e71a3c681c0c9e4cc138bbce7650e6ce5bd2345b264b81504b084874Set Approval For...354238652022-11-10 4:54:3624 days 16 hrs ago0x096fce6af721e9badad5bd45db0758f54917bb97 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.005076352281 109.927722156
0xfc4ec95f2bc7c46d80be91c9c248fea3b2a1606294444832eba6fa02090ce764Set Approval For...353563762022-11-08 13:31:5026 days 8 hrs ago0xcdd6bca2c4e43c52326e0815c62af90d5c302399 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.004011280226 86.863730837
0x5dd97ff8fc1c4d9e463d704ee4a9b5ff3decbd09d80da1e083173ab304204fa7Set Approval For...353354442022-11-08 1:25:3626 days 20 hrs ago0xa4af6f5e7e0a406edc7ec39a913531ba25da4606 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.010724956861 231.825797324
0x3662a1772dfc5d4c7c271351ab91f23c2c74b9f63747abf258cf101bc9495427Approve353214292022-11-07 16:53:5327 days 4 hrs ago0xf113b48545b5124d96137aaeb451eaf7a2fe7681 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.003995122166
0x13408246fea08f8a531a0ef5cc88534087d7fca08276894cff798628d4a09ee1Set Approval For...353200432022-11-07 16:05:2927 days 5 hrs ago0x10084cbb7a97f6c1484349106cfd0eacf6e7639c IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.008339349843 180.587493085
0x68d218cf93ec940bed17a128f978b2cd944eb150c3b61e2b3f0cd9d5bd93ff9fSet Approval For...352261792022-11-05 9:35:2529 days 12 hrs ago0x692631c1df5fbc597358ca357072ea70ac828373 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.003027221714 65.554076851
0xebcb2a72cc494c5785ea1566b80bc8aecfe552fe5ed5f7a1c4adc12d2331a1d8Set Approval For...351876082022-11-04 10:59:5330 days 10 hrs ago0x91ff03ca47739e621cd35822d15143f9c8465c76 IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.005944507535 128.727506784
0x77f6a2e6ace05964543b251beec532cf3feea0255bd4fc6336c350e188046cb0Safe Transfer Fr...351865492022-11-04 10:22:3030 days 11 hrs ago0xbc7d8fe808f97489c7dc6a167acac94011bc226a IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.009408798115 105.263843415
0x617bf1b9030b553825d5fe44666f0098a0f889c07cf0f6a840f15dbe9174e775Safe Transfer Fr...351865312022-11-04 10:21:5430 days 11 hrs ago0xbc7d8fe808f97489c7dc6a167acac94011bc226a IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.007791547196 101.079968297
0xa7f36af534c87cfef88dd4a1e64423c0cb386ae9c65d6122e0d57462ff773950Safe Transfer Fr...351865022022-11-04 10:20:5630 days 11 hrs ago0xbc7d8fe808f97489c7dc6a167acac94011bc226a IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.008189556379 106.243353
0x1632656737de4543104ded9dfa7d96a997c5e75beef90e717a607161eefc3f11Safe Transfer Fr...351864772022-11-04 10:20:0230 days 11 hrs ago0xbc7d8fe808f97489c7dc6a167acac94011bc226a IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.007869522425 93.045655745
0x82953ab7814b33756d106c5249d798948d110422fb13aae1e623188c45a8c3c0Safe Transfer Fr...351863912022-11-04 10:17:0530 days 11 hrs ago0xbc7d8fe808f97489c7dc6a167acac94011bc226a IN  0x51e26eeb6cc3272487faee77f67b502cc3fdc2720 MATIC0.008285062708 94.819720392
[ Download CSV Export 
Latest 23 internal transactions
Parent Txn Hash Block From To Value
0x19a60bbcb9438a332c7e2970aaf1196d47a1022de0b122f8ac2156886ca0d1bf348297712022-10-26 16:45:4739 days 4 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af3505226763 MATIC
0x38278780a081d7a3926675b2a78971a36cf89e1c7c439fc118811d18dd2d011d309305502022-07-20 9:02:16137 days 12 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af3505226712 MATIC
0x51e40b036b5bd2b2be4a6c09cb2cb44aeeef51817ce2e10fb61d4b0fcca6714c305041182022-07-09 0:55:55148 days 20 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af3505226754 MATIC
0xe2c17dcaf18ab5f6b7a195b8430c4686001a5f19e2128c2492f6a12c0d434044300147502022-06-26 9:45:23161 days 11 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267126 MATIC
0x9f610f93080775a0aec19a77a3b4e5a55abd7305d278a5511ff5bff045c7ab7d298865682022-06-23 0:20:12164 days 21 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267165 MATIC
0x43d3e5702045d9142a9e471b472303d62426905ad43c90882b36776ec489edbe292173322022-06-06 1:16:25181 days 20 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267177 MATIC
0x7114920de5bcb7ab5541d39a5392d6701afd647031f57e1415af647822e69e68289045172022-05-29 7:51:56189 days 13 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267231 MATIC
0x5ce9229d0656185dbfd310c5a2943e7cb6c300c00d3ccb82c983b7eb33638873287916292022-05-26 12:11:38192 days 9 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267288 MATIC
0x306fef721080e7aa99c88d9941c1a82d69298c9f52490f7f478e55798283f5eb287278932022-05-24 21:55:30193 days 23 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267495 MATIC
0x1f7eaca2cdea9dc5a04a3d87d45665e0dbcc708cdd91e490480892ef791733e9286303272022-05-22 12:50:28196 days 8 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af350522671,764 MATIC
0xf4771a04623e4950630e70a2bbb415eea524dd6e4aa06119576e47a87feac5e2285090072022-05-19 13:09:34199 days 8 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267846 MATIC
0x07ef370b301d535c654a7fe629619dc033e324a498ebaa02a1b8ec5c26cd0658284487402022-05-18 0:29:54200 days 21 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af3505226739 MATIC
0x61bc2c1d0308db62d2688e1721ee5e3da3c18097dd9798dfdb77ee51aa8ee856283890662022-05-16 12:34:42202 days 9 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af3505226766 MATIC
0xbb9159777739d1e8a438f66decdda8f042a8f2d037cf10ba5eb472df62d85e16283641102022-05-15 22:07:21202 days 23 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267174 MATIC
0xf55c9bc173e28c45a3ec03f1193d64ae12ba46ad7aad142ae0e0a887f0596176282685422022-05-13 13:05:55205 days 8 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af3505226757 MATIC
0xf156d441b24e6c3344ada2718580a67c8ff78fd46b77faf911e04585118ea53f282027752022-05-11 20:20:51207 days 1 hr ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267216 MATIC
0x74f85b26ad517b7451a941892a04f837e6706db6eb7a6b687b700553def300df281277652022-05-09 22:12:14208 days 23 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267198 MATIC
0xf50c5fdce4fff2a052509eeac02268d0e962a2377f071adaf71c34fd88d4ca27281137662022-05-09 13:52:04209 days 7 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af35052267741 MATIC
0x9d53173aeb8d93b3d95e8f99f4db49fb8ade78720ad32f7d358cfc000c3e5d50278303362022-05-02 9:42:29216 days 12 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af350522674,487 MATIC
0xa8a9228dc5621638fec012c1c8fe35f8ec94895e4f4207bede428e01767d115c268738572022-04-08 2:22:08240 days 19 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af350522677 MATIC
0x171c0eb6f93f4a2883858b29b1bc96fff898649cb48c957a827f39b29cb6f11a268736892022-04-08 2:14:12240 days 19 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af350522676 MATIC
0x113253c598eeb38d0b3f21c9db00f135e218ed956913718c97cd870515212352268734732022-04-08 2:06:48240 days 19 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af350522671 MATIC
0x90f33e957baf18742b480d63461f69b69acd1b81b948351dc69c90b20a49b9e6268726242022-04-08 1:35:21240 days 20 hrs ago 0x51e26eeb6cc3272487faee77f67b502cc3fdc2720x089101d3095e8276af22b2cb5dc371af350522671 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PicaLions

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-04-07
*/

// SPDX-License-Identifier: MIT

// Amended by HashLips
/**
    !Disclaimer!
    These contracts have been used to create tutorials,
    and was created for the purpose to teach people
    how to create smart contracts on the blockchain.
    please review this code on your own before using any of
    the following code for production.
    HashLips will not be liable in any way if for the use 
    of the code. That being said, the code has been tested 
    to the best of the developers' knowledge to work as intended.
*/

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

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol
pragma solidity ^0.8.0;
/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

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

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

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

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

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

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

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

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

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

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

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


// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol
pragma solidity ^0.8.0;
/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

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

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


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

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



pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
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);
    }
}

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



pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol



pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

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

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol



pragma solidity ^0.8.0;

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

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

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


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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

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

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

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

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

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

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

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

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

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

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

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

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

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

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

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

// File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol



pragma solidity ^0.8.0;



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

pragma solidity >=0.7.0 <0.9.0;

contract PicaLions is ERC721Enumerable, Ownable {
  using Strings for uint256;

  string baseURI;
  string public baseExtension = ".json";
  uint256 public cost = 1 ether;
  uint256 public maxSupply = 8000;
  uint256 public maxMintAmount = 101;
  bool public paused = false;
  bool public revealed = false;
  string public notRevealedUri;

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _initBaseURI,
    string memory _initNotRevealedUri
  ) ERC721(_name, _symbol) {
    setBaseURI(_initBaseURI);
    setNotRevealedURI(_initNotRevealedUri);
  }

  // internal
  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }

  // public
  function mint(uint256 _mintAmount) public payable {
    uint256 supply = totalSupply();
    require(!paused);
    require(_mintAmount > 0);
    require(_mintAmount <= maxMintAmount);
    require(supply + _mintAmount <= maxSupply);

    if (msg.sender != owner()) {
      require(msg.value >= cost * _mintAmount);
    }

    for (uint256 i = 1; i <= _mintAmount; i++) {
      _safeMint(msg.sender, supply + i);
    }
  }

  function walletOfOwner(address _owner)
    public
    view
    returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory tokenIds = new uint256[](ownerTokenCount);
    for (uint256 i; i < ownerTokenCount; i++) {
      tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokenIds;
  }

  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    
    if(revealed == false) {
        return notRevealedUri;
    }

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

  //only owner
  function reveal() public onlyOwner {
      revealed = true;
  }
  
  function setCost(uint256 _newCost) public onlyOwner {
    cost = _newCost;
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {
    maxMintAmount = _newmaxMintAmount;
  }
  
  function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
    notRevealedUri = _notRevealedURI;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
 
  function withdraw() public payable onlyOwner {
    // This will payout the owner 95% of the contract balance.
    // Do not remove this otherwise you will not be able to withdraw the funds.
    // =============================================================================
    (bool os, ) = payable(owner()).call{value: address(this).balance}("");
    require(os);
    // =============================================================================
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

60c06040526005608081905264173539b7b760d91b60a09081526200002891600c919062000200565b50670de0b6b3a7640000600d55611f40600e556065600f556010805461ffff191690553480156200005857600080fd5b50604051620028a6380380620028a68339810160408190526200007b916200035d565b8351849084906200009490600090602085019062000200565b508051620000aa90600190602084019062000200565b505050620000c7620000c1620000e760201b60201c565b620000eb565b620000d2826200013d565b620000dd81620001a5565b5050505062000469565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b031633146200018c5760405162461bcd60e51b815260206004820181905260248201526000805160206200288683398151915260448201526064015b60405180910390fd5b8051620001a190600b90602084019062000200565b5050565b600a546001600160a01b03163314620001f05760405162461bcd60e51b8152602060048201819052602482015260008051602062002886833981519152604482015260640162000183565b8051620001a19060119060208401905b8280546200020e9062000416565b90600052602060002090601f0160209004810192826200023257600085556200027d565b82601f106200024d57805160ff19168380011785556200027d565b828001600101855582156200027d579182015b828111156200027d57825182559160200191906001019062000260565b506200028b9291506200028f565b5090565b5b808211156200028b576000815560010162000290565b600082601f830112620002b857600080fd5b81516001600160401b0380821115620002d557620002d562000453565b604051601f8301601f19908116603f0116810190828211818310171562000300576200030062000453565b816040528381526020925086838588010111156200031d57600080fd5b600091505b8382101562000341578582018301518183018401529082019062000322565b83821115620003535760008385830101525b9695505050505050565b600080600080608085870312156200037457600080fd5b84516001600160401b03808211156200038c57600080fd5b6200039a88838901620002a6565b95506020870151915080821115620003b157600080fd5b620003bf88838901620002a6565b94506040870151915080821115620003d657600080fd5b620003e488838901620002a6565b93506060870151915080821115620003fb57600080fd5b506200040a87828801620002a6565b91505092959194509250565b600181811c908216806200042b57607f821691505b602082108114156200044d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61240d80620004796000396000f3fe60806040526004361061020f5760003560e01c80635c975abb11610118578063a475b5dd116100a0578063d5abeb011161006f578063d5abeb01146105bc578063da3ef23f146105d2578063e985e9c5146105f2578063f2c4ce1e1461063b578063f2fde38b1461065b57600080fd5b8063a475b5dd14610552578063b88d4fde14610567578063c668286214610587578063c87b56dd1461059c57600080fd5b80637f00c7a6116100e75780637f00c7a6146104cc5780638da5cb5b146104ec57806395d89b411461050a578063a0712d681461051f578063a22cb4651461053257600080fd5b80635c975abb1461045d5780636352211e1461047757806370a0823114610497578063715018a6146104b757600080fd5b806323b872dd1161019b578063438b63001161016a578063438b6300146103b157806344a0d68a146103de5780634f6ccce7146103fe578063518302271461041e57806355f804b31461043d57600080fd5b806323b872dd146103495780632f745c59146103695780633ccfd60b1461038957806342842e0e1461039157600080fd5b8063081c8c44116101e2578063081c8c44146102c5578063095ea7b3146102da57806313faede6146102fa57806318160ddd1461031e578063239c70ae1461033357600080fd5b806301ffc9a71461021457806302329a291461024957806306fdde031461026b578063081812fc1461028d575b600080fd5b34801561022057600080fd5b5061023461022f366004611f63565b61067b565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b50610269610264366004611f48565b6106a6565b005b34801561027757600080fd5b506102806106ec565b6040516102409190612170565b34801561029957600080fd5b506102ad6102a8366004611fe6565b61077e565b6040516001600160a01b039091168152602001610240565b3480156102d157600080fd5b50610280610813565b3480156102e657600080fd5b506102696102f5366004611f1e565b6108a1565b34801561030657600080fd5b50610310600d5481565b604051908152602001610240565b34801561032a57600080fd5b50600854610310565b34801561033f57600080fd5b50610310600f5481565b34801561035557600080fd5b50610269610364366004611e3c565b6109b7565b34801561037557600080fd5b50610310610384366004611f1e565b6109e8565b610269610a7e565b34801561039d57600080fd5b506102696103ac366004611e3c565b610b1c565b3480156103bd57600080fd5b506103d16103cc366004611dee565b610b37565b604051610240919061212c565b3480156103ea57600080fd5b506102696103f9366004611fe6565b610bd9565b34801561040a57600080fd5b50610310610419366004611fe6565b610c08565b34801561042a57600080fd5b5060105461023490610100900460ff1681565b34801561044957600080fd5b50610269610458366004611f9d565b610c9b565b34801561046957600080fd5b506010546102349060ff1681565b34801561048357600080fd5b506102ad610492366004611fe6565b610cdc565b3480156104a357600080fd5b506103106104b2366004611dee565b610d53565b3480156104c357600080fd5b50610269610dda565b3480156104d857600080fd5b506102696104e7366004611fe6565b610e10565b3480156104f857600080fd5b50600a546001600160a01b03166102ad565b34801561051657600080fd5b50610280610e3f565b61026961052d366004611fe6565b610e4e565b34801561053e57600080fd5b5061026961054d366004611ef4565b610efb565b34801561055e57600080fd5b50610269610fc0565b34801561057357600080fd5b50610269610582366004611e78565b610ffb565b34801561059357600080fd5b50610280611033565b3480156105a857600080fd5b506102806105b7366004611fe6565b611040565b3480156105c857600080fd5b50610310600e5481565b3480156105de57600080fd5b506102696105ed366004611f9d565b6111bf565b3480156105fe57600080fd5b5061023461060d366004611e09565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561064757600080fd5b50610269610656366004611f9d565b6111fc565b34801561066757600080fd5b50610269610676366004611dee565b611239565b60006001600160e01b0319821663780e9d6360e01b14806106a057506106a0826112d1565b92915050565b600a546001600160a01b031633146106d95760405162461bcd60e51b81526004016106d0906121d5565b60405180910390fd5b6010805460ff1916911515919091179055565b6060600080546106fb906122e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610727906122e9565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166107f75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106d0565b506000908152600460205260409020546001600160a01b031690565b60118054610820906122e9565b80601f016020809104026020016040519081016040528092919081815260200182805461084c906122e9565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b505050505081565b60006108ac82610cdc565b9050806001600160a01b0316836001600160a01b0316141561091a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106d0565b336001600160a01b03821614806109365750610936813361060d565b6109a85760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106d0565b6109b28383611321565b505050565b6109c1338261138f565b6109dd5760405162461bcd60e51b81526004016106d09061220a565b6109b2838383611486565b60006109f383610d53565b8210610a555760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016106d0565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610aa85760405162461bcd60e51b81526004016106d0906121d5565b6000610abc600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610b06576040519150601f19603f3d011682016040523d82523d6000602084013e610b0b565b606091505b5050905080610b1957600080fd5b50565b6109b283838360405180602001604052806000815250610ffb565b60606000610b4483610d53565b905060008167ffffffffffffffff811115610b6157610b616123ab565b604051908082528060200260200182016040528015610b8a578160200160208202803683370190505b50905060005b82811015610bd157610ba285826109e8565b828281518110610bb457610bb4612395565b602090810291909101015280610bc981612324565b915050610b90565b509392505050565b600a546001600160a01b03163314610c035760405162461bcd60e51b81526004016106d0906121d5565b600d55565b6000610c1360085490565b8210610c765760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016106d0565b60088281548110610c8957610c89612395565b90600052602060002001549050919050565b600a546001600160a01b03163314610cc55760405162461bcd60e51b81526004016106d0906121d5565b8051610cd890600b906020840190611cb3565b5050565b6000818152600260205260408120546001600160a01b0316806106a05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106d0565b60006001600160a01b038216610dbe5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106d0565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610e045760405162461bcd60e51b81526004016106d0906121d5565b610e0e6000611631565b565b600a546001600160a01b03163314610e3a5760405162461bcd60e51b81526004016106d0906121d5565b600f55565b6060600180546106fb906122e9565b6000610e5960085490565b60105490915060ff1615610e6c57600080fd5b60008211610e7957600080fd5b600f54821115610e8857600080fd5b600e54610e95838361225b565b1115610ea057600080fd5b600a546001600160a01b03163314610ecc5781600d54610ec09190612287565b341015610ecc57600080fd5b60015b8281116109b257610ee933610ee4838561225b565b611683565b80610ef381612324565b915050610ecf565b6001600160a01b038216331415610f545760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106d0565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b03163314610fea5760405162461bcd60e51b81526004016106d0906121d5565b6010805461ff001916610100179055565b611005338361138f565b6110215760405162461bcd60e51b81526004016106d09061220a565b61102d8484848461169d565b50505050565b600c8054610820906122e9565b6000818152600260205260409020546060906001600160a01b03166110bf5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106d0565b601054610100900460ff1661116057601180546110db906122e9565b80601f0160208091040260200160405190810160405280929190818152602001828054611107906122e9565b80156111545780601f1061112957610100808354040283529160200191611154565b820191906000526020600020905b81548152906001019060200180831161113757829003601f168201915b50505050509050919050565b600061116a6116d0565b9050600081511161118a57604051806020016040528060008152506111b8565b80611194846116df565b600c6040516020016111a89392919061202b565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146111e95760405162461bcd60e51b81526004016106d0906121d5565b8051610cd890600c906020840190611cb3565b600a546001600160a01b031633146112265760405162461bcd60e51b81526004016106d0906121d5565b8051610cd8906011906020840190611cb3565b600a546001600160a01b031633146112635760405162461bcd60e51b81526004016106d0906121d5565b6001600160a01b0381166112c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d0565b610b1981611631565b60006001600160e01b031982166380ac58cd60e01b148061130257506001600160e01b03198216635b5e139f60e01b145b806106a057506301ffc9a760e01b6001600160e01b03198316146106a0565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061135682610cdc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166114085760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106d0565b600061141383610cdc565b9050806001600160a01b0316846001600160a01b0316148061144e5750836001600160a01b03166114438461077e565b6001600160a01b0316145b8061147e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661149982610cdc565b6001600160a01b0316146115015760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106d0565b6001600160a01b0382166115635760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106d0565b61156e8383836117dd565b611579600082611321565b6001600160a01b03831660009081526003602052604081208054600192906115a29084906122a6565b90915550506001600160a01b03821660009081526003602052604081208054600192906115d090849061225b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610cd8828260405180602001604052806000815250611895565b6116a8848484611486565b6116b4848484846118c8565b61102d5760405162461bcd60e51b81526004016106d090612183565b6060600b80546106fb906122e9565b6060816117035750506040805180820190915260018152600360fc1b602082015290565b8160005b811561172d578061171781612324565b91506117269050600a83612273565b9150611707565b60008167ffffffffffffffff811115611748576117486123ab565b6040519080825280601f01601f191660200182016040528015611772576020820181803683370190505b5090505b841561147e576117876001836122a6565b9150611794600a8661233f565b61179f90603061225b565b60f81b8183815181106117b4576117b4612395565b60200101906001600160f81b031916908160001a9053506117d6600a86612273565b9450611776565b6001600160a01b0383166118385761183381600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61185b565b816001600160a01b0316836001600160a01b03161461185b5761185b83826119d5565b6001600160a01b038216611872576109b281611a72565b826001600160a01b0316826001600160a01b0316146109b2576109b28282611b21565b61189f8383611b65565b6118ac60008484846118c8565b6109b25760405162461bcd60e51b81526004016106d090612183565b60006001600160a01b0384163b156119ca57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061190c9033908990889088906004016120ef565b602060405180830381600087803b15801561192657600080fd5b505af1925050508015611956575060408051601f3d908101601f1916820190925261195391810190611f80565b60015b6119b0573d808015611984576040519150601f19603f3d011682016040523d82523d6000602084013e611989565b606091505b5080516119a85760405162461bcd60e51b81526004016106d090612183565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061147e565b506001949350505050565b600060016119e284610d53565b6119ec91906122a6565b600083815260076020526040902054909150808214611a3f576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611a84906001906122a6565b60008381526009602052604081205460088054939450909284908110611aac57611aac612395565b906000526020600020015490508060088381548110611acd57611acd612395565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611b0557611b0561237f565b6001900381819060005260206000200160009055905550505050565b6000611b2c83610d53565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611bbb5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106d0565b6000818152600260205260409020546001600160a01b031615611c205760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106d0565b611c2c600083836117dd565b6001600160a01b0382166000908152600360205260408120805460019290611c5590849061225b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611cbf906122e9565b90600052602060002090601f016020900481019282611ce15760008555611d27565b82601f10611cfa57805160ff1916838001178555611d27565b82800160010185558215611d27579182015b82811115611d27578251825591602001919060010190611d0c565b50611d33929150611d37565b5090565b5b80821115611d335760008155600101611d38565b600067ffffffffffffffff80841115611d6757611d676123ab565b604051601f8501601f19908116603f01168101908282118183101715611d8f57611d8f6123ab565b81604052809350858152868686011115611da857600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611dd957600080fd5b919050565b80358015158114611dd957600080fd5b600060208284031215611e0057600080fd5b6111b882611dc2565b60008060408385031215611e1c57600080fd5b611e2583611dc2565b9150611e3360208401611dc2565b90509250929050565b600080600060608486031215611e5157600080fd5b611e5a84611dc2565b9250611e6860208501611dc2565b9150604084013590509250925092565b60008060008060808587031215611e8e57600080fd5b611e9785611dc2565b9350611ea560208601611dc2565b925060408501359150606085013567ffffffffffffffff811115611ec857600080fd5b8501601f81018713611ed957600080fd5b611ee887823560208401611d4c565b91505092959194509250565b60008060408385031215611f0757600080fd5b611f1083611dc2565b9150611e3360208401611dde565b60008060408385031215611f3157600080fd5b611f3a83611dc2565b946020939093013593505050565b600060208284031215611f5a57600080fd5b6111b882611dde565b600060208284031215611f7557600080fd5b81356111b8816123c1565b600060208284031215611f9257600080fd5b81516111b8816123c1565b600060208284031215611faf57600080fd5b813567ffffffffffffffff811115611fc657600080fd5b8201601f81018413611fd757600080fd5b61147e84823560208401611d4c565b600060208284031215611ff857600080fd5b5035919050565b600081518084526120178160208601602086016122bd565b601f01601f19169290920160200192915050565b60008451602061203e8285838a016122bd565b8551918401916120518184848a016122bd565b8554920191600090600181811c908083168061206e57607f831692505b85831081141561208c57634e487b7160e01b85526022600452602485fd5b8080156120a057600181146120b1576120de565b60ff198516885283880195506120de565b60008b81526020902060005b858110156120d65781548a8201529084019088016120bd565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061212290830184611fff565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561216457835183529284019291840191600101612148565b50909695505050505050565b6020815260006111b86020830184611fff565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561226e5761226e612353565b500190565b60008261228257612282612369565b500490565b60008160001904831182151516156122a1576122a1612353565b500290565b6000828210156122b8576122b8612353565b500390565b60005b838110156122d85781810151838201526020016122c0565b8381111561102d5750506000910152565b600181811c908216806122fd57607f821691505b6020821081141561231e57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561233857612338612353565b5060010190565b60008261234e5761234e612369565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610b1957600080fdfea264697066735822122000b2f20becf1bff09b4d5bf3d4e030b188bbab70f8257c21e3e6394de1740ce664736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000009506963614c696f6e730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000350694c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d59534e6f376536773733565966574c4837314843767562504e4556786f445a654447774e507959727232384e2f000000000000000000000000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d575a7173637a725654754c424454725652335753417250586459504667464e76436a415673346d74554c4c4d2f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000009506963614c696f6e730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000350694c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d59534e6f376536773733565966574c4837314843767562504e4556786f445a654447774e507959727232384e2f000000000000000000000000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d575a7173637a725654754c424454725652335753417250586459504667464e76436a415673346d74554c4c4d2f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): PicaLions
Arg [1] : _symbol (string): PiL
Arg [2] : _initBaseURI (string): ipfs://QmYSNo7e6w73VYfWLH71HCvubPNEVxoDZeDGwNPyYrr28N/
Arg [3] : _initNotRevealedUri (string): ipfs://QmWZqsczrVTuLBDTrVR3WSArPXdYPFgFNvCjAVs4mtULLM/hidden.json

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [5] : 506963614c696f6e730000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 50694c0000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [9] : 697066733a2f2f516d59534e6f376536773733565966574c4837314843767562
Arg [10] : 504e4556786f445a654447774e507959727232384e2f00000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000041
Arg [12] : 697066733a2f2f516d575a7173637a725654754c424454725652335753417250
Arg [13] : 586459504667464e76436a415673346d74554c4c4d2f68696464656e2e6a736f
Arg [14] : 6e00000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

43621:3243:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35168:224;;;;;;;;;;-1:-1:-1;35168:224:0;;;;;:::i;:::-;;:::i;:::-;;;7807:14:1;;7800:22;7782:41;;7770:2;7755:18;35168:224:0;;;;;;;;46319:73;;;;;;;;;;-1:-1:-1;46319:73:0;;;;;:::i;:::-;;:::i;:::-;;23060:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24619:221::-;;;;;;;;;;-1:-1:-1;24619:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6468:32:1;;;6450:51;;6438:2;6423:18;24619:221:0;6304:203:1;43940:28:0;;;;;;;;;;;;;:::i;24142:411::-;;;;;;;;;;-1:-1:-1;24142:411:0;;;;;:::i;:::-;;:::i;43767:29::-;;;;;;;;;;;;;;;;;;;15411:25:1;;;15399:2;15384:18;43767:29:0;15265:177:1;35808:113:0;;;;;;;;;;-1:-1:-1;35896:10:0;:17;35808:113;;43837:34;;;;;;;;;;;;;;;;25509:339;;;;;;;;;;-1:-1:-1;25509:339:0;;;;;:::i;:::-;;:::i;35476:256::-;;;;;;;;;;-1:-1:-1;35476:256:0;;;;;:::i;:::-;;:::i;46399:462::-;;;:::i;25919:185::-;;;;;;;;;;-1:-1:-1;25919:185:0;;;;;:::i;:::-;;:::i;44805:348::-;;;;;;;;;;-1:-1:-1;44805:348:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;45751:80::-;;;;;;;;;;-1:-1:-1;45751:80:0;;;;;:::i;:::-;;:::i;35998:233::-;;;;;;;;;;-1:-1:-1;35998:233:0;;;;;:::i;:::-;;:::i;43907:28::-;;;;;;;;;;-1:-1:-1;43907:28:0;;;;;;;;;;;46087:98;;;;;;;;;;-1:-1:-1;46087:98:0;;;;;:::i;:::-;;:::i;43876:26::-;;;;;;;;;;-1:-1:-1;43876:26:0;;;;;;;;22754:239;;;;;;;;;;-1:-1:-1;22754:239:0;;;;;:::i;:::-;;:::i;22484:208::-;;;;;;;;;;-1:-1:-1;22484:208:0;;;;;:::i;:::-;;:::i;42957:94::-;;;;;;;;;;;;;:::i;45837:116::-;;;;;;;;;;-1:-1:-1;45837:116:0;;;;;:::i;:::-;;:::i;42306:87::-;;;;;;;;;;-1:-1:-1;42379:6:0;;-1:-1:-1;;;;;42379:6:0;42306:87;;23229:104;;;;;;;;;;;;;:::i;44366:433::-;;;;;;:::i;:::-;;:::i;24912:295::-;;;;;;;;;;-1:-1:-1;24912:295:0;;;;;:::i;:::-;;:::i;45678:65::-;;;;;;;;;;;;;:::i;26175:328::-;;;;;;;;;;-1:-1:-1;26175:328:0;;;;;:::i;:::-;;:::i;43725:37::-;;;;;;;;;;;;;:::i;45159:497::-;;;;;;;;;;-1:-1:-1;45159:497:0;;;;;:::i;:::-;;:::i;43801:31::-;;;;;;;;;;;;;;;;46191:122;;;;;;;;;;-1:-1:-1;46191:122:0;;;;;:::i;:::-;;:::i;25278:164::-;;;;;;;;;;-1:-1:-1;25278:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;25399:25:0;;;25375:4;25399:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;25278:164;45961:120;;;;;;;;;;-1:-1:-1;45961:120:0;;;;;:::i;:::-;;:::i;43206:192::-;;;;;;;;;;-1:-1:-1;43206:192:0;;;;;:::i;:::-;;:::i;35168:224::-;35270:4;-1:-1:-1;;;;;;35294:50:0;;-1:-1:-1;;;35294:50:0;;:90;;;35348:36;35372:11;35348:23;:36::i;:::-;35287:97;35168:224;-1:-1:-1;;35168:224:0:o;46319:73::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;;;;;;;;;46371:6:::1;:15:::0;;-1:-1:-1;;46371:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;46319:73::o;23060:100::-;23114:13;23147:5;23140:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23060:100;:::o;24619:221::-;24695:7;28102:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28102:16:0;24715:73;;;;-1:-1:-1;;;24715:73:0;;12634:2:1;24715:73:0;;;12616:21:1;12673:2;12653:18;;;12646:30;12712:34;12692:18;;;12685:62;-1:-1:-1;;;12763:18:1;;;12756:42;12815:19;;24715:73:0;12432:408:1;24715:73:0;-1:-1:-1;24808:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;24808:24:0;;24619:221::o;43940:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24142:411::-;24223:13;24239:23;24254:7;24239:14;:23::i;:::-;24223:39;;24287:5;-1:-1:-1;;;;;24281:11:0;:2;-1:-1:-1;;;;;24281:11:0;;;24273:57;;;;-1:-1:-1;;;24273:57:0;;14234:2:1;24273:57:0;;;14216:21:1;14273:2;14253:18;;;14246:30;14312:34;14292:18;;;14285:62;-1:-1:-1;;;14363:18:1;;;14356:31;14404:19;;24273:57:0;14032:397:1;24273:57:0;20669:10;-1:-1:-1;;;;;24365:21:0;;;;:62;;-1:-1:-1;24390:37:0;24407:5;20669:10;25278:164;:::i;24390:37::-;24343:168;;;;-1:-1:-1;;;24343:168:0;;11027:2:1;24343:168:0;;;11009:21:1;11066:2;11046:18;;;11039:30;11105:34;11085:18;;;11078:62;11176:26;11156:18;;;11149:54;11220:19;;24343:168:0;10825:420:1;24343:168:0;24524:21;24533:2;24537:7;24524:8;:21::i;:::-;24212:341;24142:411;;:::o;25509:339::-;25704:41;20669:10;25737:7;25704:18;:41::i;:::-;25696:103;;;;-1:-1:-1;;;25696:103:0;;;;;;;:::i;:::-;25812:28;25822:4;25828:2;25832:7;25812:9;:28::i;35476:256::-;35573:7;35609:23;35626:5;35609:16;:23::i;:::-;35601:5;:31;35593:87;;;;-1:-1:-1;;;35593:87:0;;8260:2:1;35593:87:0;;;8242:21:1;8299:2;8279:18;;;8272:30;8338:34;8318:18;;;8311:62;-1:-1:-1;;;8389:18:1;;;8382:41;8440:19;;35593:87:0;8058:407:1;35593:87:0;-1:-1:-1;;;;;;35698:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;35476:256::o;46399:462::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;46683:7:::1;46704;42379:6:::0;;-1:-1:-1;;;;;42379:6:0;;42306:87;46704:7:::1;-1:-1:-1::0;;;;;46696:21:0::1;46725;46696:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46682:69;;;46766:2;46758:11;;;::::0;::::1;;46444:417;46399:462::o:0;25919:185::-;26057:39;26074:4;26080:2;26084:7;26057:39;;;;;;;;;;;;:16;:39::i;44805:348::-;44880:16;44908:23;44934:17;44944:6;44934:9;:17::i;:::-;44908:43;;44958:25;45000:15;44986:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44986:30:0;;44958:58;;45028:9;45023:103;45043:15;45039:1;:19;45023:103;;;45088:30;45108:6;45116:1;45088:19;:30::i;:::-;45074:8;45083:1;45074:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;45060:3;;;;:::i;:::-;;;;45023:103;;;-1:-1:-1;45139:8:0;44805:348;-1:-1:-1;;;44805:348:0:o;45751:80::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;45810:4:::1;:15:::0;45751:80::o;35998:233::-;36073:7;36109:30;35896:10;:17;;35808:113;36109:30;36101:5;:38;36093:95;;;;-1:-1:-1;;;36093:95:0;;15054:2:1;36093:95:0;;;15036:21:1;15093:2;15073:18;;;15066:30;15132:34;15112:18;;;15105:62;-1:-1:-1;;;15183:18:1;;;15176:42;15235:19;;36093:95:0;14852:408:1;36093:95:0;36206:10;36217:5;36206:17;;;;;;;;:::i;:::-;;;;;;;;;36199:24;;35998:233;;;:::o;46087:98::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;46158:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;46087:98:::0;:::o;22754:239::-;22826:7;22862:16;;;:7;:16;;;;;;-1:-1:-1;;;;;22862:16:0;22897:19;22889:73;;;;-1:-1:-1;;;22889:73:0;;11863:2:1;22889:73:0;;;11845:21:1;11902:2;11882:18;;;11875:30;11941:34;11921:18;;;11914:62;-1:-1:-1;;;11992:18:1;;;11985:39;12041:19;;22889:73:0;11661:405:1;22484:208:0;22556:7;-1:-1:-1;;;;;22584:19:0;;22576:74;;;;-1:-1:-1;;;22576:74:0;;11452:2:1;22576:74:0;;;11434:21:1;11491:2;11471:18;;;11464:30;11530:34;11510:18;;;11503:62;-1:-1:-1;;;11581:18:1;;;11574:40;11631:19;;22576:74:0;11250:406:1;22576:74:0;-1:-1:-1;;;;;;22668:16:0;;;;;:9;:16;;;;;;;22484:208::o;42957:94::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;43022:21:::1;43040:1;43022:9;:21::i;:::-;42957:94::o:0;45837:116::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;45914:13:::1;:33:::0;45837:116::o;23229:104::-;23285:13;23318:7;23311:14;;;;;:::i;44366:433::-;44423:14;44440:13;35896:10;:17;;35808:113;44440:13;44469:6;;44423:30;;-1:-1:-1;44469:6:0;;44468:7;44460:16;;;;;;44505:1;44491:11;:15;44483:24;;;;;;44537:13;;44522:11;:28;;44514:37;;;;;;44590:9;;44566:20;44575:11;44566:6;:20;:::i;:::-;:33;;44558:42;;;;;;42379:6;;-1:-1:-1;;;;;42379:6:0;44613:10;:21;44609:84;;44673:11;44666:4;;:18;;;;:::i;:::-;44653:9;:31;;44645:40;;;;;;44718:1;44701:93;44726:11;44721:1;:16;44701:93;;44753:33;44763:10;44775;44784:1;44775:6;:10;:::i;:::-;44753:9;:33::i;:::-;44739:3;;;;:::i;:::-;;;;44701:93;;24912:295;-1:-1:-1;;;;;25015:24:0;;20669:10;25015:24;;25007:62;;;;-1:-1:-1;;;25007:62:0;;10260:2:1;25007:62:0;;;10242:21:1;10299:2;10279:18;;;10272:30;10338:27;10318:18;;;10311:55;10383:18;;25007:62:0;10058:349:1;25007:62:0;20669:10;25082:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;25082:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;25082:53:0;;;;;;;;;;25151:48;;7782:41:1;;;25082:42:0;;20669:10;25151:48;;7755:18:1;25151:48:0;;;;;;;24912:295;;:::o;45678:65::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;45722:8:::1;:15:::0;;-1:-1:-1;;45722:15:0::1;;;::::0;;45678:65::o;26175:328::-;26350:41;20669:10;26383:7;26350:18;:41::i;:::-;26342:103;;;;-1:-1:-1;;;26342:103:0;;;;;;;:::i;:::-;26456:39;26470:4;26476:2;26480:7;26489:5;26456:13;:39::i;:::-;26175:328;;;;:::o;43725:37::-;;;;;;;:::i;45159:497::-;28078:4;28102:16;;;:7;:16;;;;;;45257:13;;-1:-1:-1;;;;;28102:16:0;45282:97;;;;-1:-1:-1;;;45282:97:0;;13818:2:1;45282:97:0;;;13800:21:1;13857:2;13837:18;;;13830:30;13896:34;13876:18;;;13869:62;-1:-1:-1;;;13947:18:1;;;13940:45;14002:19;;45282:97:0;13616:411:1;45282:97:0;45395:8;;;;;;;45392:62;;45432:14;45425:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45159:497;;;:::o;45392:62::-;45462:28;45493:10;:8;:10::i;:::-;45462:41;;45548:1;45523:14;45517:28;:32;:133;;;;;;;;;;;;;;;;;45585:14;45601:18;:7;:16;:18::i;:::-;45621:13;45568:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45517:133;45510:140;45159:497;-1:-1:-1;;;45159:497:0:o;46191:122::-;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;46274:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;45961:120::-:0;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;46043:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;43206:192::-:0;42379:6;;-1:-1:-1;;;;;42379:6:0;20669:10;42526:23;42518:68;;;;-1:-1:-1;;;42518:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43295:22:0;::::1;43287:73;;;::::0;-1:-1:-1;;;43287:73:0;;9091:2:1;43287:73:0::1;::::0;::::1;9073:21:1::0;9130:2;9110:18;;;9103:30;9169:34;9149:18;;;9142:62;-1:-1:-1;;;9220:18:1;;;9213:36;9266:19;;43287:73:0::1;8889:402:1::0;43287:73:0::1;43371:19;43381:8;43371:9;:19::i;22115:305::-:0;22217:4;-1:-1:-1;;;;;;22254:40:0;;-1:-1:-1;;;22254:40:0;;:105;;-1:-1:-1;;;;;;;22311:48:0;;-1:-1:-1;;;22311:48:0;22254:105;:158;;;-1:-1:-1;;;;;;;;;;8055:40:0;;;22376:36;7946:157;31995:174;32070:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;32070:29:0;-1:-1:-1;;;;;32070:29:0;;;;;;;;:24;;32124:23;32070:24;32124:14;:23::i;:::-;-1:-1:-1;;;;;32115:46:0;;;;;;;;;;;31995:174;;:::o;28307:348::-;28400:4;28102:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28102:16:0;28417:73;;;;-1:-1:-1;;;28417:73:0;;10614:2:1;28417:73:0;;;10596:21:1;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:1;;;10736:42;10795:19;;28417:73:0;10412:408:1;28417:73:0;28501:13;28517:23;28532:7;28517:14;:23::i;:::-;28501:39;;28570:5;-1:-1:-1;;;;;28559:16:0;:7;-1:-1:-1;;;;;28559:16:0;;:51;;;;28603:7;-1:-1:-1;;;;;28579:31:0;:20;28591:7;28579:11;:20::i;:::-;-1:-1:-1;;;;;28579:31:0;;28559:51;:87;;;-1:-1:-1;;;;;;25399:25:0;;;25375:4;25399:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;28614:32;28551:96;28307:348;-1:-1:-1;;;;28307:348:0:o;31299:578::-;31458:4;-1:-1:-1;;;;;31431:31:0;:23;31446:7;31431:14;:23::i;:::-;-1:-1:-1;;;;;31431:31:0;;31423:85;;;;-1:-1:-1;;;31423:85:0;;13408:2:1;31423:85:0;;;13390:21:1;13447:2;13427:18;;;13420:30;13486:34;13466:18;;;13459:62;-1:-1:-1;;;13537:18:1;;;13530:39;13586:19;;31423:85:0;13206:405:1;31423:85:0;-1:-1:-1;;;;;31527:16:0;;31519:65;;;;-1:-1:-1;;;31519:65:0;;9855:2:1;31519:65:0;;;9837:21:1;9894:2;9874:18;;;9867:30;9933:34;9913:18;;;9906:62;-1:-1:-1;;;9984:18:1;;;9977:34;10028:19;;31519:65:0;9653:400:1;31519:65:0;31597:39;31618:4;31624:2;31628:7;31597:20;:39::i;:::-;31701:29;31718:1;31722:7;31701:8;:29::i;:::-;-1:-1:-1;;;;;31743:15:0;;;;;;:9;:15;;;;;:20;;31762:1;;31743:15;:20;;31762:1;;31743:20;:::i;:::-;;;;-1:-1:-1;;;;;;;31774:13:0;;;;;;:9;:13;;;;;:18;;31791:1;;31774:13;:18;;31791:1;;31774:18;:::i;:::-;;;;-1:-1:-1;;31803:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;31803:21:0;-1:-1:-1;;;;;31803:21:0;;;;;;;;;31842:27;;31803:16;;31842:27;;;;;;;31299:578;;;:::o;43406:173::-;43481:6;;;-1:-1:-1;;;;;43498:17:0;;;-1:-1:-1;;;;;;43498:17:0;;;;;;;43531:40;;43481:6;;;43498:17;43481:6;;43531:40;;43462:16;;43531:40;43451:128;43406:173;:::o;28997:110::-;29073:26;29083:2;29087:7;29073:26;;;;;;;;;;;;:9;:26::i;27385:315::-;27542:28;27552:4;27558:2;27562:7;27542:9;:28::i;:::-;27589:48;27612:4;27618:2;27622:7;27631:5;27589:22;:48::i;:::-;27581:111;;;;-1:-1:-1;;;27581:111:0;;;;;;;:::i;44245:102::-;44305:13;44334:7;44327:14;;;;;:::i;8421:723::-;8477:13;8698:10;8694:53;;-1:-1:-1;;8725:10:0;;;;;;;;;;;;-1:-1:-1;;;8725:10:0;;;;;8421:723::o;8694:53::-;8772:5;8757:12;8813:78;8820:9;;8813:78;;8846:8;;;;:::i;:::-;;-1:-1:-1;8869:10:0;;-1:-1:-1;8877:2:0;8869:10;;:::i;:::-;;;8813:78;;;8901:19;8933:6;8923:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8923:17:0;;8901:39;;8951:154;8958:10;;8951:154;;8985:11;8995:1;8985:11;;:::i;:::-;;-1:-1:-1;9054:10:0;9062:2;9054:5;:10;:::i;:::-;9041:24;;:2;:24;:::i;:::-;9028:39;;9011:6;9018;9011:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;9011:56:0;;;;;;;;-1:-1:-1;9082:11:0;9091:2;9082:11;;:::i;:::-;;;8951:154;;36844:589;-1:-1:-1;;;;;37050:18:0;;37046:187;;37085:40;37117:7;38260:10;:17;;38233:24;;;;:15;:24;;;;;:44;;;38288:24;;;;;;;;;;;;38156:164;37085:40;37046:187;;;37155:2;-1:-1:-1;;;;;37147:10:0;:4;-1:-1:-1;;;;;37147:10:0;;37143:90;;37174:47;37207:4;37213:7;37174:32;:47::i;:::-;-1:-1:-1;;;;;37247:16:0;;37243:183;;37280:45;37317:7;37280:36;:45::i;37243:183::-;37353:4;-1:-1:-1;;;;;37347:10:0;:2;-1:-1:-1;;;;;37347:10:0;;37343:83;;37374:40;37402:2;37406:7;37374:27;:40::i;29334:321::-;29464:18;29470:2;29474:7;29464:5;:18::i;:::-;29515:54;29546:1;29550:2;29554:7;29563:5;29515:22;:54::i;:::-;29493:154;;;;-1:-1:-1;;;29493:154:0;;;;;;;:::i;32734:799::-;32889:4;-1:-1:-1;;;;;32910:13:0;;11269:20;11317:8;32906:620;;32946:72;;-1:-1:-1;;;32946:72:0;;-1:-1:-1;;;;;32946:36:0;;;;;:72;;20669:10;;32997:4;;33003:7;;33012:5;;32946:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32946:72:0;;;;;;;;-1:-1:-1;;32946:72:0;;;;;;;;;;;;:::i;:::-;;;32942:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33188:13:0;;33184:272;;33231:60;;-1:-1:-1;;;33231:60:0;;;;;;;:::i;33184:272::-;33406:6;33400:13;33391:6;33387:2;33383:15;33376:38;32942:529;-1:-1:-1;;;;;;33069:51:0;-1:-1:-1;;;33069:51:0;;-1:-1:-1;33062:58:0;;32906:620;-1:-1:-1;33510:4:0;32734:799;;;;;;:::o;38947:988::-;39213:22;39263:1;39238:22;39255:4;39238:16;:22::i;:::-;:26;;;;:::i;:::-;39275:18;39296:26;;;:17;:26;;;;;;39213:51;;-1:-1:-1;39429:28:0;;;39425:328;;-1:-1:-1;;;;;39496:18:0;;39474:19;39496:18;;;:12;:18;;;;;;;;:34;;;;;;;;;39547:30;;;;;;:44;;;39664:30;;:17;:30;;;;;:43;;;39425:328;-1:-1:-1;39849:26:0;;;;:17;:26;;;;;;;;39842:33;;;-1:-1:-1;;;;;39893:18:0;;;;;:12;:18;;;;;:34;;;;;;;39886:41;38947:988::o;40230:1079::-;40508:10;:17;40483:22;;40508:21;;40528:1;;40508:21;:::i;:::-;40540:18;40561:24;;;:15;:24;;;;;;40934:10;:26;;40483:46;;-1:-1:-1;40561:24:0;;40483:46;;40934:26;;;;;;:::i;:::-;;;;;;;;;40912:48;;40998:11;40973:10;40984;40973:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;41078:28;;;:15;:28;;;;;;;:41;;;41250:24;;;;;41243:31;41285:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;40301:1008;;;40230:1079;:::o;37734:221::-;37819:14;37836:20;37853:2;37836:16;:20::i;:::-;-1:-1:-1;;;;;37867:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;37912:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;37734:221:0:o;29991:382::-;-1:-1:-1;;;;;30071:16:0;;30063:61;;;;-1:-1:-1;;;30063:61:0;;12273:2:1;30063:61:0;;;12255:21:1;;;12292:18;;;12285:30;12351:34;12331:18;;;12324:62;12403:18;;30063:61:0;12071:356:1;30063:61:0;28078:4;28102:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28102:16:0;:30;30135:58;;;;-1:-1:-1;;;30135:58:0;;9498:2:1;30135:58:0;;;9480:21:1;9537:2;9517:18;;;9510:30;9576;9556:18;;;9549:58;9624:18;;30135:58:0;9296:352:1;30135:58:0;30206:45;30235:1;30239:2;30243:7;30206:20;:45::i;:::-;-1:-1:-1;;;;;30264:13:0;;;;;;:9;:13;;;;;:18;;30281:1;;30264:13;:18;;30281:1;;30264:18;:::i;:::-;;;;-1:-1:-1;;30293:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;30293:21:0;-1:-1:-1;;;;;30293:21:0;;;;;;;;30332:33;;30293:16;;;30332:33;;30293:16;;30332:33;29991:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:180::-;3027:6;3080:2;3068:9;3059:7;3055:23;3051:32;3048:52;;;3096:1;3093;3086:12;3048:52;3119:26;3135:9;3119:26;:::i;3156:245::-;3214:6;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:30;3365:5;3341:30;:::i;3406:249::-;3475:6;3528:2;3516:9;3507:7;3503:23;3499:32;3496:52;;;3544:1;3541;3534:12;3496:52;3576:9;3570:16;3595:30;3619:5;3595:30;:::i;3660:450::-;3729:6;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;3838:9;3825:23;3871:18;3863:6;3860:30;3857:50;;;3903:1;3900;3893:12;3857:50;3926:22;;3979:4;3971:13;;3967:27;-1:-1:-1;3957:55:1;;4008:1;4005;3998:12;3957:55;4031:73;4096:7;4091:2;4078:16;4073:2;4069;4065:11;4031:73;:::i;4115:180::-;4174:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:52;;;4243:1;4240;4233:12;4195:52;-1:-1:-1;4266:23:1;;4115:180;-1:-1:-1;4115:180:1:o;4300:257::-;4341:3;4379:5;4373:12;4406:6;4401:3;4394:19;4422:63;4478:6;4471:4;4466:3;4462:14;4455:4;4448:5;4444:16;4422:63;:::i;:::-;4539:2;4518:15;-1:-1:-1;;4514:29:1;4505:39;;;;4546:4;4501:50;;4300:257;-1:-1:-1;;4300:257:1:o;4562:1527::-;4786:3;4824:6;4818:13;4850:4;4863:51;4907:6;4902:3;4897:2;4889:6;4885:15;4863:51;:::i;:::-;4977:13;;4936:16;;;;4999:55;4977:13;4936:16;5021:15;;;4999:55;:::i;:::-;5143:13;;5076:20;;;5116:1;;5203;5225:18;;;;5278;;;;5305:93;;5383:4;5373:8;5369:19;5357:31;;5305:93;5446:2;5436:8;5433:16;5413:18;5410:40;5407:167;;;-1:-1:-1;;;5473:33:1;;5529:4;5526:1;5519:15;5559:4;5480:3;5547:17;5407:167;5590:18;5617:110;;;;5741:1;5736:328;;;;5583:481;;5617:110;-1:-1:-1;;5652:24:1;;5638:39;;5697:20;;;;-1:-1:-1;5617:110:1;;5736:328;15520:1;15513:14;;;15557:4;15544:18;;5831:1;5845:169;5859:8;5856:1;5853:15;5845:169;;;5941:14;;5926:13;;;5919:37;5984:16;;;;5876:10;;5845:169;;;5849:3;;6045:8;6038:5;6034:20;6027:27;;5583:481;-1:-1:-1;6080:3:1;;4562:1527;-1:-1:-1;;;;;;;;;;;4562:1527:1:o;6512:488::-;-1:-1:-1;;;;;6781:15:1;;;6763:34;;6833:15;;6828:2;6813:18;;6806:43;6880:2;6865:18;;6858:34;;;6928:3;6923:2;6908:18;;6901:31;;;6706:4;;6949:45;;6974:19;;6966:6;6949:45;:::i;:::-;6941:53;6512:488;-1:-1:-1;;;;;;6512:488:1:o;7005:632::-;7176:2;7228:21;;;7298:13;;7201:18;;;7320:22;;;7147:4;;7176:2;7399:15;;;;7373:2;7358:18;;;7147:4;7442:169;7456:6;7453:1;7450:13;7442:169;;;7517:13;;7505:26;;7586:15;;;;7551:12;;;;7478:1;7471:9;7442:169;;;-1:-1:-1;7628:3:1;;7005:632;-1:-1:-1;;;;;;7005:632:1:o;7834:219::-;7983:2;7972:9;7965:21;7946:4;8003:44;8043:2;8032:9;8028:18;8020:6;8003:44;:::i;8470:414::-;8672:2;8654:21;;;8711:2;8691:18;;;8684:30;8750:34;8745:2;8730:18;;8723:62;-1:-1:-1;;;8816:2:1;8801:18;;8794:48;8874:3;8859:19;;8470:414::o;12845:356::-;13047:2;13029:21;;;13066:18;;;13059:30;13125:34;13120:2;13105:18;;13098:62;13192:2;13177:18;;12845:356::o;14434:413::-;14636:2;14618:21;;;14675:2;14655:18;;;14648:30;14714:34;14709:2;14694:18;;14687:62;-1:-1:-1;;;14780:2:1;14765:18;;14758:47;14837:3;14822:19;;14434:413::o;15573:128::-;15613:3;15644:1;15640:6;15637:1;15634:13;15631:39;;;15650:18;;:::i;:::-;-1:-1:-1;15686:9:1;;15573:128::o;15706:120::-;15746:1;15772;15762:35;;15777:18;;:::i;:::-;-1:-1:-1;15811:9:1;;15706:120::o;15831:168::-;15871:7;15937:1;15933;15929:6;15925:14;15922:1;15919:21;15914:1;15907:9;15900:17;15896:45;15893:71;;;15944:18;;:::i;:::-;-1:-1:-1;15984:9:1;;15831:168::o;16004:125::-;16044:4;16072:1;16069;16066:8;16063:34;;;16077:18;;:::i;:::-;-1:-1:-1;16114:9:1;;16004:125::o;16134:258::-;16206:1;16216:113;16230:6;16227:1;16224:13;16216:113;;;16306:11;;;16300:18;16287:11;;;16280:39;16252:2;16245:10;16216:113;;;16347:6;16344:1;16341:13;16338:48;;;-1:-1:-1;;16382:1:1;16364:16;;16357:27;16134:258::o;16397:380::-;16476:1;16472:12;;;;16519;;;16540:61;;16594:4;16586:6;16582:17;16572:27;;16540:61;16647:2;16639:6;16636:14;16616:18;16613:38;16610:161;;;16693:10;16688:3;16684:20;16681:1;16674:31;16728:4;16725:1;16718:15;16756:4;16753:1;16746:15;16610:161;;16397:380;;;:::o;16782:135::-;16821:3;-1:-1:-1;;16842:17:1;;16839:43;;;16862:18;;:::i;:::-;-1:-1:-1;16909:1:1;16898:13;;16782:135::o;16922:112::-;16954:1;16980;16970:35;;16985:18;;:::i;:::-;-1:-1:-1;17019:9:1;;16922:112::o;17039:127::-;17100:10;17095:3;17091:20;17088:1;17081:31;17131:4;17128:1;17121:15;17155:4;17152:1;17145:15;17171:127;17232:10;17227:3;17223:20;17220:1;17213:31;17263:4;17260:1;17253:15;17287:4;17284:1;17277:15;17303:127;17364:10;17359:3;17355:20;17352:1;17345:31;17395:4;17392:1;17385:15;17419:4;17416:1;17409:15;17435:127;17496:10;17491:3;17487:20;17484:1;17477:31;17527:4;17524:1;17517:15;17551:4;17548:1;17541:15;17567:127;17628:10;17623:3;17619:20;17616:1;17609:31;17659:4;17656:1;17649:15;17683:4;17680:1;17673:15;17699:131;-1:-1:-1;;;;;;17773:32:1;;17763:43;;17753:71;;17820:1;17817;17810:12

Swarm Source

ipfs://00b2f20becf1bff09b4d5bf3d4e030b188bbab70f8257c21e3e6394de1740ce6
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.