Contract 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627

Contract Overview

Balance:
0 MATIC

Token:
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x4e0dabdc075675473cc00b14402575a5be48b98585cdec2506cf60b0bc8c7d2cXcall296193512022-12-12 8:04:55169 days 2 hrs ago0x84c9c7dc5091ad2cd6a196cd86581d3a71d551fa IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324459002 1.500000012
0x5a9923c883dc8cf13259dcefc911de7c8485f3b102438df05e488fbd7e8194d6Xcall296193392022-12-12 8:03:55169 days 2 hrs ago0x84c9c7dc5091ad2cd6a196cd86581d3a71d551fa IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324660002 1.50000001
0xaeac255a6c5ae9976387ccb543b8d393f81692378f4940eb38473cacb1021986Xcall296192202022-12-12 7:53:58169 days 2 hrs ago0xd2cac52c2a1d67bd36c5810c211883e140142152 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324285003 1.500000015
0x33e21be277d6a807f6a69e286b7504225368a9944fc0bca77ae9981ac40e0f38Xcall296179472022-12-12 6:07:33169 days 4 hrs ago0x550691e578fcd861b7021f5e17ca70de3cdc465f IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324840003 1.500000014
0xa06083b90236eee6708009084cd433d7bae02e29ff9cac36e5f0b881401cb84fXcall296171112022-12-12 4:57:40169 days 5 hrs ago0x5313af3f7b8991cb3801bd9b3a2564938db9b556 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.00071928575 3.327100009
0x4a42e7f1eb8af2d675694fc1566240e6332fe82ad0878843d951f36623dc6694Xcall296151832022-12-12 2:16:30169 days 8 hrs ago0x93874a43357c6ab7111a8e8bf5a20d59d25d3dd1 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000317286002 1.50000001
0xf81b27bf8ce6e7fdb6cc06a64a59d9edbf7dadef576207316963ffd6ad94ecc2Xcall296105072022-12-11 19:45:37169 days 14 hrs ago0xfed56c5c2396c8aa9b6419aee912979c63b7c2f2 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324111002 1.500000011
0xa961a768afe7e7beba1214df726acd30058c9a353fbd9387c646e33f937cb587Xcall296034422022-12-11 9:55:01170 days 42 mins ago0xa181a3c3460ad5a2650f380352e3e68111e3d60e IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.0003246331.500000004
0x6721dfc14d3a540874d620e92ef2ccda0c61e3e18b7d6e434eb4c772db20cd34Xcall296027272022-12-11 8:55:15170 days 1 hr ago0xc3dd2e390d8571e209d32ed14095b033c073cdde IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000325188002 1.50000001
0x73136552be8f5157c8a6fe5d8eb31b9bd82fbb15e995569dbd36af30156194c9Xcall296027032022-12-11 8:53:15170 days 1 hr ago0xc3dd2e390d8571e209d32ed14095b033c073cdde IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324633002 1.50000001
0x4aa73ae7e1abed195183c7f3af968a21caac80ee2c79808dc25d0a859077407eXcall295992832022-12-11 4:07:21170 days 6 hrs ago0x5313af3f7b8991cb3801bd9b3a2564938db9b556 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000596116537 2.752713099
0xf452d0a89fb3c8d7f0c14208930ddac6e20cb97f8615cbabe8a1f4d8f08a1f6aXcall295992232022-12-11 4:02:20170 days 6 hrs ago0x84c9c7dc5091ad2cd6a196cd86581d3a71d551fa IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000511536391 2.364873796
0xa3c7459df8fa4ee96700bbbc0515937a7805893cff139d14aa4f3dce8171563dXcall295992122022-12-11 4:01:25170 days 6 hrs ago0x84c9c7dc5091ad2cd6a196cd86581d3a71d551fa IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000528291272 2.435509667
0x6a4d8867dd9214ce71a33bf00a19de5583ef43d1994d8d87081669457b0f774dSwap295968422022-12-11 0:43:18170 days 9 hrs ago0x9a74ec99bd88eca680485da7f32fca05af375dcf IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000824112361 6.203796761
0xb974d0d4fa652f349a204495de13d67c852d2761bf63a351b6b83361b7bb24a1Add Swap Liquidi...295968252022-12-11 0:41:53170 days 9 hrs ago0x9a74ec99bd88eca680485da7f32fca05af375dcf IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.001438653427 7.224621996
0x19eb25b44c4f4900d634b3b46fa28f6ad13c354d3fd9601dc9cc48466d5e9d87Swap295968062022-12-11 0:40:18170 days 9 hrs ago0x9a74ec99bd88eca680485da7f32fca05af375dcf IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.001185857349 7.864244876
0x30e6ab2709e62576550572ef3089a80df1b6df1d6721c0b9d64af172a3c6ec15Xcall295900022022-12-10 15:11:31170 days 19 hrs ago0xfed56c5c2396c8aa9b6419aee912979c63b7c2f2 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000786010677 3.631641412
0xe8c514170a8b55aab65ef3137ae61d34cfbf353946745e4670fae95b9c122d9dAdd Swap Liquidi...295893542022-12-10 14:17:21170 days 20 hrs ago0xf18f14c14a59c4895e2f3d08315ae8f8776fd58b IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000325588915 1.651469766
0xdd917fd15edea760b02f961d6e70747c29eba0467762499d61647774353bd2c5Swap295892992022-12-10 14:12:45170 days 20 hrs ago0xf18f14c14a59c4895e2f3d08315ae8f8776fd58b IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000276738043 1.8596737
0x980f45bbf7ee4063ea376215efbcc6018271fcf5b53228e8b396b3fc10450c00Xcall295877422022-12-10 12:02:36170 days 22 hrs ago0x84c9c7dc5091ad2cd6a196cd86581d3a71d551fa IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000378106778 1.74600001
0x1d26e1ee0848d77f37ab7d951d5f9ee66095cbc596dac0c01f19009858079a6aXcall295877332022-12-10 12:01:51170 days 22 hrs ago0x84c9c7dc5091ad2cd6a196cd86581d3a71d551fa IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324459001 1.500000009
0xb550a478cd1492e9a0a4fa7d3b7e2b153cead4e4f2e42e9283591415939c2352Xcall295875492022-12-10 11:46:28170 days 22 hrs ago0x16e68ecd2d9cbf9b0c2e51cd3bfe68d7cd98d5e6 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000325014002 1.50000001
0xd11d4254c5abf8a808bbf439a092e3f9a5cff474f08b7d6bb1e9726c8c1071bcXcall295873702022-12-10 11:31:30170 days 23 hrs ago0x84878408af569ac01808a48f8466cedf782b7ade IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324441001 1.500000009
0xc18f7eafefff186d2e7358b4f0a3c3a47259ee6d3d9cdabf7c65c92504e46534Xcall295870412022-12-10 11:04:00170 days 23 hrs ago0x1a03a9af4baac61d3d7a63663d9737c930171fe5 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324660001 1.500000008
0x373901cd262219af3cc4ea419e5addab4950c5eee5533cdb3a4ea77c74de2b8eXcall295870322022-12-10 11:03:15170 days 23 hrs ago0x1a03a9af4baac61d3d7a63663d9737c930171fe5 IN  0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270 MATIC0.000324285001 1.500000008
[ Download CSV Export 
Latest 4 internal transactions
Parent Txn Hash Block From To Value
0x6bdcd9b235277f939b568072f991c5edefc0bdbe541044ea7bac8f3794e2b744294718652022-12-03 18:35:34177 days 16 hrs ago 0x8361445b480822f129ba6196a7673a1d32fd2067 0xa2f2ed226d4569c8ec09c175ddeef4d41bab46270.01 MATIC
0x5c4fef97ab61e0d20c60f8e874de4c17b47099c3d5bbf38fe6f200581c7b70a2294559642022-12-02 20:26:21178 days 14 hrs ago 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627  Contract Creation0 MATIC
0x795f7539e80671ec19fc90a3f3f9a41da028b24014cc2a261691efe5f30bf65e294552762022-12-02 19:28:50178 days 15 hrs ago 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627  Contract Creation0 MATIC
0x3c5dbd8902a530cbc94406ffdb40ed62df83beefd89645b34775ad5de30052bb293930052022-11-29 4:42:55182 days 5 hrs ago 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x173d82FF0294d4bb83A3AAF30Be958Cbc6D809f7

Contract Name:
ConnextDiamond

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 3 : ConnextDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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

import {LibDiamond} from "../libraries/LibDiamond.sol";
import {IDiamondCut} from "../interfaces/IDiamondCut.sol";

contract ConnextDiamond {
  struct Initialization {
    address initContract;
    bytes initData;
  }

  /// @notice This construct a diamond contract
  /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.
  /// @param _diamondCut the list of facet to add
  /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.
  constructor(
    address _contractOwner,
    IDiamondCut.FacetCut[] memory _diamondCut,
    Initialization[] memory _initializations
  ) payable {
    if (_contractOwner != address(0)) {
      LibDiamond.setContractOwner(_contractOwner);
    }

    LibDiamond.diamondCut(_diamondCut, address(0), "");

    uint256 len = _initializations.length;
    for (uint256 i = 0; i < len; ) {
      LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);

      unchecked {
        ++i;
      }
    }
  }

  // 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;
    // get diamond storage
    assembly {
      ds.slot := position
    }
    // get facet from function selector
    address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
    require(facet != address(0), "Diamond: Function does not exist");
    // Execute external function from facet using delegatecall and return any value.
    assembly {
      // copy function selector and any arguments
      calldatacopy(0, 0, calldatasize())
      // execute function call using the facet
      let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
      // get any return value
      returndatacopy(0, 0, returndatasize())
      // return any return value or error back to the caller
      switch result
      case 0 {
        revert(0, returndatasize())
      }
      default {
        return(0, returndatasize())
      }
    }
  }

  receive() external payable {}
}

File 2 of 3 : IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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

interface IDiamondCut {
  enum FacetCutAction {
    Add,
    Replace,
    Remove
  }
  // Add=0, Replace=1, Remove=2

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

  /// @notice Propose to 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 proposeDiamondCut(
    FacetCut[] calldata _diamondCut,
    address _init,
    bytes calldata _calldata
  ) external;

  event DiamondCutProposed(FacetCut[] _diamondCut, address _init, bytes _calldata, uint256 deadline);

  /// @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);

  /// @notice Propose to 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 rescindDiamondCut(
    FacetCut[] calldata _diamondCut,
    address _init,
    bytes calldata _calldata
  ) external;

  /**
   * @notice Returns the acceptance time for a given proposal
   * @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 getAcceptanceTime(
    FacetCut[] calldata _diamondCut,
    address _init,
    bytes calldata _calldata
  ) external returns (uint256);

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

File 3 of 3 : LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/
import {IDiamondCut} from "../interfaces/IDiamondCut.sol";

// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.
// The loupe functions are required by the EIP2535 Diamonds standard

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

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

  struct FacetFunctionSelectors {
    bytes4[] functionSelectors;
    uint256 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;
    // hash of proposed facets => acceptance time
    mapping(bytes32 => uint256) acceptanceTimes;
    // acceptance delay for upgrading facets
    uint256 acceptanceDelay;
  }

  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();
    emit OwnershipTransferred(ds.contractOwner, _newOwner);
    ds.contractOwner = _newOwner;
  }

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

  function acceptanceDelay() internal view returns (uint256) {
    return diamondStorage().acceptanceDelay;
  }

  function acceptanceTime(bytes32 _key) internal view returns (uint256) {
    return diamondStorage().acceptanceTimes[_key];
  }

  function enforceIsContractOwner() internal view {
    require(msg.sender == diamondStorage().contractOwner, "LibDiamond: !contract owner");
  }

  event DiamondCutProposed(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata, uint256 deadline);

  function proposeDiamondCut(
    IDiamondCut.FacetCut[] memory _diamondCut,
    address _init,
    bytes memory _calldata
  ) internal {
    // NOTE: to save gas, verification that `proposeDiamondCut` and `diamondCut` are not
    // included is performed in `diamondCut`, where there is already a loop over facets.
    // In the case where these cuts are performed, admins must call `rescindDiamondCut`

    DiamondStorage storage ds = diamondStorage();
    uint256 acceptance = block.timestamp + ds.acceptanceDelay;
    ds.acceptanceTimes[keccak256(abi.encode(_diamondCut, _init, _calldata))] = acceptance;
    emit DiamondCutProposed(_diamondCut, _init, _calldata, acceptance);
  }

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

  function rescindDiamondCut(
    IDiamondCut.FacetCut[] memory _diamondCut,
    address _init,
    bytes memory _calldata
  ) internal {
    // NOTE: you can always rescind a proposed facet cut as the owner, even if outside of the validity
    // period or befor the delay elpases
    delete diamondStorage().acceptanceTimes[keccak256(abi.encode(_diamondCut, _init, _calldata))];
    emit DiamondCutRescinded(_diamondCut, _init, _calldata);
  }

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

  // Internal function version of diamondCut
  function diamondCut(
    IDiamondCut.FacetCut[] memory _diamondCut,
    address _init,
    bytes memory _calldata
  ) internal {
    DiamondStorage storage ds = diamondStorage();
    bytes32 key = keccak256(abi.encode(_diamondCut, _init, _calldata));
    if (ds.facetAddresses.length != 0) {
      uint256 time = ds.acceptanceTimes[key];
      require(time != 0 && time <= block.timestamp, "LibDiamond: delay not elapsed");
      // Reset the acceptance time to ensure the same set of updates cannot be replayed
      // without going through a proposal window

      // NOTE: the only time this will not be set to 0 is when there are no
      // existing facet addresses (on initialization, or when starting after a bad upgrade,
      // for example).
      // The only relevant case is the initial case, which has no acceptance time. otherwise,
      // there is no way to update the facet selector mapping to call `diamondCut`.
      // Avoiding setting the empty value will save gas on the initial deployment.
      delete ds.acceptanceTimes[key];
    } // Otherwise, this is the first instance of deployment and it can be set automatically
    uint256 len = _diamondCut.length;
    for (uint256 facetIndex; facetIndex < len; ) {
      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");
      }

      unchecked {
        ++facetIndex;
      }
    }
    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();
    require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)");
    uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
    // add new facet address if it does not exist
    if (selectorPosition == 0) {
      addFacet(ds, _facetAddress);
    }
    uint256 len = _functionSelectors.length;
    for (uint256 selectorIndex; selectorIndex < len; ) {
      bytes4 selector = _functionSelectors[selectorIndex];
      address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
      require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists");
      addFunction(ds, selector, selectorPosition, _facetAddress);
      selectorPosition++;

      unchecked {
        ++selectorIndex;
      }
    }
  }

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

      unchecked {
        ++selectorIndex;
      }
    }
  }

  function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
    require(_functionSelectors.length != 0, "LibDiamondCut: No selectors in facet to cut");
    DiamondStorage storage ds = diamondStorage();
    // get the propose and cut selectors -- can never remove these
    bytes4 proposeSelector = IDiamondCut.proposeDiamondCut.selector;
    bytes4 cutSelector = IDiamondCut.diamondCut.selector;
    // if function does not exist then do nothing and return
    require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)");
    uint256 len = _functionSelectors.length;
    for (uint256 selectorIndex; selectorIndex < len; ) {
      bytes4 selector = _functionSelectors[selectorIndex];
      require(selector != proposeSelector && selector != cutSelector, "LibDiamondCut: Cannot remove cut selectors");
      address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
      removeFunction(ds, oldFacetAddress, selector);

      unchecked {
        ++selectorIndex;
      }
    }
  }

  function addFacet(DiamondStorage storage ds, address _facetAddress) internal {
    enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code");
    ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;
    ds.facetAddresses.push(_facetAddress);
  }

  function addFunction(
    DiamondStorage storage ds,
    bytes4 _selector,
    uint96 _selectorPosition,
    address _facetAddress
  ) internal {
    ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;
    ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);
    ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;
  }

  function removeFunction(
    DiamondStorage storage ds,
    address _facetAddress,
    bytes4 _selector
  ) internal {
    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 = uint96(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 = 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) {
        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 {
    require(_contract.code.length != 0, _errorMessage);
  }
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"initContract","type":"address"},{"internalType":"bytes","name":"initData","type":"bytes"}],"internalType":"struct ConnextDiamond.Initialization[]","name":"_initializations","type":"tuple[]"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405260405162002c4f38038062002c4f8339810160408190526200002691620014a4565b6001600160a01b038316156200004c576200004c83620000ed60201b620000d81760201c565b62000074826000604051806020016040528060008152506200015c60201b620001451760201c565b805160005b81811015620000e257620000d98382815181106200009b576200009b62001678565b602002602001015160000151848381518110620000bc57620000bc62001678565b6020026020010151602001516200047e60201b620004171760201c565b60010162000079565b505050505062001886565b6000620000f9620006a3565b60048101546040519192506001600160a01b03808516929116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360040180546001600160a01b0319166001600160a01b0392909216919091179055565b600062000168620006a3565b905060008484846040516020016200018393929190620016d2565b60408051601f1981840301815291905280516020909101206002830154909150156200022f5760008181526005830160205260409020548015801590620001ca5750428111155b6200021c5760405162461bcd60e51b815260206004820152601d60248201527f4c69624469616d6f6e643a2064656c6179206e6f7420656c617073656400000060448201526064015b60405180910390fd5b5060008181526005830160205260408120555b845160005b818110156200042c57600087828151811062000254576200025462001678565b6020026020010151602001519050600060028111156200027857620002786200168e565b8160028111156200028d576200028d6200168e565b03620002eb57620002e5888381518110620002ac57620002ac62001678565b602002602001015160000151898481518110620002cd57620002cd62001678565b602002602001015160400151620006d960201b60201c565b62000422565b60018160028111156200030257620003026200168e565b036200035a57620002e588838151811062000321576200032162001678565b60200260200101516000015189848151811062000342576200034262001678565b6020026020010151604001516200095460201b60201c565b60028160028111156200037157620003716200168e565b03620003c957620002e588838151811062000390576200039062001678565b602002602001015160000151898481518110620003b157620003b162001678565b60200260200101516040015162000be160201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840162000213565b5060010162000234565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516200046293929190620016d2565b60405180910390a16200047685856200047e565b505050505050565b6001600160a01b0382166200050857805115620005045760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840162000213565b5050565b8051600003620005815760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840162000213565b6001600160a01b0382163014620005b757620005b78260405180606001604052806028815260200162002bc36028913962000dda565b600080836001600160a01b031683604051620005d49190620017d9565b600060405180830381855af49150503d806000811462000611576040519150601f19603f3d011682016040523d82523d6000602084013e62000616565b606091505b5091509150816200069d5780511562000645578060405162461bcd60e51b8152600401620002139190620017f7565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840162000213565b50505050565b600080620006d360017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c62001829565b92915050565b80516000036200072f5760405162461bcd60e51b815260206004820152602b602482015260008051602062002c2f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b606482015260840162000213565b60006200073b620006a3565b90506001600160a01b038316620007995760405162461bcd60e51b815260206004820152602c602482015260008051602062002beb83398151915260448201526b65206164647265737328302960a01b606482015260840162000213565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003620007d257620007d2828562000e0b565b825160005b8181101562000476576000858281518110620007f757620007f762001678565b6020908102919091018101516001600160e01b031981166000908152918790526040909120549091506001600160a01b031680156200089f5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840162000213565b6001600160e01b0319821660008181526020888152604080832080546001600160a01b03908116600160a01b6001600160601b038d16021782558d168085526001808d0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925288905281546001600160a01b0319161790558462000943816200183f565b9550508260010192505050620007d7565b80516000819003620009ac5760405162461bcd60e51b815260206004820152602b602482015260008051602062002c2f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b606482015260840162000213565b6000620009b8620006a3565b90506001600160a01b03841662000a165760405162461bcd60e51b815260206004820152602c602482015260008051602062002beb83398151915260448201526b65206164647265737328302960a01b606482015260840162000213565b6001600160a01b0384166000908152600182016020526040812054906001600160601b038216900362000a4f5762000a4f828662000e0b565b60005b838110156200047657600085828151811062000a725762000a7262001678565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908816810362000b1f5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840162000213565b62000b2c85828462000e78565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558d168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000bd0816200183f565b945050826001019250505062000a52565b805160000362000c375760405162461bcd60e51b815260206004820152602b602482015260008051602062002c2f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b606482015260840162000213565b600062000c43620006a3565b9050635df91ac760e11b6307e4c70760e21b6001600160a01b0385161562000cd45760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d757374206265206164647265737328302900000000000000000000606482015260840162000213565b835160005b8181101562000dd157600086828151811062000cf95762000cf962001678565b60200260200101519050846001600160e01b031916816001600160e01b0319161415801562000d3557506001600160e01b031981811690851614155b62000d965760405162461bcd60e51b815260206004820152602a60248201527f4c69624469616d6f6e644375743a2043616e6e6f742072656d6f7665206375746044820152692073656c6563746f727360b01b606482015260840162000213565b6001600160e01b031981166000908152602087905260409020546001600160a01b031662000dc687828462000e78565b505060010162000cd9565b50505050505050565b806001600160a01b0383163b62000e065760405162461bcd60e51b8152600401620002139190620017f7565b505050565b62000e308160405180606001604052806024815260200162002c0b6024913962000dda565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000ef65760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840162000213565b306001600160a01b0383160362000f675760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840162000213565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000fb89162001829565b9050808214620010b1576001600160a01b0384166000908152600186016020526040812080548390811062000ff15762000ff162001678565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062001045576200104562001678565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480620010dd57620010dd62001870565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900362001252576002850154600090620011439060019062001829565b6001600160a01b0386166000908152600180890160205260409091200154909150808214620011f957600087600201838154811062001186576200118662001678565b6000918252602090912001546002890180546001600160a01b039092169250829184908110620011ba57620011ba62001678565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b866002018054806200120f576200120f62001870565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505b5050505050565b80516001600160a01b03811681146200127157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620012b157620012b162001276565b60405290565b604051606081016001600160401b0381118282101715620012b157620012b162001276565b604051601f8201601f191681016001600160401b038111828210171562001307576200130762001276565b604052919050565b60006001600160401b038211156200132b576200132b62001276565b5060051b60200190565b60005b838110156200135257818101518382015260200162001338565b50506000910152565b6000601f83818401126200136e57600080fd5b825160206200138762001381836200130f565b620012dc565b82815260059290921b85018101918181019087841115620013a757600080fd5b8287015b84811015620014985780516001600160401b0380821115620013cd5760008081fd5b908901906040601f19838d038101821315620013e95760008081fd5b620013f36200128c565b6200140089860162001259565b81528285015184811115620014155760008081fd5b8086019550508d603f8601126200142c5760008081fd5b888501518481111562001443576200144362001276565b620014548a848e84011601620012dc565b94508085528e848288010111156200146e57600092508283fd5b6200147f818b870186890162001335565b50808901939093525050845250918301918301620013ab565b50979650505050505050565b600080600060608486031215620014ba57600080fd5b620014c58462001259565b60208501519093506001600160401b0380821115620014e357600080fd5b818601915086601f830112620014f857600080fd5b81516200150962001381826200130f565b8082825260208201915060208360051b8601019250898311156200152c57600080fd5b602085015b8381101562001644578051858111156200154a57600080fd5b86016060818d03601f190112156200156157600080fd5b6200156b620012b7565b620015796020830162001259565b81526040820151600381106200158e57600080fd5b6020820152606082015187811115620015a657600080fd5b8083019250508c603f830112620015bc57600080fd5b6020820151620015d062001381826200130f565b81815260059190911b83016040019060208101908f831115620015f257600080fd5b6040850194505b828510156200162d5784516001600160e01b0319811681146200161b57600080fd5b825260209485019490910190620015f9565b604084015250508452506020928301920162001531565b50604089015190965093505050808211156200165f57600080fd5b506200166e868287016200135b565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452620016be81602086016020860162001335565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015620017a757898403607f19018652815180516001600160a01b031685528381015189860190600381106200174357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620017915783516001600160e01b031916825292860192600192909201919086019062001765565b50978501979550505090820190600101620016fb565b50506001600160a01b038a16908801528681036040880152620017cb8189620016a4565b9a9950505050505050505050565b60008251620017ed81846020870162001335565b9190910192915050565b6020815260006200180c6020830184620016a4565b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620006d357620006d362001813565b60006001600160601b038281166002600160601b0319810162001866576200186662001813565b6001019392505050565b634e487b7160e01b600052603160045260246000fd5b61132d80620018966000396000f3fe60806040523661000b57005b60008061003960017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c611013565b600080356001600160e01b0319168152602082905260409020549092508291506001600160a01b0316806100b45760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100d3573d6000f35b3d6000fd5b60006100e261062a565b60048101546040519192506001600160a01b03808516929116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360040180546001600160a01b0319166001600160a01b0392909216919091179055565b600061014f61062a565b905060008484846040516020016101689392919061108c565b60408051601f19818403018152919052805160209091012060028301549091501561020c57600081815260058301602052604090205480158015906101ad5750428111155b6101f95760405162461bcd60e51b815260206004820152601d60248201527f4c69624469616d6f6e643a2064656c6179206e6f7420656c617073656400000060448201526064016100ab565b5060008181526005830160205260408120555b845160005b818110156103c957600087828151811061022d5761022d61118c565b60200260200101516020015190506000600281111561024e5761024e611026565b81600281111561026057610260611026565b036102ae576102a988838151811061027a5761027a61118c565b6020026020010151600001518984815181106102985761029861118c565b60200260200101516040015161065e565b6103c0565b60018160028111156102c2576102c2611026565b0361030b576102a98883815181106102dc576102dc61118c565b6020026020010151600001518984815181106102fa576102fa61118c565b6020026020010151604001516107cc565b600281600281111561031f5761031f611026565b03610368576102a98883815181106103395761033961118c565b6020026020010151600001518984815181106103575761035761118c565b602002602001015160400151610952565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084016100ab565b50600101610211565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516103fd9392919061108c565b60405180910390a161040f8585610417565b505050505050565b6001600160a01b03821661049e5780511561049a5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100ab565b5050565b80516000036105155760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100ab565b6001600160a01b038216301461054757610547826040518060600160405280602881526020016112ac60289139610b01565b600080836001600160a01b03168360405161056291906111a2565b600060405180830381855af49150503d806000811461059d576040519150601f19603f3d011682016040523d82523d6000602084013e6105a2565b606091505b509150915081610624578051156105cd578060405162461bcd60e51b81526004016100ab91906111be565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b60648201526084016100ab565b50505050565b60008061065860017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c611013565b92915050565b805160000361067f5760405162461bcd60e51b81526004016100ab906111d8565b600061068961062a565b90506001600160a01b0383166106b15760405162461bcd60e51b81526004016100ab90611223565b6001600160a01b0383166000908152600182016020526040812054906001600160601b03821690036106e7576106e78285610b2f565b825160005b8181101561040f5760008582815181106107085761070861118c565b6020908102919091018101516001600160e01b031981166000908152918790526040909120549091506001600160a01b031680156107a65760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b60648201526084016100ab565b6107b28683878b610b99565b846107bc8161126f565b95505082600101925050506106ec565b805160008190036107ef5760405162461bcd60e51b81526004016100ab906111d8565b60006107f961062a565b90506001600160a01b0384166108215760405162461bcd60e51b81526004016100ab90611223565b6001600160a01b0384166000908152600182016020526040812054906001600160601b0382169003610857576108578286610b2f565b60005b8381101561040f5760008582815181106108765761087661118c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690881681036109215760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100ab565b61092c858284610c39565b6109388583868b610b99565b836109428161126f565b945050826001019250505061085a565b80516000036109735760405162461bcd60e51b81526004016100ab906111d8565b600061097d61062a565b9050635df91ac760e11b6307e4c70760e21b6001600160a01b03851615610a055760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b60648201526084016100ab565b835160005b81811015610af8576000868281518110610a2657610a2661118c565b60200260200101519050846001600160e01b031916816001600160e01b03191614158015610a6157506001600160e01b031981811690851614155b610ac05760405162461bcd60e51b815260206004820152602a60248201527f4c69624469616d6f6e644375743a2043616e6e6f742072656d6f7665206375746044820152692073656c6563746f727360b01b60648201526084016100ab565b6001600160e01b031981166000908152602087905260409020546001600160a01b0316610aee878284610c39565b5050600101610a0a565b50505050505050565b806001600160a01b0383163b610b2a5760405162461bcd60e51b81526004016100ab91906111be565b505050565b610b51816040518060600160405280602481526020016112d460249139610b01565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160e01b0319831660008181526020868152604080832080546001600160601b03909716600160a01b026001600160a01b0397881617815594909516808352600180890183529583208054968701815583528183206008870401805460e09890981c60046007909816979097026101000a96870263ffffffff9097021990971695909517909555529290915281546001600160a01b031916179055565b6001600160a01b038216610cb55760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100ab565b306001600160a01b03831603610d245760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016100ab565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b03169291610d7391611013565b9050808214610e65576001600160a01b03841660009081526001860160205260408120805483908110610da857610da861118c565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610df957610df961118c565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480610e8e57610e8e611295565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003610ff6576002850154600090610ef190600190611013565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610fa0576000876002018381548110610f3057610f3061118c565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610f6157610f6161118c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610fb357610fb3611295565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505b5050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561065857610658610ffd565b634e487b7160e01b600052602160045260246000fd5b60005b8381101561105757818101518382015260200161103f565b50506000910152565b6000815180845261107881602086016020860161103c565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561115c57898403607f19018652815180516001600160a01b031685528381015189860190600381106110fb57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111475783516001600160e01b031916825292860192600192909201919086019061111d565b509785019795505050908201906001016110b5565b50506001600160a01b038a1690880152868103604088015261117e8189611060565b9a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b600082516111b481846020870161103c565b9190910192915050565b6020815260006111d16020830184611060565b9392505050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b60006001600160601b0380831681810361128b5761128b610ffd565b6001019392505050565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212203cfd0fd1e1a3d5605e46220343db27c14be7e9854e999acbca43a439f00b89f064736f6c634300081100334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000054baa998771639628ffc0206c3b916c466b79c8900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000001760000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000aa00000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000f4000000000000000000000000000000000000000000000000000000000000012400000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000152000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000068ae023c4b6d26b6a2b23d442f89389f836ea0f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000131506e46300000000000000000000000000000000000000000000000000000000600620910000000000000000000000000000000000000000000000000000000080dc2248000000000000000000000000000000000000000000000000000000009b5985190000000000000000000000000000000000000000000000000000000057bd0a3200000000000000000000000000000000000000000000000000000000ae8bc0de000000000000000000000000000000000000000000000000000000002c1999d000000000000000000000000000000000000000000000000000000000bd8671a7000000000000000000000000000000000000000000000000000000001ecf6f9f00000000000000000000000000000000000000000000000000000000ad4c77710000000000000000000000000000000000000000000000000000000007a38d7b00000000000000000000000000000000000000000000000000000000f1537686000000000000000000000000000000000000000000000000000000005a2164e500000000000000000000000000000000000000000000000000000000a1b193010000000000000000000000000000000000000000000000000000000003e418c200000000000000000000000000000000000000000000000000000000b64a5e0700000000000000000000000000000000000000000000000000000000e1cb395800000000000000000000000000000000000000000000000000000000c405842900000000000000000000000000000000000000000000000000000000e9d7bcec00000000000000000000000000000000000000000000000000000000000000000000000000000000a5a52a4bf2d369dff45b39b27ad1f3a9d79f1e4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000118a33623100000000000000000000000000000000000000000000000000000000159e041f000000000000000000000000000000000000000000000000000000002424401f00000000000000000000000000000000000000000000000000000000c2fb26a600000000000000000000000000000000000000000000000000000000b49c53a70000000000000000000000000000000000000000000000000000000063e3e7d200000000000000000000000000000000000000000000000000000000cb8058ba000000000000000000000000000000000000000000000000000000005412671100000000000000000000000000000000000000000000000000000000affed0e000000000000000000000000000000000000000000000000000000000121cca31000000000000000000000000000000000000000000000000000000006989ca7c000000000000000000000000000000000000000000000000000000001a8bc0e10000000000000000000000000000000000000000000000000000000041bdc8b500000000000000000000000000000000000000000000000000000000bfd79030000000000000000000000000000000000000000000000000000000003339df96000000000000000000000000000000000000000000000000000000008aac16ba0000000000000000000000000000000000000000000000000000000091f5de790000000000000000000000000000000000000000000000000000000000000000000000000000000067dd809acc3b5e854385170578e978f2a379e6ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001ab2dc3f500000000000000000000000000000000000000000000000000000000000000000000000000000000bf5f882e23221db0288cf52e9550fe75a20b1ad6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000015c5b350df00000000000000000000000000000000000000000000000000000000e7ef6c6b00000000000000000000000000000000000000000000000000000000c24250c900000000000000000000000000000000000000000000000000000000bb271a27000000000000000000000000000000000000000000000000000000002ec0c00200000000000000000000000000000000000000000000000000000000a9943b1b000000000000000000000000000000000000000000000000000000006a42b8f8000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000008456cb5900000000000000000000000000000000000000000000000000000000b49c204700000000000000000000000000000000000000000000000000000000b1f8100d00000000000000000000000000000000000000000000000000000000c56ce35800000000000000000000000000000000000000000000000000000000d1851c92000000000000000000000000000000000000000000000000000000003cf52ffb00000000000000000000000000000000000000000000000000000000c91cb56a000000000000000000000000000000000000000000000000000000002547fdb30000000000000000000000000000000000000000000000000000000023986f7d0000000000000000000000000000000000000000000000000000000080e52e3f000000000000000000000000000000000000000000000000000000006be557850000000000000000000000000000000000000000000000000000000012232937000000000000000000000000000000000000000000000000000000003f4ba83a00000000000000000000000000000000000000000000000000000000000000000000000000000000a04e49412b3d80572af9ef1c1ce9acff52dbe123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005dd39f00d000000000000000000000000000000000000000000000000000000008cba8b6a0000000000000000000000000000000000000000000000000000000065bc85820000000000000000000000000000000000000000000000000000000060f0a5ac00000000000000000000000000000000000000000000000000000000f01b3e01000000000000000000000000000000000000000000000000000000000000000000000000000000000d5be4aaf2378ca73f4d90efe50bb2f53287cd350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000184b72c5da000000000000000000000000000000000000000000000000000000000951d6d80000000000000000000000000000000000000000000000000000000009935b8f0000000000000000000000000000000000000000000000000000000054064594000000000000000000000000000000000000000000000000000000002d3f9ef600000000000000000000000000000000000000000000000000000000f259cd2700000000000000000000000000000000000000000000000000000000da3a892f000000000000000000000000000000000000000000000000000000003b688da60000000000000000000000000000000000000000000000000000000012d57170000000000000000000000000000000000000000000000000000000001407093b000000000000000000000000000000000000000000000000000000008770e68200000000000000000000000000000000000000000000000000000000e9160f3e00000000000000000000000000000000000000000000000000000000c6bf691d00000000000000000000000000000000000000000000000000000000b214c901000000000000000000000000000000000000000000000000000000009bf6d8750000000000000000000000000000000000000000000000000000000022a3c00700000000000000000000000000000000000000000000000000000000899962a100000000000000000000000000000000000000000000000000000000197c139d0000000000000000000000000000000000000000000000000000000041258b5c00000000000000000000000000000000000000000000000000000000582c78d2000000000000000000000000000000000000000000000000000000008290471600000000000000000000000000000000000000000000000000000000ffaf3f1a00000000000000000000000000000000000000000000000000000000911b8ee20000000000000000000000000000000000000000000000000000000004376ff400000000000000000000000000000000000000000000000000000000000000000000000000000000c105da48a31cede9049aa8e2f66c2b3fb37d12f30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000148d36545700000000000000000000000000000000000000000000000000000000a02288f40000000000000000000000000000000000000000000000000000000029d99b10000000000000000000000000000000000000000000000000000000008f11d27f0000000000000000000000000000000000000000000000000000000076ca2e5200000000000000000000000000000000000000000000000000000000d251dc35000000000000000000000000000000000000000000000000000000007652f59d000000000000000000000000000000000000000000000000000000001301caa2000000000000000000000000000000000000000000000000000000008b480b12000000000000000000000000000000000000000000000000000000002d91a51500000000000000000000000000000000000000000000000000000000b3a4eab400000000000000000000000000000000000000000000000000000000bb0577eb00000000000000000000000000000000000000000000000000000000ad94911b00000000000000000000000000000000000000000000000000000000f495e807000000000000000000000000000000000000000000000000000000004bbcba8e00000000000000000000000000000000000000000000000000000000241ca57a00000000000000000000000000000000000000000000000000000000b6618dff00000000000000000000000000000000000000000000000000000000ff126de90000000000000000000000000000000000000000000000000000000080b297e80000000000000000000000000000000000000000000000000000000074c6b89b000000000000000000000000000000000000000000000000000000000000000000000000000000007522ee28c4aace91bd7e1fe12f48c9524987709000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000bea027c2f00000000000000000000000000000000000000000000000000000000e5f6220f000000000000000000000000000000000000000000000000000000004b141bb4000000000000000000000000000000000000000000000000000000002bf63bcc000000000000000000000000000000000000000000000000000000001963e426000000000000000000000000000000000000000000000000000000003e74aea0000000000000000000000000000000000000000000000000000000009c8eab970000000000000000000000000000000000000000000000000000000043be5eaf0000000000000000000000000000000000000000000000000000000072a30e08000000000000000000000000000000000000000000000000000000008dc5148400000000000000000000000000000000000000000000000000000000a1a23c2900000000000000000000000000000000000000000000000000000000000000000000000000000000440c7514a296e0952557ad89beecb77904d849970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000041f931c1c0000000000000000000000000000000000000000000000000000000056a8ea4800000000000000000000000000000000000000000000000000000000bbf2358e000000000000000000000000000000000000000000000000000000002c67849c000000000000000000000000000000000000000000000000000000000000000000000000000000005bc0b77a2441b1c06ec0202fb19f54274567bb8f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000019a7e155e000000000000000000000000000000000000000000000000000000000000000000000000000000003bcf4185443a339517ad4e580067f178d1b68e1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e68d85348f227d2ebee814c38918f8a2d7d9b603000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a42a84809100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000148e2b093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc0b77a2441b1c06ec0202fb19f54274567bb8f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000849a7e155e0000000000000000000000000000000000000000000000000000000000002707000000000000000000000000b284fea86dc6d315d6cfa4db7bf1616406477e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa3cb63c3ba5f42d45350afd824e7e78e0eecff700000000000000000000000000000000000000000000000000000000

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading