{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:20:58",
  "duplicates" : [ {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/pe/PEFile.java",
        "extension" : "java",
        "linesOfCode" : 499,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 718,
      "endLine" : 738,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 239
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/script/SignableScript.java",
        "extension" : "java",
        "linesOfCode" : 194,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 122,
      "startLine" : 184,
      "endLine" : 204,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/msi/MSIFile.java",
        "extension" : "java",
        "linesOfCode" : 173,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 229,
      "endLine" : 245,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/script/SignableScript.java",
        "extension" : "java",
        "linesOfCode" : 194,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 122,
      "startLine" : 184,
      "endLine" : 201,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/mscab/CFHeader.java",
        "extension" : "java",
        "linesOfCode" : 165,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/mscab/CFHeader.java",
        "extension" : "java",
        "linesOfCode" : 165,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 134,
      "startLine" : 183,
      "endLine" : 193,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 120
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/msi/MSIFile.java",
        "extension" : "java",
        "linesOfCode" : 173,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 229,
      "endLine" : 245,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/pe/PEFile.java",
        "extension" : "java",
        "linesOfCode" : 499,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 718,
      "endLine" : 734,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 238
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/mscab/MSCabinetFile.java",
        "extension" : "java",
        "linesOfCode" : 194,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 205,
      "endLine" : 213,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/script/SignableScript.java",
        "extension" : "java",
        "linesOfCode" : 194,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 122,
      "startLine" : 184,
      "endLine" : 193,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/mscab/MSCabinetFile.java",
        "extension" : "java",
        "linesOfCode" : 194,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 205,
      "endLine" : 213,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/pe/PEFile.java",
        "extension" : "java",
        "linesOfCode" : 499,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 718,
      "endLine" : 727,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 235
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/mscab/MSCabinetFile.java",
        "extension" : "java",
        "linesOfCode" : 194,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 205,
      "endLine" : 213,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/msi/MSIFile.java",
        "extension" : "java",
        "linesOfCode" : 173,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 229,
      "endLine" : 238,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-ant/src/main/java/net/jsign/JsignTask.java",
        "extension" : "java",
        "linesOfCode" : 104,
        "components" : [ "primary::jsign-ant" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 173,
      "endLine" : 179,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 76
    }, {
      "file" : {
        "relativePath" : "jsign-maven-plugin/src/main/java/net/jsign/JsignMojo.java",
        "extension" : "java",
        "linesOfCode" : 135,
        "components" : [ "primary::jsign-maven-plugin" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 147,
      "endLine" : 153,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/timestamp/AuthenticodeTimestamper.java",
        "extension" : "java",
        "linesOfCode" : 66,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/timestamp/RFC3161Timestamper.java",
        "extension" : "java",
        "linesOfCode" : 57,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/script/JScript.java",
        "extension" : "java",
        "linesOfCode" : 42,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/script/VBScript.java",
        "extension" : "java",
        "linesOfCode" : 42,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/timestamp/AuthenticodeTimestamper.java",
        "extension" : "java",
        "linesOfCode" : 66,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "jsign-core/src/main/java/net/jsign/timestamp/RFC3161Timestamper.java",
        "extension" : "java",
        "linesOfCode" : 57,
        "components" : [ "primary::jsign-core" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 64,
      "endLine" : 73,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  } ],
  "overallDuplication" : null
}