{
  "abi": [],
  "allSourcePaths": {
    "85": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol",
    "exportedSymbols": {
      "StorageSlotUpgradeable": [
        27639
      ]
    },
    "id": 27640,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 27581,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "90:23:85"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 27582,
          "nodeType": "StructuredDocumentation",
          "src": "115:1148:85",
          "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._"
        },
        "fullyImplemented": true,
        "id": 27639,
        "linearizedBaseContracts": [
          27639
        ],
        "name": "StorageSlotUpgradeable",
        "nameLocation": "1272:22:85",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "StorageSlotUpgradeable.AddressSlot",
            "id": 27585,
            "members": [
              {
                "constant": false,
                "id": 27584,
                "mutability": "mutable",
                "name": "value",
                "nameLocation": "1338:5:85",
                "nodeType": "VariableDeclaration",
                "scope": 27585,
                "src": "1330:13:85",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 27583,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1330:7:85",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "AddressSlot",
            "nameLocation": "1308:11:85",
            "nodeType": "StructDefinition",
            "scope": 27639,
            "src": "1301:49:85",
            "visibility": "public"
          },
          {
            "canonicalName": "StorageSlotUpgradeable.BooleanSlot",
            "id": 27588,
            "members": [
              {
                "constant": false,
                "id": 27587,
                "mutability": "mutable",
                "name": "value",
                "nameLocation": "1390:5:85",
                "nodeType": "VariableDeclaration",
                "scope": 27588,
                "src": "1385:10:85",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 27586,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1385:4:85",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "BooleanSlot",
            "nameLocation": "1363:11:85",
            "nodeType": "StructDefinition",
            "scope": 27639,
            "src": "1356:46:85",
            "visibility": "public"
          },
          {
            "canonicalName": "StorageSlotUpgradeable.Bytes32Slot",
            "id": 27591,
            "members": [
              {
                "constant": false,
                "id": 27590,
                "mutability": "mutable",
                "name": "value",
                "nameLocation": "1445:5:85",
                "nodeType": "VariableDeclaration",
                "scope": 27591,
                "src": "1437:13:85",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 27589,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1437:7:85",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Bytes32Slot",
            "nameLocation": "1415:11:85",
            "nodeType": "StructDefinition",
            "scope": 27639,
            "src": "1408:49:85",
            "visibility": "public"
          },
          {
            "canonicalName": "StorageSlotUpgradeable.Uint256Slot",
            "id": 27594,
            "members": [
              {
                "constant": false,
                "id": 27593,
                "mutability": "mutable",
                "name": "value",
                "nameLocation": "1500:5:85",
                "nodeType": "VariableDeclaration",
                "scope": 27594,
                "src": "1492:13:85",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 27592,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1492:7:85",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Uint256Slot",
            "nameLocation": "1470:11:85",
            "nodeType": "StructDefinition",
            "scope": 27639,
            "src": "1463:49:85",
            "visibility": "public"
          },
          {
            "body": {
              "id": 27604,
              "nodeType": "Block",
              "src": "1694:63:85",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1713:38:85",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1727:14:85",
                        "value": {
                          "name": "slot",
                          "nodeType": "YulIdentifier",
                          "src": "1737:4:85"
                        },
                        "variableNames": [
                          {
                            "name": "r.slot",
                            "nodeType": "YulIdentifier",
                            "src": "1727:6:85"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 27601,
                      "isOffset": false,
                      "isSlot": true,
                      "src": "1727:6:85",
                      "suffix": "slot",
                      "valueSize": 1
                    },
                    {
                      "declaration": 27597,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1737:4:85",
                      "valueSize": 1
                    }
                  ],
                  "id": 27603,
                  "nodeType": "InlineAssembly",
                  "src": "1704:47:85"
                }
              ]
            },
            "documentation": {
              "id": 27595,
              "nodeType": "StructuredDocumentation",
              "src": "1518:87:85",
              "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
            },
            "id": 27605,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressSlot",
            "nameLocation": "1619:14:85",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27598,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27597,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "1642:4:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27605,
                  "src": "1634:12:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27596,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1634:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1633:14:85"
            },
            "returnParameters": {
              "id": 27602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27601,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "1691:1:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27605,
                  "src": "1671:21:85",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSlot_$27585_storage_ptr",
                    "typeString": "struct StorageSlotUpgradeable.AddressSlot"
                  },
                  "typeName": {
                    "id": 27600,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27599,
                      "name": "AddressSlot",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27585,
                      "src": "1671:11:85"
                    },
                    "referencedDeclaration": 27585,
                    "src": "1671:11:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSlot_$27585_storage_ptr",
                      "typeString": "struct StorageSlotUpgradeable.AddressSlot"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1670:23:85"
            },
            "scope": 27639,
            "src": "1610:147:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27615,
              "nodeType": "Block",
              "src": "1939:63:85",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1958:38:85",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1972:14:85",
                        "value": {
                          "name": "slot",
                          "nodeType": "YulIdentifier",
                          "src": "1982:4:85"
                        },
                        "variableNames": [
                          {
                            "name": "r.slot",
                            "nodeType": "YulIdentifier",
                            "src": "1972:6:85"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 27612,
                      "isOffset": false,
                      "isSlot": true,
                      "src": "1972:6:85",
                      "suffix": "slot",
                      "valueSize": 1
                    },
                    {
                      "declaration": 27608,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1982:4:85",
                      "valueSize": 1
                    }
                  ],
                  "id": 27614,
                  "nodeType": "InlineAssembly",
                  "src": "1949:47:85"
                }
              ]
            },
            "documentation": {
              "id": 27606,
              "nodeType": "StructuredDocumentation",
              "src": "1763:87:85",
              "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."
            },
            "id": 27616,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBooleanSlot",
            "nameLocation": "1864:14:85",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27609,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27608,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "1887:4:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27616,
                  "src": "1879:12:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27607,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1878:14:85"
            },
            "returnParameters": {
              "id": 27613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27612,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "1936:1:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27616,
                  "src": "1916:21:85",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_BooleanSlot_$27588_storage_ptr",
                    "typeString": "struct StorageSlotUpgradeable.BooleanSlot"
                  },
                  "typeName": {
                    "id": 27611,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27610,
                      "name": "BooleanSlot",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27588,
                      "src": "1916:11:85"
                    },
                    "referencedDeclaration": 27588,
                    "src": "1916:11:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_BooleanSlot_$27588_storage_ptr",
                      "typeString": "struct StorageSlotUpgradeable.BooleanSlot"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1915:23:85"
            },
            "scope": 27639,
            "src": "1855:147:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27626,
              "nodeType": "Block",
              "src": "2184:63:85",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "2203:38:85",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "2217:14:85",
                        "value": {
                          "name": "slot",
                          "nodeType": "YulIdentifier",
                          "src": "2227:4:85"
                        },
                        "variableNames": [
                          {
                            "name": "r.slot",
                            "nodeType": "YulIdentifier",
                            "src": "2217:6:85"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 27623,
                      "isOffset": false,
                      "isSlot": true,
                      "src": "2217:6:85",
                      "suffix": "slot",
                      "valueSize": 1
                    },
                    {
                      "declaration": 27619,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2227:4:85",
                      "valueSize": 1
                    }
                  ],
                  "id": 27625,
                  "nodeType": "InlineAssembly",
                  "src": "2194:47:85"
                }
              ]
            },
            "documentation": {
              "id": 27617,
              "nodeType": "StructuredDocumentation",
              "src": "2008:87:85",
              "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."
            },
            "id": 27627,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32Slot",
            "nameLocation": "2109:14:85",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27619,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "2132:4:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "2124:12:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27618,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2123:14:85"
            },
            "returnParameters": {
              "id": 27624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27623,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "2181:1:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27627,
                  "src": "2161:21:85",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Slot_$27591_storage_ptr",
                    "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"
                  },
                  "typeName": {
                    "id": 27622,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27621,
                      "name": "Bytes32Slot",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27591,
                      "src": "2161:11:85"
                    },
                    "referencedDeclaration": 27591,
                    "src": "2161:11:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Slot_$27591_storage_ptr",
                      "typeString": "struct StorageSlotUpgradeable.Bytes32Slot"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2160:23:85"
            },
            "scope": 27639,
            "src": "2100:147:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27637,
              "nodeType": "Block",
              "src": "2429:63:85",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "2448:38:85",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "2462:14:85",
                        "value": {
                          "name": "slot",
                          "nodeType": "YulIdentifier",
                          "src": "2472:4:85"
                        },
                        "variableNames": [
                          {
                            "name": "r.slot",
                            "nodeType": "YulIdentifier",
                            "src": "2462:6:85"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 27634,
                      "isOffset": false,
                      "isSlot": true,
                      "src": "2462:6:85",
                      "suffix": "slot",
                      "valueSize": 1
                    },
                    {
                      "declaration": 27630,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2472:4:85",
                      "valueSize": 1
                    }
                  ],
                  "id": 27636,
                  "nodeType": "InlineAssembly",
                  "src": "2439:47:85"
                }
              ]
            },
            "documentation": {
              "id": 27628,
              "nodeType": "StructuredDocumentation",
              "src": "2253:87:85",
              "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."
            },
            "id": 27638,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUint256Slot",
            "nameLocation": "2354:14:85",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 27631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27630,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "2377:4:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27638,
                  "src": "2369:12:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27629,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2369:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2368:14:85"
            },
            "returnParameters": {
              "id": 27635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27634,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "2426:1:85",
                  "nodeType": "VariableDeclaration",
                  "scope": 27638,
                  "src": "2406:21:85",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Uint256Slot_$27594_storage_ptr",
                    "typeString": "struct StorageSlotUpgradeable.Uint256Slot"
                  },
                  "typeName": {
                    "id": 27633,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 27632,
                      "name": "Uint256Slot",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27594,
                      "src": "2406:11:85"
                    },
                    "referencedDeclaration": 27594,
                    "src": "2406:11:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Uint256Slot_$27594_storage_ptr",
                      "typeString": "struct StorageSlotUpgradeable.Uint256Slot"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2405:23:85"
            },
            "scope": 27639,
            "src": "2345:147:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 27640,
        "src": "1264:1230:85",
        "usedErrors": []
      }
    ],
    "src": "90:2405:85"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205f7fb3e023c0f35edc65119eb30795f10eee5632f5491ae65a3253b892e2d59464736f6c63430008060033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "StorageSlotUpgradeable",
  "coverageMap": {
    "branches": {
      "85": {}
    },
    "statements": {
      "85": {}
    }
  },
  "dependencies": [],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205f7fb3e023c0f35edc65119eb30795f10eee5632f5491ae65a3253b892e2d59464736f6c63430008060033",
  "deployedSourceMap": "1264:1230:85:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    1264,
    2494
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F PUSH32 0xB3E023C0F35EDC65119EB30795F10EEE5632F5491AE65A3253B892E2D5946473 PUSH16 0x6C634300080600330000000000000000 ",
  "pcMap": {
    "0": {
      "offset": [
        1264,
        2494
      ],
      "op": "PUSH20",
      "path": "85",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "ADDRESS",
      "path": "85"
    },
    "22": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "EQ",
      "path": "85"
    },
    "23": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "PUSH1",
      "path": "85",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "PUSH1",
      "path": "85",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "MSTORE",
      "path": "85"
    },
    "28": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "PUSH1",
      "path": "85",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "DUP1",
      "path": "85"
    },
    "31": {
      "fn": null,
      "offset": [
        1264,
        2494
      ],
      "op": "REVERT",
      "path": "85"
    }
  },
  "sha1": "b8d13cffc18c5db09e1e17639d83f75e6ce27264",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlotUpgradeable {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n}\n",
  "sourceMap": "1264:1230:85:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1264:1230:85;;;;;;;;;;;;;;;;;",
  "sourcePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol",
  "type": "library"
}