{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:35:23",
  "duplicates" : [ {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "kotlin-dsl/unreal-engine-runner.xml",
        "extension" : "xml",
        "linesOfCode" : 498,
        "components" : [ "primary::kotlin-dsl" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 260,
      "endLine" : 287,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "kotlin-dsl/unreal-engine-runner.xml",
        "extension" : "xml",
        "linesOfCode" : 498,
        "components" : [ "primary::kotlin-dsl" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 296,
      "endLine" : 323,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 201
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/automation/commands/RunAutomationCommandWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 41,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildcookrun/BuildCookRunWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 41,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "server/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/server/buildgraph/BuildGraphBadgePublisher.kt",
        "extension" : "kt",
        "linesOfCode" : 240,
        "components" : [ "primary::server" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 147,
      "endLine" : 157,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "server/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/server/buildgraph/BuildGraphBadgePublisher.kt",
        "extension" : "kt",
        "linesOfCode" : 240,
        "components" : [ "primary::server" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 183,
      "endLine" : 193,
      "cleanedStartLine" : 117,
      "cleanedEndLine" : 126
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/automation/commands/AutomationCommandParameters.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 36,
      "endLine" : 46,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/commandlets/CommandletParameters.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 55,
      "endLine" : 65,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/automation/commands/RunAutomationCommandWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 28,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/commandlets/CommandletWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 28,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/automation/commands/RunAutomationCommandWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 41,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/commandlets/CommandletWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 41,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildcookrun/BuildCookRunWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 41,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/commandlets/CommandletWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 41,
      "endLine" : 53,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 23,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 14,
      "endLine" : 24,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "server/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 116,
        "components" : [ "primary::server" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 92,
      "startLine" : 130,
      "endLine" : 140,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/CookParameters.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/CookParameters.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/automation/commands/RunAutomationCommandWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildgraph/DistributedExecutor.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildcookrun/BuildCookRunWorkflowCreator.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildgraph/DistributedExecutor.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 93,
      "endLine" : 99,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetPlatformsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetPlatformsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetPlatformsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetPlatformsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetPlatformsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetPlatformsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetConfigurationsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetConfigurationsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetConfigurationsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetConfigurationsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetConfigurationsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "common/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/common/buildcookrun/UnrealTargetConfigurationsParameter.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::common" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildgraph/DistributedExecutor.kt",
        "extension" : "kt",
        "linesOfCode" : 99,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "agent/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/agent/buildgraph/SingleMachineExecutor.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::agent" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "server/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/server/buildgraph/BuildGraphBadgePublisher.kt",
        "extension" : "kt",
        "linesOfCode" : 240,
        "components" : [ "primary::server" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 208,
      "endLine" : 216,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 143
    }, {
      "file" : {
        "relativePath" : "server/src/main/kotlin/com/jetbrains/teamcity/plugins/unrealengine/server/buildgraph/BuildGraphBadgePublisher.kt",
        "extension" : "kt",
        "linesOfCode" : 240,
        "components" : [ "primary::server" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 182,
      "startLine" : 225,
      "endLine" : 233,
      "cleanedStartLine" : 152,
      "cleanedEndLine" : 157
    } ]
  } ],
  "overallDuplication" : null
}