{
  "id": "3a3b02cadbc14662ede89acf8914c259",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/dependencies/openzeppelin/upgradeability/Initializable.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity >=0.4.24 <0.7.0;\n\n/**\n * @title Initializable\n *\n * @dev Helper contract to support initializer functions. To use it, replace\n * the constructor with a function that has the `initializer` modifier.\n * WARNING: Unlike constructors, initializer functions must be manually\n * invoked. This applies both to deploying an Initializable contract, as well\n * as extending an Initializable contract via inheritance.\n * WARNING: When used with inheritance, manual care must be taken to not invoke\n * a parent initializer twice, or ensure that all initializers are idempotent,\n * because this is not dealt with automatically as with constructors.\n */\ncontract Initializable {\n  /**\n   * @dev Indicates that the contract has been initialized.\n   */\n  bool private initialized;\n\n  /**\n   * @dev Indicates that the contract is in the process of being initialized.\n   */\n  bool private initializing;\n\n  /**\n   * @dev Modifier to use in the initializer function of a contract.\n   */\n  modifier initializer() {\n    require(\n      initializing || isConstructor() || !initialized,\n      'Contract instance has already been initialized'\n    );\n\n    bool isTopLevelCall = !initializing;\n    if (isTopLevelCall) {\n      initializing = true;\n      initialized = true;\n    }\n\n    _;\n\n    if (isTopLevelCall) {\n      initializing = false;\n    }\n  }\n\n  /// @dev Returns true if and only if the function is running in the constructor\n  function isConstructor() private view returns (bool) {\n    // extcodesize checks the size of the code stored in an address, and\n    // address returns the current address. Since the code is still not\n    // deployed when running a constructor, any checks on its code size will\n    // yield zero, making it an effective way to detect if a contract is\n    // under construction or not.\n    uint256 cs;\n    //solium-disable-next-line\n    assembly {\n      cs := extcodesize(address())\n    }\n    return cs == 0;\n  }\n\n  // Reserved storage space to allow for layout changes in the future.\n  uint256[50] private ______gap;\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200,
        "details": {
          "yul": true,
          "yulDetails": {
            "stackAllocation": true
          }
        }
      },
      "evmVersion": "istanbul",
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/dependencies/openzeppelin/upgradeability/Initializable.sol": {
        "Initializable": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122006c563f8af058211b8a7999f05da22a4cf964615c609fb8352e4d0b747c2d78464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD 0xC5 PUSH4 0xF8AF0582 GT 0xB8 0xA7 SWAP10 SWAP16 SDIV 0xDA 0x22 LOG4 0xCF SWAP7 CHAINID ISZERO 0xC6 MULMOD 0xFB DUP4 MSTORE 0xE4 0xD0 0xB7 SELFBALANCE 0xC2 0xD7 DUP5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "693:1386:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea264697066735822122006c563f8af058211b8a7999f05da22a4cf964615c609fb8352e4d0b747c2d78464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD 0xC5 PUSH4 0xF8AF0582 GT 0xB8 0xA7 SWAP10 SWAP16 SDIV 0xDA 0x22 LOG4 0xCF SWAP7 CHAINID ISZERO 0xC6 MULMOD 0xFB DUP4 MSTORE 0xE4 0xD0 0xB7 SELFBALANCE 0xC2 0xD7 DUP5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "693:1386:0:-:0;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      }
    },
    "sources": {
      "contracts/dependencies/openzeppelin/upgradeability/Initializable.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/Initializable.sol",
          "exportedSymbols": {
            "Initializable": [
              67
            ]
          },
          "id": 68,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".24",
                "<",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:32:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "71:621:0",
                "text": " @title Initializable\n @dev Helper contract to support initializer functions. To use it, replace\n the constructor with a function that has the `initializer` modifier.\n WARNING: Unlike constructors, initializer functions must be manually\n invoked. This applies both to deploying an Initializable contract, as well\n as extending an Initializable contract via inheritance.\n WARNING: When used with inheritance, manual care must be taken to not invoke\n a parent initializer twice, or ensure that all initializers are idempotent,\n because this is not dealt with automatically as with constructors."
              },
              "fullyImplemented": true,
              "id": 67,
              "linearizedBaseContracts": [
                67
              ],
              "name": "Initializable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "720:69:0",
                    "text": " @dev Indicates that the contract has been initialized."
                  },
                  "id": 5,
                  "mutability": "mutable",
                  "name": "initialized",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 67,
                  "src": "792:24:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "792:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 6,
                    "nodeType": "StructuredDocumentation",
                    "src": "821:87:0",
                    "text": " @dev Indicates that the contract is in the process of being initialized."
                  },
                  "id": 8,
                  "mutability": "mutable",
                  "name": "initializing",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 67,
                  "src": "911:25:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "911:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 46,
                    "nodeType": "Block",
                    "src": "1045:331:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 15,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 12,
                                  "name": "initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8,
                                  "src": "1066:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 13,
                                    "name": "isConstructor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 62,
                                    "src": "1082:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                      "typeString": "function () view returns (bool)"
                                    }
                                  },
                                  "id": 14,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1082:15:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1066:31:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 17,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "1101:12:0",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 16,
                                  "name": "initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5,
                                  "src": "1102:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1066:47:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564",
                              "id": 19,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1121:48:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fbba6c4dcac9134893b633b9564f36435b3f927c1d5fa152c5c14b20cecb1a4",
                                "typeString": "literal_string \"Contract instance has already been initialized\""
                              },
                              "value": "Contract instance has already been initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fbba6c4dcac9134893b633b9564f36435b3f927c1d5fa152c5c14b20cecb1a4",
                                "typeString": "literal_string \"Contract instance has already been initialized\""
                              }
                            ],
                            "id": 11,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1051:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1051:124:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21,
                        "nodeType": "ExpressionStatement",
                        "src": "1051:124:0"
                      },
                      {
                        "assignments": [
                          23
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23,
                            "mutability": "mutable",
                            "name": "isTopLevelCall",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 46,
                            "src": "1182:19:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1182:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 25,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1204:13:0",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 24,
                            "name": "initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8,
                            "src": "1205:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1182:35:0"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 27,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "1227:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 37,
                        "nodeType": "IfStatement",
                        "src": "1223:80:0",
                        "trueBody": {
                          "id": 36,
                          "nodeType": "Block",
                          "src": "1243:60:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 28,
                                  "name": "initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8,
                                  "src": "1251:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 29,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1266:4:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1251:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31,
                              "nodeType": "ExpressionStatement",
                              "src": "1251:19:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 34,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 32,
                                  "name": "initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5,
                                  "src": "1278:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 33,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1292:4:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1278:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 35,
                              "nodeType": "ExpressionStatement",
                              "src": "1278:18:0"
                            }
                          ]
                        }
                      },
                      {
                        "id": 38,
                        "nodeType": "PlaceholderStatement",
                        "src": "1309:1:0"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 39,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "1321:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 45,
                        "nodeType": "IfStatement",
                        "src": "1317:55:0",
                        "trueBody": {
                          "id": 44,
                          "nodeType": "Block",
                          "src": "1337:35:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 42,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 40,
                                  "name": "initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8,
                                  "src": "1345:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 41,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1360:5:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "1345:20:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 43,
                              "nodeType": "ExpressionStatement",
                              "src": "1345:20:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9,
                    "nodeType": "StructuredDocumentation",
                    "src": "941:78:0",
                    "text": " @dev Modifier to use in the initializer function of a contract."
                  },
                  "id": 47,
                  "name": "initializer",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1042:2:0"
                  },
                  "src": "1022:354:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 61,
                    "nodeType": "Block",
                    "src": "1515:457:0",
                    "statements": [
                      {
                        "assignments": [
                          54
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 54,
                            "mutability": "mutable",
                            "name": "cs",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 61,
                            "src": "1850:10:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 53,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1850:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 55,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1850:10:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1906:42:0",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1914:28:0",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "address",
                                      "nodeType": "YulIdentifier",
                                      "src": "1932:7:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1932:9:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodesize",
                                  "nodeType": "YulIdentifier",
                                  "src": "1920:11:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1920:22:0"
                              },
                              "variableNames": [
                                {
                                  "name": "cs",
                                  "nodeType": "YulIdentifier",
                                  "src": "1914:2:0"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 54,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1914:2:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 56,
                        "nodeType": "InlineAssembly",
                        "src": "1897:51:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 59,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 57,
                            "name": "cs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 54,
                            "src": "1960:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 58,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1966:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1960:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 52,
                        "id": 60,
                        "nodeType": "Return",
                        "src": "1953:14:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 48,
                    "nodeType": "StructuredDocumentation",
                    "src": "1380:79:0",
                    "text": "@dev Returns true if and only if the function is running in the constructor"
                  },
                  "id": 62,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isConstructor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 49,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1484:2:0"
                  },
                  "returnParameters": {
                    "id": 52,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 51,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 62,
                        "src": "1509:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 50,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1509:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1508:6:0"
                  },
                  "scope": 67,
                  "src": "1462:510:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 66,
                  "mutability": "mutable",
                  "name": "______gap",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 67,
                  "src": "2047:29:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 63,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2047:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 65,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3530",
                      "id": 64,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2055:2:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "2047:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                }
              ],
              "scope": 68,
              "src": "693:1386:0"
            }
          ],
          "src": "37:2043:0"
        },
        "id": 0
      }
    }
  }
}
