creation_sourcecode: {{
    "language": "Solidity",
    "sources": {
      "contracts/deployers/Create2.sol": {
        "content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.20;\n\ncontract Create2Deployer {\n    event Deployed(address addr, bytes32 salt);\n\n    function deploy(bytes memory code, bytes32 salt) public returns (address) {\n        address addr;\n        require(code.length != 0, \"Create2: bytecode length is zero\");\n        assembly {\n            addr := create2(0, add(code, 0x20), mload(code), salt)\n            if iszero(extcodesize(addr)) { revert(0, 0) }\n        }\n\n        emit Deployed(addr, salt);\n        return addr;\n    }\n\n    function version() external pure returns (uint256) {\n        return 5;\n    }\n}\n"
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@prb/test/=lib/prb-math/node_modules/@prb/test/",
        "ERC721A-Upgradeable/=lib/common/lib/ERC721A-Upgradeable/contracts/",
        "common/=lib/common/contracts/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "prb-math/=lib/prb-math/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "useLiteralContent": false,
        "bytecodeHash": "ipfs",
        "appendCBOR": true
      },
      "outputSelection": {
        "*": {
          "*": [
            "evm.bytecode",
            "evm.deployedBytecode",
            "devdoc",
            "userdoc",
            "metadata",
            "abi"
          ]
        }
      },
      "evmVersion": "paris",
      "libraries": {}
    }
  }}