Contract 0x86935f11c86623dec8a25696e1c19a8659cbf95d 14

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x624f3b95618bd870fe4e1c05b27f04ce137650fa27baf68ac453f88a0ed0b8c9Claim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x5e0cb2d27431a8f411a48cd4d6b1532cbfaf1612 IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x483549b891752410bb24933a3cc35044a0aec8cee9a9b20ee1315747f2505deeClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0xed7651b43bff4bc19b3e4e83e21f1f6cd53c5bad86687f438a54ff3112b917eeClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x89f9c1264b3aa9dee5621eb9f6f2f5089e87a09fc04c5b110ae371de6dc1aabdClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x8b34874f244a2c2060cce320a04cc47c546a73545f6e5b431ea7cbf7e7bc7580Claim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x113fcaa77554f40f914c9dfc188ce2be18602ea18e0fcae4a5bb8069c87eda77Claim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x7f595cb78967af72097a6e987299f99cb8a57d7935f6ad40644904aaa488a8edClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0xc55cf20cf7ee5d17816520236cc9f944e37b03ae2a487f401f305bec8636817cClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0xb5cd33a84487fc3c9066276276514cb45be90b6e6b554482b0d9a38a469e36f8Claim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x25414709bcfcba8e0b40bff6d1df553a0b0776bc4304fa83e93897ef94e644cbClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x9e4c343e56a3b0439841db40470f67a24af2d67922a69d151c19e8a7fbe10a2dClaim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0x031137b54bbfaeed33144cccb32ef3fd44dcd9c7c50855f8a640d4ee1114dc78Claim Gotchi Len...(pending)2022-08-09 4:37:031 min ago0x7f433b38dd933cea19506d1fc26369b326d55cec IN 0x86935f11c86623dec8a25696e1c19a8659cbf95d0 MATIC(Pending)
0xf3575ba3b11a1b587422d02116ddc3211ae00c9b831c19c23e0a97b0fd170076Agree Gotchi Len...316830912022-08-09 4:37:2937 secs ago0x75e26205c2bbf944edef2ac1e309b0a7aed4e524 IN  Aavegotchi: NFTs0 MATIC0.011311678604 30.000234991
0x525da9b9aa25d48b69a384e8e3d6e674867c9163fea54598f4dbda9e8ca5ef49Claim And End Go...316830842022-08-09 4:37:1551 secs ago0x269e07eac18b3681f3447263c28a766457ff074b IN  Aavegotchi: NFTs0 MATIC0.012178750
0xfc7cb387b00ca6fdba1d5163a1e77464a5c1b1ca7be03943a03bcaa0b9de21f4Agree Gotchi Len...316830722022-08-09 4:36:511 min ago0x7f57a1f24462a233e9e1f8f5f050ab3bc4b8da8e IN  Aavegotchi: NFTs0 MATIC0.012927519038 38.221541333
0x8a799393c73eed3e2f5714e057c4c7e65f1df477cb6ea7d1d119c4b566b961adAgree Gotchi Len...316830692022-08-09 4:36:411 min ago0x7f57a1f24462a233e9e1f8f5f050ab3bc4b8da8e IN  Aavegotchi: NFTs0 MATIC0.011647112707 32.792510496
0x3bc6c55252e95f26cf31222d8e1ccea34bb01d156fb1101f145be04f79ed2d58Interact316830542022-08-09 4:36:111 min ago0x3621fd0db8dabc21d522851de01114cf82b7c21f IN  Aavegotchi: NFTs0 MATIC0.00587737535
0xc3c4b8b37735225af33bb0d0329927062918b4ad48002f4fe7aa77f65df5cc65Claim Gotchi Len...316830412022-08-09 4:35:452 mins ago0xb1e76e3628a2adf92b8b10a51f7e70461d242098 IN  Aavegotchi: NFTs0 MATIC0.008216965907 30.715103457
0xe612ffa60da35fc6a18a39698305f15f9b0644cdcd49cedb1433ef999b83d73fClaim Gotchi Len...316830412022-08-09 4:35:452 mins ago0xb1e76e3628a2adf92b8b10a51f7e70461d242098 IN  Aavegotchi: NFTs0 MATIC0.008828226738 33.000002761
0xd93e3585cebc57c1a3e35c30691fdbf3485d15ad29ddc6df54cb4ada95def9e8Claim Gotchi Len...316830292022-08-09 4:35:212 mins ago0x7df34b2f6d0c05477cbab03f7e2962a5f5a66136 IN  Aavegotchi: NFTs0 MATIC0.008025813407 30.000573439
0xdbf7ceff2361d1d7c2005b915580547112503ae78cf1b082d21209419e71dce9Interact316830172022-08-09 4:34:573 mins ago0x071d217637b6322a7faac6895a9eb00e529d3424 IN  Aavegotchi: NFTs0 MATIC0.060985230734 75.003542912
0xdc88ac13d97507fc44e6aee8e467b4a3d3829a2ccf199d4a44379f1586557b95Agree Gotchi Len...316830162022-08-09 4:34:553 mins ago0x18c140c1c88119534a6f245678413befdcdc1aaf IN  Aavegotchi: NFTs0 MATIC0.010743389435 30.070280219
0x7f3a47b50c593e61883672fe15a0c39fac812acfb7ed21ec9e3438dc112c141cClaim And End Go...316830002022-08-09 4:34:054 mins ago0x7f57a1f24462a233e9e1f8f5f050ab3bc4b8da8e IN  Aavegotchi: NFTs0 MATIC0.00795618898 32.341311346
0x7c0a34e73682c8f54b21fcc52baab855d8232d1e785f4007a33c4d9780954598Interact316830002022-08-09 4:34:054 mins ago0xe3601aa8774cd35bd07ddefa8aa1b893bd0b9ed3 IN  Aavegotchi: NFTs0 MATIC0.005433517933 33.001615206
0xfc5cb1a4d0179c55d14c0525a37e55721fb6a3c23adbb014bc1f2b10c7b4c065Claim And End Go...316829962022-08-09 4:33:494 mins ago0x7f57a1f24462a233e9e1f8f5f050ab3bc4b8da8e IN  Aavegotchi: NFTs0 MATIC0.008116259784 32.341236882
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x3a2dc2a7b0d195f74fccda3c5876cc7292e9dc818f7d7e1ad6f128212c94fa73316791212022-08-09 1:55:252 hrs 42 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xc959c445a9e4bebe37abeb613ee85a47bb24da6533d490631daaa85fa5beb87f316778332022-08-09 1:01:093 hrs 36 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x428812002c9152b75f0d7d5325f189d7d1cc97f7276273b3f98e2f1d9f51254b316771762022-08-09 0:35:434 hrs 2 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x2027b7d9ad619fede6a95a648dc73afecb3fc738fbdd4cdc5b7546d34aa39b8f316739342022-08-08 22:33:346 hrs 4 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xeefb794dcef790f26899d9259799e4b5cf1e29dece0720688dc6e67fa7f61bf3316728102022-08-08 21:50:386 hrs 47 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xcd1cea61c1ac8a8b82b3f4925f311c9f6b5122451e40a06b001ad2f591e0f430316723882022-08-08 21:36:107 hrs 1 min ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x4e1da07518d938b6b95b686b285c5305e0781e09dbdf51f297f1106ac4fc337c316702552022-08-08 20:18:008 hrs 20 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x6996fba7c2389e4abe4b4b68977b4be369d3f9bc1144081c32d873b88c963b11316658942022-08-08 17:26:3911 hrs 11 mins ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x596e1dba2d9923cc297a7e1009306ea4578828796a51bb2aa224d278098c54cd315907242022-08-06 14:43:132 days 13 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x75ad521c81b448021f0feaa4b6311caee2f65da78f2be90839eca8c6a83c411f315820432022-08-06 9:12:362 days 19 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x1420b75ed5237cd688fee4b131e20debc9fe20917510b474ff977cbf9ee5dda0315716272022-08-06 2:48:423 days 1 hr ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xbc95541bcf9841797b0e697b61b364e942fcd4d4c72de3cc4c00ed261d851dcc315617422022-08-05 20:53:553 days 7 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xa25725eaeee2cda0908e785ca63ab780041b54c39c09fd9535141a19f1bb964a315379292022-08-05 6:02:173 days 22 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xcc1ccbcc5ddbed2f9b351792f792fca187224b2f15fc78f26ff5fc7d01854aba315313812022-08-05 1:55:034 days 2 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x07ba8d0b1c35a844004bf95dbce98dd6efb488237ba013fd4b231c4d8a9a101f315311142022-08-05 1:43:454 days 2 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xa095a676b454d9a593ce47576d72969f09acb922d4bad1bb2704137d64907650315197832022-08-04 18:26:094 days 10 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x7d56880c3a6aab02cf1b0d5af95b64651c558205c70c3c0a221a03262fd2aade315186272022-08-04 17:41:134 days 10 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x0a48409ce805479cf70a9ee7c337fc55f1c839c7abc7f9fa5ec11fb15a371a74315128162022-08-04 13:57:164 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x395299fc901190ffd03c4cc122a6506b1723eddc9b123cc1f566c7c9702dcfa4315128122022-08-04 13:57:084 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x485efc02082d73f66e60276cdc99a982aeba2bda7c6b1e06cef7eb39d58e2242315128082022-08-04 13:57:004 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xabe7bebb6b0f4140d297ebfb609459f9d30b9011bf703d88dc203671b8b4d2dd315128042022-08-04 13:56:524 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x2ef5aab4692c1533583f3e31cc1c9c4001ba155b97a2b6d6cc9be1607256aaee315128002022-08-04 13:56:444 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xcd3bd1fa96941e097dfa1bcc283f648ff1032dfc13773df5d9debf114d00c5c0315127962022-08-04 13:56:364 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0xc49b6d6c3021f657202855c8219c4b0a1b393834efda4a5c82527c07e4d29336315127902022-08-04 13:56:244 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
0x2ef0ab39a14c2a3cb90b24b3a265f8b17e298aa1e0d4608b846465d2b4315cf2315127852022-08-04 13:56:144 days 14 hrs ago Aavegotchi: NFTs  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Diamond

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-07-01
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.1;

interface IERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceId The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}



// A loupe is a small magnifying glass used to look at diamonds.
// These functions look at diamonds
interface IDiamondLoupe {
    /// These functions are expected to be called frequently
    /// by tools.

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facet addresses and their four byte function selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_);

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view returns (address[] memory facetAddresses_);

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);
}



/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
/******************************************************************************/

interface IDiamondCut {
    enum FacetCutAction {Add, Replace, Remove}

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external;

    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
}



library LibMeta {
    bytes32 internal constant EIP712_DOMAIN_TYPEHASH =
        keccak256(bytes("EIP712Domain(string name,string version,uint256 salt,address verifyingContract)"));

    function domainSeparator(string memory name, string memory version) internal view returns (bytes32 domainSeparator_) {
        domainSeparator_ = keccak256(
            abi.encode(EIP712_DOMAIN_TYPEHASH, keccak256(bytes(name)), keccak256(bytes(version)), getChainID(), address(this))
        );
    }

    function getChainID() internal view returns (uint256 id) {
        assembly {
            id := chainid()
        }
    }

    function msgSender() internal view returns (address sender_) {
        if (msg.sender == address(this)) {
            bytes memory array = msg.data;
            uint256 index = msg.data.length;
            assembly {
                // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those.
                sender_ := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff)
            }
        } else {
            sender_ = msg.sender;
        }
    }
}



/******************************************************************************\
* Authors: Nick Mudge (https://twitter.com/mudgen)
*
* Implementation of a diamond.
/******************************************************************************/




/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/







/// @title ERC-173 Contract Ownership Standard
///  Note: the ERC-165 identifier for this interface is 0x7f5828d0
/* is ERC165 */
interface IERC173 {
    /// @notice Get the address of the owner
    /// @return owner_ The address of the owner.
    function owner() external view returns (address owner_);

    /// @notice Set the address of the new owner of the contract
    /// @dev Set _newOwner to address(0) to renounce any ownership.
    /// @param _newOwner The address of the new owner of the contract
    function transferOwnership(address _newOwner) external;
}



library LibDiamond {
    bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage");

    struct FacetAddressAndPosition {
        address facetAddress;
        uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint16 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
    }

    function diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }

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

    function setContractOwner(address _newOwner) internal {
        DiamondStorage storage ds = diamondStorage();
        address previousOwner = ds.contractOwner;
        ds.contractOwner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = diamondStorage().contractOwner;
    }

    function enforceIsContractOwner() internal view {
        require(LibMeta.msgSender() == diamondStorage().contractOwner, "LibDiamond: Must be contract owner");
    }

    event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);

    function addDiamondFunctions(
        address _diamondCutFacet,
        address _diamondLoupeFacet,
        address _ownershipFacet
    ) internal {
        IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](3);
        bytes4[] memory functionSelectors = new bytes4[](1);
        functionSelectors[0] = IDiamondCut.diamondCut.selector;
        cut[0] = IDiamondCut.FacetCut({facetAddress: _diamondCutFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors});
        functionSelectors = new bytes4[](5);
        functionSelectors[0] = IDiamondLoupe.facets.selector;
        functionSelectors[1] = IDiamondLoupe.facetFunctionSelectors.selector;
        functionSelectors[2] = IDiamondLoupe.facetAddresses.selector;
        functionSelectors[3] = IDiamondLoupe.facetAddress.selector;
        functionSelectors[4] = IERC165.supportsInterface.selector;
        cut[1] = IDiamondCut.FacetCut({
            facetAddress: _diamondLoupeFacet,
            action: IDiamondCut.FacetCutAction.Add,
            functionSelectors: functionSelectors
        });
        functionSelectors = new bytes4[](2);
        functionSelectors[0] = IERC173.transferOwnership.selector;
        functionSelectors[1] = IERC173.owner.selector;
        cut[2] = IDiamondCut.FacetCut({facetAddress: _ownershipFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors});
        diamondCut(cut, address(0), "");
    }

    // Internal function version of diamondCut
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) internal {
        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else {
                revert("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        DiamondStorage storage ds = diamondStorage();
        // uint16 selectorCount = uint16(diamondStorage().selectors.length);
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint16 selectorPosition = uint16(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
            ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists");
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(selector);
            ds.selectorToFacetAndPosition[selector].facetAddress = _facetAddress;
            ds.selectorToFacetAndPosition[selector].functionSelectorPosition = selectorPosition;
            selectorPosition++;
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        DiamondStorage storage ds = diamondStorage();
        require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
        uint16 selectorPosition = uint16(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
            ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            require(oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function");
            removeFunction(oldFacetAddress, selector);
            // add function
            ds.selectorToFacetAndPosition[selector].functionSelectorPosition = selectorPosition;
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(selector);
            ds.selectorToFacetAndPosition[selector].facetAddress = _facetAddress;
            selectorPosition++;
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        require(_functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut");
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)");
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(oldFacetAddress, selector);
        }
    }

    function removeFunction(address _facetAddress, bytes4 _selector) internal {
        DiamondStorage storage ds = diamondStorage();
        require(_facetAddress != address(0), "LibDiamondCut: Can't remove function that doesn't exist");
        // an immutable function is a function defined directly in a diamond
        require(_facetAddress != address(this), "LibDiamondCut: Can't remove immutable function");
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
            ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint16(selectorPosition);
        }
        // delete the last selector
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = uint16(facetAddressPosition);
            }
            ds.facetAddresses.pop();
            delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata) internal {
        if (_init == address(0)) {
            require(_calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty");
        } else {
            require(_calldata.length > 0, "LibDiamondCut: _calldata is empty but _init is not address(0)");
            if (_init != address(this)) {
                enforceHasContractCode(_init, "LibDiamondCut: _init address has no code");
            }
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (success == false) {
                if (error.length > 0) {
                    // bubble up the error
                    revert(string(error));
                } else {
                    revert("LibDiamondCut: _init function reverted");
                }
            }
        }
    }

    function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        require(contractSize != 0, _errorMessage);
    }
}




/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/




contract DiamondCutFacet is IDiamondCut {
    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external override {
        LibDiamond.enforceIsContractOwner();
        LibDiamond.diamondCut(_diamondCut, _init, _calldata);
    }
}




/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/





contract DiamondLoupeFacet is IDiamondLoupe, IERC165 {
    // Diamond Loupe Functions
    ////////////////////////////////////////////////////////////////////
    /// These functions are expected to be called frequently by tools.
    //
    // struct Facet {
    //     address facetAddress;
    //     bytes4[] functionSelectors;
    // }

    /// @notice Gets all facets and their selectors.
    /// @return facets_ Facet
    function facets() external view override returns (Facet[] memory facets_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        uint256 numFacets = ds.facetAddresses.length;
        facets_ = new Facet[](numFacets);
        for (uint256 i; i < numFacets; i++) {
            address facetAddress_ = ds.facetAddresses[i];
            facets_[i].facetAddress = facetAddress_;
            facets_[i].functionSelectors = ds.facetFunctionSelectors[facetAddress_].functionSelectors;
        }
    }

    /// @notice Gets all the function selectors provided by a facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view override returns (bytes4[] memory facetFunctionSelectors_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        facetFunctionSelectors_ = ds.facetFunctionSelectors[_facet].functionSelectors;
    }

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view override returns (address[] memory facetAddresses_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        facetAddresses_ = ds.facetAddresses;
    }

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        facetAddress_ = ds.selectorToFacetAndPosition[_functionSelector].facetAddress;
    }

    // This implements ERC-165.
    function supportsInterface(bytes4 _interfaceId) external view override returns (bool) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        return ds.supportedInterfaces[_interfaceId];
    }
}







contract OwnershipFacet is IERC173 {
    function transferOwnership(address _newOwner) external override {
        LibDiamond.enforceIsContractOwner();
        LibDiamond.setContractOwner(_newOwner);
    }

    function owner() external view override returns (address owner_) {
        owner_ = LibDiamond.contractOwner();
    }
}


contract Diamond {
    constructor(address _contractOwner) {
        LibDiamond.setContractOwner(_contractOwner);
        LibDiamond.addDiamondFunctions(address(new DiamondCutFacet()), address(new DiamondLoupeFacet()), address(new OwnershipFacet()));
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
        require(facet != address(0), "Diamond: Function does not exist");
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
                case 0 {
                    revert(0, returndatasize())
                }
                default {
                    return(0, returndatasize())
                }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]

60806040523480156200001157600080fd5b5060405162005112380380620051128339810160408190526200003491620012d1565b6200004a81620000ea60201b620000951760201c565b620000e36040516200005c9062001288565b604051809103906000f08015801562000079573d6000803e3d6000fd5b50604051620000889062001296565b604051809103906000f080158015620000a5573d6000803e3d6000fd5b50604051620000b490620012a4565b604051809103906000f080158015620000d1573d6000803e3d6000fd5b506200014c60201b620000f51760201c565b50620018b3565b6000620000f662000531565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60408051600380825260808201909252600091816020015b6200016e620012b2565b815260200190600190039081620001645750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b81600081518110620001d157634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03871681529081016000815260200182815250826000815181106200023057634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051600580825260c0820190925290816020016020820280368337019050509050637a0ed62760e01b816000815181106200028857634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b9082906001908110620002ce57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106200031457634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060039081106200035a57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b9082906004908110620003a057634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b0386168152908101600081526020018281525082600181518110620003ff57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516002808252606082019092529081602001602082028036833701905050905063f2fde38b60e01b816000815181106200045757634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101909101528051638da5cb5b60e01b90829060019081106200049d57634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b0385168152908101600081526020018281525082600281518110620004fc57634e487b7160e01b600052603260045260246000fd5b60200260200101819052506200052a826000604051806020016040528060008152506200055560201b60201c565b5050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60005b8351811015620007ae5760008482815181106200058557634e487b7160e01b600052603260045260246000fd5b602002602001015160200151905060006002811115620005b557634e487b7160e01b600052602160045260246000fd5b816002811115620005d657634e487b7160e01b600052602160045260246000fd5b14156200064d57620006478583815181106200060257634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106200062f57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151620007fd60201b60201c565b62000798565b60018160028111156200067057634e487b7160e01b600052602160045260246000fd5b1415620006e157620006478583815181106200069c57634e487b7160e01b600052603260045260246000fd5b602002602001015160000151868481518110620006c957634e487b7160e01b600052603260045260246000fd5b60200260200101516040015162000a3660201b60201c565b60028160028111156200070457634e487b7160e01b600052602160045260246000fd5b14156200077557620006478583815181106200073057634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106200075d57634e487b7160e01b600052603260045260246000fd5b60200260200101516040015162000c8b60201b60201c565b60405162461bcd60e51b81526004016200078f90620015bc565b60405180910390fd5b5080620007a5816200187f565b91505062000558565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620007e4939291906200135a565b60405180910390a1620007f8828262000d73565b505050565b6000815111620008215760405162461bcd60e51b81526004016200078f9062001514565b60006200082d62000531565b90506001600160a01b038316620008585760405162461bcd60e51b81526004016200078f9062001603565b6001600160a01b038316600090815260018201602052604090205461ffff8116620008fe57620008a284604051806060016040528060248152602001620050ee6024913962000eb1565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200052a5760008482815181106200092e57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620009815760405162461bcd60e51b81526004016200078f90620016fa565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558362000a1b816200185a565b9450505050808062000a2d906200187f565b91505062000901565b600081511162000a5a5760405162461bcd60e51b81526004016200078f9062001514565b600062000a6662000531565b90506001600160a01b03831662000a915760405162461bcd60e51b81526004016200078f9062001603565b6001600160a01b038316600090815260018201602052604090205461ffff811662000b375762000adb84604051806060016040528060248152602001620050ee6024913962000eb1565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200052a57600084828151811062000b6757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681141562000bc05760405162461bcd60e51b81526004016200078f9062001757565b62000bcc818362000ed5565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000c70816200185a565b9450505050808062000c82906200187f565b91505062000b3a565b600081511162000caf5760405162461bcd60e51b81526004016200078f9062001514565b600062000cbb62000531565b90506001600160a01b0383161562000ce75760405162461bcd60e51b81526004016200078f90620017b4565b60005b825181101562000d6d57600083828151811062000d1757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000d55818362000ed5565b5050808062000d64906200187f565b91505062000cea565b50505050565b6001600160a01b03821662000daa5780511562000da45760405162461bcd60e51b81526004016200078f9062001471565b62000ead565b600081511162000dce5760405162461bcd60e51b81526004016200078f906200164f565b6001600160a01b038216301462000e045762000e0482604051806060016040528060288152602001620050c66028913962000eb1565b600080836001600160a01b03168360405162000e2191906200133c565b600060405180830381855af49150503d806000811462000e5e576040519150601f19603f3d011682016040523d82523d6000602084013e62000e63565b606091505b5090925090508162000d6d5780511562000e93578060405162461bcd60e51b81526004016200078f91906200145c565b60405162461bcd60e51b81526004016200078f90620014ce565b5050565b813b818162000d6d5760405162461bcd60e51b81526004016200078f91906200145c565b600062000ee162000531565b90506001600160a01b03831662000f0c5760405162461bcd60e51b81526004016200078f906200155f565b6001600160a01b03831630141562000f385760405162461bcd60e51b81526004016200078f90620016ac565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000f849162001811565b90508082146200108f576001600160a01b0385166000908152600184016020526040812080548390811062000fc957634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b9250829190859081106200102957634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480620010c757634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b0319169055806200052a576002830154600090620011369060019062001811565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214620012145760008560020183815481106200118957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110620011c957634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b846002018054806200123657634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6116e4806200309e83390190565b61068e806200478283390190565b6102b68062004e1083390190565b6040805160608082018352600080835260208301529181019190915290565b600060208284031215620012e3578081fd5b81516001600160a01b0381168114620012fa578182fd5b9392505050565b6001600160a01b03169052565b60008151808452620013288160208601602086016200182b565b601f01601f19169290920160200192915050565b60008251620013508184602087016200182b565b9190910192915050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b848110156200142957898303607f19018652815180516001600160a01b03168452848101518985019060038110620013c657634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b80831015620014135783516001600160e01b0319168252928701926001929092019190870190620013e7565b5097860197945050509083019060010162001380565b5050620014398289018b62001301565b87810360408901526200144d818a6200130e565b9b9a5050505050505050505050565b600060208252620012fa60208301846200130e565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60408201527f6e207468617420616c7265616479206578697374730000000000000000000000606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260408201527f657373206d757374206265206164647265737328302900000000000000000000606082015260800190565b6000828210156200182657620018266200189d565b500390565b60005b83811015620018485781810151838201526020016200182e565b8381111562000d6d5750506000910152565b600061ffff808316818114156200187557620018756200189d565b6001019392505050565b60006000198214156200189657620018966200189d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6117db80620018c36000396000f3fe60806040908152600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60208190529190205481906001600160a01b0316806100715760405162461bcd60e51b8152600401610068906114db565b60405180910390fd5b3660008037600080366000845af43d6000803e808015610090573d6000f35b3d6000fd5b600061009f6104c4565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60408051600380825260808201909252600091816020015b610115611176565b81526020019060019003908161010d5750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b8160008151811061017657634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03871681529081016000815260200182815250826000815181106101d457634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051600580825260c0820190925290816020016020820280368337019050509050637a0ed62760e01b8160008151811061022b57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b908290600190811061027057634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106102b557634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060039081106102fa57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b908290600490811061033f57634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038616815290810160008152602001828152508260018151811061039d57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516002808252606082019092529081602001602082028036833701905050905063f2fde38b60e01b816000815181106103f457634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101909101528051638da5cb5b60e01b908290600190811061043957634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038516815290810160008152602001828152508260028151811061049757634e487b7160e01b600052603260045260246000fd5b60200260200101819052506104bd826000604051806020016040528060008152506104e8565b5050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60005b835181101561070b57600084828151811061051657634e487b7160e01b600052603260045260246000fd5b60200260200101516020015190506000600281111561054557634e487b7160e01b600052602160045260246000fd5b81600281111561056557634e487b7160e01b600052602160045260246000fd5b14156105d0576105cb85838151811061058e57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106105ba57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610756565b6106f8565b60018160028111156105f257634e487b7160e01b600052602160045260246000fd5b1415610658576105cb85838151811061061b57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061064757634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610979565b600281600281111561067a57634e487b7160e01b600052602160045260246000fd5b14156106e0576105cb8583815181106106a357634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106106cf57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610bb6565b60405162461bcd60e51b815260040161006890611448565b508061070381611728565b9150506104eb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161073f939291906111ea565b60405180910390a16107518282610c8f565b505050565b60008151116107775760405162461bcd60e51b8152600401610068906113a0565b60006107816104c4565b90506001600160a01b0383166107a95760405162461bcd60e51b81526004016100689061148f565b6001600160a01b038316600090815260018201602052604090205461ffff811661084b576107ef8460405180606001604052806024815260200161178260249139610db7565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156104bd57600084828151811061087957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156108c95760405162461bcd60e51b8152600401610068906115bb565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558361096181611706565b9450505050808061097190611728565b91505061084e565b600081511161099a5760405162461bcd60e51b8152600401610068906113a0565b60006109a46104c4565b90506001600160a01b0383166109cc5760405162461bcd60e51b81526004016100689061148f565b6001600160a01b038316600090815260018201602052604090205461ffff8116610a6e57610a128460405180606001604052806024815260200161178260249139610db7565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156104bd576000848281518110610a9c57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908716811415610af25760405162461bcd60e51b815260040161006890611610565b610afc8183610dd8565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583610b9e81611706565b94505050508080610bae90611728565b915050610a71565b6000815111610bd75760405162461bcd60e51b8152600401610068906113a0565b6000610be16104c4565b90506001600160a01b03831615610c0a5760405162461bcd60e51b81526004016100689061166d565b60005b8251811015610c89576000838281518110610c3857634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b0316610c748183610dd8565b50508080610c8190611728565b915050610c0d565b50505050565b6001600160a01b038216610cc157805115610cbc5760405162461bcd60e51b8152600401610068906112fd565b610db3565b6000815111610ce25760405162461bcd60e51b815260040161006890611510565b6001600160a01b0382163014610d1457610d148260405180606001604052806028815260200161175a60289139610db7565b600080836001600160a01b031683604051610d2f91906111ce565b600060405180830381855af49150503d8060008114610d6a576040519150601f19603f3d011682016040523d82523d6000602084013e610d6f565b606091505b50909250905081610c8957805115610d9b578060405162461bcd60e51b815260040161006891906112e3565b60405162461bcd60e51b81526004016100689061135a565b5050565b813b8181610c895760405162461bcd60e51b815260040161006891906112e3565b6000610de26104c4565b90506001600160a01b038316610e0a5760405162461bcd60e51b8152600401610068906113eb565b6001600160a01b038316301415610e335760405162461bcd60e51b81526004016100689061156d565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610e7d916116c3565b9050808214610f85576001600160a01b03851660009081526001840160205260408120805483908110610ec057634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610f1f57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610fbc57634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b0319169055806104bd576002830154600090611028906001906116c3565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821461110357600085600201838154811061107957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b0390921692508291849081106110b857634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b8460020180548061112457634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6040805160608082018352600080835260208301529181019190915290565b6001600160a01b03169052565b600081518084526111ba8160208601602086016116da565b601f01601f19169290920160200192915050565b600082516111e08184602087016116da565b9190910192915050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b848110156112b457898303607f19018652815180516001600160a01b0316845284810151898501906003811061125457634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b8083101561129f5783516001600160e01b0319168252928701926001929092019190870190611275565b50978601979450505090830190600101611210565b50506112c28289018b611195565b87810360408901526112d4818a6111a2565b9b9a5050505050505050505050565b6000602082526112f660208301846111a2565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252818101527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604082015260600190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b6000828210156116d5576116d5611743565b500390565b60005b838110156116f55781810151838201526020016116dd565b83811115610c895750506000910152565b600061ffff8083168181141561171e5761171e611743565b6001019392505050565b600060001982141561173c5761173c611743565b5060010190565b634e487b7160e01b600052601160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220991a48ccf95d04c6fbc41dc5d88d2e9e3df219a6ab5d9c3cce53f2c4f8cf9cd064736f6c63430008010033608060405234801561001057600080fd5b506116c4806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610e17565b610045565b005b61004d61009e565b61009761005a8587611490565b8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100ec92505050565b5050505050565b6100a661035a565b600401546001600160a01b03166100bb61037e565b6001600160a01b0316146100ea5760405162461bcd60e51b81526004016100e1906110f4565b60405180910390fd5b565b60005b835181101561030f57600084828151811061011a57634e487b7160e01b600052603260045260246000fd5b60200260200101516020015190506000600281111561014957634e487b7160e01b600052602160045260246000fd5b81600281111561016957634e487b7160e01b600052602160045260246000fd5b14156101d4576101cf85838151811061019257634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106101be57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516103db565b6102fc565b60018160028111156101f657634e487b7160e01b600052602160045260246000fd5b141561025c576101cf85838151811061021f57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061024b57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516105fe565b600281600281111561027e57634e487b7160e01b600052602160045260246000fd5b14156102e4576101cf8583815181106102a757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106102d357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161083b565b60405162461bcd60e51b81526004016100e1906111de565b5080610307816115fb565b9150506100ef565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161034393929190610f3e565b60405180910390a16103558282610914565b505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6000333014156103d557600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506103d89050565b50335b90565b60008151116103fc5760405162461bcd60e51b81526004016100e190611136565b600061040661035a565b90506001600160a01b03831661042e5760405162461bcd60e51b81526004016100e190611225565b6001600160a01b038316600090815260018201602052604090205461ffff81166104d0576104748460405180606001604052806024815260200161166b60249139610a3c565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156100975760008482815181106104fe57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0316801561054e5760405162461bcd60e51b81526004016100e19061131c565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff871602179055836105e6816115d9565b945050505080806105f6906115fb565b9150506104d3565b600081511161061f5760405162461bcd60e51b81526004016100e190611136565b600061062961035a565b90506001600160a01b0383166106515760405162461bcd60e51b81526004016100e190611225565b6001600160a01b038316600090815260018201602052604090205461ffff81166106f3576106978460405180606001604052806024815260200161166b60249139610a3c565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561009757600084828151811061072157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156107775760405162461bcd60e51b81526004016100e190611371565b6107818183610a5d565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583610823816115d9565b94505050508080610833906115fb565b9150506106f6565b600081511161085c5760405162461bcd60e51b81526004016100e190611136565b600061086661035a565b90506001600160a01b0383161561088f5760405162461bcd60e51b81526004016100e1906113ce565b60005b825181101561090e5760008382815181106108bd57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166108f98183610a5d565b50508080610906906115fb565b915050610892565b50505050565b6001600160a01b038216610946578051156109415760405162461bcd60e51b81526004016100e190611051565b610a38565b60008151116109675760405162461bcd60e51b81526004016100e190611271565b6001600160a01b0382163014610999576109998260405180606001604052806028815260200161164360289139610a3c565b600080836001600160a01b0316836040516109b49190610f22565b600060405180830381855af49150503d80600081146109ef576040519150601f19603f3d011682016040523d82523d6000602084013e6109f4565b606091505b5090925090508161090e57805115610a20578060405162461bcd60e51b81526004016100e19190611037565b60405162461bcd60e51b81526004016100e1906110ae565b5050565b813b818161090e5760405162461bcd60e51b81526004016100e19190611037565b6000610a6761035a565b90506001600160a01b038316610a8f5760405162461bcd60e51b81526004016100e190611181565b6001600160a01b038316301415610ab85760405162461bcd60e51b81526004016100e1906112ce565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610b0291611479565b9050808214610c0a576001600160a01b03851660009081526001840160205260408120805483908110610b4557634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610ba457634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610c4157634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b031916905580610097576002830154600090610cad90600190611479565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610d88576000856002018381548110610cfe57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110610d3d57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610da957634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b80356001600160a01b0381168114610e1257600080fd5b919050565b600080600080600060608688031215610e2e578081fd5b853567ffffffffffffffff80821115610e45578283fd5b818801915088601f830112610e58578283fd5b813581811115610e66578384fd5b60208a818284028601011115610e7a578485fd5b8084019850819750610e8d818b01610dfb565b965060408a0135935082841115610ea2578485fd5b838a0193508a601f850112610eb5578485fd5b8335915082821115610ec5578485fd5b8a81838601011115610ed5578485fd5b979a96995094975050909401935090919050565b6001600160a01b03169052565b60008151808452610f0e8160208601602086016115ad565b601f01601f19169290920160200192915050565b60008251610f348184602087016115ad565b9190910192915050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b8481101561100857898303607f19018652815180516001600160a01b03168452848101518985019060038110610fa857634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b80831015610ff35783516001600160e01b0319168252928701926001929092019190870190610fc9565b50978601979450505090830190600101610f64565b50506110168289018b610ee9565b8781036040890152611028818a610ef6565b9b9a5050505050505050505050565b60006020825261104a6020830184610ef6565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b60208082526022908201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60408201526132b960f11b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561144d5761144d61162c565b604052919050565b600067ffffffffffffffff82111561146f5761146f61162c565b5060209081020190565b60008282101561148b5761148b611616565b500390565b60006114a361149e84611455565b611424565b8381526020808201919084845b878110156115a1578135870160608082360312156114cc578788fd5b6114d581611424565b90506114e082610dfb565b815284820135600381106114f2578889fd5b8186015260408281013567ffffffffffffffff81111561151057898afd5b929092019136601f840112611523578889fd5b823561153161149e82611455565b81815287810190858901368a850288018b01111561154d578c8dfd5b8c96505b838710156115845780356001600160e01b031981168114611570578d8efd5b835260019690960195918901918901611551565b5092840192909252505086525093820193908201906001016114b0565b50919695505050505050565b60005b838110156115c85781810151838201526020016115b0565b8381111561090e5750506000910152565b600061ffff808316818114156115f1576115f1611616565b6001019392505050565b600060001982141561160f5761160f611616565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220d92c2242b54ddf70b61c6705a16641c554201aeab7b3b82072c87efc6eac051064736f6c63430008010033608060405234801561001057600080fd5b5061066e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c146100855780637a0ed6271461009a578063adfca15e146100af578063cdffacc6146100cf575b600080fd5b61006f61006a3660046104ac565b6100ef565b60405161007c9190610606565b60405180910390f35b61008d610122565b60405161007c919061052c565b6100a261018e565b60405161007c919061058c565b6100c26100bd36600461047e565b610363565b60405161007c9190610579565b6100e26100dd3660046104ac565b61040d565b60405161007c9190610518565b6000806100fa610442565b6001600160e01b0319841660009081526003909101602052604090205460ff16915050919050565b6060600061012e610442565b6002810180546040805160208084028201810190925282815293945083018282801561018357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610165575b505050505091505090565b6060600061019a610442565b60028101549091508067ffffffffffffffff8111156101c957634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561020257816020015b6101ef610466565b8152602001906001900390816101e75790505b50925060005b8181101561035d57600083600201828154811061023557634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031690508085838151811061027657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561031557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102d75790505b505050505085838151811061033a57634e487b7160e01b600052603260045260246000fd5b60200260200101516020018190525050808061035590610611565b915050610208565b50505090565b6060600061036f610442565b6001600160a01b0384166000908152600182016020908152604091829020805483518184028101840190945280845293945091929083018282801561040057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116103c25790505b5050505050915050919050565b600080610418610442565b6001600160e01b03199093166000908152602093909352505060409020546001600160a01b031690565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60408051808201909152600081526060602082015290565b60006020828403121561048f578081fd5b81356001600160a01b03811681146104a5578182fd5b9392505050565b6000602082840312156104bd578081fd5b81356001600160e01b0319811681146104a5578182fd5b6000815180845260208085019450808401835b8381101561050d5781516001600160e01b031916875295820195908201906001016104e7565b509495945050505050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b8181101561056d5783516001600160a01b031683529284019291840191600101610548565b50909695505050505050565b6000602082526104a560208301846104d4565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156105f857888303603f19018552815180516001600160a01b031684528701518784018790526105e5878501826104d4565b95880195935050908601906001016105b0565b509098975050505050505050565b901515815260200190565b600060001982141561063157634e487b7160e01b81526011600452602481fd5b506001019056fea2646970667358221220e974872b33a9693d2454ffea8295365d6ebcbeb98aa6df766605c218fab9a65a64736f6c63430008010033608060405234801561001057600080fd5b50610296806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b14610059575b600080fd5b61004361006e565b604051610050919061020a565b60405180910390f35b61006c6100673660046101dc565b61007d565b005b6000610078610091565b905090565b6100856100ad565b61008e816100fb565b50565b600061009b61015b565b600401546001600160a01b0316919050565b6100b561015b565b600401546001600160a01b03166100ca61017f565b6001600160a01b0316146100f95760405162461bcd60e51b81526004016100f09061021e565b60405180910390fd5b565b600061010561015b565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6000333014156101d657600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506101d99050565b50335b90565b6000602082840312156101ed578081fd5b81356001600160a01b0381168114610203578182fd5b9392505050565b6001600160a01b0391909116815260200190565b60208082526022908201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60408201526132b960f11b60608201526080019056fea2646970667358221220e271d514a26b086cf723d279217d51c7e4c57ca51ff9152a4bf0a36b2bf8a55764736f6c634300080100334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465000000000000000000000000819c3fc356bb319035f9d2886fac9e57df0343f5

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

000000000000000000000000819c3fc356bb319035f9d2886fac9e57df0343f5

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x819c3fc356bb319035f9d2886fac9e57df0343f5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000819c3fc356bb319035f9d2886fac9e57df0343f5


Deployed ByteCode Sourcemap

21817:1184:0:-:0;;;;;22246:36;22468:7;;-1:-1:-1;;;;;;22468:7:0;22438:38;;5411:45;22438:38;;;;;;;:51;5411:45;;-1:-1:-1;;;;;22438:51:0;;22500:64;;;;-1:-1:-1;;;22500:64:0;;;;;;;:::i;:::-;;;;;;;;;22618:14;22615:1;22612;22599:34;22710:1;22707;22691:14;22688:1;22681:5;22674;22661:51;22747:16;22744:1;22741;22726:38;22785:6;22809:76;;;;22944:16;22941:1;22934:27;22809:76;22849:16;22846:1;22839:27;6805:269;6870:25;6898:16;:14;:16::i;:::-;6949;;;;;-1:-1:-1;;;;;6976:28:0;;;-1:-1:-1;;;;;;6976:28:0;;;;;;;7020:46;;6870:44;;-1:-1:-1;6949:16:0;;;;7020:46;;6925:21;;7020:46;6805:269;;;:::o;7496:1477::-;7694:29;;;7721:1;7694:29;;;;;;;;;7658:33;;7694:29;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;7770:15:0;;;7783:1;7770:15;;;;;;;;;7658:65;;-1:-1:-1;7734:33:0;;7770:15;;;;;;;;;;;;-1:-1:-1;7770:15:0;7734:51;;7819:31;;;7796:17;7814:1;7796:20;;;;;;-1:-1:-1;;;7796:20:0;;;;;;;;;-1:-1:-1;;;;;;7796:54:0;;;:20;;;;;;;;;;:54;7870:132;;;;;;;;;-1:-1:-1;;;;;7870:132:0;;;;;;;-1:-1:-1;7870:132:0;;;;7983:17;7870:132;;;7861:3;7865:1;7861:6;;;;;;-1:-1:-1;;;7861:6:0;;;;;;;;;;;;;;;;;;:141;8033:15;;;8046:1;8033:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8033:15:0;8013:35;;8082:29;;;8059:17;8077:1;8059:20;;;;;;-1:-1:-1;;;8059:20:0;;;;;;;;;-1:-1:-1;;;;;;8059:52:0;;;:20;;;;;;;;;;;:52;8122:20;;-1:-1:-1;;;8145:45:0;8122:17;;8140:1;;8122:20;;;;-1:-1:-1;;;8122:20:0;;;;;;;;;-1:-1:-1;;;;;;8122:68:0;;;:20;;;;;;;;;;;:68;8201:20;;-1:-1:-1;;;8224:37:0;8201:17;;8219:1;;8201:20;;;;-1:-1:-1;;;8201:20:0;;;;;;;;;-1:-1:-1;;;;;;8201:60:0;;;:20;;;;;;;;;;;:60;8272:20;;-1:-1:-1;;;8295:35:0;8272:17;;8290:1;;8272:20;;;;-1:-1:-1;;;8272:20:0;;;;;;;;;-1:-1:-1;;;;;;8272:58:0;;;:20;;;;;;;;;;;:58;8341:20;;-1:-1:-1;;;8364:34:0;8341:17;;8359:1;;8341:20;;;;-1:-1:-1;;;8341:20:0;;;;;;;;;-1:-1:-1;;;;;;8341:57:0;;;:20;;;;;;;;;;:57;8418:184;;;;;;;;;-1:-1:-1;;;;;8418:184:0;;;;;;;-1:-1:-1;8418:184:0;;;;8573:17;8418:184;;;8409:3;8413:1;8409:6;;;;;;-1:-1:-1;;;8409:6:0;;;;;;;;;;;;;;;;;;:193;8633:15;;;8646:1;8633:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8633:15:0;8613:35;;8682:34;;;8659:17;8677:1;8659:20;;;;;;-1:-1:-1;;;8659:20:0;;;;;;;;;-1:-1:-1;;;;;;8659:57:0;;;:20;;;;;;;;;;;:57;8727:20;;-1:-1:-1;;;8750:22:0;8727:17;;8745:1;;8727:20;;;;-1:-1:-1;;;8727:20:0;;;;;;;;;-1:-1:-1;;;;;;8727:45:0;;;:20;;;;;;;;;;:45;8792:131;;;;;;;;;-1:-1:-1;;;;;8792:131:0;;;;;;;-1:-1:-1;8792:131:0;;;;8904:17;8792:131;;;8783:3;8787:1;8783:6;;;;;;-1:-1:-1;;;8783:6:0;;;;;;;;;;;;;;:140;;;;8934:31;8945:3;8958:1;8934:31;;;;;;;;;;;;:10;:31::i;:::-;7496:1477;;;;;:::o;6503:202::-;5411:45;;6653:::o;9029:1086::-;9190:18;9185:817;9223:11;:18;9210:10;:31;9185:817;;;9272:33;9308:11;9320:10;9308:23;;;;;;-1:-1:-1;;;9308:23:0;;;;;;;;;;;;;;;:30;;;9272:66;;9367:30;9357:40;;;;;;-1:-1:-1;;;9357:40:0;;;;;;;;;:6;:40;;;;;;-1:-1:-1;;;9357:40:0;;;;;;;;;;9353:638;;;9418:93;9431:11;9443:10;9431:23;;;;;;-1:-1:-1;;;9431:23:0;;;;;;;;;;;;;;;:36;;;9469:11;9481:10;9469:23;;;;;;-1:-1:-1;;;9469:23:0;;;;;;;;;;;;;;;:41;;;9418:12;:93::i;:::-;9353:638;;;9547:34;9537:6;:44;;;;;;-1:-1:-1;;;9537:44:0;;;;;;;;;;9533:458;;;9602:97;9619:11;9631:10;9619:23;;;;;;-1:-1:-1;;;9619:23:0;;;;;;;;;;;;;;;:36;;;9657:11;9669:10;9657:23;;;;;;-1:-1:-1;;;9657:23:0;;;;;;;;;;;;;;;:41;;;9602:16;:97::i;9533:458::-;9735:33;9725:6;:43;;;;;;-1:-1:-1;;;9725:43:0;;;;;;;;;;9721:270;;;9789:96;9805:11;9817:10;9805:23;;;;;;-1:-1:-1;;;9805:23:0;;;;;;;;;;;;;;;:36;;;9843:11;9855:10;9843:23;;;;;;-1:-1:-1;;;9843:23:0;;;;;;;;;;;;;;;:41;;;9789:15;:96::i;9721:270::-;9926:49;;-1:-1:-1;;;9926:49:0;;;;;;;:::i;9721:270::-;-1:-1:-1;9243:12:0;;;;:::i;:::-;;;;9185:817;;;;10017:41;10028:11;10041:5;10048:9;10017:41;;;;;;;;:::i;:::-;;;;;;;;10069:38;10090:5;10097:9;10069:20;:38::i;:::-;9029:1086;;;:::o;10123:1572::-;10260:1;10232:18;:25;:29;10224:85;;;;-1:-1:-1;;;10224:85:0;;;;;;;:::i;:::-;10320:25;10348:16;:14;:16::i;:::-;10320:44;-1:-1:-1;;;;;;10461:27:0;;10453:84;;;;-1:-1:-1;;;10453:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10581:40:0;;10548:23;10581:40;;;:25;;;:40;;;;;:65;10717:21;;;10713:294;;10755:77;10778:13;10755:77;;;;;;;;;;;;;;;;;:22;:77::i;:::-;10918:17;;;:24;;-1:-1:-1;;;;;10847:40:0;;;;;;:25;;;;:40;;;;;;;:61;;:96;;-1:-1:-1;;10847:96:0;;;;;;;;;;;;10958:37;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10958:37:0;;;;;;10713:294;11022:21;11017:671;11061:18;:25;11045:13;:41;11017:671;;;11120:15;11138:18;11157:13;11138:33;;;;;;-1:-1:-1;;;11138:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11212:39:0;;11186:23;11212:39;;;;;;;;;;;:52;11138:33;;-1:-1:-1;;;;;;11212:52:0;11287:29;;11279:95;;;;-1:-1:-1;;;11279:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11389:40:0;;;;;;:25;;;;:40;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11477:39:0;;;;;;;;;:68;;-1:-1:-1;;;;;;11477:68:0;;;;-1:-1:-1;;;;11560:83:0;-1:-1:-1;;;11560:83:0;;;;;;;;11658:18;11560:83;11658:18;:::i;:::-;;;;11017:671;;11088:15;;;;;:::i;:::-;;;;11017:671;;11703:1589;11844:1;11816:18;:25;:29;11808:85;;;;-1:-1:-1;;;11808:85:0;;;;;;;:::i;:::-;11904:25;11932:16;:14;:16::i;:::-;11904:44;-1:-1:-1;;;;;;11967:27:0;;11959:84;;;;-1:-1:-1;;;11959:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12087:40:0;;12054:23;12087:40;;;:25;;;:40;;;;;:65;12223:21;;;12219:294;;12261:77;12284:13;12261:77;;;;;;;;;;;;;;;;;:22;:77::i;:::-;12424:17;;;:24;;-1:-1:-1;;;;;12353:40:0;;;;;;:25;;;;:40;;;;;;;:61;;:96;;-1:-1:-1;;12353:96:0;;;;;;;;;;;;12464:37;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12464:37:0;;;;;;12219:294;12528:21;12523:762;12567:18;:25;12551:13;:41;12523:762;;;12626:15;12644:18;12663:13;12644:33;;;;;;-1:-1:-1;;;12644:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12718:39:0;;12692:23;12718:39;;;;;;;;;;;:52;12644:33;;-1:-1:-1;;;;;;12718:52:0;;;;12793:32;;;;;12785:101;;;;-1:-1:-1;;;12785:101:0;;;;;;;:::i;:::-;12901:41;12916:15;12933:8;12901:14;:41::i;:::-;-1:-1:-1;;;;;;12986:39:0;;:29;:39;;;;;;;;;;;:83;;-1:-1:-1;;;;12986:83:0;-1:-1:-1;;;12986:83:0;;;;;;;-1:-1:-1;;;;;13084:40:0;;;;;-1:-1:-1;13084:25:0;;;:40;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;12986:83;13084:73;;;;;;;;;;;;;;;;;;;;;13172:39;;;;;;;:68;;-1:-1:-1;;;;;;13172:68:0;;;;12986:83;13255:18;12986:83;13255:18;:::i;:::-;;;;12523:762;;12594:15;;;;;:::i;:::-;;;;12523:762;;13300:748;13440:1;13412:18;:25;:29;13404:85;;;;-1:-1:-1;;;13404:85:0;;;;;;;:::i;:::-;13500:25;13528:16;:14;:16::i;:::-;13500:44;-1:-1:-1;;;;;;13629:27:0;;;13621:94;;;;-1:-1:-1;;;13621:94:0;;;;;;;:::i;:::-;13731:21;13726:315;13770:18;:25;13754:13;:41;13726:315;;;13829:15;13847:18;13866:13;13847:33;;;;;;-1:-1:-1;;;13847:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13921:39:0;;13895:23;13921:39;;;;;;;;;;;:52;13847:33;;-1:-1:-1;;;;;;13921:52:0;13988:41;13921:52;13847:33;13988:14;:41::i;:::-;13726:315;;13797:15;;;;;:::i;:::-;;;;13726:315;;;;13300:748;;;:::o;16312:897::-;-1:-1:-1;;;;;16405:19:0;;16401:801;;16449:16;;:21;16441:94;;;;-1:-1:-1;;;16441:94:0;;;;;;;:::i;:::-;16401:801;;;16595:1;16576:9;:16;:20;16568:94;;;;-1:-1:-1;;;16568:94:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16681:22:0;;16698:4;16681:22;16677:136;;16724:73;16747:5;16724:73;;;;;;;;;;;;;;;;;:22;:73::i;:::-;16828:12;16842:18;16864:5;-1:-1:-1;;;;;16864:18:0;16883:9;16864:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16827:66:0;;-1:-1:-1;16827:66:0;-1:-1:-1;16912:16:0;16908:283;;16953:12;;:16;16949:227;;17052:5;17038:21;;-1:-1:-1;;;17038:21:0;;;;;;;;:::i;16949:227::-;17108:48;;-1:-1:-1;;;17108:48:0;;;;;;;:::i;16401:801::-;16312:897;;:::o;17217:268::-;17393:22;;17463:13;17444:17;17436:41;;;;-1:-1:-1;;;17436:41:0;;;;;;;;:::i;14056:2248::-;14141:25;14169:16;:14;:16::i;:::-;14141:44;-1:-1:-1;;;;;;14204:27:0;;14196:95;;;;-1:-1:-1;;;14196:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14388:30:0;;14413:4;14388:30;;14380:89;;;;-1:-1:-1;;;14380:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;14582:40:0;;14555:24;14582:40;;;;;;;;;;;:65;-1:-1:-1;;;;;14689:40:0;;;;14757:1;14689:25;;;:40;;;;;;:65;-1:-1:-1;;;14582:65:0;;;;;;14555:24;14689:69;;;:::i;:::-;14658:100;;14862:20;14842:16;:40;14838:391;;-1:-1:-1;;;;;14921:40:0;;14899:19;14921:40;;;:25;;;:40;;;;;:80;;14980:20;;14921:80;;;;-1:-1:-1;;;14921:80:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15016:40:0;;;;:25;;;:40;;;;;;;:76;;14921:80;;;;;;;;;;;;;;-1:-1:-1;14921:80:0;;15016:40;15075:16;;15016:76;;;;-1:-1:-1;;;15016:76:0;;;;;;;;;;;;;;;;;;;;;:91;;;:76;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15122:43:0;;;;;;;;;;;;:95;;-1:-1:-1;;;;15122:95:0;-1:-1:-1;;;15122:95:0;;;;;;;14838:391;-1:-1:-1;;;;;15276:40:0;;;;;;:25;;;:40;;;;;:64;;;;;-1:-1:-1;;;15276:64:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;15276:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15358:40:0;;;;;;;;;;15351:47;;-1:-1:-1;;;;;;15351:47:0;;;15496:25;15492:805;;15665:17;;;:24;15630:32;;15665:28;;15692:1;;15665:28;:::i;:::-;-1:-1:-1;;;;;15739:40:0;;15708:28;15739:40;;;:25;;;;:40;;;;;;:61;;15630:63;;-1:-1:-1;15739:61:0;;15819:48;;;15815:350;;15888:24;15915:2;:17;;15933:24;15915:43;;;;;;-1:-1:-1;;;15915:43:0;;;;;;;;;;;;;;;;;;;15977:17;;;:39;;-1:-1:-1;;;;;15915:43:0;;;;-1:-1:-1;15915:43:0;;15995:20;;15977:39;;;;-1:-1:-1;;;15977:39:0;;;;;;;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;15977:58:0;-1:-1:-1;;;;;15977:58:0;;;;;;16054:43;;;;;;-1:-1:-1;16054:25:0;;;:43;;;;;;:64;:95;;-1:-1:-1;;16054:95:0;;;;;;;15815:350;16179:2;:17;;:23;;;;;-1:-1:-1;;;16179:23:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16179:23:0;;;;;-1:-1:-1;;;;;;16179:23:0;;;;;;;;;-1:-1:-1;;;;;16224:40:0;;;;16179:23;16224:25;;;:40;;;;;;;:61;16217:68;;-1:-1:-1;;16217:68:0;;;-1:-1:-1;;14056:2248:0;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:106:1:-;-1:-1:-1;;;;;82:31:1;70:44;;60:60::o;125:259::-;;206:5;200:12;233:6;228:3;221:19;249:63;305:6;298:4;293:3;289:14;282:4;275:5;271:16;249:63;:::i;:::-;366:2;345:15;-1:-1:-1;;341:29:1;332:39;;;;373:4;328:50;;176:208;-1:-1:-1;;176:208:1:o;389:274::-;;556:6;550:13;572:53;618:6;613:3;606:4;598:6;594:17;572:53;:::i;:::-;641:16;;;;;526:137;-1:-1:-1;;526:137:1:o;668:2103::-;961:2;1013:21;;;1083:13;;986:18;;;1105:22;;;668:2103;;961:2;1146:3;;1165:18;;;;1202:4;1248:15;;;1233:31;;1229:40;;1292:15;;;668:2103;1338:1258;1352:6;1349:1;1346:13;1338:1258;;;1417:22;;;-1:-1:-1;;1413:37:1;1401:50;;1474:13;;1561:9;;-1:-1:-1;;;;;1557:35:1;1542:51;;1632:11;;;1626:18;1514:15;;;;1684:1;1667:19;;1657:2;;-1:-1:-1;;;1718:34:1;;1779:4;1776:1;1769:15;1814:4;1725;1801:18;1657:2;1853:15;;;1846:37;1906:4;1951:11;;;1945:18;1983:15;;;1976:27;;;2064:21;;2098:24;;;;2188:23;;;;2235:4;;2144:15;;;;2252:236;2268:8;2263:3;2260:17;2252:236;;;2349:15;;-1:-1:-1;;;;;;2345:42:1;2331:57;;2457:17;;;;2296:1;2287:11;;;;;2414:14;;;;2252:236;;;-1:-1:-1;2574:12:1;;;;2511:5;-1:-1:-1;;;2539:15:1;;;;1374:1;1367:9;1338:1258;;;1342:3;;2605:48;2649:2;2638:9;2634:18;2626:6;2605:48;:::i;:::-;2703:9;2695:6;2691:22;2684:4;2673:9;2669:20;2662:52;2731:34;2758:6;2750;2731:34;:::i;:::-;2723:42;941:1830;-1:-1:-1;;;;;;;;;;;941:1830:1:o;2776:221::-;;2925:2;2914:9;2907:21;2945:46;2987:2;2976:9;2972:18;2964:6;2945:46;:::i;:::-;2937:54;2897:100;-1:-1:-1;;;2897:100:1:o;3002:424::-;3204:2;3186:21;;;3243:2;3223:18;;;3216:30;3282:34;3277:2;3262:18;;3255:62;3353:30;3348:2;3333:18;;3326:58;3416:3;3401:19;;3176:250::o;3431:402::-;3633:2;3615:21;;;3672:2;3652:18;;;3645:30;3711:34;3706:2;3691:18;;3684:62;-1:-1:-1;;;3777:2:1;3762:18;;3755:36;3823:3;3808:19;;3605:228::o;3838:407::-;4040:2;4022:21;;;4079:2;4059:18;;;4052:30;4118:34;4113:2;4098:18;;4091:62;-1:-1:-1;;;4184:2:1;4169:18;;4162:41;4235:3;4220:19;;4012:233::o;4250:419::-;4452:2;4434:21;;;4491:2;4471:18;;;4464:30;4530:34;4525:2;4510:18;;4503:62;4601:25;4596:2;4581:18;;4574:53;4659:3;4644:19;;4424:245::o;4674:403::-;4876:2;4858:21;;;4915:2;4895:18;;;4888:30;4954:34;4949:2;4934:18;;4927:62;-1:-1:-1;;;5020:2:1;5005:18;;4998:37;5067:3;5052:19;;4848:229::o;5082:408::-;5284:2;5266:21;;;5323:2;5303:18;;;5296:30;5362:34;5357:2;5342:18;;5335:62;-1:-1:-1;;;5428:2:1;5413:18;;5406:42;5480:3;5465:19;;5256:234::o;5495:356::-;5697:2;5679:21;;;5716:18;;;5709:30;5775:34;5770:2;5755:18;;5748:62;5842:2;5827:18;;5669:182::o;5856:425::-;6058:2;6040:21;;;6097:2;6077:18;;;6070:30;6136:34;6131:2;6116:18;;6109:62;6207:31;6202:2;6187:18;;6180:59;6271:3;6256:19;;6030:251::o;6286:410::-;6488:2;6470:21;;;6527:2;6507:18;;;6500:30;6566:34;6561:2;6546:18;;6539:62;-1:-1:-1;;;6632:2:1;6617:18;;6610:44;6686:3;6671:19;;6460:236::o;6701:417::-;6903:2;6885:21;;;6942:2;6922:18;;;6915:30;6981:34;6976:2;6961:18;;6954:62;-1:-1:-1;;;7047:2:1;7032:18;;7025:51;7108:3;7093:19;;6875:243::o;7123:420::-;7325:2;7307:21;;;7364:2;7344:18;;;7337:30;7403:34;7398:2;7383:18;;7376:62;7474:26;7469:2;7454:18;;7447:54;7533:3;7518:19;;7297:246::o;7548:418::-;7750:2;7732:21;;;7789:2;7769:18;;;7762:30;7828:34;7823:2;7808:18;;7801:62;-1:-1:-1;;;7894:2:1;7879:18;;7872:52;7956:3;7941:19;;7722:244::o;7971:125::-;;8039:1;8036;8033:8;8030:2;;;8044:18;;:::i;:::-;-1:-1:-1;8081:9:1;;8020:76::o;8101:258::-;8173:1;8183:113;8197:6;8194:1;8191:13;8183:113;;;8273:11;;;8267:18;8254:11;;;8247:39;8219:2;8212:10;8183:113;;;8314:6;8311:1;8308:13;8305:2;;;-1:-1:-1;;8349:1:1;8331:16;;8324:27;8154:205::o;8364:197::-;;8430:6;8471:2;8464:5;8460:14;8498:2;8489:7;8486:15;8483:2;;;8504:18;;:::i;:::-;8553:1;8540:15;;8410:151;-1:-1:-1;;;8410:151:1:o;8566:135::-;;-1:-1:-1;;8626:17:1;;8623:2;;;8646:18;;:::i;:::-;-1:-1:-1;8693:1:1;8682:13;;8613:88::o;8706:127::-;8767:10;8762:3;8758:20;8755:1;8748:31;8798:4;8795:1;8788:15;8822:4;8819:1;8812:15

Swarm Source

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