[ {
  "key" : "primary",
  "components" : [ {
    "name" : "gluten-iceberg",
    "filesCount" : 6,
    "linesOfCode" : 274,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 4,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 2,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 218,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 56,
      "description" : [ ]
    } ]
  }, {
    "name" : "tools",
    "filesCount" : 161,
    "linesOfCode" : 8630,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.sql",
      "value" : 125,
      "description" : [ ]
    }, {
      "name" : "  *.scala",
      "value" : 27,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 9,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.sql",
      "value" : 5198,
      "description" : [ ]
    }, {
      "name" : "  *.scala",
      "value" : 2978,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 454,
      "description" : [ ]
    } ]
  }, {
    "name" : "gluten-ui",
    "filesCount" : 7,
    "linesOfCode" : 402,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 7,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 402,
      "description" : [ ]
    } ]
  }, {
    "name" : "ROOT",
    "filesCount" : 1,
    "linesOfCode" : 21,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.yml",
      "value" : 1,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.yml",
      "value" : 21,
      "description" : [ ]
    } ]
  }, {
    "name" : "backends-clickhouse",
    "filesCount" : 123,
    "linesOfCode" : 11576,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 85,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 38,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 9541,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 2035,
      "description" : [ ]
    } ]
  }, {
    "name" : "gluten-core",
    "filesCount" : 275,
    "linesOfCode" : 21108,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 139,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 114,
      "description" : [ ]
    }, {
      "name" : "  *.proto",
      "value" : 12,
      "description" : [ ]
    }, {
      "name" : "  *.yaml",
      "value" : 10,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 13797,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 4691,
      "description" : [ ]
    }, {
      "name" : "  *.proto",
      "value" : 1968,
      "description" : [ ]
    }, {
      "name" : "  *.yaml",
      "value" : 652,
      "description" : [ ]
    } ]
  }, {
    "name" : "gluten-celeborn",
    "filesCount" : 10,
    "linesOfCode" : 1085,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 8,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 2,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 787,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 298,
      "description" : [ ]
    } ]
  }, {
    "name" : "backends-velox",
    "filesCount" : 39,
    "linesOfCode" : 4645,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 34,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 5,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 4275,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 370,
      "description" : [ ]
    } ]
  }, {
    "name" : "cpp-ch",
    "filesCount" : 288,
    "linesOfCode" : 38584,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.cpp",
      "value" : 151,
      "description" : [ ]
    }, {
      "name" : "  *.h",
      "value" : 122,
      "description" : [ ]
    }, {
      "name" : "  *.cc",
      "value" : 4,
      "description" : [ ]
    }, {
      "name" : "  *.proto",
      "value" : 10,
      "description" : [ ]
    }, {
      "name" : "  *.py",
      "value" : 1,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.cpp",
      "value" : 21948,
      "description" : [ ]
    }, {
      "name" : "  *.h",
      "value" : 8385,
      "description" : [ ]
    }, {
      "name" : "  *.cc",
      "value" : 6223,
      "description" : [ ]
    }, {
      "name" : "  *.proto",
      "value" : 1947,
      "description" : [ ]
    }, {
      "name" : "  *.py",
      "value" : 81,
      "description" : [ ]
    } ]
  }, {
    "name" : "substrait",
    "filesCount" : 24,
    "linesOfCode" : 1773,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 23,
      "description" : [ ]
    }, {
      "name" : "  *.yml",
      "value" : 1,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 1757,
      "description" : [ ]
    }, {
      "name" : "  *.yml",
      "value" : 16,
      "description" : [ ]
    } ]
  }, {
    "name" : "gluten-delta",
    "filesCount" : 3,
    "linesOfCode" : 167,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 3,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 167,
      "description" : [ ]
    } ]
  }, {
    "name" : "gluten-data",
    "filesCount" : 70,
    "linesOfCode" : 5981,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.java",
      "value" : 40,
      "description" : [ ]
    }, {
      "name" : "  *.scala",
      "value" : 30,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.java",
      "value" : 4010,
      "description" : [ ]
    }, {
      "name" : "  *.scala",
      "value" : 1971,
      "description" : [ ]
    } ]
  }, {
    "name" : "shims",
    "filesCount" : 71,
    "linesOfCode" : 8393,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.scala",
      "value" : 66,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 5,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.scala",
      "value" : 7924,
      "description" : [ ]
    }, {
      "name" : "  *.java",
      "value" : 469,
      "description" : [ ]
    } ]
  }, {
    "name" : "cpp",
    "filesCount" : 188,
    "linesOfCode" : 20048,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.cc",
      "value" : 76,
      "description" : [ ]
    }, {
      "name" : "  *.h",
      "value" : 95,
      "description" : [ ]
    }, {
      "name" : "  *.cmake",
      "value" : 14,
      "description" : [ ]
    }, {
      "name" : "  *.orc",
      "value" : 3,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.cc",
      "value" : 14975,
      "description" : [ ]
    }, {
      "name" : "  *.h",
      "value" : 4069,
      "description" : [ ]
    }, {
      "name" : "  *.cmake",
      "value" : 918,
      "description" : [ ]
    }, {
      "name" : "  *.orc",
      "value" : 86,
      "description" : [ ]
    } ]
  }, {
    "name" : "dev",
    "filesCount" : 26,
    "linesOfCode" : 1131,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.cmake",
      "value" : 21,
      "description" : [ ]
    }, {
      "name" : "  *.py",
      "value" : 3,
      "description" : [ ]
    }, {
      "name" : "  *.xml",
      "value" : 2,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.cmake",
      "value" : 515,
      "description" : [ ]
    }, {
      "name" : "  *.py",
      "value" : 332,
      "description" : [ ]
    }, {
      "name" : "  *.xml",
      "value" : 284,
      "description" : [ ]
    } ]
  } ],
  "componentDependencies" : [ {
    "fromComponent" : "gluten-iceberg",
    "locFrom" : 165,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-iceberg/src/main/scala/org/apache/iceberg/spark/source/GlutenIcebergSourceUtil.scala",
      "evidence" : "import org.apache.spark.softaffinity.SoftAffinity"
    }, {
      "pathFrom" : "gluten-iceberg/src/main/scala/org/apache/iceberg/spark/source/TypeUtil.scala",
      "evidence" : "import java.nio.ByteBuffer"
    } ],
    "toComponent" : "gluten-core",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-iceberg -> gluten-core"
  }, {
    "fromComponent" : "backends-velox",
    "locFrom" : 2007,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/execution/RowToVeloxColumnarExec.scala",
      "evidence" : "import io.glutenproject.exec.Runtimes"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/ColumnarCachedBatchSerializer.scala",
      "evidence" : "import org.apache.spark.storage.StorageLevel"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/VeloxWriteQueue.scala",
      "evidence" : "import io.glutenproject.vectorized.ColumnarBatchInIterator"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.utils.SparkArrowUtil"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/expression/UDFResolver.scala",
      "evidence" : "import io.glutenproject.vectorized.JniWorkspace"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/SparkPlanExecApiImpl.scala",
      "evidence" : "import org.apache.spark.shuffle.utils.ShuffleUtil"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/IteratorApiImpl.scala",
      "evidence" : "import io.glutenproject.metrics.IMetrics"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/MetricsApiImpl.scala",
      "evidence" : "import io.glutenproject.metrics._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/ValidatorApiImpl.scala",
      "evidence" : "import io.glutenproject.vectorized.NativePlanEvaluator"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/TransformerApiImpl.scala",
      "evidence" : "import io.glutenproject.vectorized.PlanEvaluatorJniWrapper"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxBlockStripes.java",
      "evidence" : "import io.glutenproject.columnarbatch.ColumnarBatches;"
    } ],
    "toComponent" : "gluten-data",
    "count" : 11,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-velox -> gluten-data"
  }, {
    "fromComponent" : "gluten-iceberg",
    "locFrom" : 53,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-iceberg/src/main/scala/io/glutenproject/execution/IcebergScanTransformer.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-iceberg/src/main/scala/io/glutenproject/execution/IcebergTransformerProvider.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.v2.BatchScanExec"
    } ],
    "toComponent" : "shims",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-iceberg -> shims"
  }, {
    "fromComponent" : "gluten-core",
    "locFrom" : 8446,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/BatchScanExecTransformer.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/HashJoinExecTransformer.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/ScanTransformerFactory.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/SortMergeJoinExecTransformer.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/WholeStageTransformer.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/BroadcastBuildSideRDD.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/DataSourceScanTransformerRegister.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.v2.BatchScanExec"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/WriteFilesExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/SortExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/BasicPhysicalOperatorTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/HashAggregateExecBaseTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/CoalesceExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/GenerateExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/WindowExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/LimitTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/ExpandExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/execution/BasicScanExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/shuffle/GlutenShuffleUtils.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/shuffle/HashPartitioningWrapper.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/CommonSubexpressionEliminateRule.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/RewriteDateTimestampComparisonRule.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/ColumnarShuffleExchangeExec.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/ShuffledColumnarBatchRDD.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/ColumnarBroadcastExchangeExec.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical.Statistics"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/GlutenImplicits.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.v2.V2CommandExec"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/GlutenExplainUtils.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.v2.V2CommandExec"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/joins/BuildSideRelation.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/utils/InputPartitionsUtil.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/utils/TaskListener.scala",
      "evidence" : "import org.apache.spark.TaskFailedReason"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/utils/DebugUtil.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/utils/QueryPlanSelector.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/utils/PullOutProjectHelper.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/expression/ExpressionMappings.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/expression/UDFMappings.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/expression/ExpressionConverter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.optimizer.NormalizeNaNAndZero"
    }, {
      "pathFrom" : "gluten-core/src/main/java/io/glutenproject/substrait/ddlplan/DllTransformContext.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/listener/GlutenListenerFactory.scala",
      "evidence" : "import org.apache.spark.SparkContext"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/memory/SparkMemoryUtil.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/util/TaskResources.scala",
      "evidence" : "import _root_.io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/util/SparkDirectoryUtil.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/rpc/GlutenDriverEndpoint.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/datasources/GlutenWriterColumnarRules.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.orc.OrcFileFormat"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/python/EvalPythonExecTransformer.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/hive/HiveTableScanExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.hive.execution.HiveTableScanExec"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/hive/HiveSimpleUDFTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/hive/HivePartitionConverter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Literal"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/metric/SQLColumnarShuffleMetricsReporter.scala",
      "evidence" : "import org.apache.spark.SparkContext"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/columnar/TransformHintRule.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/CollapseProjectExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.optimizer.CollapseProjectShim"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/StrategyOverrides.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/EnsureLocalSortRequirements.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.SortOrder"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/ExpandFallbackPolicy.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/SparkPlanExecApi.scala",
      "evidence" : "import org.apache.spark.ShuffleDependency"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/IteratorApi.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/MetricsApi.scala",
      "evidence" : "import org.apache.spark.SparkContext"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/BackendSettingsApi.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/ListenerApi.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/TransformerApi.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/softaffinity/SoftAffinityManager.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/softaffinity/strategy/SoftAffinityAllocationTrait.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    } ],
    "toComponent" : "shims",
    "count" : 60,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-core -> shims"
  }, {
    "fromComponent" : "backends-clickhouse",
    "locFrom" : 7319,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/execution/CHBroadcastBuildSideCache.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/execution/CHHashJoinExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.optimizer.BuildSide"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/execution/CHHashAggregateExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/delta/files/MergeTreeCommitProtocol.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Cast"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/delta/files/MergeTreeCommitProtocol.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Cast"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHParquetWriterInjects.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/GlutenMergeTreeWriterInjects.scala",
      "evidence" : "import io.glutenproject.execution.datasource.GlutenFormatWriterInjects"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHMergeTreeWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.orc.OrcUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v1/ClickHouseFileIndex.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v1/ClickHouseFileIndex.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScanBuilder.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.PartitioningUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScan.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.v2.FileScan"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScanBase.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.v2.FileScan"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/DeltaMergeTreeFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScan.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/DeltaMergeTreeFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/ClickHouseSparkCatalog.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/shuffle/utils/RangePartitionerBoundsGenerator.scala",
      "evidence" : "import org.apache.spark.RangePartitioner"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/shuffle/CHColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/extension/ClickHouseAnalysis.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeDeltaTxnWriter.scala",
      "evidence" : "import org.apache.spark.SparkException"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/source/ClickHouseWriteBuilder.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/utils/MergeTreePartsPartitionsUtil.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/utils/ScanMergeTreePartsUtils.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.PartitioningUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/table/ClickHouseTableV2.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.HadoopFsRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/commands/CreateClickHouseTableCommand.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/utils/CHExecUtil.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHIteratorApi.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.FilePartition"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHSparkPlanExecApi.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.GlutenWriterColumnarRules.NativeWritePostRule"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHBackend.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.FileFormat"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHListenerApi.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHValidatorApi.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHMetricsApi.scala",
      "evidence" : "import org.apache.spark.SparkContext"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHTransformerApi.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/utils/CHInputPartitionsUtil.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/utils/CHExpressionUtil.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/utils/ExpressionDocUtil.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.ExpressionInfo"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/vectorized/CHColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/vectorized/CloseableCHColumnBatchIterator.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/vectorized/CloseablePartitionedBlockIterator.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    } ],
    "toComponent" : "shims",
    "count" : 45,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-clickhouse -> shims"
  }, {
    "fromComponent" : "backends-velox",
    "locFrom" : 2878,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/execution/ShuffledHashJoinExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/VeloxColumnarWriteFilesExec.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/SparkWriteFilesCommitProtocol.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/catalyst/AggregateFunctionRewriteRule.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/HLLAdapter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxParquetWriterInjects.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxFormatWriterInjects.scala",
      "evidence" : "import io.glutenproject.execution.datasource.GlutenRowSplitter"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/IteratorApiImpl.scala",
      "evidence" : "import io.glutenproject.metrics.IMetrics"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/MetricsApiImpl.scala",
      "evidence" : "import io.glutenproject.metrics._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/ListenerApiImpl.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/SparkPlanExecApiImpl.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/VeloxBackend.scala",
      "evidence" : "import io.glutenproject.sql.shims.SparkShimLoader"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/TransformerApiImpl.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxBlockStripes.java",
      "evidence" : "import org.apache.spark.sql.execution.datasources.BlockStripe;"
    } ],
    "toComponent" : "shims",
    "count" : 15,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-velox -> shims"
  }, {
    "fromComponent" : "gluten-delta",
    "locFrom" : 11,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-delta/src/main/scala/io/glutenproject/execution/DeltaScanTransformerProvider.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    } ],
    "toComponent" : "shims",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-delta -> shims"
  }, {
    "fromComponent" : "tools",
    "locFrom" : 1444,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/org/apache/spark/deploy/history/HistoryServerHelper.scala",
      "evidence" : "import org.apache.spark.util.ShutdownHookManager"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/org/apache/spark/sql/QueryRunner.scala",
      "evidence" : "import java.io.ByteArrayOutputStream"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/TpcSuite.scala",
      "evidence" : "import java.io.File"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/TpcRunner.scala",
      "evidence" : "import org.apache.commons.io.FileUtils"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/ds/TpcdsDataGen.scala",
      "evidence" : "import java.io.File"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/h/TpchDataGen.scala",
      "evidence" : "import java.io.File"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/action/DataGenOnly.scala",
      "evidence" : "import java.io.File"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/stat/RamStat.scala",
      "evidence" : "import java.io.InputStreamReader"
    } ],
    "toComponent" : "gluten-core",
    "count" : 8,
    "text" : null,
    "color" : "",
    "dependencyString" : "tools -> gluten-core"
  }, {
    "fromComponent" : "tools",
    "locFrom" : 761,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/org/apache/spark/deploy/history/HistoryServerHelper.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/org/apache/spark/deploy/history/GlutenItHistoryServerPlugin.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/org/apache/spark/sql/ConfUtils.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/org/apache/spark/sql/SparkSessionSwitcher.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.optimizer.ConvertToLocalRelation"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/Constants.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/TpcSuite.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/ds/TpcdsSuite.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "tools/gluten-it/common/src/main/scala/io/glutenproject/integration/tpc/h/TpchSuite.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    } ],
    "toComponent" : "shims",
    "count" : 8,
    "text" : null,
    "color" : "",
    "dependencyString" : "tools -> shims"
  }, {
    "fromComponent" : "gluten-ui",
    "locFrom" : 269,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenSQLAppStatusStore.scala",
      "evidence" : "import org.apache.spark.util.Utils"
    }, {
      "pathFrom" : "gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenAllExecutionsPage.scala",
      "evidence" : "import org.apache.spark.util.Utils"
    } ],
    "toComponent" : "gluten-core",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-ui -> gluten-core"
  }, {
    "fromComponent" : "gluten-ui",
    "locFrom" : 122,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenEventUtils.scala",
      "evidence" : "import org.apache.spark.SparkContext"
    }, {
      "pathFrom" : "gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenSQLAppStatusListener.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenSQLHistoryServerPlugin.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    }, {
      "pathFrom" : "gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenSQLTab.scala",
      "evidence" : "import org.apache.spark.SparkConf"
    } ],
    "toComponent" : "shims",
    "count" : 4,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-ui -> shims"
  }, {
    "fromComponent" : "backends-clickhouse",
    "locFrom" : 6445,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/delta/files/MergeTreeCommitProtocol.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/delta/files/MergeTreeCommitProtocol.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHMergeTreeWriterInjects.scala",
      "evidence" : "import io.glutenproject.substrait.SubstraitContext"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHParquetWriterInjects.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScanBuilder.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.PartitioningUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/ClickHouseLog.scala",
      "evidence" : "import java.io.File"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/shuffle/utils/RangePartitionerBoundsGenerator.scala",
      "evidence" : "import io.glutenproject.backendsapi.BackendsApiManager"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/shuffle/CHColumnarShuffleWriter.scala",
      "evidence" : "import java.io.IOException"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/affinity/CHAffinity.scala",
      "evidence" : "import org.apache.spark.softaffinity.Affinity"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeOutputWriter.scala",
      "evidence" : "import org.apache.spark.util.Utils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeDeltaTxnWriter.scala",
      "evidence" : "import org.apache.spark.util.SerializableConfiguration"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/source/ClickHouseWriteBuilder.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/utils/MergeTreePartsPartitionsUtil.scala",
      "evidence" : "import org.apache.spark.util.SparkResourceUtil"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/utils/ScanMergeTreePartsUtils.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.PartitioningUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/table/ClickHouseTableV2.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.HadoopFsRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/utils/CHExecUtil.scala",
      "evidence" : "import org.apache.spark.util.MutablePair"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHBroadcastApi.scala",
      "evidence" : "import org.apache.spark.rpc.GlutenDriverEndpoint"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHIteratorApi.scala",
      "evidence" : "import org.apache.spark.sql.utils.OASPackageBridge.InputMetricsWrapper"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHSparkPlanExecApi.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.GlutenWriterColumnarRules.NativeWritePostRule"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHBackend.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.FileFormat"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHListenerApi.scala",
      "evidence" : "import io.glutenproject.backendsapi.ListenerApi"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHTransformerApi.scala",
      "evidence" : "import io.glutenproject.backendsapi.TransformerApi"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHMetricsApi.scala",
      "evidence" : "import io.glutenproject.backendsapi.MetricsApi"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHValidatorApi.scala",
      "evidence" : "import io.glutenproject.substrait.SubstraitContext"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/utils/PlanNodesUtil.scala",
      "evidence" : "import io.glutenproject.substrait.SubstraitContext"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/vectorized/CHColumnarBatchSerializer.scala",
      "evidence" : "import java.io._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleWriteStreamFactory.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/memory/alloc/CHNativeMemoryAllocators.java",
      "evidence" : "import io.glutenproject.memory.SimpleMemoryUsageRecorder;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/memory/alloc/CHManagedCHReservationListener.java",
      "evidence" : "import io.glutenproject.memory.SimpleMemoryUsageRecorder;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/utils/SnowflakeIdWorker.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/vectorized/SimpleExpressionEval.java",
      "evidence" : "import io.glutenproject.substrait.plan.PlanNode;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/vectorized/CHNativeExpressionEvaluator.java",
      "evidence" : "import io.glutenproject.substrait.plan.PlanBuilder;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/vectorized/StorageJoinBuilder.java",
      "evidence" : "import io.glutenproject.substrait.type.TypeNode;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/vectorized/CHBlockConverterJniWrapper.java",
      "evidence" : "import io.glutenproject.row.SparkRowInfo;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHBlockStripes.java",
      "evidence" : "import io.glutenproject.row.SparkRowInfo;"
    } ],
    "toComponent" : "gluten-core",
    "count" : 41,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-clickhouse -> gluten-core"
  }, {
    "fromComponent" : "backends-clickhouse",
    "locFrom" : 2487,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v1/ClickHouseFileIndex.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v1/ClickHouseFileIndex.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHMergeTreeWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/ClickHouseFileIndexBase.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/DeltaMergeTreeFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScan.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/DeltaMergeTreeFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScan.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScanBuilder.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScanBase.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/ClickHouseDataSource.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/ClickHouseLog.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/extension/ClickHouseAnalysis.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/utils/MergeTreePartsPartitionsUtil.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/utils/ScanMergeTreePartsUtils.scala",
      "evidence" : "import org.apache.spark.sql.SaveMode"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/utils/CHDataSourceUtils.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/commands/CreateClickHouseTableCommand.scala",
      "evidence" : "import org.apache.spark.sql._"
    } ],
    "toComponent" : "tools",
    "count" : 21,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-clickhouse -> tools"
  }, {
    "fromComponent" : "backends-clickhouse",
    "locFrom" : 3748,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-clickhouse/src/main/delta-22/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/delta-20/org/apache/spark/sql/execution/datasources/v1/clickhouse/commands/WriteMergeTreeToDelta.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/CHFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHouseScanBuilder.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.PartitioningUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/source/ClickHousePartitionReaderFactory.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/ClickHouseLog.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.TableIdentifier"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/ClickHouseSparkCatalog.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.TableIdentifier"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeFileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources._"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/MergeTreeOutputWriter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v1/clickhouse/source/ClickHouseWriteBuilder.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/utils/ScanMergeTreePartsUtils.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.PartitioningUtils"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/datasources/v2/clickhouse/table/ClickHouseTableV2.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.HadoopFsRelation"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/utils/CHExecUtil.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/joins/ClickHouseBuildSideRelation.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHIteratorApi.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.FilePartition"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHSparkPlanExecApi.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.GlutenWriterColumnarRules.NativeWritePostRule"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHBackend.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.FileFormat"
    } ],
    "toComponent" : "backends-velox",
    "count" : 18,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-clickhouse -> backends-velox"
  }, {
    "fromComponent" : "gluten-celeborn",
    "locFrom" : 198,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil"
    } ],
    "toComponent" : "backends-clickhouse",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-celeborn -> backends-clickhouse"
  }, {
    "fromComponent" : "gluten-celeborn",
    "locFrom" : 1023,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil"
    }, {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark.memory.SparkMemoryUtil"
    }, {
      "pathFrom" : "gluten-celeborn/clickhouse/src/main/scala/org/apache/spark/shuffle/CHCelebornColumnarBatchSerializer.scala",
      "evidence" : "import java.io._"
    }, {
      "pathFrom" : "gluten-celeborn/clickhouse/src/main/scala/org/apache/spark/shuffle/CHCelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import java.io.IOException"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/scala/org/apache/spark/shuffle/CelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import java.io.IOException"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/scala/org/apache/spark/shuffle/CelebornPartitionPusher.scala",
      "evidence" : "import java.io.IOException"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/java/org/apache/spark/shuffle/gluten/celeborn/CelebornShuffleManager.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    } ],
    "toComponent" : "gluten-core",
    "count" : 7,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-celeborn -> gluten-core"
  }, {
    "fromComponent" : "gluten-celeborn",
    "locFrom" : 221,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil"
    }, {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornHashBasedColumnarShuffleWriterFactory.scala",
      "evidence" : "import io.glutenproject.backendsapi.velox.VeloxBackend"
    } ],
    "toComponent" : "backends-velox",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-celeborn -> backends-velox"
  }, {
    "fromComponent" : "gluten-celeborn",
    "locFrom" : 562,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/scala/org/apache/spark/shuffle/CelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark.storage.BlockManager"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/java/org/apache/spark/shuffle/gluten/celeborn/CelebornShuffleManager.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    } ],
    "toComponent" : "gluten-data",
    "count" : 3,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-celeborn -> gluten-data"
  }, {
    "fromComponent" : "gluten-celeborn",
    "locFrom" : 787,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil"
    }, {
      "pathFrom" : "gluten-celeborn/clickhouse/src/main/scala/org/apache/spark/shuffle/CHCelebornColumnarBatchSerializer.scala",
      "evidence" : "import org.apache.spark.SparkEnv"
    }, {
      "pathFrom" : "gluten-celeborn/clickhouse/src/main/scala/org/apache/spark/shuffle/CHCelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-celeborn/clickhouse/src/main/scala/org/apache/spark/shuffle/CHCelebornHashBasedColumnarShuffleWriterFactory.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    }, {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-celeborn/velox/src/main/scala/org/apache/spark/shuffle/VeloxCelebornHashBasedColumnarShuffleWriterFactory.scala",
      "evidence" : "import org.apache.spark.TaskContext"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/scala/org/apache/spark/shuffle/CelebornHashBasedColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-celeborn/common/src/main/scala/org/apache/spark/shuffle/CelebornPartitionPusher.scala",
      "evidence" : "import org.apache.spark._"
    } ],
    "toComponent" : "shims",
    "count" : 8,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-celeborn -> shims"
  }, {
    "fromComponent" : "gluten-data",
    "locFrom" : 1345,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-data/src/main/scala/org/apache/spark/shuffle/ColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark.memory.SparkMemoryUtil"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/org/apache/spark/sql/execution/utils/ExecUtil.scala",
      "evidence" : "import org.apache.spark.util.MutablePair"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/metrics/HashAggregateMetricsUpdater.scala",
      "evidence" : "import io.glutenproject.substrait.AggregationParams"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/metrics/JoinMetricsUpdater.scala",
      "evidence" : "import io.glutenproject.substrait.JoinParams"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/vectorized/ColumnarBatchSerializer.scala",
      "evidence" : "import java.io._"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/org/apache/spark/storage/OASPackageBridge.scala",
      "evidence" : "import java.io.InputStream"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/exec/Runtimes.scala",
      "evidence" : "import org.apache.spark.util.TaskResources"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/exec/Runtime.scala",
      "evidence" : "import org.apache.spark.util.TaskResource"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/vectorized/NativePlanEvaluator.java",
      "evidence" : "import io.glutenproject.validate.NativePlanValidationInfo;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/vectorized/PlanEvaluatorJniWrapper.java",
      "evidence" : "import io.glutenproject.validate.NativePlanValidationInfo;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/memory/nmm/ReservationListener.java",
      "evidence" : "import io.glutenproject.memory.SimpleMemoryUsageRecorder;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/memory/nmm/NativeMemoryManagers.java",
      "evidence" : "import io.glutenproject.memory.MemoryUsageRecorder;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/memory/nmm/ManagedReservationListener.java",
      "evidence" : "import io.glutenproject.memory.SimpleMemoryUsageRecorder;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/memory/nmm/NativeMemoryManager.java",
      "evidence" : "import io.glutenproject.memory.memtarget.KnownNameAndStats;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/memory/arrowalloc/ManagedAllocationListener.java",
      "evidence" : "import io.glutenproject.memory.SimpleMemoryUsageRecorder;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/memory/arrowalloc/ArrowBufferAllocators.java",
      "evidence" : "import io.glutenproject.memory.memtarget.MemoryTargets;"
    } ],
    "toComponent" : "gluten-core",
    "count" : 16,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-data -> gluten-core"
  }, {
    "fromComponent" : "gluten-data",
    "locFrom" : 2030,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-data/src/main/scala/org/apache/spark/shuffle/ColumnarShuffleWriter.scala",
      "evidence" : "import org.apache.spark._"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/utils/ArrowUtil.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Attribute"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/vectorized/ColumnarBatchSerializer.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "gluten-data/src/main/scala/io/glutenproject/exec/Runtime.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/vectorized/ArrowWritableColumnVector.java",
      "evidence" : "import org.apache.spark.sql.execution.vectorized.WritableColumnVector;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/datasource/DatasourceJniWrapper.java",
      "evidence" : "import org.apache.spark.sql.execution.datasources.BlockStripes;"
    } ],
    "toComponent" : "shims",
    "count" : 6,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-data -> shims"
  }, {
    "fromComponent" : "gluten-core",
    "locFrom" : 2363,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/CommonSubexpressionEliminateRule.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/RewriteDateTimestampComparisonRule.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/GlutenFallbackReporter.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/GlutenExplainUtils.scala",
      "evidence" : "import org.apache.spark.sql.AnalysisException"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/utils/QueryPlanSelector.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/util/SparkRuleUtil.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/datasources/GlutenWriterColumnarRules.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/datasources/GlutenFormatWriterInjectsBase.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/hive/HiveTableScanExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/hive/HivePartitionConverter.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/columnar/PullOutPreProject.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/columnar/TransformHintRule.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/OthersExtensionOverrides.scala",
      "evidence" : "import org.apache.spark.sql.SparkSessionExtensions"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/RewriteTransformer.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/GlutenPlugin.scala",
      "evidence" : "import org.apache.spark.sql.SparkSessionExtensions"
    } ],
    "toComponent" : "tools",
    "count" : 15,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-core -> tools"
  }, {
    "fromComponent" : "gluten-core",
    "locFrom" : 2170,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/CommonSubexpressionEliminateRule.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.aggregate.AggregateExpression"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/joins/BuildSideRelation.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/expression/ExpressionMappings.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.aggregate._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/expression/AggregateFunctionsBuilder.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.aggregate._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/datasources/GlutenWriterColumnarRules.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/datasources/GlutenFormatWriterInjectsBase.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/python/EvalPythonExecTransformer.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/columnar/TransformHintRule.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/StrategyOverrides.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.SQLConfHelper"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/extension/ExpandFallbackPolicy.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/backendsapi/SparkPlanExecApi.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.FunctionIdentifier"
    } ],
    "toComponent" : "backends-velox",
    "count" : 11,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-core -> backends-velox"
  }, {
    "fromComponent" : "backends-velox",
    "locFrom" : 445,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/ColumnarCachedBatchSerializer.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/catalyst/AggregateFunctionRewriteRule.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/catalyst/FlushableHashAggregateRule.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    } ],
    "toComponent" : "tools",
    "count" : 4,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-velox -> tools"
  }, {
    "fromComponent" : "gluten-core",
    "locFrom" : 319,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/sql/execution/GlutenFallbackReporter.scala",
      "evidence" : "import org.apache.spark.sql.execution.ui.GlutenEventUtils"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/listener/GlutenSQLAppStatusListener.scala",
      "evidence" : "import org.apache.spark.sql.execution.ui._"
    }, {
      "pathFrom" : "gluten-core/src/main/scala/io/glutenproject/GlutenPlugin.scala",
      "evidence" : "import org.apache.spark.sql.execution.ui.GlutenEventUtils"
    } ],
    "toComponent" : "gluten-ui",
    "count" : 3,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-core -> gluten-ui"
  }, {
    "fromComponent" : "backends-velox",
    "locFrom" : 2311,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/VeloxColumnarWriteFilesExec.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol.TaskCommitMessage"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/catalyst/AggregateFunctionRewriteRule.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.util.TaskResources"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxParquetWriterInjects.scala",
      "evidence" : "import io.glutenproject.GlutenConfig"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/expression/UDFResolver.scala",
      "evidence" : "import org.apache.spark.util.Utils"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/IteratorApiImpl.scala",
      "evidence" : "import org.apache.spark.sql.execution.joins.BuildSideRelation"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/SparkPlanExecApiImpl.scala",
      "evidence" : "import org.apache.spark.sql.execution.joins.BuildSideRelation"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/MetricsApiImpl.scala",
      "evidence" : "import io.glutenproject.metrics._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/ValidatorApiImpl.scala",
      "evidence" : "import org.apache.spark.util.TaskResources"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/TransformerApiImpl.scala",
      "evidence" : "import org.apache.spark.util.TaskResources"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/VeloxBackend.scala",
      "evidence" : "import io.glutenproject.extension.ValidationResult"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/BroadcastApiImpl.scala",
      "evidence" : "import io.glutenproject.backendsapi.BroadcastApi"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/ListenerApiImpl.scala",
      "evidence" : "import io.glutenproject.backendsapi.ListenerApi"
    } ],
    "toComponent" : "gluten-core",
    "count" : 13,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-velox -> gluten-core"
  }, {
    "fromComponent" : "shims",
    "locFrom" : 3365,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "shims/spark34/src/main/scala/org/apache/spark/sql/execution/GlutenFileFormatWriter.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/BasicWriteStatsTracker.scala",
      "evidence" : "import org.apache.spark.util.SerializableConfiguration"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/BasicWriteStatsTracker.scala",
      "evidence" : "import org.apache.spark.util.SerializableConfiguration"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/InsertIntoHadoopFsRelationCommand.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/InsertIntoHadoopFsRelationCommand.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol.TaskCommitMessage"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/sql/shims/SparkShims.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala",
      "evidence" : "import java.io._"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala",
      "evidence" : "import java.io._"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala",
      "evidence" : "import org.apache.spark.util.SerializableJobConf"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala",
      "evidence" : "import org.apache.spark.util.SerializableJobConf"
    }, {
      "pathFrom" : "shims/spark34/src/main/scala/io/glutenproject/sql/shims/spark34/Spark34Shims.scala",
      "evidence" : "import org.apache.spark.internal.io.FileCommitProtocol"
    } ],
    "toComponent" : "gluten-core",
    "count" : 15,
    "text" : null,
    "color" : "",
    "dependencyString" : "shims -> gluten-core"
  }, {
    "fromComponent" : "gluten-data",
    "locFrom" : 463,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-data/src/main/scala/org/apache/spark/sql/execution/utils/ExecUtil.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/columnarbatch/ColumnarBatches.java",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil;"
    } ],
    "toComponent" : "backends-velox",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-data -> backends-velox"
  }, {
    "fromComponent" : "backends-clickhouse",
    "locFrom" : 676,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/joins/ClickHouseBuildSideRelation.scala",
      "evidence" : "import org.apache.spark.storage.CHShuffleReadStreamFactory"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHIteratorApi.scala",
      "evidence" : "import org.apache.spark.sql.utils.OASPackageBridge.InputMetricsWrapper"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleWriteStreamFactory.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    }, {
      "pathFrom" : "backends-clickhouse/src/main/java/io/glutenproject/utils/SnowflakeIdWorker.java",
      "evidence" : "import io.glutenproject.exception.GlutenException;"
    } ],
    "toComponent" : "gluten-data",
    "count" : 5,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-clickhouse -> gluten-data"
  }, {
    "fromComponent" : "backends-clickhouse",
    "locFrom" : 219,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-clickhouse/src/main/scala/io/glutenproject/backendsapi/clickhouse/CHBackend.scala",
      "evidence" : "import io.glutenproject.extension.ValidationResult"
    } ],
    "toComponent" : "gluten-delta",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-clickhouse -> gluten-delta"
  }, {
    "fromComponent" : "gluten-core",
    "locFrom" : 146,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-core/src/main/scala/org/apache/spark/shuffle/sort/ColumnarShuffleManager.scala",
      "evidence" : "import org.apache.spark.storage.BlockId"
    } ],
    "toComponent" : "gluten-data",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-core -> gluten-data"
  }, {
    "fromComponent" : "shims",
    "locFrom" : 3301,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/InsertIntoHadoopFsRelationCommand.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/InsertIntoHadoopFsRelationCommand.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/execution/datasource/GlutenParquetWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/execution/datasource/GlutenFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/sql/shims/SparkShims.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFileFormat.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFileFormat.scala",
      "evidence" : "import org.apache.spark.sql._"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/io/glutenproject/sql/shims/spark32/Spark32Shims.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/io/glutenproject/sql/shims/spark33/Spark33Shims.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    }, {
      "pathFrom" : "shims/spark34/src/main/scala/io/glutenproject/sql/shims/spark34/Spark34Shims.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    } ],
    "toComponent" : "tools",
    "count" : 16,
    "text" : null,
    "color" : "",
    "dependencyString" : "shims -> tools"
  }, {
    "fromComponent" : "shims",
    "locFrom" : 689,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    } ],
    "toComponent" : "backends-clickhouse",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "shims -> backends-clickhouse"
  }, {
    "fromComponent" : "shims",
    "locFrom" : 689,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    } ],
    "toComponent" : "gluten-celeborn",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "shims -> gluten-celeborn"
  }, {
    "fromComponent" : "shims",
    "locFrom" : 689,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.shuffle.FetchFailedException"
    } ],
    "toComponent" : "gluten-data",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "shims -> gluten-data"
  }, {
    "fromComponent" : "backends-velox",
    "locFrom" : 1524,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/VeloxWriteQueue.scala",
      "evidence" : "import io.glutenproject.vectorized.ColumnarBatchInIterator"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/expression/UDFResolver.scala",
      "evidence" : "import io.glutenproject.vectorized.JniWorkspace"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/SparkPlanExecApiImpl.scala",
      "evidence" : "import org.apache.spark.shuffle.utils.ShuffleUtil"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/IteratorApiImpl.scala",
      "evidence" : "import org.apache.spark.sql.execution.joins.BuildSideRelation"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/MetricsApiImpl.scala",
      "evidence" : "import io.glutenproject.metrics._"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/ValidatorApiImpl.scala",
      "evidence" : "import io.glutenproject.vectorized.NativePlanEvaluator"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/TransformerApiImpl.scala",
      "evidence" : "import io.glutenproject.vectorized.PlanEvaluatorJniWrapper"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/org/apache/spark/sql/execution/datasources/velox/VeloxBlockStripes.java",
      "evidence" : "import org.apache.spark.sql.execution.datasources.BlockStripe;"
    } ],
    "toComponent" : "backends-clickhouse",
    "count" : 8,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-velox -> backends-clickhouse"
  }, {
    "fromComponent" : "shims",
    "locFrom" : 4878,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "shims/common/src/main/scala/org/apache/spark/sql/execution/datasources/FakeRow.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/WriteFiles.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/BasicWriteStatsTracker.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatDataWriter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/WriteFiles.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/BasicWriteStatsTracker.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/execution/datasource/GlutenParquetWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/execution/datasource/GlutenFormatWriterInjects.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/common/src/main/scala/io/glutenproject/sql/shims/SparkShims.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/v2/Spark33Scan.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark34/src/main/scala/org/apache/spark/sql/execution/datasources/v2/Spark34Scan.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark34/src/main/scala/org/apache/spark/sql/execution/datasources/v2/BatchScanExecShim.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/execution/stat/StatFunctions.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/execution/stat/StatFunctions.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark32/src/main/scala/io/glutenproject/sql/shims/spark32/Spark32Shims.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark33/src/main/scala/io/glutenproject/sql/shims/spark33/Spark33Shims.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark34/src/main/scala/org/apache/spark/sql/catalyst/expressions/PromotePrecision.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    }, {
      "pathFrom" : "shims/spark34/src/main/scala/io/glutenproject/sql/shims/spark34/Spark34Shims.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.InternalRow"
    } ],
    "toComponent" : "backends-velox",
    "count" : 27,
    "text" : null,
    "color" : "",
    "dependencyString" : "shims -> backends-velox"
  }, {
    "fromComponent" : "gluten-delta",
    "locFrom" : 108,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-delta/src/main/scala/io/glutenproject/extension/DeltaRewriteTransformerRules.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    } ],
    "toComponent" : "tools",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-delta -> tools"
  }, {
    "fromComponent" : "backends-velox",
    "locFrom" : 421,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/VeloxBackend.scala",
      "evidence" : "import io.glutenproject.extension.ValidationResult"
    }, {
      "pathFrom" : "backends-velox/src/main/scala/io/glutenproject/backendsapi/velox/ValidatorApiImpl.scala",
      "evidence" : "import io.glutenproject.extension.ValidationResult"
    } ],
    "toComponent" : "gluten-delta",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "backends-velox -> gluten-delta"
  }, {
    "fromComponent" : "substrait",
    "locFrom" : 187,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToLogicalPlan.scala",
      "evidence" : "import org.apache.spark.sql.SparkSession"
    } ],
    "toComponent" : "tools",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "substrait -> tools"
  }, {
    "fromComponent" : "substrait",
    "locFrom" : 187,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToLogicalPlan.scala",
      "evidence" : "import org.apache.spark.sql.execution.QueryExecution"
    } ],
    "toComponent" : "backends-clickhouse",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "substrait -> backends-clickhouse"
  }, {
    "fromComponent" : "substrait",
    "locFrom" : 481,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToLogicalPlan.scala",
      "evidence" : "import org.apache.spark.sql.execution.QueryExecution"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToSubstraitRel.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    } ],
    "toComponent" : "gluten-core",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "substrait -> gluten-core"
  }, {
    "fromComponent" : "substrait",
    "locFrom" : 831,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToLogicalPlan.scala",
      "evidence" : "import org.apache.spark.sql.execution.QueryExecution"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToSubstraitRel.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/FunctionConverter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.SQLConfHelper"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/FunctionMappings.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.aggregate._"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/ToAggregateFunction.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.aggregate._"
    } ],
    "toComponent" : "backends-velox",
    "count" : 5,
    "text" : null,
    "color" : "",
    "dependencyString" : "substrait -> backends-velox"
  }, {
    "fromComponent" : "substrait",
    "locFrom" : 187,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToLogicalPlan.scala",
      "evidence" : "import org.apache.spark.sql.execution.QueryExecution"
    } ],
    "toComponent" : "gluten-data",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "substrait -> gluten-data"
  }, {
    "fromComponent" : "substrait",
    "locFrom" : 1138,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToLogicalPlan.scala",
      "evidence" : "import org.apache.spark.sql.execution.QueryExecution"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/logical/ToSubstraitRel.scala",
      "evidence" : "import org.apache.spark.sql.execution.datasources.LogicalRelation"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/spark-3.3/io/substrait/spark/logical/AbstractLogicalPlanVisitor.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical._"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/spark-3.4/io/substrait/spark/logical/AbstractLogicalPlanVisitor.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical._"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/spark-3.2/io/substrait/spark/logical/AbstractLogicalPlanVisitor.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.plans.logical._"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/FunctionMappings.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/ToScalarFunction.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/ToAggregateFunction.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/ToSubstraitLiteral.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Literal"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/ToSubstraitExpression.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions._"
    }, {
      "pathFrom" : "substrait/substrait-spark/src/main/scala/io/substrait/spark/expression/FunctionConverter.scala",
      "evidence" : "import org.apache.spark.sql.catalyst.expressions.Expression"
    } ],
    "toComponent" : "shims",
    "count" : 11,
    "text" : null,
    "color" : "",
    "dependencyString" : "substrait -> shims"
  }, {
    "fromComponent" : "gluten-data",
    "locFrom" : 332,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/datasource/DatasourceJniWrapper.java",
      "evidence" : "import org.apache.spark.sql.execution.datasources.BlockStripes;"
    }, {
      "pathFrom" : "gluten-data/src/main/java/io/glutenproject/columnarbatch/ColumnarBatches.java",
      "evidence" : "import io.glutenproject.utils.ArrowAbiUtil;"
    } ],
    "toComponent" : "backends-clickhouse",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "gluten-data -> backends-clickhouse"
  } ],
  "componentDependenciesErrors" : [ ],
  "logicalDecomposition" : {
    "name" : "primary",
    "scope" : "main",
    "filters" : [ ],
    "componentsFolderDepth" : 1,
    "minComponentsCount" : 0,
    "components" : [ {
      "name" : "gluten-iceberg",
      "sourceFileFilters" : [ {
        "pathPattern" : "./gluten-iceberg/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "tools",
      "sourceFileFilters" : [ {
        "pathPattern" : "./tools/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "gluten-ui",
      "sourceFileFilters" : [ {
        "pathPattern" : "./gluten-ui/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "ROOT",
      "sourceFileFilters" : [ {
        "pathPattern" : "./.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      }, {
        "pathPattern" : "./gluten-iceberg/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./tools/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./gluten-ui/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./backends-clickhouse/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./gluten-core/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./gluten-celeborn/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./backends-velox/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./cpp-ch/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./substrait/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./gluten-delta/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./gluten-data/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./shims/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./cpp/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      }, {
        "pathPattern" : "./dev/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "backends-clickhouse",
      "sourceFileFilters" : [ {
        "pathPattern" : "./backends-clickhouse/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "gluten-core",
      "sourceFileFilters" : [ {
        "pathPattern" : "./gluten-core/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "gluten-celeborn",
      "sourceFileFilters" : [ {
        "pathPattern" : "./gluten-celeborn/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "backends-velox",
      "sourceFileFilters" : [ {
        "pathPattern" : "./backends-velox/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "cpp-ch",
      "sourceFileFilters" : [ {
        "pathPattern" : "./cpp-ch/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "substrait",
      "sourceFileFilters" : [ {
        "pathPattern" : "./substrait/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "gluten-delta",
      "sourceFileFilters" : [ {
        "pathPattern" : "./gluten-delta/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "gluten-data",
      "sourceFileFilters" : [ {
        "pathPattern" : "./gluten-data/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "shims",
      "sourceFileFilters" : [ {
        "pathPattern" : "./shims/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "cpp",
      "sourceFileFilters" : [ {
        "pathPattern" : "./cpp/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      }, {
        "pathPattern" : "./cpp-ch/.*",
        "contentPattern" : "",
        "exception" : true,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "dev",
      "sourceFileFilters" : [ {
        "pathPattern" : "./dev/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    } ],
    "metaComponents" : [ ],
    "groups" : [ ],
    "includeRemainingFiles" : true,
    "dependenciesFinder" : {
      "useBuiltInDependencyFinders" : true,
      "rules" : [ ],
      "metaRules" : [ ]
    },
    "renderingOptions" : {
      "orientation" : "TB",
      "maxNumberOfDependencies" : 100,
      "renderComponentsWithoutDependencies" : true,
      "renderIndirectDependencies" : false,
      "renderInternalIndirectDependencies" : false,
      "reverseDirection" : false
    },
    "includeExternalComponents" : true,
    "dependencyLinkThreshold" : 1,
    "duplicationLinkThreshold" : 50,
    "temporalLinkThreshold" : 1,
    "maxSearchDepthLines" : 200
  },
  "fileCountPerComponent" : [ {
    "name" : "gluten-iceberg",
    "value" : 6,
    "description" : [ ]
  }, {
    "name" : "tools",
    "value" : 161,
    "description" : [ ]
  }, {
    "name" : "gluten-ui",
    "value" : 7,
    "description" : [ ]
  }, {
    "name" : "ROOT",
    "value" : 1,
    "description" : [ ]
  }, {
    "name" : "backends-clickhouse",
    "value" : 123,
    "description" : [ ]
  }, {
    "name" : "gluten-core",
    "value" : 275,
    "description" : [ ]
  }, {
    "name" : "gluten-celeborn",
    "value" : 10,
    "description" : [ ]
  }, {
    "name" : "backends-velox",
    "value" : 39,
    "description" : [ ]
  }, {
    "name" : "cpp-ch",
    "value" : 288,
    "description" : [ ]
  }, {
    "name" : "substrait",
    "value" : 24,
    "description" : [ ]
  }, {
    "name" : "gluten-delta",
    "value" : 3,
    "description" : [ ]
  }, {
    "name" : "gluten-data",
    "value" : 70,
    "description" : [ ]
  }, {
    "name" : "shims",
    "value" : 71,
    "description" : [ ]
  }, {
    "name" : "cpp",
    "value" : 188,
    "description" : [ ]
  }, {
    "name" : "dev",
    "value" : 26,
    "description" : [ ]
  } ],
  "linesOfCodePerComponent" : [ {
    "name" : "gluten-iceberg",
    "value" : 274,
    "description" : [ ]
  }, {
    "name" : "tools",
    "value" : 8630,
    "description" : [ ]
  }, {
    "name" : "gluten-ui",
    "value" : 402,
    "description" : [ ]
  }, {
    "name" : "ROOT",
    "value" : 21,
    "description" : [ ]
  }, {
    "name" : "backends-clickhouse",
    "value" : 11576,
    "description" : [ ]
  }, {
    "name" : "gluten-core",
    "value" : 21108,
    "description" : [ ]
  }, {
    "name" : "gluten-celeborn",
    "value" : 1085,
    "description" : [ ]
  }, {
    "name" : "backends-velox",
    "value" : 4645,
    "description" : [ ]
  }, {
    "name" : "cpp-ch",
    "value" : 38584,
    "description" : [ ]
  }, {
    "name" : "substrait",
    "value" : 1773,
    "description" : [ ]
  }, {
    "name" : "gluten-delta",
    "value" : 167,
    "description" : [ ]
  }, {
    "name" : "gluten-data",
    "value" : 5981,
    "description" : [ ]
  }, {
    "name" : "shims",
    "value" : 8393,
    "description" : [ ]
  }, {
    "name" : "cpp",
    "value" : 20048,
    "description" : [ ]
  }, {
    "name" : "dev",
    "value" : 1131,
    "description" : [ ]
  } ]
} ]