Merge "Make me an OWNER of the licenses/ files."
diff --git a/android/module.go b/android/module.go
index 68008c2..a20dc56 100644
--- a/android/module.go
+++ b/android/module.go
@@ -492,22 +492,39 @@
 	TransitivePackagingSpecs() []PackagingSpec
 }
 
+// BazelTargetModule is a lightweight wrapper interface around Module for
+// bp2build conversion purposes.
+//
+// In bp2build's bootstrap.Main execution, Soong runs an alternate pipeline of
+// mutators that creates BazelTargetModules from regular Module objects,
+// performing the mapping from Soong properties to Bazel rule attributes in the
+// process. This process may optionally create additional BazelTargetModules,
+// resulting in a 1:many mapping.
+//
+// bp2build.Codegen is then responsible for visiting all modules in the graph,
+// filtering for BazelTargetModules, and code-generating BUILD targets from
+// them.
 type BazelTargetModule interface {
 	Module
 
 	BazelTargetModuleProperties() *bazel.BazelTargetModuleProperties
 }
 
+// InitBazelTargetModule is a wrapper function that decorates BazelTargetModule
+// with property structs containing metadata for bp2build conversion.
 func InitBazelTargetModule(module BazelTargetModule) {
 	module.AddProperties(module.BazelTargetModuleProperties())
 	InitAndroidModule(module)
 }
 
+// BazelTargetModuleBase contains the property structs with metadata for
+// bp2build conversion.
 type BazelTargetModuleBase struct {
 	ModuleBase
 	Properties bazel.BazelTargetModuleProperties
 }
 
+// BazelTargetModuleProperties getter.
 func (btmb *BazelTargetModuleBase) BazelTargetModuleProperties() *bazel.BazelTargetModuleProperties {
 	return &btmb.Properties
 }
diff --git a/apex/androidmk.go b/apex/androidmk.go
index 4408283..99cd75e 100644
--- a/apex/androidmk.go
+++ b/apex/androidmk.go
@@ -450,12 +450,21 @@
 					fmt.Fprintf(w, dist)
 				}
 
-				if a.coverageOutputPath.String() != "" {
+				if a.apisUsedByModuleFile.String() != "" {
 					goal := "apps_only"
-					distFile := a.coverageOutputPath.String()
+					distFile := a.apisUsedByModuleFile.String()
 					fmt.Fprintf(w, "ifneq (,$(filter $(my_register_name),$(TARGET_BUILD_APPS)))\n"+
 						" $(call dist-for-goals,%s,%s:ndk_apis_usedby_apex/$(notdir %s))\n"+
-						"endif",
+						"endif\n",
+						goal, distFile, distFile)
+				}
+
+				if a.apisBackedByModuleFile.String() != "" {
+					goal := "apps_only"
+					distFile := a.apisBackedByModuleFile.String()
+					fmt.Fprintf(w, "ifneq (,$(filter $(my_register_name),$(TARGET_BUILD_APPS)))\n"+
+						" $(call dist-for-goals,%s,%s:ndk_apis_backedby_apex/$(notdir %s))\n"+
+						"endif\n",
 						goal, distFile, distFile)
 				}
 			}
diff --git a/apex/apex.go b/apex/apex.go
index 507d3ed..384d6c7 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -390,7 +390,8 @@
 	isCompressed bool
 
 	// Path of API coverage generate file
-	coverageOutputPath android.ModuleOutPath
+	apisUsedByModuleFile   android.ModuleOutPath
+	apisBackedByModuleFile android.ModuleOutPath
 }
 
 // apexFileClass represents a type of file that can be included in APEX.
diff --git a/apex/builder.go b/apex/builder.go
index e6bc3bd..67314d8 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -687,7 +687,7 @@
 		implicitInputs = append(implicitInputs, unsignedOutputFile)
 
 		// Run coverage analysis
-		apisUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+".txt")
+		apisUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.txt")
 		ctx.Build(pctx, android.BuildParams{
 			Rule:        generateAPIsUsedbyApexRule,
 			Implicits:   implicitInputs,
@@ -698,7 +698,19 @@
 				"readelf":   "${config.ClangBin}/llvm-readelf",
 			},
 		})
-		a.coverageOutputPath = apisUsedbyOutputFile
+		a.apisUsedByModuleFile = apisUsedbyOutputFile
+
+		apisBackedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_backing.txt")
+		ndkLibraryList := android.PathForSource(ctx, "system/core/rootdir/etc/public.libraries.android.txt")
+		rule := android.NewRuleBuilder(pctx, ctx)
+		rule.Command().
+			Tool(android.PathForSource(ctx, "build/soong/scripts/gen_ndk_backedby_apex.sh")).
+			Text(imageDir.String()).
+			Implicits(implicitInputs).
+			Output(apisBackedbyOutputFile).
+			Input(ndkLibraryList)
+		rule.Build("ndk_backedby_list", "Generate API libraries backed by Apex")
+		a.apisBackedByModuleFile = apisBackedbyOutputFile
 
 		bundleConfig := a.buildBundleConfig(ctx)
 
diff --git a/bp2build/Android.bp b/bp2build/Android.bp
index 8007574..2bbe4b5 100644
--- a/bp2build/Android.bp
+++ b/bp2build/Android.bp
@@ -11,6 +11,7 @@
     deps: [
         "soong-android",
         "soong-bazel",
+        "soong-genrule",
     ],
     testSrcs: [
         "build_conversion_test.go",
diff --git a/bp2build/androidbp_to_build_templates.go b/bp2build/androidbp_to_build_templates.go
index 9bac86b..5fed4fa 100644
--- a/bp2build/androidbp_to_build_templates.go
+++ b/bp2build/androidbp_to_build_templates.go
@@ -25,10 +25,10 @@
 	// for expanding more attributes.
 	soongModuleTarget = `soong_module(
     name = "%s",
-    module_name = "%s",
-    module_type = "%s",
-    module_variant = "%s",
-    module_deps = %s,
+    soong_module_name = "%s",
+    soong_module_type = "%s",
+    soong_module_variant = "%s",
+    soong_module_deps = %s,
 %s)`
 
 	bazelTarget = `%s(
@@ -38,7 +38,7 @@
 	// A simple provider to mark and differentiate Soong module rule shims from
 	// regular Bazel rules. Every Soong module rule shim returns a
 	// SoongModuleInfo provider, and can only depend on rules returning
-	// SoongModuleInfo in the `module_deps` attribute.
+	// SoongModuleInfo in the `soong_module_deps` attribute.
 	providersBzl = `SoongModuleInfo = provider(
     fields = {
         "name": "Name of module",
@@ -57,19 +57,19 @@
 def _generic_soong_module_impl(ctx):
     return [
         SoongModuleInfo(
-            name = ctx.attr.module_name,
-            type = ctx.attr.module_type,
-            variant = ctx.attr.module_variant,
+            name = ctx.attr.soong_module_name,
+            type = ctx.attr.soong_module_type,
+            variant = ctx.attr.soong_module_variant,
         ),
     ]
 
 generic_soong_module = rule(
     implementation = _generic_soong_module_impl,
     attrs = {
-        "module_name": attr.string(mandatory = True),
-        "module_type": attr.string(mandatory = True),
-        "module_variant": attr.string(),
-        "module_deps": attr.label_list(providers = [SoongModuleInfo]),
+        "soong_module_name": attr.string(mandatory = True),
+        "soong_module_type": attr.string(mandatory = True),
+        "soong_module_variant": attr.string(),
+        "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
     },
 )
 
@@ -89,20 +89,20 @@
     else:
         return False
 
-# soong_module is a macro that supports arbitrary kwargs, and uses module_type to
+# soong_module is a macro that supports arbitrary kwargs, and uses soong_module_type to
 # expand to the right underlying shim.
-def soong_module(name, module_type, **kwargs):
-    soong_module_rule = soong_module_rule_map.get(module_type)
+def soong_module(name, soong_module_type, **kwargs):
+    soong_module_rule = soong_module_rule_map.get(soong_module_type)
 
     if soong_module_rule == None:
         # This module type does not have an existing rule to map to, so use the
         # generic_soong_module rule instead.
         generic_soong_module(
             name = name,
-            module_type = module_type,
-            module_name = kwargs.pop("module_name", ""),
-            module_variant = kwargs.pop("module_variant", ""),
-            module_deps = kwargs.pop("module_deps", []),
+            soong_module_type = soong_module_type,
+            soong_module_name = kwargs.pop("soong_module_name", ""),
+            soong_module_variant = kwargs.pop("soong_module_variant", ""),
+            soong_module_deps = kwargs.pop("soong_module_deps", []),
         )
     else:
         supported_kwargs = dict()
diff --git a/bp2build/build_conversion_test.go b/bp2build/build_conversion_test.go
index 5fd3999..7fbd257 100644
--- a/bp2build/build_conversion_test.go
+++ b/bp2build/build_conversion_test.go
@@ -16,6 +16,7 @@
 
 import (
 	"android/soong/android"
+	"android/soong/genrule"
 	"testing"
 )
 
@@ -31,10 +32,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
 )`,
 		},
@@ -46,10 +47,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
     ramdisk = True,
 )`,
@@ -62,10 +63,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
     owner = "a_string_with\"quotes\"_and_\\backslashes\\\\",
 )`,
@@ -78,10 +79,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
     required = [
         "bar",
@@ -96,10 +97,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
     target_required = [
         "qux",
@@ -124,10 +125,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
     dist = {
         "tag": ".foo",
@@ -162,10 +163,10 @@
 		`,
 			expectedBazelTarget: `soong_module(
     name = "foo",
-    module_name = "foo",
-    module_type = "custom",
-    module_variant = "",
-    module_deps = [
+    soong_module_name = "foo",
+    soong_module_type = "custom",
+    soong_module_variant = "",
+    soong_module_deps = [
     ],
     dists = [
         {
@@ -302,6 +303,54 @@
     ],
 )`,
 		},
+		{
+			moduleTypeUnderTest:        "genrule",
+			moduleTypeUnderTestFactory: genrule.GenRuleFactory,
+			bp: `genrule {
+    name: "foo",
+    out: ["foo.out"],
+    srcs: ["foo.in"],
+    tool_files: [":foo.tool"],
+    cmd: "$(location :foo.tool) arg $(in) $(out)",
+}`,
+			expectedBazelTarget: `genrule(
+    name = "foo",
+    cmd = "$(location :foo.tool) arg $(SRCS) $(OUTS)",
+    outs = [
+        "foo.out",
+    ],
+    srcs = [
+        "foo.in",
+    ],
+    tools = [
+        ":foo.tool",
+    ],
+)`,
+		},
+		{
+			moduleTypeUnderTest:        "genrule",
+			moduleTypeUnderTestFactory: genrule.GenRuleFactory,
+			bp: `genrule {
+    name: "foo",
+    out: ["foo.out"],
+    srcs: ["foo.in"],
+    tools: [":foo.tool"],
+    cmd: "$(location :foo.tool) --out-dir=$(genDir) $(in)",
+}`,
+			expectedBazelTarget: `genrule(
+    name = "foo",
+    cmd = "$(location :foo.tool) --out-dir=$(GENDIR) $(SRCS)",
+    outs = [
+        "foo.out",
+    ],
+    srcs = [
+        "foo.in",
+    ],
+    tools = [
+        ":foo.tool",
+    ],
+)`,
+		},
 	}
 
 	dir := "."
diff --git a/bp2build/bzl_conversion.go b/bp2build/bzl_conversion.go
index 04c4542..f2f6b01 100644
--- a/bp2build/bzl_conversion.go
+++ b/bp2build/bzl_conversion.go
@@ -109,9 +109,9 @@
 		factoryName := runtime.FuncForPC(reflect.ValueOf(factory).Pointer()).Name()
 		pkg := strings.Split(factoryName, ".")[0]
 		attrs := `{
-        "module_name": attr.string(mandatory = True),
-        "module_variant": attr.string(),
-        "module_deps": attr.label_list(providers = [SoongModuleInfo]),
+        "soong_module_name": attr.string(mandatory = True),
+        "soong_module_variant": attr.string(),
+        "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
 `
 		attrs += getAttributes(factory)
 		attrs += "    },"
diff --git a/bp2build/bzl_conversion_test.go b/bp2build/bzl_conversion_test.go
index 01c7271..c1e660e 100644
--- a/bp2build/bzl_conversion_test.go
+++ b/bp2build/bzl_conversion_test.go
@@ -83,9 +83,9 @@
 custom = rule(
     implementation = _custom_impl,
     attrs = {
-        "module_name": attr.string(mandatory = True),
-        "module_variant": attr.string(),
-        "module_deps": attr.label_list(providers = [SoongModuleInfo]),
+        "soong_module_name": attr.string(mandatory = True),
+        "soong_module_variant": attr.string(),
+        "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
         "bool_prop": attr.bool(),
         "bool_ptr_prop": attr.bool(),
         "int64_ptr_prop": attr.int(),
@@ -107,9 +107,9 @@
 custom_defaults = rule(
     implementation = _custom_defaults_impl,
     attrs = {
-        "module_name": attr.string(mandatory = True),
-        "module_variant": attr.string(),
-        "module_deps": attr.label_list(providers = [SoongModuleInfo]),
+        "soong_module_name": attr.string(mandatory = True),
+        "soong_module_variant": attr.string(),
+        "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
         "bool_prop": attr.bool(),
         "bool_ptr_prop": attr.bool(),
         "int64_ptr_prop": attr.int(),
@@ -131,9 +131,9 @@
 custom_test_ = rule(
     implementation = _custom_test__impl,
     attrs = {
-        "module_name": attr.string(mandatory = True),
-        "module_variant": attr.string(),
-        "module_deps": attr.label_list(providers = [SoongModuleInfo]),
+        "soong_module_name": attr.string(mandatory = True),
+        "soong_module_variant": attr.string(),
+        "soong_module_deps": attr.label_list(providers = [SoongModuleInfo]),
         "bool_prop": attr.bool(),
         "bool_ptr_prop": attr.bool(),
         "int64_ptr_prop": attr.int(),
diff --git a/cc/config/tidy.go b/cc/config/tidy.go
index d5d01b4..7cc9f43 100644
--- a/cc/config/tidy.go
+++ b/cc/config/tidy.go
@@ -62,10 +62,8 @@
 		}, ",")
 		// clang-analyzer-* checks are too slow to be in the default for WITH_TIDY=1.
 		// nightly builds add CLANG_ANALYZER_CHECKS=1 to run those checks.
-		// Some test code have clang-diagnostic-padded warnings that cannot be
-		// suppressed, but only by disabling clang-analyzer-optin.performance.*.
 		if ctx.Config().IsEnvTrue("CLANG_ANALYZER_CHECKS") {
-			checks += ",clang-analyzer-*,-clang-analyzer-optin.performance.*"
+			checks += ",clang-analyzer-*"
 		}
 		return checks
 	})
diff --git a/genrule/genrule.go b/genrule/genrule.go
index 8df32f2..1f47dec 100644
--- a/genrule/genrule.go
+++ b/genrule/genrule.go
@@ -46,6 +46,8 @@
 	ctx.FinalDepsMutators(func(ctx android.RegisterMutatorsContext) {
 		ctx.BottomUp("genrule_tool_deps", toolDepsMutator).Parallel()
 	})
+
+	android.RegisterBp2BuildMutator("genrule", bp2buildMutator)
 }
 
 var (
@@ -772,6 +774,70 @@
 	Out []string `android:"arch_variant"`
 }
 
+type bazelGenruleAttributes struct {
+	Name  *string
+	Srcs  []string
+	Outs  []string
+	Tools []string
+	Cmd   string
+}
+
+type bazelGenrule struct {
+	android.BazelTargetModuleBase
+	bazelGenruleAttributes
+}
+
+func BazelGenruleFactory() android.Module {
+	module := &bazelGenrule{}
+	module.AddProperties(&module.bazelGenruleAttributes)
+	android.InitBazelTargetModule(module)
+	return module
+}
+
+func bp2buildMutator(ctx android.TopDownMutatorContext) {
+	if m, ok := ctx.Module().(*Module); ok {
+		name := "__bp2build__" + m.Name()
+		// Replace in and out variables with $< and $@
+		var cmd string
+		if m.properties.Cmd != nil {
+			cmd = strings.Replace(*m.properties.Cmd, "$(in)", "$(SRCS)", -1)
+			cmd = strings.Replace(cmd, "$(out)", "$(OUTS)", -1)
+			cmd = strings.Replace(cmd, "$(genDir)", "$(GENDIR)", -1)
+		}
+
+		// The Out prop is not in an immediately accessible field
+		// in the Module struct, so use GetProperties and cast it
+		// to the known struct prop.
+		var outs []string
+		for _, propIntf := range m.GetProperties() {
+			if props, ok := propIntf.(*genRuleProperties); ok {
+				outs = props.Out
+				break
+			}
+		}
+
+		// Bazel only has the "tools" attribute.
+		tools := append(m.properties.Tools, m.properties.Tool_files...)
+
+		// Create the BazelTargetModule.
+		ctx.CreateModule(BazelGenruleFactory, &bazelGenruleAttributes{
+			Name:  proptools.StringPtr(name),
+			Srcs:  m.properties.Srcs,
+			Outs:  outs,
+			Cmd:   cmd,
+			Tools: tools,
+		}, &bazel.BazelTargetModuleProperties{
+			Rule_class: "genrule",
+		})
+	}
+}
+
+func (m *bazelGenrule) Name() string {
+	return m.BaseModuleName()
+}
+
+func (m *bazelGenrule) GenerateAndroidBuildActions(ctx android.ModuleContext) {}
+
 var Bool = proptools.Bool
 var String = proptools.String
 
diff --git a/licenses/Android.bp b/licenses/Android.bp
index 8032dc5..e87bdcf 100644
--- a/licenses/Android.bp
+++ b/licenses/Android.bp
@@ -14,1074 +14,1216 @@
 // limitations under the License.
 
 package {
-	default_visibility: ["//visibility:public"],
-	default_applicable_licenses: ["Android-Apache-2.0"],
+    default_visibility: ["//visibility:public"],
+    default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
 license {
-	name: "Android-Apache-2.0",
-	license_kinds: ["SPDX-license-identifier-Apache-2.0"],
-	copyright_notice: "Copyright (C) The Android Open Source Project",
-	license_text: ["LICENSE"],
+    name: "Android-Apache-2.0",
+    license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+    copyright_notice: "Copyright (C) The Android Open Source Project",
+    license_text: ["LICENSE"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AFL-1.1",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/AFL-1.1.html",
+    name: "SPDX-license-identifier-0BSD",
+    conditions: ["unencumbered"],
+    url: "https://spdx.org/licenses/0BSD",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AFL-1.2",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/AFL-1.2.html",
+    name: "SPDX-license-identifier-AFL-1.1",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/AFL-1.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AFL-2.0",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/AFL-2.0.html",
+    name: "SPDX-license-identifier-AFL-1.2",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/AFL-1.2.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AFL-2.1",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/AFL-2.1.html",
+    name: "SPDX-license-identifier-AFL-2.0",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/AFL-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AFL-3.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/AFL-3.0.html",
+    name: "SPDX-license-identifier-AFL-2.1",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/AFL-2.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL.html",
+    name: "SPDX-license-identifier-AFL-3.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/AFL-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL-1.0.html",
+    name: "SPDX-license-identifier-AGPL",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL-1.0-only",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL-1.0-only.html",
+    name: "SPDX-license-identifier-AGPL-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL-1.0-or-later",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL-1.0-or-later.html",
+    name: "SPDX-license-identifier-AGPL-1.0-only",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL-1.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL-3.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL-3.0.html",
+    name: "SPDX-license-identifier-AGPL-1.0-or-later",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL-1.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL-3.0-only",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL-3.0-only.html",
+    name: "SPDX-license-identifier-AGPL-3.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-AGPL-3.0-or-later",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/AGPL-3.0-or-later.html",
+    name: "SPDX-license-identifier-AGPL-3.0-only",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL-3.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Apache",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-AGPL-3.0-or-later",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/AGPL-3.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Apache-1.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Apache-1.0.html",
+    name: "SPDX-license-identifier-Apache",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Apache-1.1",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Apache-1.1.html",
+    name: "SPDX-license-identifier-Apache-1.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Apache-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Apache-2.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Apache-2.0.html",
+    name: "SPDX-license-identifier-Apache-1.1",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Apache-1.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Artistic",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-Apache-2.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Apache-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Artistic-1.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Artistic-1.0.html",
+    name: "SPDX-license-identifier-Artistic",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Artistic-1.0-Perl",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Artistic-1.0-Perl.html",
+    name: "SPDX-license-identifier-Artistic-1.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Artistic-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Artistic-1.0-cl8",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Artistic-1.0-cl8.html",
+    name: "SPDX-license-identifier-Artistic-1.0-Perl",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Artistic-1.0-Perl.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Artistic-2.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Artistic-2.0.html",
+    name: "SPDX-license-identifier-Artistic-1.0-cl8",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Artistic-1.0-cl8.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-Artistic-2.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Artistic-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-1-Clause",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-1-Clause.html",
+    name: "SPDX-license-identifier-BSD",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-2-Clause",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-2-Clause.html",
+    name: "SPDX-license-identifier-BSD-1-Clause",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-1-Clause.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-2-Clause-FreeBSD",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html",
+    name: "SPDX-license-identifier-BSD-2-Clause",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-2-Clause.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-2-Clause-NetBSD",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html",
+    name: "SPDX-license-identifier-BSD-2-Clause-FreeBSD",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-2-Clause-Patent",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-2-Clause-Patent.html",
+    name: "SPDX-license-identifier-BSD-2-Clause-NetBSD",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause.html",
+    name: "SPDX-license-identifier-BSD-2-Clause-Patent",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-2-Clause-Patent.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-Attribution",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-Attribution.html",
+    name: "SPDX-license-identifier-BSD-3-Clause",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-Clear",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-Clear.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-Attribution",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-Attribution.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-LBNL",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-LBNL.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-Clear",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-Clear.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-No-Nuclear-License",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-LBNL",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-LBNL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-No-Nuclear-License-2014",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-No-Nuclear-License",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-No-Nuclear-Warranty",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-No-Nuclear-License-2014",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-3-Clause-Open-MPI",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-No-Nuclear-Warranty",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-4-Clause",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-4-Clause.html",
+    name: "SPDX-license-identifier-BSD-3-Clause-Open-MPI",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-4-Clause-UC",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-4-Clause-UC.html",
+    name: "SPDX-license-identifier-BSD-4-Clause",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-4-Clause.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-Protection",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-Protection.html",
+    name: "SPDX-license-identifier-BSD-4-Clause-UC",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-4-Clause-UC.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSD-Source-Code",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSD-Source-Code.html",
+    name: "SPDX-license-identifier-BSD-Protection",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-Protection.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-BSL-1.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/BSL-1.0.html",
+    name: "SPDX-license-identifier-BSD-Source-Code",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSD-Source-Code.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Beerware",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/Beerware.html",
+    name: "SPDX-license-identifier-BSL-1.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/BSL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-Beerware",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/Beerware.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-1.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/CC-BY-1.0.html",
+    name: "SPDX-license-identifier-CC-BY",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-2.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/CC-BY-2.0.html",
+    name: "SPDX-license-identifier-CC-BY-1.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/CC-BY-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-2.5",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/CC-BY-2.5.html",
+    name: "SPDX-license-identifier-CC-BY-2.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/CC-BY-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-3.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/CC-BY-3.0.html",
+    name: "SPDX-license-identifier-CC-BY-2.5",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/CC-BY-2.5.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-4.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/CC-BY-4.0.html",
+    name: "SPDX-license-identifier-CC-BY-3.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/CC-BY-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC",
-	conditions: ["by_exception_only", "not_allowed"],
+    name: "SPDX-license-identifier-CC-BY-4.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/CC-BY-4.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-1.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-2.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-2.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-2.5",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-2.5.html",
+    name: "SPDX-license-identifier-CC-BY-NC-2.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-3.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-3.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-2.5",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-2.5.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-4.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-4.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-3.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-ND-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-4.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-4.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-ND-2.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-ND-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-ND-2.5",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html",
+    name: "SPDX-license-identifier-CC-BY-NC-ND-2.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-ND-3.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-ND-2.5",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-ND-4.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-ND-3.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-SA-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-ND-4.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-SA-2.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-SA-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-SA-2.5",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html",
+    name: "SPDX-license-identifier-CC-BY-NC-SA-2.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-SA-3.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-SA-2.5",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-NC-SA-4.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html",
+    name: "SPDX-license-identifier-CC-BY-NC-SA-3.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-ND",
-	conditions: ["restricted"],
+    name: "SPDX-license-identifier-CC-BY-NC-SA-4.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-ND-1.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-ND-1.0.html",
+    name: "SPDX-license-identifier-CC-BY-ND",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-ND-2.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-ND-2.0.html",
+    name: "SPDX-license-identifier-CC-BY-ND-1.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-ND-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-ND-2.5",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-ND-2.5.html",
+    name: "SPDX-license-identifier-CC-BY-ND-2.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-ND-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-ND-3.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-ND-3.0.html",
+    name: "SPDX-license-identifier-CC-BY-ND-2.5",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-ND-2.5.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-ND-4.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-ND-4.0.html",
+    name: "SPDX-license-identifier-CC-BY-ND-3.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-ND-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA",
-	conditions: ["restricted"],
+    name: "SPDX-license-identifier-CC-BY-ND-4.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-ND-4.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA-1.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-SA-1.0.html",
+    name: "SPDX-license-identifier-CC-BY-SA",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA-2.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-SA-2.0.html",
+    name: "SPDX-license-identifier-CC-BY-SA-1.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-SA-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA-2.5",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-SA-2.5.html",
+    name: "SPDX-license-identifier-CC-BY-SA-2.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-SA-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA-3.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-SA-3.0.html",
+    name: "SPDX-license-identifier-CC-BY-SA-2.5",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-SA-2.5.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA-4.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/CC-BY-SA-4.0.html",
+    name: "SPDX-license-identifier-CC-BY-SA-3.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-SA-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC-BY-SA-ND",
-	conditions: ["restricted"],
+    name: "SPDX-license-identifier-CC-BY-SA-4.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/CC-BY-SA-4.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CC0-1.0",
-	conditions: ["unencumbered"],
-	url: "https://spdx.org/licenses/CC0-1.0.html",
+    name: "SPDX-license-identifier-CC-BY-SA-ND",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CPAL-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/CPAL-1.0.html",
+    name: "SPDX-license-identifier-CC0-1.0",
+    conditions: ["unencumbered"],
+    url: "https://spdx.org/licenses/CC0-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-CPL-1.0",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/CPL-1.0.html",
+    name: "SPDX-license-identifier-CPAL-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/CPAL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EPL",
-	conditions: ["reciprocal"],
+    name: "SPDX-license-identifier-CPL-1.0",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/CPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EPL-1.0",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/EPL-1.0.html",
+    name: "SPDX-license-identifier-EPL",
+    conditions: ["reciprocal"],
+}
+
+license_kind {
+    name: "SPDX-license-identifier-EPL-1.0",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/EPL-1.0.html",
+}
+
+license_kind {
+    name: "SPDX-license-identifier-EPL-2.0",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/EPL-2.0.html",
+}
+
+license_kind {
+    name: "SPDX-license-identifier-EUPL",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EPL-2.0",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/EPL-2.0.html",
+    name: "SPDX-license-identifier-EUPL-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/EUPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EUPL",
-	conditions: ["by_exception_only", "not_allowed"],
+    name: "SPDX-license-identifier-EUPL-1.1",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/EUPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EUPL-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/EUPL-1.0.html",
+    name: "SPDX-license-identifier-EUPL-1.2",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/EUPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EUPL-1.1",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/EUPL-1.0.html",
+    name: "SPDX-license-identifier-FSFAP",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/FSFAP",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-EUPL-1.2",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/EUPL-1.0.html",
+    name: "SPDX-license-identifier-FTL",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/FTL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-FTL",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/FTL.html",
+    name: "SPDX-license-identifier-GFDL",
+    conditions: ["by_exception_only"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL",
-	conditions: ["restricted"],
+    name: "SPDX-license-identifier-GPL",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-1.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-1.0.html",
+    name: "SPDX-license-identifier-GPL-1.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-1.0+",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-1.0+.html",
+    name: "SPDX-license-identifier-GPL-1.0+",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-1.0+.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-1.0-only",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-1.0-only.html",
+    name: "SPDX-license-identifier-GPL-1.0-only",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-1.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-1.0-or-later",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-1.0-or-later.html",
+    name: "SPDX-license-identifier-GPL-1.0-or-later",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-1.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0.html",
+    name: "SPDX-license-identifier-GPL-2.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0+",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0+.html",
+    name: "SPDX-license-identifier-GPL-2.0+",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0+.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-only",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-only.html",
+    name: "SPDX-license-identifier-GPL-2.0-only",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-or-later",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-or-later.html",
+    name: "SPDX-license-identifier-GPL-2.0-or-later",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-with-GCC-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html",
+    name: "SPDX-license-identifier-GPL-2.0-with-GCC-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-with-autoconf-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html",
+    name: "SPDX-license-identifier-GPL-2.0-with-autoconf-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-with-bison-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html",
+    name: "SPDX-license-identifier-GPL-2.0-with-bison-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-with-classpath-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html",
+    name: "SPDX-license-identifier-GPL-2.0-with-classpath-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-2.0-with-font-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-2.0-with-font-exception.html",
+    name: "SPDX-license-identifier-GPL-2.0-with-font-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-2.0-with-font-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-3.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-3.0.html",
+    name: "SPDX-license-identifier-GPL-3.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-3.0+",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-3.0+.html",
+    name: "SPDX-license-identifier-GPL-3.0+",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-3.0+.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-3.0-only",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-3.0-only.html",
+    name: "SPDX-license-identifier-GPL-3.0-only",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-3.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-3.0-or-later",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-3.0-or-later.html",
+    name: "SPDX-license-identifier-GPL-3.0-or-later",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-3.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-3.0-with-GCC-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html",
+    name: "SPDX-license-identifier-GPL-3.0-with-GCC-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-3.0-with-autoconf-exception",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html",
+    name: "SPDX-license-identifier-GPL-3.0-with-autoconf-exception",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-GPL-with-classpath-exception",
-	conditions: ["restricted"],
+    name: "SPDX-license-identifier-GPL-with-classpath-exception",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-HPND",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/HPND.html",
+    name: "SPDX-license-identifier-HPND",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/HPND.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-ICU",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/ICU.html",
+    name: "SPDX-license-identifier-ICU",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/ICU.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-ISC",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/ISC.html",
+    name: "SPDX-license-identifier-ISC",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/ISC.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-JSON",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/JSON.html",
+    name: "SPDX-license-identifier-JSON",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/JSON.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL",
-	conditions: ["restricted"],
+    name: "SPDX-license-identifier-LGPL",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.0.html",
+    name: "SPDX-license-identifier-LGPL-2.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.0+",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.0+.html",
+    name: "SPDX-license-identifier-LGPL-2.0+",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.0+.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.0-only",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.0-only.html",
+    name: "SPDX-license-identifier-LGPL-2.0-only",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.0-or-later",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.0-or-later.html",
+    name: "SPDX-license-identifier-LGPL-2.0-or-later",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.1",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.1.html",
+    name: "SPDX-license-identifier-LGPL-2.1",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.1+",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.1+.html",
+    name: "SPDX-license-identifier-LGPL-2.1+",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.1+.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.1-only",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.1-only.html",
+    name: "SPDX-license-identifier-LGPL-2.1-only",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.1-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-2.1-or-later",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-2.1-or-later.html",
+    name: "SPDX-license-identifier-LGPL-2.1-or-later",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-2.1-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-3.0",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-3.0.html",
+    name: "SPDX-license-identifier-LGPL-3.0",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-3.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-3.0+",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-3.0+.html",
+    name: "SPDX-license-identifier-LGPL-3.0+",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-3.0+.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-3.0-only",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-3.0-only.html",
+    name: "SPDX-license-identifier-LGPL-3.0-only",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-3.0-only.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPL-3.0-or-later",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPL-3.0-or-later.html",
+    name: "SPDX-license-identifier-LGPL-3.0-or-later",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPL-3.0-or-later.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LGPLLR",
-	conditions: ["restricted"],
-	url: "https://spdx.org/licenses/LGPLLR.html",
+    name: "SPDX-license-identifier-LGPLLR",
+    conditions: ["restricted"],
+    url: "https://spdx.org/licenses/LGPLLR.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-LPL-1.02",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/LPL-1.02.html",
+    name: "SPDX-license-identifier-LPL-1.02",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/LPL-1.02.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MIT",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-MIT",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MIT-0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MIT-0.html",
+    name: "SPDX-license-identifier-MIT-0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MIT-0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MIT-CMU",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MIT-CMU.html",
+    name: "SPDX-license-identifier-MIT-CMU",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MIT-CMU.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MIT-advertising",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MIT-advertising.html",
+    name: "SPDX-license-identifier-MIT-advertising",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MIT-advertising.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MIT-enna",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MIT-enna.html",
+    name: "SPDX-license-identifier-MIT-enna",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MIT-enna.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MIT-feh",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MIT-feh.html",
+    name: "SPDX-license-identifier-MIT-feh",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MIT-feh.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MITNFA",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MITNFA.html",
+    name: "SPDX-license-identifier-MITNFA",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MITNFA.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MPL",
-	conditions: ["reciprocal"],
+    name: "SPDX-license-identifier-MPL",
+    conditions: ["reciprocal"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MPL-1.0",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/MPL-1.0.html",
+    name: "SPDX-license-identifier-MPL-1.0",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/MPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MPL-1.1",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/MPL-1.1.html",
+    name: "SPDX-license-identifier-MPL-1.1",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/MPL-1.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MPL-2.0",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/MPL-2.0.html",
+    name: "SPDX-license-identifier-MPL-2.0",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/MPL-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MPL-2.0-no-copyleft-exception",
-	conditions: ["reciprocal"],
-	url: "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html",
+    name: "SPDX-license-identifier-MPL-2.0-no-copyleft-exception",
+    conditions: ["reciprocal"],
+    url: "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-MS-PL",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/MS-PL.html",
+    name: "SPDX-license-identifier-MS-PL",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/MS-PL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-NCSA",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/NCSA.html",
+    name: "SPDX-license-identifier-MS-RL",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/MS-RL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL",
-	conditions: ["by_exception_only"],
+    name: "SPDX-license-identifier-NCSA",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/NCSA.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL-1.0",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/OFL-1.0.html",
+    name: "SPDX-license-identifier-OFL",
+    conditions: ["by_exception_only"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL-1.0-RFN",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/OFL-1.0-RFN.html",
+    name: "SPDX-license-identifier-OFL-1.0",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/OFL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL-1.0-no-RFN",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/OFL-1.0-no-RFN.html",
+    name: "SPDX-license-identifier-OFL-1.0-RFN",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/OFL-1.0-RFN.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL-1.1",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/OFL-1.1.html",
+    name: "SPDX-license-identifier-OFL-1.0-no-RFN",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/OFL-1.0-no-RFN.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL-1.1-RFN",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/OFL-1.1-RFN.html",
+    name: "SPDX-license-identifier-OFL-1.1",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/OFL-1.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OFL-1.1-no-RFN",
-	conditions: ["by_exception_only"],
-	url: "https://spdx.org/licenses/OFL-1.1-no-RFN.html",
+    name: "SPDX-license-identifier-OFL-1.1-RFN",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/OFL-1.1-RFN.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-OpenSSL",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/OpenSSL.html",
+    name: "SPDX-license-identifier-OFL-1.1-no-RFN",
+    conditions: ["by_exception_only"],
+    url: "https://spdx.org/licenses/OFL-1.1-no-RFN.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-PSF-2.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/PSF-2.0.html",
+    name: "SPDX-license-identifier-OpenSSL",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/OpenSSL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-SISSL",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/SISSL.html",
+    name: "SPDX-license-identifier-PSF-2.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/PSF-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-SISSL-1.2",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/SISSL-1.2.html",
+    name: "SPDX-license-identifier-SISSL",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/SISSL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-SPL-1.0",
-	conditions: ["by_exception_only", "reciprocal"],
-	url: "https://spdx.org/licenses/SPL-1.0.html",
+    name: "SPDX-license-identifier-SISSL-1.2",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/SISSL-1.2.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-SSPL",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/SSPL.html",
+    name: "SPDX-license-identifier-SPL-1.0",
+    conditions: [
+        "by_exception_only",
+        "reciprocal",
+    ],
+    url: "https://spdx.org/licenses/SPL-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-UPL-1.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/UPL-1.-.html",
+    name: "SPDX-license-identifier-SSPL",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/SSPL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Unicode-DFS",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-UPL-1.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/UPL-1.-.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Unicode-DFS-2015",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Unicode-DFS-2015.html",
+    name: "SPDX-license-identifier-Unicode-DFS",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Unicode-DFS-2016",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Unicode-DFS-2016.html",
+    name: "SPDX-license-identifier-Unicode-DFS-2015",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Unicode-DFS-2015.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Unlicense",
-	conditions: ["unencumbered"],
-	url: "https://spdx.org/licenses/Unlicense.html",
+    name: "SPDX-license-identifier-Unicode-DFS-2016",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Unicode-DFS-2016.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-W3C",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/W3C.html",
+    name: "SPDX-license-identifier-Unlicense",
+    conditions: ["unencumbered"],
+    url: "https://spdx.org/licenses/Unlicense.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-W3C-19980720",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/W3C-19980720.html",
+    name: "SPDX-license-identifier-W3C",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/W3C.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-W3C-20150513",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/W3C-20150513.html",
+    name: "SPDX-license-identifier-W3C-19980720",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/W3C-19980720.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-WTFPL",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/WTFPL.html",
+    name: "SPDX-license-identifier-W3C-20150513",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/W3C-20150513.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Watcom-1.0",
-	conditions: ["by_exception_only", "not_allowed"],
-	url: "https://spdx.org/licenses/Watcom-1.0.html",
+    name: "SPDX-license-identifier-WTFPL",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/WTFPL.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Xnet",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Xnet.html",
+    name: "SPDX-license-identifier-Watcom-1.0",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+    url: "https://spdx.org/licenses/Watcom-1.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-ZPL",
-	conditions: ["notice"],
+    name: "SPDX-license-identifier-Xnet",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Xnet.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-ZPL-1.1",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/ZPL-1.1.html",
+    name: "SPDX-license-identifier-ZPL",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "SPDX-license-identifier-ZPL-2.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/ZPL-2.0.html",
+    name: "SPDX-license-identifier-ZPL-1.1",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/ZPL-1.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-ZPL-2.1",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/ZPL-2.1.html",
+    name: "SPDX-license-identifier-ZPL-2.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/ZPL-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Zend-2.0",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Zend-2.0.html",
+    name: "SPDX-license-identifier-ZPL-2.1",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/ZPL-2.1.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-Zlib",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/Zlib.html",
+    name: "SPDX-license-identifier-Zend-2.0",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Zend-2.0.html",
 }
 
 license_kind {
-	name: "SPDX-license-identifier-libtiff",
-	conditions: ["notice"],
-	url: "https://spdx.org/licenses/libtiff.html",
+    name: "SPDX-license-identifier-Zlib",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/Zlib.html",
 }
 
+license_kind {
+    name: "SPDX-license-identifier-libtiff",
+    conditions: ["notice"],
+    url: "https://spdx.org/licenses/libtiff.html",
+}
 
 // Legacy license kinds -- do not add new references -- use an spdx kind instead.
 license_kind {
-	name: "legacy_unknown",
-	conditions: ["by_exception_only"],
+    name: "legacy_unknown",
+    conditions: ["by_exception_only"],
 }
 
 license_kind {
-	name: "legacy_unencumbered",
-	conditions: ["unencumbered"],
+    name: "legacy_unencumbered",
+    conditions: ["unencumbered"],
 }
 
 license_kind {
-	name: "legacy_permissive",
-	conditions: ["permissive"],
+    name: "legacy_permissive",
+    conditions: ["permissive"],
 }
 
 license_kind {
-	name: "legacy_notice",
-	conditions: ["notice"],
+    name: "legacy_notice",
+    conditions: ["notice"],
 }
 
 license_kind {
-	name: "legacy_reciprocal",
-	conditions: ["reciprocal"],
+    name: "legacy_reciprocal",
+    conditions: ["reciprocal"],
 }
 
 license_kind {
-	name: "legacy_restricted",
-	conditions: ["restricted"],
+    name: "legacy_restricted",
+    conditions: ["restricted"],
 }
 
 license_kind {
-	name: "legacy_by_exception_only",
-	conditions: ["by_exception_only"],
+    name: "legacy_by_exception_only",
+    conditions: ["by_exception_only"],
 }
 
 license_kind {
-	name: "legacy_not_allowed",
-	conditions: ["by_exception_only", "not_allowed"],
+    name: "legacy_not_a_contribution",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
 }
 
 license_kind {
-	name: "legacy_proprietary",
-	conditions: ["by_exception_only", "not_allowed", "proprietary"],
+    name: "legacy_not_allowed",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+    ],
+}
+
+license_kind {
+    name: "legacy_proprietary",
+    conditions: [
+        "by_exception_only",
+        "not_allowed",
+        "proprietary",
+    ],
 }
diff --git a/scripts/gen_ndk_backedby_apex.sh b/scripts/gen_ndk_backedby_apex.sh
new file mode 100755
index 0000000..e0da602
--- /dev/null
+++ b/scripts/gen_ndk_backedby_apex.sh
@@ -0,0 +1,55 @@
+#!/bin/bash -e
+
+# Copyright 2020 Google Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Generates NDK API txt file used by Mainline modules. NDK APIs would have value
+# "UND" in Ndx column and have suffix "@LIB_NAME" in Name column.
+# For example, current line llvm-readelf output is:
+# 1: 00000000     0     FUNC      GLOBAL  DEFAULT   UND   dlopen@LIBC
+# After the parse function below "dlopen" would be write to the output file.
+printHelp() {
+    echo "**************************** Usage Instructions ****************************"
+    echo "This script is used to generate the Mainline modules backed-by NDK symbols."
+    echo ""
+    echo "To run this script use: ./ndk_backedby_module.sh \$BINARY_IMAGE_DIRECTORY \$OUTPUT_FILE_PATH \$NDK_LIB_NAME_LIST"
+    echo "For example: If all the module image files that you would like to run is under directory '/myModule' and output write to /backedby.txt then the command would be:"
+    echo "./ndk_usedby_module.sh /myModule /backedby.txt /ndkLibList.txt"
+    echo "If the module1 is backing lib1 then the backedby.txt would contains: "
+    echo "lib1"
+}
+
+genBackedByList() {
+  dir="$1"
+  [[ ! -e "$2" ]] && echo "" >> "$2"
+  while IFS= read -r line
+  do
+    soFileName=$(echo "$line" | sed 's/\(.*so\).*/\1/')
+    if [[ ! -z "$soFileName" && "$soFileName" != *"#"* ]]
+    then
+      find "$dir" -type f -name "$soFileName" -exec echo "$soFileName" >> "$2" \;
+    fi
+  done < "$3"
+}
+
+if [[ "$1" == "help" ]]
+then
+  printHelp
+elif [[ "$#" -ne 3 ]]
+then
+  echo "Wrong argument length. Expecting 3 argument representing image file directory, output path, path to ndk library list."
+else
+  [[ -e "$2" ]] && rm "$2"
+  genBackedByList "$1" "$2" "$3"
+fi