{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:17:30",
  "duplicates" : [ {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/loginView.ts",
        "extension" : "ts",
        "linesOfCode" : 42,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 10,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/settingsView.ts",
        "extension" : "ts",
        "linesOfCode" : 49,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 12,
      "endLine" : 32,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/media/login.js",
        "extension" : "js",
        "linesOfCode" : 25,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 14,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/media/settings.js",
        "extension" : "js",
        "linesOfCode" : 22,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 10,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/linkedView.ts",
        "extension" : "ts",
        "linesOfCode" : 50,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 22,
      "endLine" : 32,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/runLocallyView.ts",
        "extension" : "ts",
        "linesOfCode" : 30,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 13,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/runLocallyView.ts",
        "extension" : "ts",
        "linesOfCode" : 30,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/settingsView.ts",
        "extension" : "ts",
        "linesOfCode" : 49,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/auth/index.ts",
        "extension" : "ts",
        "linesOfCode" : 186,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/auth/index.ts",
        "extension" : "ts",
        "linesOfCode" : 186,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/qodana/SarifLanguageServerLauncher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 12,
      "endLine" : 18,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/org/jetbrains/qodana/SarifLanugageServerFactory.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/linkedView.ts",
        "extension" : "ts",
        "linesOfCode" : 50,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/settingsView.ts",
        "extension" : "ts",
        "linesOfCode" : 49,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/linkedView.ts",
        "extension" : "ts",
        "linesOfCode" : 50,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vscode/qodana/src/core/ui/loginView.ts",
        "extension" : "ts",
        "linesOfCode" : 42,
        "components" : [ "primary::vscode" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  } ],
  "overallDuplication" : null
}