Update to use Starlark rules_android. Reapply ba7310ce4a1d8fb14434597fbc7440a4074f7695 (#1297)

Update to use Starlark rules_android. Reapply ba7310ce4a1d8fb14434597fbc7440a4074f7695

Reverts https://github.com/bazel-contrib/rules_jvm_external/pull/1215 plus accounting for additional changes since https://github.com/bazel-contrib/rules_jvm_external/commit/ba7310ce4a1d8fb14434597fbc7440a4074f7695 went in

---------

Co-authored-by: Simon Mavi Stewart <simon.m.stewart@gmail.com>
diff --git a/.bazelrc b/.bazelrc
index 7cc1e62..29a6ef7 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -9,12 +9,24 @@
 build --experimental_strict_java_deps=strict
 build --explicit_java_test_deps
 
-build --experimental_sibling_repository_layout
-
 # Make sure we get something helpful when tests fail
 test --verbose_failures
 test --test_output=errors
 
+# Required to get `protobuf` compiling. Note that MSVC requires a
+# different flag than both macOS and Linux.
+
+common --enable_platform_specific_config
+common:linux --cxxopt=-std=c++17
+common:linux --host_cxxopt=-std=c++17
+common:macos --cxxopt=-std=c++17
+common:macos --host_cxxopt=-std=c++17
+common:windows --cxxopt=/std:c++17
+common:windows --host_cxxopt=/std:c++17
+
+# Enable protobuf MSVC support on Windows
+build:windows --define=protobuf_allow_msvc=true
+
 # Every JVM creates a temporary performance instrumentation file in
 # /tmp/hsperfdata_$USERNAME/$PID. When we use sandboxing, we use PID
 # namespaces, which means that the PIDs are virtualized and all
diff --git a/MODULE.bazel b/MODULE.bazel
index cb41ff2..3bf952c 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -4,18 +4,18 @@
     bazel_compatibility = [">=7.0.0"],
 )
 
-bazel_dep(name = "rules_android", version = "0.1.1")
-bazel_dep(name = "bazel_features", version = "1.19.0")
+bazel_dep(name = "rules_android", version = "0.6.6")
+bazel_dep(name = "bazel_features", version = "1.30.0")
 bazel_dep(name = "bazel_skylib", version = "1.7.1")
 bazel_dep(name = "package_metadata", version = "0.0.3")
-bazel_dep(name = "platforms", version = "0.0.10")
+bazel_dep(name = "platforms", version = "0.0.11")
 bazel_dep(name = "rules_license", version = "1.0.0")
-bazel_dep(name = "rules_java", version = "7.12.2")
+bazel_dep(name = "rules_java", version = "8.13.0")
 bazel_dep(name = "rules_kotlin", version = "1.9.6")
-bazel_dep(name = "rules_shell", version = "0.3.0")
+bazel_dep(name = "rules_shell", version = "0.4.1")
 
 bazel_dep(name = "aspect_bazel_lib", version = "2.20.0", dev_dependency = True)
-bazel_dep(name = "stardoc", version = "0.7.0", dev_dependency = True, repo_name = "io_bazel_stardoc")
+bazel_dep(name = "stardoc", version = "0.7.2", dev_dependency = True, repo_name = "io_bazel_stardoc")
 
 # Remove this once rules_android has rolled out official Bzlmod support
 remote_android_extensions = use_extension("@bazel_tools//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
@@ -151,7 +151,7 @@
     # https://github.com/protocolbuffers/protobuf/commit/a80daa2a2caaaac9ebe9ae6bb1b639c2771c5c55
     # This should be ok because we only use protobuf to pull in the google/protobuf/wrappers.proto
     # for testing.
-    version = "29.3",
+    version = "31.1",
     dev_dependency = True,
 )
 bazel_dep(
@@ -171,11 +171,15 @@
 )
 dev_maven.install(
     artifacts = [
-        "com.google.guava:guava:31.1-jre",
-        "com.google.protobuf:protobuf-java:4.29.4",
+        "com.google.guava:guava:33.5.0-jre",
+        "com.google.protobuf:protobuf-java:4.31.0",
         "org.hamcrest:hamcrest-core:2.1",
         "io.netty:netty-tcnative-boringssl-static:2.0.61.Final",
     ],
+    known_contributing_modules = [
+        "bazel_worker_java",
+        "rules_jvm_external",
+    ],
     lock_file = "@rules_jvm_external//:maven_install.json",
     resolver = "coursier",
 )
@@ -298,7 +302,7 @@
 dev_maven.install(
     name = "java_export_exclusion_testing",
     artifacts = [
-        "com.google.protobuf:protobuf-java:3.23.1",
+        "com.google.protobuf:protobuf-java:4.31.1",
     ],
     lock_file = "//tests/custom_maven_install:java_export_exclusion_testing_install.json",
 )
@@ -340,7 +344,6 @@
     name = "jvm_import_test",
     artifacts = [
         "com.google.code.findbugs:jsr305:3.0.2",
-        "com.android.support:appcompat-v7:28.0.0@aar",
     ],
     repositories = [
         "https://repo1.maven.org/maven2",
@@ -755,6 +758,7 @@
         "com.android.support:appcompat-v7:28.0.0",
     ],
     fetch_sources = False,
+    generate_compat_repositories = True,
     repositories = [
         "https://repo1.maven.org/maven2",
         "https://maven.google.com",
diff --git a/WORKSPACE b/WORKSPACE
index 44c82a9..806fb2f 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -608,9 +608,10 @@
 
 maven_install(
     name = "starlark_aar_import_with_sources_test",
-    # Not actually necessary since this is the default value, but useful for
-    # testing.
-    aar_import_bzl_label = "@build_bazel_rules_android//android:rules.bzl",
+    # The default is "@rules_android//rules:rules.bzl" but use
+    # "@rules_android//android:rules.bzl" with the older 0.1.1 release
+    # to use the native rules.
+    aar_import_bzl_label = "@rules_android//android:rules.bzl",
     artifacts = [
         "androidx.work:work-runtime:2.6.0",
     ],
@@ -624,9 +625,10 @@
 
 maven_install(
     name = "starlark_aar_import_test",
-    # Not actually necessary since this is the default value, but useful for
-    # testing.
-    aar_import_bzl_label = "@build_bazel_rules_android//android:rules.bzl",
+    # The default is "@rules_android//rules:rules.bzl" but use
+    # "@rules_android//android:rules.bzl" with the older 0.1.1 release
+    # to use the native rules.
+    aar_import_bzl_label = "@rules_android//android:rules.bzl",
     artifacts = [
         "com.android.support:appcompat-v7:28.0.0",
     ],
@@ -639,12 +641,17 @@
 )
 
 # for the above "starlark_aar_import_test" maven_install with
-# use_starlark_android_rules = True
+# use_starlark_android_rules = True.
+# Note that this version is different from the version in MODULE.bazel
+# because the latest versions of rules_android do not support Bazel 6,
+# which rules_jvm_external supports and uses in CI tests. So use
+# rules_android 0.1.1, which are wrappers around the native Android rules,
+# since the tests with Bazel 6 do no use bzlmod.
 http_archive(
-    name = "build_bazel_rules_android",
+    name = "rules_android",
     sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
     strip_prefix = "rules_android-0.1.1",
-    urls = ["https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"],
+    url = "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip",
 )
 
 # https://github.com/bazelbuild/rules_jvm_external/issues/351
diff --git a/docs/BUILD b/docs/BUILD
index 86eea18..d03e0f1 100644
--- a/docs/BUILD
+++ b/docs/BUILD
@@ -23,6 +23,7 @@
         "//:implementation",
         "@bazel_skylib//lib:structs",
         "@bazel_skylib//rules:run_binary",
+        "@rules_java//java/private:proto_support",
     ],
 )
 
diff --git a/examples/bzlmod/MODULE.bazel b/examples/bzlmod/MODULE.bazel
index ff2b7fa..ffb675e 100644
--- a/examples/bzlmod/MODULE.bazel
+++ b/examples/bzlmod/MODULE.bazel
@@ -5,7 +5,7 @@
 
 # Required because `protobuf` contributes to the default namespace
 bazel_dep(name = "protobuf", version = "29.0", repo_name = None)
-bazel_dep(name = "rules_java", version = "8.12.0")
+bazel_dep(name = "rules_java", version = "8.13.0")
 bazel_dep(name = "rules_jvm_external", version = "0.0")
 local_path_override(
     module_name = "rules_jvm_external",  # matches the name of the `bazel_dep`
@@ -26,7 +26,7 @@
     ],
     fetch_sources = True,
     known_contributing_modules = [
-        "protobuf",
+        "bazel_worker_java",
         "rules_jvm_external_examples_bzlmod",
     ],
     lock_file = "//:maven_install.json",
diff --git a/examples/bzlmod/maven_install.json b/examples/bzlmod/maven_install.json
index 37f8d51..23fc9e0 100644
--- a/examples/bzlmod/maven_install.json
+++ b/examples/bzlmod/maven_install.json
@@ -1,25 +1,11 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": -909275114,
-  "__RESOLVED_ARTIFACTS_HASH": 2025923254,
+  "__INPUT_ARTIFACTS_HASH": -200671778,
+  "__RESOLVED_ARTIFACTS_HASH": -1275115130,
   "conflict_resolution": {
-    "com.google.errorprone:error_prone_annotations:2.5.1": "com.google.errorprone:error_prone_annotations:2.18.0"
+    "com.google.errorprone:error_prone_annotations:2.23.0": "com.google.errorprone:error_prone_annotations:2.24.1"
   },
   "artifacts": {
-    "biz.aQute.bnd:biz.aQute.bnd.util": {
-      "shasums": {
-        "jar": "65b5bd4a0fab16812f1800c98ff74a038f37a38bfe899af382efed4efdc1e3e1",
-        "sources": "042d9017a6131d2f8b9139eee8e344a028076ec921b30e1b8aa49791efecb414"
-      },
-      "version": "6.4.0"
-    },
-    "biz.aQute.bnd:biz.aQute.bndlib": {
-      "shasums": {
-        "jar": "357145074872f9dbf67e629fcd237e6152707e575d735df4535282f9f588d2d8",
-        "sources": "ef5bce1a5b6c050772a6a107e68b94a743d23b54e13b491f7ea40be3e5161686"
-      },
-      "version": "6.4.0"
-    },
     "com.beust:jcommander": {
       "shasums": {
         "jar": "deeac157c8de6822878d85d0c7bc8467a19cc8484d37788f7804f039dde280b1",
@@ -43,10 +29,10 @@
     },
     "com.google.auto.value:auto-value-annotations": {
       "shasums": {
-        "jar": "37ec09b47d7ed35a99d13927db5c86fc9071f620f943ead5d757144698310852",
-        "sources": "0fc83f827602d4378b97a8dec07ce22e364e4b8bb352db213801a6a8c654a330"
+        "jar": "e1c45e6beadaef9797cb0d9afd5a45621ad061cd8632012f85582853a3887825",
+        "sources": "61a433f015b12a6cf4ecff227c7748486ff8f294ffe9d39827b382ade0514d0a"
       },
-      "version": "1.8.1"
+      "version": "1.10.4"
     },
     "com.google.auto:auto-common": {
       "shasums": {
@@ -55,55 +41,6 @@
       },
       "version": "1.2"
     },
-    "com.google.caliper:caliper": {
-      "shasums": {
-        "jar": "d54e1bfdbe9359a79e175c217b8d472555cf20da9c5c0a18bdb1ea7db979ed8e",
-        "sources": "878c441ed655a3cc561e005a6ba12e3f33f61c9578a0e806c6539ea7a6218022"
-      },
-      "version": "1.0-beta-3"
-    },
-    "com.google.caliper:caliper-api": {
-      "shasums": {
-        "jar": "374f0c6c0c1f8784cb69d885e1dcbb7498c34ca20369e0597264568530642928",
-        "sources": "3451ce943638f7047c29921d0feebb6edf8c577c58d127c71bfeb372f4d2a688"
-      },
-      "version": "1.0-beta-3"
-    },
-    "com.google.caliper:caliper-core": {
-      "shasums": {
-        "jar": "514deac8f8b09dd4262733e0a4406a333208c899dc7ea726b03600b9bb94f192",
-        "sources": "47a9207bfc233828acdab19d422fae079d23c1c0046a8eed6d7f83e490825aa1"
-      },
-      "version": "1.0-beta-3"
-    },
-    "com.google.caliper:caliper-runner": {
-      "shasums": {
-        "jar": "3ab58890aa01343361adedf859500d280f67813df0cedfcd165b169533b9b1fa",
-        "sources": "4b1c183a8a7475d6d52ba109b7de3f161beb732b108c7a1937b61f047b168036"
-      },
-      "version": "1.0-beta-3"
-    },
-    "com.google.caliper:caliper-util": {
-      "shasums": {
-        "jar": "6e9af500c7020450dfdb5003d09501d512d395f431c54c7ee8f79e712463fe66",
-        "sources": "a872d85315ea9ac64f29714d08a96c48dd72a7f2558e9ee5664dea457a3f7d6b"
-      },
-      "version": "1.0-beta-3"
-    },
-    "com.google.caliper:caliper-worker": {
-      "shasums": {
-        "jar": "315d8e51df1f60551645a0e3bf2c504d2c79762f688e6f728eb9d1d9cd9a491b",
-        "sources": "3e2fa360bb5f9be74e488d8cb85b8a535c0a0a02366e41aad5de2db5642ae9ac"
-      },
-      "version": "1.0-beta-3"
-    },
-    "com.google.caliper:caliper-worker-jvm": {
-      "shasums": {
-        "jar": "e14e1ecfdf939c82abdb902105be41ff3f83c18cb968116232015f2662d065a4",
-        "sources": "37277480f51cd8010d1da39923e906ab41e624050aa86677af8a580fd3ee50c0"
-      },
-      "version": "1.0-beta-3"
-    },
     "com.google.code.findbugs:jsr305": {
       "shasums": {
         "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
@@ -113,38 +50,17 @@
     },
     "com.google.code.gson:gson": {
       "shasums": {
-        "jar": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e",
-        "sources": "ba5bddb1a89eb721fcca39f3b34294532060f851e2407a82d82134a41eec4719"
+        "jar": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593",
+        "sources": "eee1cc5c1f4267ee194cc245777e68084738ef390acd763354ce0ff6bfb7bcc1"
       },
-      "version": "2.8.9"
-    },
-    "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter": {
-      "shasums": {
-        "jar": "1ef5535a8bd41cf3072469f381b9ee6ab28275311a7499f53d6e52adf976fef0",
-        "sources": "6754c0a37df9b10c30e64a3c57d10b05b059ed04351f3c4bac052aaffa6def69"
-      },
-      "version": "3.3.0"
-    },
-    "com.google.dagger:dagger": {
-      "shasums": {
-        "jar": "329d4340f24c4f5717af016c097e90668bfea2a5376e6aa9964b01cef3fd241a",
-        "sources": "c3013e02456087e28df721f7df0c094974a22e08dcb0f1e750344f585b9da770"
-      },
-      "version": "2.22.1"
-    },
-    "com.google.dagger:dagger-producers": {
-      "shasums": {
-        "jar": "f834a0082014213a68ff06a0f048d750178d02196c58b0b15beb367d32b97e35",
-        "sources": "557fd9228a5cccc607a82bf4b9cf861d70dc1b1d63cc0193c2543fb137f44d44"
-      },
-      "version": "2.22.1"
+      "version": "2.10.1"
     },
     "com.google.errorprone:error_prone_annotations": {
       "shasums": {
-        "jar": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae",
-        "sources": "a2c0783981c8ad48faaa6ea8de6f1926d8e87c125f5df5ce531a9810b943e032"
+        "jar": "19fe2f7155d20ea093168527999da98108103ee546d1e8b726bc4b27c31a3c30",
+        "sources": "d0d63b507b92b36d38d938e96daf260baa55e739fe9e0d642519b8fac823d288"
       },
-      "version": "2.18.0"
+      "version": "2.24.1"
     },
     "com.google.guava:failureaccess": {
       "shasums": {
@@ -160,13 +76,6 @@
       },
       "version": "31.1-jre"
     },
-    "com.google.guava:guava-testlib": {
-      "shasums": {
-        "jar": "c97511849a5e085280f106df2b059566febd280b118d33d6a9e068d238100b63",
-        "sources": "31d69c81e07230a720bd7c2387d7ff68e1f3e040ca9f8dbb0ff92bd8ac1a087b"
-      },
-      "version": "32.0.1-jre"
-    },
     "com.google.guava:listenablefuture": {
       "shasums": {
         "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
@@ -180,26 +89,26 @@
       },
       "version": "2.8"
     },
+    "com.google.protobuf:protobuf-java": {
+      "shasums": {
+        "jar": "becb817df6e8a1a8de2bf5ff0157fa008f23ac037ab30b7ed5cd43662be145d5",
+        "sources": "b2d6164a8601c83c15edbd79f4967a39e065110111213561350663521ccf5bb4"
+      },
+      "version": "4.27.2"
+    },
+    "com.google.protobuf:protobuf-java-util": {
+      "shasums": {
+        "jar": "a2665294d3e4675482bde593df8283f8c965f0207785e8e9b223f790644f5b08",
+        "sources": "8f318bde0b3b68fb7df0760bf5d818dd7ebcd553155d9be93b4fed373e659847"
+      },
+      "version": "4.27.2"
+    },
     "com.google.truth:truth": {
       "shasums": {
-        "jar": "a85e03b8b6ae8780f060cfded9500a3d1b5f52808f99a2ea6da9c683313c7518",
-        "sources": "a98b2f82af388484dfe1b2b859c3c05a28fcae000fc532ef0155e1814fa3af05"
+        "jar": "235c28e96ee6701ab01cc852fb294cb0f34756f636a8154b9aef08fb1215bbc4",
+        "sources": "f2834e7abdd08f5ab31defe409f601e0863b31f3f47105ab3c5ae8df4a687318"
       },
-      "version": "1.1.2"
-    },
-    "com.squareup.okhttp:okhttp": {
-      "shasums": {
-        "jar": "88ac9fd1bb51f82bcc664cc1eb9c225c90dc4389d660231b4cc737bebfe7d0aa",
-        "sources": "edfafce3b9abb0fc31b5c72cc5f533516a08f7b86754138f36595a6837746ddf"
-      },
-      "version": "2.7.5"
-    },
-    "com.squareup.okio:okio": {
-      "shasums": {
-        "jar": "114bdc1f47338a68bcbc95abf2f5cdc72beeec91812f2fcd7b521c1937876266",
-        "sources": "cf31dcd63db43c48c62ef41560006a25bbe3e207b170ecbd7bfe0b675880a0ac"
-      },
-      "version": "1.6.0"
+      "version": "1.4.0"
     },
     "com.sun.activation:jakarta.activation": {
       "shasums": {
@@ -208,20 +117,6 @@
       },
       "version": "1.2.2"
     },
-    "com.sun.jersey:jersey-client": {
-      "shasums": {
-        "jar": "639c825c5db580f8115bf49ffc893093526d2ed1079fbc929b6a5fbd0b2eda40",
-        "sources": "9631abce0f95276f98df223721776e2901d88af6a5cc9e7b6f7bd43dfe7eb5e6"
-      },
-      "version": "1.19.4"
-    },
-    "com.sun.jersey:jersey-core": {
-      "shasums": {
-        "jar": "64b03198e0264849d0fc341857ebcc9c882b1909a2dc35a0972fe7d901b826e5",
-        "sources": "eefb23a3e0b4adb05850c7a30b019e57211b234d086fbf26712267e11f903da0"
-      },
-      "version": "1.19.4"
-    },
     "com.typesafe.netty:netty-reactive-streams": {
       "shasums": {
         "jar": "eafc52d500b49e891db095ee7baac0420aea8a97015ab7671ba1f1ccabf799d2",
@@ -236,13 +131,6 @@
       },
       "version": "3.2.4"
     },
-    "info.picocli:picocli": {
-      "shasums": {
-        "jar": "b0a5159e926de8084ff066025142270443533656bc599b8bb31d14d11fd138a4",
-        "sources": "c753c927a3070ee07f39da41165375d9fbc9033a7c072e82b8d74c66f1abe1bf"
-      },
-      "version": "4.6.3"
-    },
     "io.netty:netty-buffer": {
       "shasums": {
         "jar": "7730bbdb434b91b45474ae3c534948e42d1f1639bdab06a807d58019f56ca149",
@@ -425,34 +313,6 @@
       },
       "version": "2.0.0"
     },
-    "javax.annotation:javax.annotation-api": {
-      "shasums": {
-        "jar": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b",
-        "sources": "128971e52e0d84a66e3b6e049dab8ad7b2c58b7e1ad37fa2debd3d40c2947b95"
-      },
-      "version": "1.3.2"
-    },
-    "javax.inject:javax.inject": {
-      "shasums": {
-        "jar": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff",
-        "sources": "c4b87ee2911c139c3daf498a781967f1eb2e75bc1a8529a2e7b328a15d0e433e"
-      },
-      "version": "1"
-    },
-    "javax.ws.rs:jsr311-api": {
-      "shasums": {
-        "jar": "ab1534b73b5fa055808e6598a5e73b599ccda28c3159c3c0908977809422ee4a",
-        "sources": "99227bada18620d29406be240e7c749da68e646ce1d2a61d6f320863f05a30da"
-      },
-      "version": "1.1.1"
-    },
-    "joda-time:joda-time": {
-      "shasums": {
-        "jar": "dd8e7c92185a678d1b7b933f31209b6203c8ffa91e9880475a1be0346b9617e3",
-        "sources": "c614905f496e72311255cf3790bcc7e1cd22db5db0d5e705448cc808966e81e3"
-      },
-      "version": "2.10.10"
-    },
     "junit:junit": {
       "shasums": {
         "jar": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3",
@@ -462,17 +322,17 @@
     },
     "net.bytebuddy:byte-buddy": {
       "shasums": {
-        "jar": "1a1ac9ce65eddcea54ead958387bb0b3863d02a2ffe856ab6a57ac79737c19cf",
-        "sources": "6d2fc2af6c71077dc9fb097c8eb06023545a04b6839bcea0d8d388b1c5e65b61"
+        "jar": "e99761a526df0fefbbd3fe14436b0f953000cdfa5151dc63c0b18d37d9c46f1c",
+        "sources": "143dd9fe73f0566cc703934b7fd15abbb97bfab045064c2f176067e70456a136"
       },
-      "version": "1.12.10"
+      "version": "1.14.5"
     },
     "net.bytebuddy:byte-buddy-agent": {
       "shasums": {
-        "jar": "73d84bb6e8e8980e674d796a29063f510ceb527c6f8c912a08a13e236be05c71",
-        "sources": "a6d5b1157061231f61c833f1cc76c71287947c75b4064404a47f01f6e970c544"
+        "jar": "55f19862b870f5d85890ba5386b1b45e9bbc88d5fe1f819abe0c788b4929fa6b",
+        "sources": "8844d4b130218aa87e0f6b99f9a9b40971b45a95f44a0dfd409038c46631cb5b"
       },
-      "version": "1.12.7"
+      "version": "1.14.5"
     },
     "org.apache.commons:commons-exec": {
       "shasums": {
@@ -495,19 +355,12 @@
       },
       "version": "2.12.3"
     },
-    "org.checkerframework:checker-compat-qual": {
-      "shasums": {
-        "jar": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d",
-        "sources": "68011773fd60cfc7772508134086787210ba2a1443e3f9c3f5d4233a226c3346"
-      },
-      "version": "2.5.3"
-    },
     "org.checkerframework:checker-qual": {
       "shasums": {
-        "jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1",
-        "sources": "443fa6151982bb4c6ce62e2938f53660085b13a7dceb517202777b87d0dea2c7"
+        "jar": "ccaedd33af0b7894d9f2f3b644f4d19e43928e32902e61ac4d10777830f5aac7",
+        "sources": "efb65eb479f61f53c6dcafbd42ed59dad09b0a0d5a7f44b7bc68df25c2dcf8fd"
       },
-      "version": "3.33.0"
+      "version": "3.42.0"
     },
     "org.hamcrest:hamcrest-core": {
       "shasums": {
@@ -518,115 +371,24 @@
     },
     "org.mockito:mockito-core": {
       "shasums": {
-        "jar": "148de2c6928365db29443ca12d35c930d9f481172b934fdd801d1cb1409ea83a",
-        "sources": "7d530f39577843b16f6dba2c49846f07101f3ce734ac8caef4ba932f6527f1f6"
+        "jar": "b1689b06617ea01fd777bfaedbdde512faf083d639a049f79b388d5a4e96d2e5",
+        "sources": "f21eb1cbb701477ba37c430b5a97ba78e3b3cf79a5737443e06b3f65bd7c9364"
       },
-      "version": "4.3.1"
+      "version": "5.4.0"
     },
     "org.objenesis:objenesis": {
       "shasums": {
-        "jar": "03d960bd5aef03c653eb000413ada15eb77cdd2b8e4448886edf5692805e35f3",
-        "sources": "56a7987f5746bd809c363e29055c41f5472a086b0e0e32248693e064d10bc306"
+        "jar": "02dfd0b0439a5591e35b708ed2f5474eb0948f53abf74637e959b8e4ef69bfeb",
+        "sources": "d06164f8ca002c8ef193cef2d682822014dd330505616af93a3fb64226fc131d"
       },
-      "version": "3.2"
-    },
-    "org.osgi:org.osgi.dto": {
-      "shasums": {
-        "jar": "cb75f3c7e48e5a31a31df22e26873346f5bf659e2dcab2369e031e4850d2ff43",
-        "sources": "d91f61de05b704c6c0391b64a343647e5ce7d77e058ea6cde410d8a6bec48b38"
-      },
-      "version": "1.0.0"
-    },
-    "org.osgi:org.osgi.framework": {
-      "shasums": {
-        "jar": "ec194b7871af27681716ff05259319a5c3c9b9727e8000e9e832499b93484b4e",
-        "sources": "7a9c5a8cc4c11d3448e9e616ffaf1789cda73bfa7c256c185b3e8fa6dc1797d3"
-      },
-      "version": "1.8.0"
-    },
-    "org.osgi:org.osgi.resource": {
-      "shasums": {
-        "jar": "81fc50f1f1d38a4af28e131907d4afe213249aab05060484edca0e60c4af9b4a",
-        "sources": "4de0a3a5f81b5f9635bf8dcaac1227ba011ffedd33d3d3961038a55d98762042"
-      },
-      "version": "1.0.0"
-    },
-    "org.osgi:org.osgi.service.log": {
-      "shasums": {
-        "jar": "ff6710c4856d32684cf3ebdc45248f41036ff734f2b03bbc08c4609a61fecfa0",
-        "sources": "201b5923d38cc5c09f2a0aea5a27029f7338dd9040b1ff235591b3dfc0904980"
-      },
-      "version": "1.3.0"
-    },
-    "org.osgi:org.osgi.service.repository": {
-      "shasums": {
-        "jar": "c5553e95b459529192433486d4c4cc22ff45a2eae4968484f9f717319264a532",
-        "sources": "d6009acd3b459019c24e5c5f9d6e70b6f52c19c722c3a72d6a1795751eac81cc"
-      },
-      "version": "1.1.0"
-    },
-    "org.osgi:org.osgi.util.function": {
-      "shasums": {
-        "jar": "208819c7c71690c15a6bb8b187474e7f9d0147946b680182a62b9f222ae014ec",
-        "sources": "cc1bbef6427a76289d5a73a4ca387c2bdebe03217f3a06f716a6559513c9418b"
-      },
-      "version": "1.2.0"
-    },
-    "org.osgi:org.osgi.util.promise": {
-      "shasums": {
-        "jar": "fef86e64f584d012a16a0306160764f6179663b90988a226c4641b920f3a4b36",
-        "sources": "ce63bb27081fd01d69b162c903349c139a618efd5b43e3fe1e63ce53a5e0ab72"
-      },
-      "version": "1.2.0"
-    },
-    "org.osgi:org.osgi.util.tracker": {
-      "shasums": {
-        "jar": "7d78c2cc9bcb6421c24f17aa097866ce8d9115c219a4f8d6cc753bc4dfb97efa",
-        "sources": "5677f6068fc06b1c092a8967613c6080eddba44048870cf4eb7ede8d61494bf0"
-      },
-      "version": "1.5.4"
-    },
-    "org.osgi:osgi.annotation": {
-      "shasums": {
-        "jar": "a0e8a4c362bd3600812f37b0ea45fba966c7bc049d01fed56a09ecc74082759e",
-        "sources": "1239d8e863a6f9fa1f8a9d430843395f39956a25cabeb462f1f8dd41476e88bb"
-      },
-      "version": "8.0.1"
+      "version": "3.3"
     },
     "org.ow2.asm:asm": {
       "shasums": {
-        "jar": "0df97574914aee92fd349d0cb4e00f3345d45b2c239e0bb50f0a90ead47888e0",
-        "sources": "829bc5eb0ccd705a7c8afbf7cdc4b7e9a9f733d3a1a954b9afffd99c8e063366"
+        "jar": "3c6fac2424db3d4a853b669f4e3d1d9c3c552235e19a319673f887083c2303a1",
+        "sources": "2b6e12f0da3d065ba628a024a8851ab0d5b5d3501dacfcc18769243250f4f77e"
       },
-      "version": "9.0"
-    },
-    "org.ow2.asm:asm-analysis": {
-      "shasums": {
-        "jar": "be922aae60ff1ff1768e8e6544a38a7f92bd0a6d6b0b9791f94955d1bd453de2",
-        "sources": "712fac77b6c5f49ab9d9eda530cdcf49fba6a2d9b7dad756855b33766b99155d"
-      },
-      "version": "7.2"
-    },
-    "org.ow2.asm:asm-commons": {
-      "shasums": {
-        "jar": "0e86b8b179c5fb223d1a880a0ff4960b6978223984b94e62e71135f2d8ea3558",
-        "sources": "090fd6b66cd84d67f4760f5db15fe6d0467017446598d29ae9a0f944d141577a"
-      },
-      "version": "7.2"
-    },
-    "org.ow2.asm:asm-tree": {
-      "shasums": {
-        "jar": "c063f5a67fa03cdc9bd79fd1c2ea6816cc4a19473ecdfbd9e9153b408c6f2656",
-        "sources": "04d0ad2d55d3517f4dcc88b4eb9e069323af148c040b237dbc0d215314b7181f"
-      },
-      "version": "7.2"
-    },
-    "org.ow2.asm:asm-util": {
-      "shasums": {
-        "jar": "6e24913b021ffacfe8e7e053d6e0ccc731941148cfa078d4f1ed3d96904530f8",
-        "sources": "c853b4204139c400c87a8d1b6da397ecd265a197b6042030cd557e039d8a581a"
-      },
-      "version": "7.2"
+      "version": "9.6"
     },
     "org.reactivestreams:reactive-streams": {
       "shasums": {
@@ -763,18 +525,6 @@
     }
   },
   "dependencies": {
-    "biz.aQute.bnd:biz.aQute.bndlib": [
-      "biz.aQute.bnd:biz.aQute.bnd.util",
-      "org.osgi:org.osgi.dto",
-      "org.osgi:org.osgi.framework",
-      "org.osgi:org.osgi.resource",
-      "org.osgi:org.osgi.service.log",
-      "org.osgi:org.osgi.service.repository",
-      "org.osgi:org.osgi.util.function",
-      "org.osgi:org.osgi.util.promise",
-      "org.osgi:org.osgi.util.tracker",
-      "org.slf4j:slf4j-api"
-    ],
     "com.google.auto.service:auto-service": [
       "com.google.auto.service:auto-service-annotations",
       "com.google.auto:auto-common",
@@ -783,79 +533,6 @@
     "com.google.auto:auto-common": [
       "com.google.guava:guava"
     ],
-    "com.google.caliper:caliper": [
-      "com.google.caliper:caliper-core",
-      "com.google.caliper:caliper-runner",
-      "com.google.caliper:caliper-worker-jvm",
-      "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter",
-      "com.google.dagger:dagger",
-      "com.google.guava:guava",
-      "com.sun.jersey:jersey-client"
-    ],
-    "com.google.caliper:caliper-api": [
-      "com.google.guava:guava",
-      "joda-time:joda-time"
-    ],
-    "com.google.caliper:caliper-core": [
-      "com.google.auto.value:auto-value-annotations",
-      "com.google.caliper:caliper-api",
-      "com.google.caliper:caliper-util",
-      "com.google.dagger:dagger",
-      "com.google.guava:guava",
-      "com.squareup.okhttp:okhttp",
-      "joda-time:joda-time"
-    ],
-    "com.google.caliper:caliper-runner": [
-      "com.google.caliper:caliper-api",
-      "com.google.caliper:caliper-core",
-      "com.google.caliper:caliper-util",
-      "com.google.dagger:dagger",
-      "com.google.dagger:dagger-producers",
-      "com.google.guava:guava",
-      "com.squareup.okhttp:okhttp",
-      "joda-time:joda-time"
-    ],
-    "com.google.caliper:caliper-util": [
-      "com.google.code.gson:gson",
-      "com.google.dagger:dagger",
-      "com.google.guava:guava",
-      "joda-time:joda-time"
-    ],
-    "com.google.caliper:caliper-worker": [
-      "com.google.caliper:caliper-api",
-      "com.google.caliper:caliper-core",
-      "com.google.caliper:caliper-util",
-      "com.google.dagger:dagger",
-      "com.google.guava:guava",
-      "com.squareup.okhttp:okhttp",
-      "joda-time:joda-time"
-    ],
-    "com.google.caliper:caliper-worker-jvm": [
-      "com.google.caliper:caliper-core",
-      "com.google.caliper:caliper-worker",
-      "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter",
-      "com.google.dagger:dagger",
-      "com.google.guava:guava",
-      "com.sun.jersey:jersey-client"
-    ],
-    "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter": [
-      "com.google.guava:guava",
-      "javax.annotation:javax.annotation-api",
-      "org.ow2.asm:asm",
-      "org.ow2.asm:asm-analysis",
-      "org.ow2.asm:asm-commons",
-      "org.ow2.asm:asm-tree",
-      "org.ow2.asm:asm-util"
-    ],
-    "com.google.dagger:dagger": [
-      "javax.inject:javax.inject"
-    ],
-    "com.google.dagger:dagger-producers": [
-      "com.google.dagger:dagger",
-      "com.google.guava:guava",
-      "javax.inject:javax.inject",
-      "org.checkerframework:checker-compat-qual"
-    ],
     "com.google.guava:guava": [
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
@@ -863,13 +540,13 @@
       "com.google.j2objc:j2objc-annotations",
       "org.checkerframework:checker-qual"
     ],
-    "com.google.guava:guava-testlib": [
+    "com.google.protobuf:protobuf-java-util": [
       "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:guava",
       "com.google.j2objc:j2objc-annotations",
-      "junit:junit",
-      "org.checkerframework:checker-qual"
+      "com.google.protobuf:protobuf-java"
     ],
     "com.google.truth:truth": [
       "com.google.auto.value:auto-value-annotations",
@@ -879,15 +556,6 @@
       "org.checkerframework:checker-qual",
       "org.ow2.asm:asm"
     ],
-    "com.squareup.okhttp:okhttp": [
-      "com.squareup.okio:okio"
-    ],
-    "com.sun.jersey:jersey-client": [
-      "com.sun.jersey:jersey-core"
-    ],
-    "com.sun.jersey:jersey-core": [
-      "javax.ws.rs:jsr311-api"
-    ],
     "com.typesafe.netty:netty-reactive-streams": [
       "io.netty:netty-handler",
       "org.reactivestreams:reactive-streams"
@@ -1038,32 +706,6 @@
       "net.bytebuddy:byte-buddy-agent",
       "org.objenesis:objenesis"
     ],
-    "org.osgi:org.osgi.util.function": [
-      "org.osgi:osgi.annotation"
-    ],
-    "org.osgi:org.osgi.util.promise": [
-      "org.osgi:org.osgi.util.function",
-      "org.osgi:osgi.annotation"
-    ],
-    "org.osgi:org.osgi.util.tracker": [
-      "org.osgi:osgi.annotation"
-    ],
-    "org.ow2.asm:asm-analysis": [
-      "org.ow2.asm:asm-tree"
-    ],
-    "org.ow2.asm:asm-commons": [
-      "org.ow2.asm:asm",
-      "org.ow2.asm:asm-analysis",
-      "org.ow2.asm:asm-tree"
-    ],
-    "org.ow2.asm:asm-tree": [
-      "org.ow2.asm:asm"
-    ],
-    "org.ow2.asm:asm-util": [
-      "org.ow2.asm:asm",
-      "org.ow2.asm:asm-analysis",
-      "org.ow2.asm:asm-tree"
-    ],
     "org.seleniumhq.selenium:selenium-chrome-driver": [
       "com.google.auto.service:auto-service",
       "com.google.auto.service:auto-service-annotations",
@@ -1214,161 +856,6 @@
     ]
   },
   "packages": {
-    "biz.aQute.bnd:biz.aQute.bnd.util": [
-      "aQute.bnd.classfile",
-      "aQute.bnd.classfile.builder",
-      "aQute.bnd.classfile.preview",
-      "aQute.bnd.exceptions",
-      "aQute.bnd.memoize",
-      "aQute.bnd.result",
-      "aQute.bnd.signatures",
-      "aQute.bnd.stream",
-      "aQute.bnd.unmodifiable",
-      "aQute.lib.io",
-      "aQute.lib.stringrover",
-      "aQute.libg.glob"
-    ],
-    "biz.aQute.bnd:biz.aQute.bndlib": [
-      "aQute.bnd.annotation",
-      "aQute.bnd.annotation.baseline",
-      "aQute.bnd.annotation.component",
-      "aQute.bnd.annotation.headers",
-      "aQute.bnd.annotation.jpms",
-      "aQute.bnd.annotation.licenses",
-      "aQute.bnd.annotation.metatype",
-      "aQute.bnd.annotation.plugin",
-      "aQute.bnd.annotation.service",
-      "aQute.bnd.annotation.spi",
-      "aQute.bnd.annotation.xml",
-      "aQute.bnd.apiguardian.api",
-      "aQute.bnd.aspectj.plugin",
-      "aQute.bnd.build",
-      "aQute.bnd.build.api",
-      "aQute.bnd.build.model",
-      "aQute.bnd.build.model.clauses",
-      "aQute.bnd.build.model.conversions",
-      "aQute.bnd.buildtool",
-      "aQute.bnd.bundle.annotations",
-      "aQute.bnd.cdi",
-      "aQute.bnd.classindex",
-      "aQute.bnd.compatibility",
-      "aQute.bnd.component",
-      "aQute.bnd.component.annotations",
-      "aQute.bnd.component.error",
-      "aQute.bnd.connection.settings",
-      "aQute.bnd.differ",
-      "aQute.bnd.exporter.executable",
-      "aQute.bnd.exporter.runbundles",
-      "aQute.bnd.filerepo",
-      "aQute.bnd.header",
-      "aQute.bnd.help",
-      "aQute.bnd.help.instructions",
-      "aQute.bnd.http",
-      "aQute.bnd.junit",
-      "aQute.bnd.make",
-      "aQute.bnd.make.calltree",
-      "aQute.bnd.make.component",
-      "aQute.bnd.make.coverage",
-      "aQute.bnd.make.metatype",
-      "aQute.bnd.maven",
-      "aQute.bnd.maven.support",
-      "aQute.bnd.metatype",
-      "aQute.bnd.metatype.annotations",
-      "aQute.bnd.obr",
-      "aQute.bnd.osgi",
-      "aQute.bnd.osgi.eclipse",
-      "aQute.bnd.osgi.repository",
-      "aQute.bnd.osgi.resource",
-      "aQute.bnd.plugin.ant",
-      "aQute.bnd.plugin.eclipse",
-      "aQute.bnd.plugin.git",
-      "aQute.bnd.plugin.gradle",
-      "aQute.bnd.plugin.jpms",
-      "aQute.bnd.plugin.maven",
-      "aQute.bnd.plugin.spi",
-      "aQute.bnd.print",
-      "aQute.bnd.properties",
-      "aQute.bnd.remoteworkspace.client",
-      "aQute.bnd.remoteworkspace.server",
-      "aQute.bnd.resource.repository",
-      "aQute.bnd.service",
-      "aQute.bnd.service.action",
-      "aQute.bnd.service.classparser",
-      "aQute.bnd.service.clipboard",
-      "aQute.bnd.service.diff",
-      "aQute.bnd.service.export",
-      "aQute.bnd.service.extension",
-      "aQute.bnd.service.externalplugin",
-      "aQute.bnd.service.generate",
-      "aQute.bnd.service.library",
-      "aQute.bnd.service.lifecycle",
-      "aQute.bnd.service.maven",
-      "aQute.bnd.service.message",
-      "aQute.bnd.service.progress",
-      "aQute.bnd.service.release",
-      "aQute.bnd.service.remotelaunch",
-      "aQute.bnd.service.remoteworkspace",
-      "aQute.bnd.service.reporter",
-      "aQute.bnd.service.repository",
-      "aQute.bnd.service.resolve.hook",
-      "aQute.bnd.service.specifications",
-      "aQute.bnd.service.url",
-      "aQute.bnd.service.verifier",
-      "aQute.bnd.signing",
-      "aQute.bnd.url",
-      "aQute.bnd.util.dto",
-      "aQute.bnd.util.home",
-      "aQute.bnd.util.repository",
-      "aQute.bnd.version",
-      "aQute.bnd.version.maven",
-      "aQute.bnd.xmlattribute",
-      "aQute.lib.aspects",
-      "aQute.lib.base64",
-      "aQute.lib.collections",
-      "aQute.lib.concurrent.serial",
-      "aQute.lib.concurrentinit",
-      "aQute.lib.converter",
-      "aQute.lib.date",
-      "aQute.lib.deployer",
-      "aQute.lib.fileset",
-      "aQute.lib.filter",
-      "aQute.lib.formatter",
-      "aQute.lib.hex",
-      "aQute.lib.hierarchy",
-      "aQute.lib.io",
-      "aQute.lib.json",
-      "aQute.lib.link",
-      "aQute.lib.manifest",
-      "aQute.lib.mavenpasswordobfuscator",
-      "aQute.lib.persistentmap",
-      "aQute.lib.redirect",
-      "aQute.lib.settings",
-      "aQute.lib.specinterface",
-      "aQute.lib.spring",
-      "aQute.lib.stringrover",
-      "aQute.lib.strings",
-      "aQute.lib.tag",
-      "aQute.lib.utf8properties",
-      "aQute.lib.watcher",
-      "aQute.lib.xml",
-      "aQute.lib.xpath",
-      "aQute.lib.zip",
-      "aQute.libg.command",
-      "aQute.libg.cryptography",
-      "aQute.libg.filelock",
-      "aQute.libg.generics",
-      "aQute.libg.glob",
-      "aQute.libg.gzip",
-      "aQute.libg.ints",
-      "aQute.libg.map",
-      "aQute.libg.qtokens",
-      "aQute.libg.reporter",
-      "aQute.libg.reporter.slf4j",
-      "aQute.libg.sed",
-      "aQute.libg.tuple",
-      "aQute.libg.uri",
-      "aQute.service.reporter"
-    ],
     "com.beust:jcommander": [
       "com.beust.ah",
       "com.beust.jcommander",
@@ -1393,48 +880,6 @@
     "com.google.auto:auto-common": [
       "com.google.auto.common"
     ],
-    "com.google.caliper:caliper": [
-      "com.google.caliper.runner",
-      "com.google.caliper.runner.instrument",
-      "com.google.caliper.runner.resultprocessor"
-    ],
-    "com.google.caliper:caliper-api": [
-      "com.google.caliper",
-      "com.google.caliper.api",
-      "com.google.caliper.model"
-    ],
-    "com.google.caliper:caliper-core": [
-      "com.google.caliper.bridge",
-      "com.google.caliper.core",
-      "com.google.caliper.memory"
-    ],
-    "com.google.caliper:caliper-runner": [
-      "com.google.caliper.runner",
-      "com.google.caliper.runner.config",
-      "com.google.caliper.runner.experiment",
-      "com.google.caliper.runner.instrument",
-      "com.google.caliper.runner.options",
-      "com.google.caliper.runner.resultprocessor",
-      "com.google.caliper.runner.server",
-      "com.google.caliper.runner.target",
-      "com.google.caliper.runner.worker",
-      "com.google.caliper.runner.worker.dryrun",
-      "com.google.caliper.runner.worker.targetinfo",
-      "com.google.caliper.runner.worker.trial"
-    ],
-    "com.google.caliper:caliper-util": [
-      "com.google.caliper.json",
-      "com.google.caliper.util"
-    ],
-    "com.google.caliper:caliper-worker": [
-      "com.google.caliper.worker",
-      "com.google.caliper.worker.connection",
-      "com.google.caliper.worker.handler",
-      "com.google.caliper.worker.instrument"
-    ],
-    "com.google.caliper:caliper-worker-jvm": [
-      "com.google.caliper.worker"
-    ],
     "com.google.code.findbugs:jsr305": [
       "javax.annotation",
       "javax.annotation.concurrent",
@@ -1451,48 +896,6 @@
       "com.google.gson.reflect",
       "com.google.gson.stream"
     ],
-    "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter": [
-      "com.google.monitoring.runtime.instrumentation",
-      "com.google.monitoring.runtime.instrumentation.asm",
-      "com.google.monitoring.runtime.instrumentation.asm.commons",
-      "com.google.monitoring.runtime.instrumentation.asm.signature",
-      "com.google.monitoring.runtime.instrumentation.asm.tree",
-      "com.google.monitoring.runtime.instrumentation.asm.tree.analysis",
-      "com.google.monitoring.runtime.instrumentation.asm.util",
-      "com.google.monitoring.runtime.instrumentation.checker.nullness.compatqual",
-      "com.google.monitoring.runtime.instrumentation.common.annotations",
-      "com.google.monitoring.runtime.instrumentation.common.base",
-      "com.google.monitoring.runtime.instrumentation.common.base.internal",
-      "com.google.monitoring.runtime.instrumentation.common.cache",
-      "com.google.monitoring.runtime.instrumentation.common.collect",
-      "com.google.monitoring.runtime.instrumentation.common.escape",
-      "com.google.monitoring.runtime.instrumentation.common.eventbus",
-      "com.google.monitoring.runtime.instrumentation.common.graph",
-      "com.google.monitoring.runtime.instrumentation.common.hash",
-      "com.google.monitoring.runtime.instrumentation.common.html",
-      "com.google.monitoring.runtime.instrumentation.common.io",
-      "com.google.monitoring.runtime.instrumentation.common.math",
-      "com.google.monitoring.runtime.instrumentation.common.net",
-      "com.google.monitoring.runtime.instrumentation.common.primitives",
-      "com.google.monitoring.runtime.instrumentation.common.reflect",
-      "com.google.monitoring.runtime.instrumentation.common.util.concurrent",
-      "com.google.monitoring.runtime.instrumentation.common.xml",
-      "com.google.monitoring.runtime.instrumentation.errorprone.annotations",
-      "com.google.monitoring.runtime.instrumentation.errorprone.annotations.concurrent",
-      "com.google.monitoring.runtime.instrumentation.j2objc.annotations",
-      "com.google.thirdparty.publicsuffix"
-    ],
-    "com.google.dagger:dagger": [
-      "dagger",
-      "dagger.internal",
-      "dagger.multibindings"
-    ],
-    "com.google.dagger:dagger-producers": [
-      "dagger.producers",
-      "dagger.producers.internal",
-      "dagger.producers.monitoring",
-      "dagger.producers.monitoring.internal"
-    ],
     "com.google.errorprone:error_prone_annotations": [
       "com.google.errorprone.annotations",
       "com.google.errorprone.annotations.concurrent"
@@ -1520,74 +923,24 @@
       "com.google.common.xml",
       "com.google.thirdparty.publicsuffix"
     ],
-    "com.google.guava:guava-testlib": [
-      "com.google.common.collect.testing",
-      "com.google.common.collect.testing.features",
-      "com.google.common.collect.testing.google",
-      "com.google.common.collect.testing.suites",
-      "com.google.common.collect.testing.testers",
-      "com.google.common.escape.testing",
-      "com.google.common.testing",
-      "com.google.common.util.concurrent.testing"
-    ],
     "com.google.j2objc:j2objc-annotations": [
       "com.google.j2objc.annotations"
     ],
+    "com.google.protobuf:protobuf-java": [
+      "com.google.protobuf",
+      "com.google.protobuf.compiler"
+    ],
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.protobuf.util"
+    ],
     "com.google.truth:truth": [
       "com.google.common.truth"
     ],
-    "com.squareup.okhttp:okhttp": [
-      "com.squareup.okhttp",
-      "com.squareup.okhttp.internal",
-      "com.squareup.okhttp.internal.framed",
-      "com.squareup.okhttp.internal.http",
-      "com.squareup.okhttp.internal.io",
-      "com.squareup.okhttp.internal.tls"
-    ],
-    "com.squareup.okio:okio": [
-      "okio"
-    ],
     "com.sun.activation:jakarta.activation": [
       "com.sun.activation.registries",
       "com.sun.activation.viewers",
       "javax.activation"
     ],
-    "com.sun.jersey:jersey-client": [
-      "com.sun.jersey.api.client",
-      "com.sun.jersey.api.client.async",
-      "com.sun.jersey.api.client.config",
-      "com.sun.jersey.api.client.filter",
-      "com.sun.jersey.client.impl",
-      "com.sun.jersey.client.impl.async",
-      "com.sun.jersey.client.proxy",
-      "com.sun.jersey.client.urlconnection",
-      "com.sun.ws.rs.ext"
-    ],
-    "com.sun.jersey:jersey-core": [
-      "com.sun.jersey.api.provider.jaxb",
-      "com.sun.jersey.api.representation",
-      "com.sun.jersey.api.uri",
-      "com.sun.jersey.core.header",
-      "com.sun.jersey.core.header.reader",
-      "com.sun.jersey.core.impl.provider.entity",
-      "com.sun.jersey.core.impl.provider.header",
-      "com.sun.jersey.core.impl.provider.xml",
-      "com.sun.jersey.core.osgi",
-      "com.sun.jersey.core.provider",
-      "com.sun.jersey.core.provider.jaxb",
-      "com.sun.jersey.core.reflection",
-      "com.sun.jersey.core.spi.component",
-      "com.sun.jersey.core.spi.component.ioc",
-      "com.sun.jersey.core.spi.factory",
-      "com.sun.jersey.core.spi.scanning",
-      "com.sun.jersey.core.spi.scanning.uri",
-      "com.sun.jersey.core.util",
-      "com.sun.jersey.impl",
-      "com.sun.jersey.localization",
-      "com.sun.jersey.spi",
-      "com.sun.jersey.spi.inject",
-      "com.sun.jersey.spi.service"
-    ],
     "com.typesafe.netty:netty-reactive-streams": [
       "com.typesafe.netty"
     ],
@@ -1599,9 +952,6 @@
       "dev.failsafe.internal.util",
       "dev.failsafe.spi"
     ],
-    "info.picocli:picocli": [
-      "picocli"
-    ],
     "io.netty:netty-buffer": [
       "io.netty.buffer",
       "io.netty.buffer.search"
@@ -1768,28 +1118,6 @@
       "io.ous.jtoml",
       "io.ous.jtoml.impl"
     ],
-    "javax.annotation:javax.annotation-api": [
-      "javax.annotation",
-      "javax.annotation.security",
-      "javax.annotation.sql"
-    ],
-    "javax.inject:javax.inject": [
-      "javax.inject"
-    ],
-    "javax.ws.rs:jsr311-api": [
-      "javax.ws.rs",
-      "javax.ws.rs.core",
-      "javax.ws.rs.ext"
-    ],
-    "joda-time:joda-time": [
-      "org.joda.time",
-      "org.joda.time.base",
-      "org.joda.time.chrono",
-      "org.joda.time.convert",
-      "org.joda.time.field",
-      "org.joda.time.format",
-      "org.joda.time.tz"
-    ],
     "junit:junit": [
       "junit.extensions",
       "junit.framework",
@@ -1913,9 +1241,6 @@
     "org.asynchttpclient:async-http-client-netty-utils": [
       "org.asynchttpclient.netty.util"
     ],
-    "org.checkerframework:checker-compat-qual": [
-      "org.checkerframework.checker.nullness.compatqual"
-    ],
     "org.checkerframework:checker-qual": [
       "org.checkerframework.checker.builder.qual",
       "org.checkerframework.checker.calledmethods.qual",
@@ -1943,7 +1268,7 @@
       "org.checkerframework.common.reflection.qual",
       "org.checkerframework.common.returnsreceiver.qual",
       "org.checkerframework.common.subtyping.qual",
-      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.util.count.report.qual",
       "org.checkerframework.common.value.qual",
       "org.checkerframework.dataflow.qual",
       "org.checkerframework.framework.qual"
@@ -2031,62 +1356,10 @@
       "org.objenesis.instantiator.util",
       "org.objenesis.strategy"
     ],
-    "org.osgi:org.osgi.dto": [
-      "org.osgi.dto"
-    ],
-    "org.osgi:org.osgi.framework": [
-      "org.osgi.framework",
-      "org.osgi.framework.dto",
-      "org.osgi.framework.hooks.bundle",
-      "org.osgi.framework.hooks.resolver",
-      "org.osgi.framework.hooks.service",
-      "org.osgi.framework.hooks.weaving",
-      "org.osgi.framework.launch",
-      "org.osgi.framework.namespace",
-      "org.osgi.framework.startlevel",
-      "org.osgi.framework.startlevel.dto",
-      "org.osgi.framework.wiring",
-      "org.osgi.framework.wiring.dto"
-    ],
-    "org.osgi:org.osgi.resource": [
-      "org.osgi.resource",
-      "org.osgi.resource.dto"
-    ],
-    "org.osgi:org.osgi.service.log": [
-      "org.osgi.service.log"
-    ],
-    "org.osgi:org.osgi.service.repository": [
-      "org.osgi.service.repository"
-    ],
-    "org.osgi:org.osgi.util.function": [
-      "org.osgi.util.function"
-    ],
-    "org.osgi:org.osgi.util.promise": [
-      "org.osgi.util.promise"
-    ],
-    "org.osgi:org.osgi.util.tracker": [
-      "org.osgi.util.tracker"
-    ],
-    "org.osgi:osgi.annotation": [
-      "org.osgi.annotation.bundle",
-      "org.osgi.annotation.versioning"
-    ],
     "org.ow2.asm:asm": [
       "org.objectweb.asm",
       "org.objectweb.asm.signature"
     ],
-    "org.ow2.asm:asm-analysis": [
-      "org.objectweb.asm.tree.analysis"
-    ],
-    "org.ow2.asm:asm-commons": [
-      "org.objectweb.asm.commons"
-    ],
-    "org.ow2.asm:asm-tree": [
-      "org.objectweb.asm.tree"
-    ],
-    "org.ow2.asm:asm-util": [
-      "org.objectweb.asm.util"
-    ],
     "org.reactivestreams:reactive-streams": [
       "org.reactivestreams"
     ],
@@ -2546,10 +1819,6 @@
   },
   "repositories": {
     "https://repo1.maven.org/maven2/": [
-      "biz.aQute.bnd:biz.aQute.bnd.util",
-      "biz.aQute.bnd:biz.aQute.bnd.util:jar:sources",
-      "biz.aQute.bnd:biz.aQute.bndlib",
-      "biz.aQute.bnd:biz.aQute.bndlib:jar:sources",
       "com.beust:jcommander",
       "com.beust:jcommander:jar:sources",
       "com.google.auto.service:auto-service",
@@ -2560,59 +1829,31 @@
       "com.google.auto.value:auto-value-annotations:jar:sources",
       "com.google.auto:auto-common",
       "com.google.auto:auto-common:jar:sources",
-      "com.google.caliper:caliper",
-      "com.google.caliper:caliper-api",
-      "com.google.caliper:caliper-api:jar:sources",
-      "com.google.caliper:caliper-core",
-      "com.google.caliper:caliper-core:jar:sources",
-      "com.google.caliper:caliper-runner",
-      "com.google.caliper:caliper-runner:jar:sources",
-      "com.google.caliper:caliper-util",
-      "com.google.caliper:caliper-util:jar:sources",
-      "com.google.caliper:caliper-worker",
-      "com.google.caliper:caliper-worker-jvm",
-      "com.google.caliper:caliper-worker-jvm:jar:sources",
-      "com.google.caliper:caliper-worker:jar:sources",
-      "com.google.caliper:caliper:jar:sources",
       "com.google.code.findbugs:jsr305",
       "com.google.code.findbugs:jsr305:jar:sources",
       "com.google.code.gson:gson",
       "com.google.code.gson:gson:jar:sources",
-      "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter",
-      "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:jar:sources",
-      "com.google.dagger:dagger",
-      "com.google.dagger:dagger-producers",
-      "com.google.dagger:dagger-producers:jar:sources",
-      "com.google.dagger:dagger:jar:sources",
       "com.google.errorprone:error_prone_annotations",
       "com.google.errorprone:error_prone_annotations:jar:sources",
       "com.google.guava:failureaccess",
       "com.google.guava:failureaccess:jar:sources",
       "com.google.guava:guava",
-      "com.google.guava:guava-testlib",
-      "com.google.guava:guava-testlib:jar:sources",
       "com.google.guava:guava:jar:sources",
       "com.google.guava:listenablefuture",
       "com.google.j2objc:j2objc-annotations",
       "com.google.j2objc:j2objc-annotations:jar:sources",
+      "com.google.protobuf:protobuf-java",
+      "com.google.protobuf:protobuf-java-util",
+      "com.google.protobuf:protobuf-java-util:jar:sources",
+      "com.google.protobuf:protobuf-java:jar:sources",
       "com.google.truth:truth",
       "com.google.truth:truth:jar:sources",
-      "com.squareup.okhttp:okhttp",
-      "com.squareup.okhttp:okhttp:jar:sources",
-      "com.squareup.okio:okio",
-      "com.squareup.okio:okio:jar:sources",
       "com.sun.activation:jakarta.activation",
       "com.sun.activation:jakarta.activation:jar:sources",
-      "com.sun.jersey:jersey-client",
-      "com.sun.jersey:jersey-client:jar:sources",
-      "com.sun.jersey:jersey-core",
-      "com.sun.jersey:jersey-core:jar:sources",
       "com.typesafe.netty:netty-reactive-streams",
       "com.typesafe.netty:netty-reactive-streams:jar:sources",
       "dev.failsafe:failsafe",
       "dev.failsafe:failsafe:jar:sources",
-      "info.picocli:picocli",
-      "info.picocli:picocli:jar:sources",
       "io.netty:netty-buffer",
       "io.netty:netty-buffer:jar:sources",
       "io.netty:netty-codec",
@@ -2665,14 +1906,6 @@
       "io.opentelemetry:opentelemetry-semconv:jar:sources",
       "io.ous:jtoml",
       "io.ous:jtoml:jar:sources",
-      "javax.annotation:javax.annotation-api",
-      "javax.annotation:javax.annotation-api:jar:sources",
-      "javax.inject:javax.inject",
-      "javax.inject:javax.inject:jar:sources",
-      "javax.ws.rs:jsr311-api",
-      "javax.ws.rs:jsr311-api:jar:sources",
-      "joda-time:joda-time",
-      "joda-time:joda-time:jar:sources",
       "junit:junit",
       "junit:junit:jar:sources",
       "net.bytebuddy:byte-buddy",
@@ -2685,8 +1918,6 @@
       "org.asynchttpclient:async-http-client-netty-utils",
       "org.asynchttpclient:async-http-client-netty-utils:jar:sources",
       "org.asynchttpclient:async-http-client:jar:sources",
-      "org.checkerframework:checker-compat-qual",
-      "org.checkerframework:checker-compat-qual:jar:sources",
       "org.checkerframework:checker-qual",
       "org.checkerframework:checker-qual:jar:sources",
       "org.hamcrest:hamcrest-core",
@@ -2695,33 +1926,7 @@
       "org.mockito:mockito-core:jar:sources",
       "org.objenesis:objenesis",
       "org.objenesis:objenesis:jar:sources",
-      "org.osgi:org.osgi.dto",
-      "org.osgi:org.osgi.dto:jar:sources",
-      "org.osgi:org.osgi.framework",
-      "org.osgi:org.osgi.framework:jar:sources",
-      "org.osgi:org.osgi.resource",
-      "org.osgi:org.osgi.resource:jar:sources",
-      "org.osgi:org.osgi.service.log",
-      "org.osgi:org.osgi.service.log:jar:sources",
-      "org.osgi:org.osgi.service.repository",
-      "org.osgi:org.osgi.service.repository:jar:sources",
-      "org.osgi:org.osgi.util.function",
-      "org.osgi:org.osgi.util.function:jar:sources",
-      "org.osgi:org.osgi.util.promise",
-      "org.osgi:org.osgi.util.promise:jar:sources",
-      "org.osgi:org.osgi.util.tracker",
-      "org.osgi:org.osgi.util.tracker:jar:sources",
-      "org.osgi:osgi.annotation",
-      "org.osgi:osgi.annotation:jar:sources",
       "org.ow2.asm:asm",
-      "org.ow2.asm:asm-analysis",
-      "org.ow2.asm:asm-analysis:jar:sources",
-      "org.ow2.asm:asm-commons",
-      "org.ow2.asm:asm-commons:jar:sources",
-      "org.ow2.asm:asm-tree",
-      "org.ow2.asm:asm-tree:jar:sources",
-      "org.ow2.asm:asm-util",
-      "org.ow2.asm:asm-util:jar:sources",
       "org.ow2.asm:asm:jar:sources",
       "org.reactivestreams:reactive-streams",
       "org.reactivestreams:reactive-streams:jar:sources",
@@ -2774,150 +1979,6 @@
         "com.google.auto.service.processor.AutoServiceProcessor"
       ]
     },
-    "com.sun.jersey:jersey-core": {
-      "com.sun.jersey.spi.HeaderDelegateProvider": [
-        "com.sun.jersey.core.impl.provider.header.CacheControlProvider",
-        "com.sun.jersey.core.impl.provider.header.CookieProvider",
-        "com.sun.jersey.core.impl.provider.header.DateProvider",
-        "com.sun.jersey.core.impl.provider.header.EntityTagProvider",
-        "com.sun.jersey.core.impl.provider.header.LocaleProvider",
-        "com.sun.jersey.core.impl.provider.header.MediaTypeProvider",
-        "com.sun.jersey.core.impl.provider.header.NewCookieProvider",
-        "com.sun.jersey.core.impl.provider.header.StringProvider",
-        "com.sun.jersey.core.impl.provider.header.URIProvider"
-      ],
-      "com.sun.jersey.spi.inject.InjectableProvider": [
-        "com.sun.jersey.core.impl.provider.xml.DocumentBuilderFactoryProvider",
-        "com.sun.jersey.core.impl.provider.xml.SAXParserContextProvider",
-        "com.sun.jersey.core.impl.provider.xml.TransformerFactoryProvider",
-        "com.sun.jersey.core.impl.provider.xml.XMLStreamReaderContextProvider"
-      ],
-      "javax.ws.rs.ext.MessageBodyReader": [
-        "com.sun.jersey.core.impl.provider.entity.ByteArrayProvider",
-        "com.sun.jersey.core.impl.provider.entity.DataSourceProvider",
-        "com.sun.jersey.core.impl.provider.entity.DocumentProvider",
-        "com.sun.jersey.core.impl.provider.entity.EntityHolderReader",
-        "com.sun.jersey.core.impl.provider.entity.FileProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormProvider",
-        "com.sun.jersey.core.impl.provider.entity.InputStreamProvider",
-        "com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider",
-        "com.sun.jersey.core.impl.provider.entity.ReaderProvider",
-        "com.sun.jersey.core.impl.provider.entity.RenderedImageProvider",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader",
-        "com.sun.jersey.core.impl.provider.entity.StringProvider",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$Text"
-      ],
-      "javax.ws.rs.ext.MessageBodyWriter": [
-        "com.sun.jersey.core.impl.provider.entity.ByteArrayProvider",
-        "com.sun.jersey.core.impl.provider.entity.DataSourceProvider",
-        "com.sun.jersey.core.impl.provider.entity.DocumentProvider",
-        "com.sun.jersey.core.impl.provider.entity.FileProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormProvider",
-        "com.sun.jersey.core.impl.provider.entity.InputStreamProvider",
-        "com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider",
-        "com.sun.jersey.core.impl.provider.entity.ReaderProvider",
-        "com.sun.jersey.core.impl.provider.entity.RenderedImageProvider",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter",
-        "com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider",
-        "com.sun.jersey.core.impl.provider.entity.StringProvider",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text"
-      ]
-    },
-    "com.sun.jersey:jersey-core:jar:sources": {
-      "com.sun.jersey.spi.HeaderDelegateProvider": [
-        "com.sun.jersey.core.impl.provider.header.CacheControlProvider",
-        "com.sun.jersey.core.impl.provider.header.CookieProvider",
-        "com.sun.jersey.core.impl.provider.header.DateProvider",
-        "com.sun.jersey.core.impl.provider.header.EntityTagProvider",
-        "com.sun.jersey.core.impl.provider.header.LocaleProvider",
-        "com.sun.jersey.core.impl.provider.header.MediaTypeProvider",
-        "com.sun.jersey.core.impl.provider.header.NewCookieProvider",
-        "com.sun.jersey.core.impl.provider.header.StringProvider",
-        "com.sun.jersey.core.impl.provider.header.URIProvider"
-      ],
-      "com.sun.jersey.spi.inject.InjectableProvider": [
-        "com.sun.jersey.core.impl.provider.xml.DocumentBuilderFactoryProvider",
-        "com.sun.jersey.core.impl.provider.xml.SAXParserContextProvider",
-        "com.sun.jersey.core.impl.provider.xml.TransformerFactoryProvider",
-        "com.sun.jersey.core.impl.provider.xml.XMLStreamReaderContextProvider"
-      ],
-      "javax.ws.rs.ext.MessageBodyReader": [
-        "com.sun.jersey.core.impl.provider.entity.ByteArrayProvider",
-        "com.sun.jersey.core.impl.provider.entity.DataSourceProvider",
-        "com.sun.jersey.core.impl.provider.entity.DocumentProvider",
-        "com.sun.jersey.core.impl.provider.entity.EntityHolderReader",
-        "com.sun.jersey.core.impl.provider.entity.FileProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormProvider",
-        "com.sun.jersey.core.impl.provider.entity.InputStreamProvider",
-        "com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider",
-        "com.sun.jersey.core.impl.provider.entity.ReaderProvider",
-        "com.sun.jersey.core.impl.provider.entity.RenderedImageProvider",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader",
-        "com.sun.jersey.core.impl.provider.entity.StringProvider",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$Text"
-      ],
-      "javax.ws.rs.ext.MessageBodyWriter": [
-        "com.sun.jersey.core.impl.provider.entity.ByteArrayProvider",
-        "com.sun.jersey.core.impl.provider.entity.DataSourceProvider",
-        "com.sun.jersey.core.impl.provider.entity.DocumentProvider",
-        "com.sun.jersey.core.impl.provider.entity.FileProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider",
-        "com.sun.jersey.core.impl.provider.entity.FormProvider",
-        "com.sun.jersey.core.impl.provider.entity.InputStreamProvider",
-        "com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider",
-        "com.sun.jersey.core.impl.provider.entity.ReaderProvider",
-        "com.sun.jersey.core.impl.provider.entity.RenderedImageProvider",
-        "com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter",
-        "com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider",
-        "com.sun.jersey.core.impl.provider.entity.StringProvider",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General",
-        "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text"
-      ]
-    },
     "io.netty:netty-common": {
       "reactor.blockhound.integration.BlockHoundIntegration": [
         "io.netty.util.internal.Hidden$NettyBlockHoundIntegration"
diff --git a/examples/java-export/.bazelrc b/examples/java-export/.bazelrc
index 276a98d..e64c14c 100644
--- a/examples/java-export/.bazelrc
+++ b/examples/java-export/.bazelrc
@@ -2,3 +2,16 @@
 build --java_runtime_version=remotejdk_11
 build --tool_java_language_version=11
 
+# Required to get `protobuf` compiling. Note that MSVC requires a
+# different flag than both macOS and Linux.
+
+common --enable_platform_specific_config
+common:linux --cxxopt=-std=c++17
+common:linux --host_cxxopt=-std=c++17
+common:macos --cxxopt=-std=c++17
+common:macos --host_cxxopt=-std=c++17
+common:windows --cxxopt=/std:c++17
+common:windows --host_cxxopt=/std:c++17
+
+# Enable protobuf MSVC support on Windows
+build:windows --define=protobuf_allow_msvc=true
diff --git a/examples/java-export/MODULE.bazel b/examples/java-export/MODULE.bazel
index 8ba3ea1..81c1c1b 100644
--- a/examples/java-export/MODULE.bazel
+++ b/examples/java-export/MODULE.bazel
@@ -1,6 +1,6 @@
 module(name = "rules_jvm_external_example_java_export")
 
-protobuf_version = "21.7"
+protobuf_version = "31.1"
 
 bazel_dep(name = "protobuf", version = protobuf_version, repo_name = "com_google_protobuf")
 bazel_dep(name = "rules_jvm_external", version = "ignored")
@@ -15,9 +15,13 @@
 maven.install(
     artifacts = [
         "com.google.guava:guava:29.0-jre",
-        "com.google.protobuf:protobuf-java:3.%s" % protobuf_version,
+        "com.google.protobuf:protobuf-java:4.%s" % protobuf_version,
     ],
     fetch_sources = True,
+    known_contributing_modules = [
+        "bazel_worker_java",
+        "rules_jvm_external_example_java_export",
+    ],
     lock_file = "//:maven_install.json",
 )
 use_repo(maven, "maven")
diff --git a/examples/java-export/maven_install.json b/examples/java-export/maven_install.json
index 687cb3f..2baabca 100644
--- a/examples/java-export/maven_install.json
+++ b/examples/java-export/maven_install.json
@@ -1,8 +1,20 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 1840858284,
-  "__RESOLVED_ARTIFACTS_HASH": 253267012,
+  "__INPUT_ARTIFACTS_HASH": -1781511218,
+  "__RESOLVED_ARTIFACTS_HASH": 1370831359,
+  "conflict_resolution": {
+    "com.google.errorprone:error_prone_annotations:2.23.0": "com.google.errorprone:error_prone_annotations:2.24.1",
+    "com.google.guava:guava:29.0-jre": "com.google.guava:guava:33.0.0-jre",
+    "com.google.protobuf:protobuf-java:4.27.2": "com.google.protobuf:protobuf-java:4.31.1"
+  },
   "artifacts": {
+    "com.google.auto.value:auto-value-annotations": {
+      "shasums": {
+        "jar": "e1c45e6beadaef9797cb0d9afd5a45621ad061cd8632012f85582853a3887825",
+        "sources": "61a433f015b12a6cf4ecff227c7748486ff8f294ffe9d39827b382ade0514d0a"
+      },
+      "version": "1.10.4"
+    },
     "com.google.code.findbugs:jsr305": {
       "shasums": {
         "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
@@ -10,54 +22,123 @@
       },
       "version": "3.0.2"
     },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593",
+        "sources": "eee1cc5c1f4267ee194cc245777e68084738ef390acd763354ce0ff6bfb7bcc1"
+      },
+      "version": "2.10.1"
+    },
     "com.google.errorprone:error_prone_annotations": {
       "shasums": {
-        "jar": "baf7d6ea97ce606c53e11b6854ba5f2ce7ef5c24dddf0afa18d1260bd25b002c",
-        "sources": "0b1011d1e2ea2eab35a545cffd1cff3877f131134c8020885e8eaf60a7d72f91"
+        "jar": "19fe2f7155d20ea093168527999da98108103ee546d1e8b726bc4b27c31a3c30",
+        "sources": "d0d63b507b92b36d38d938e96daf260baa55e739fe9e0d642519b8fac823d288"
       },
-      "version": "2.3.4"
+      "version": "2.24.1"
     },
     "com.google.guava:failureaccess": {
       "shasums": {
-        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
-        "sources": "092346eebbb1657b51aa7485a246bf602bb464cc0b0e2e1c7e7201fadce1e98f"
+        "jar": "8a8f81cf9b359e3f6dfa691a1e776985c061ef2f223c9b2c80753e1b458e8064",
+        "sources": "dd3bfa5e2ec5bc5397efb2c3cef044c192313ff77089573667ff97a60c6978e0"
       },
-      "version": "1.0.1"
+      "version": "1.0.2"
     },
     "com.google.guava:guava": {
       "shasums": {
-        "jar": "b22c5fb66d61e7b9522531d04b2f915b5158e80aa0b40ee7282c8bfb07b0da25",
-        "sources": "cfcbe29dd5125f5b360370b4ecd7f7ef44fba68f4f037e90bce7315682afc0ea"
+        "jar": "f4d85c3e4d411694337cb873abea09b242b664bb013320be6105327c45991537",
+        "sources": "0c17d911785e8a606d091aa6740d6d520f307749c2bddf6e35066d52fe0036e5"
       },
-      "version": "29.0-jre"
+      "version": "33.0.0-jre"
     },
     "com.google.guava:listenablefuture": {
       "shasums": {
-        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99",
-        "sources": null
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
       },
       "version": "9999.0-empty-to-avoid-conflict-with-guava"
     },
     "com.google.j2objc:j2objc-annotations": {
       "shasums": {
-        "jar": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b",
-        "sources": "ba4df669fec153fa4cd0ef8d02c6d3ef0702b7ac4cabe080facf3b6e490bb972"
+        "jar": "f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed",
+        "sources": "7413eed41f111453a08837f5ac680edded7faed466cbd35745e402e13f4cc3f5"
       },
-      "version": "1.3"
+      "version": "2.8"
     },
     "com.google.protobuf:protobuf-java": {
       "shasums": {
-        "jar": "a204ec68748a7b26351ae37a311e8de468f248d1916d5f8dbe812c1289d0a0ff",
-        "sources": "c664e12e6e3fea801477edf95014980a8a96528d3904d2add90c68b5d047a6c2"
+        "jar": "d60dfe7c68a0d38a248cca96924f289dc7e1966a887ee7cae397701af08575ae",
+        "sources": "0c1f6ecb409099c008358866086ea6e39f0f4b88e783ebb4c876ec0bbcee0e41"
       },
-      "version": "3.21.7"
+      "version": "4.31.1"
+    },
+    "com.google.protobuf:protobuf-java-util": {
+      "shasums": {
+        "jar": "a2665294d3e4675482bde593df8283f8c965f0207785e8e9b223f790644f5b08",
+        "sources": "8f318bde0b3b68fb7df0760bf5d818dd7ebcd553155d9be93b4fed373e659847"
+      },
+      "version": "4.27.2"
+    },
+    "com.google.truth:truth": {
+      "shasums": {
+        "jar": "235c28e96ee6701ab01cc852fb294cb0f34756f636a8154b9aef08fb1215bbc4",
+        "sources": "f2834e7abdd08f5ab31defe409f601e0863b31f3f47105ab3c5ae8df4a687318"
+      },
+      "version": "1.4.0"
+    },
+    "junit:junit": {
+      "shasums": {
+        "jar": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3",
+        "sources": "34181df6482d40ea4c046b063cb53c7ffae94bdf1b1d62695bdf3adf9dea7e3a"
+      },
+      "version": "4.13.2"
+    },
+    "net.bytebuddy:byte-buddy": {
+      "shasums": {
+        "jar": "e99761a526df0fefbbd3fe14436b0f953000cdfa5151dc63c0b18d37d9c46f1c",
+        "sources": "143dd9fe73f0566cc703934b7fd15abbb97bfab045064c2f176067e70456a136"
+      },
+      "version": "1.14.5"
+    },
+    "net.bytebuddy:byte-buddy-agent": {
+      "shasums": {
+        "jar": "55f19862b870f5d85890ba5386b1b45e9bbc88d5fe1f819abe0c788b4929fa6b",
+        "sources": "8844d4b130218aa87e0f6b99f9a9b40971b45a95f44a0dfd409038c46631cb5b"
+      },
+      "version": "1.14.5"
     },
     "org.checkerframework:checker-qual": {
       "shasums": {
-        "jar": "015224a4b1dc6de6da053273d4da7d39cfea20e63038169fc45ac0d1dc9c5938",
-        "sources": "7d3b990687be9b980a9dc7853f4b0f279eb437e28efe3c9903acaf20450f55b5"
+        "jar": "ccaedd33af0b7894d9f2f3b644f4d19e43928e32902e61ac4d10777830f5aac7",
+        "sources": "efb65eb479f61f53c6dcafbd42ed59dad09b0a0d5a7f44b7bc68df25c2dcf8fd"
       },
-      "version": "2.11.1"
+      "version": "3.42.0"
+    },
+    "org.hamcrest:hamcrest-core": {
+      "shasums": {
+        "jar": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
+        "sources": "e223d2d8fbafd66057a8848cc94222d63c3cedd652cc48eddc0ab5c39c0f84df"
+      },
+      "version": "1.3"
+    },
+    "org.mockito:mockito-core": {
+      "shasums": {
+        "jar": "b1689b06617ea01fd777bfaedbdde512faf083d639a049f79b388d5a4e96d2e5",
+        "sources": "f21eb1cbb701477ba37c430b5a97ba78e3b3cf79a5737443e06b3f65bd7c9364"
+      },
+      "version": "5.4.0"
+    },
+    "org.objenesis:objenesis": {
+      "shasums": {
+        "jar": "02dfd0b0439a5591e35b708ed2f5474eb0948f53abf74637e959b8e4ef69bfeb",
+        "sources": "d06164f8ca002c8ef193cef2d682822014dd330505616af93a3fb64226fc131d"
+      },
+      "version": "3.3"
+    },
+    "org.ow2.asm:asm": {
+      "shasums": {
+        "jar": "3c6fac2424db3d4a853b669f4e3d1d9c3c552235e19a319673f887083c2303a1",
+        "sources": "2b6e12f0da3d065ba628a024a8851ab0d5b5d3501dacfcc18769243250f4f77e"
+      },
+      "version": "9.6"
     }
   },
   "dependencies": {
@@ -68,14 +149,55 @@
       "com.google.guava:listenablefuture",
       "com.google.j2objc:j2objc-annotations",
       "org.checkerframework:checker-qual"
+    ],
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:guava",
+      "com.google.j2objc:j2objc-annotations",
+      "com.google.protobuf:protobuf-java"
+    ],
+    "com.google.truth:truth": [
+      "com.google.auto.value:auto-value-annotations",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:guava",
+      "junit:junit",
+      "org.checkerframework:checker-qual",
+      "org.ow2.asm:asm"
+    ],
+    "junit:junit": [
+      "org.hamcrest:hamcrest-core"
+    ],
+    "org.mockito:mockito-core": [
+      "net.bytebuddy:byte-buddy",
+      "net.bytebuddy:byte-buddy-agent",
+      "org.objenesis:objenesis"
     ]
   },
   "packages": {
+    "com.google.auto.value:auto-value-annotations": [
+      "com.google.auto.value",
+      "com.google.auto.value.extension.memoized",
+      "com.google.auto.value.extension.serializable",
+      "com.google.auto.value.extension.toprettystring"
+    ],
     "com.google.code.findbugs:jsr305": [
       "javax.annotation",
       "javax.annotation.concurrent",
       "javax.annotation.meta"
     ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
     "com.google.errorprone:error_prone_annotations": [
       "com.google.errorprone.annotations",
       "com.google.errorprone.annotations.concurrent"
@@ -110,45 +232,221 @@
       "com.google.protobuf",
       "com.google.protobuf.compiler"
     ],
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.protobuf.util"
+    ],
+    "com.google.truth:truth": [
+      "com.google.common.truth"
+    ],
+    "junit:junit": [
+      "junit.extensions",
+      "junit.framework",
+      "junit.runner",
+      "junit.textui",
+      "org.junit",
+      "org.junit.experimental",
+      "org.junit.experimental.categories",
+      "org.junit.experimental.max",
+      "org.junit.experimental.results",
+      "org.junit.experimental.runners",
+      "org.junit.experimental.theories",
+      "org.junit.experimental.theories.internal",
+      "org.junit.experimental.theories.suppliers",
+      "org.junit.function",
+      "org.junit.internal",
+      "org.junit.internal.builders",
+      "org.junit.internal.management",
+      "org.junit.internal.matchers",
+      "org.junit.internal.requests",
+      "org.junit.internal.runners",
+      "org.junit.internal.runners.model",
+      "org.junit.internal.runners.rules",
+      "org.junit.internal.runners.statements",
+      "org.junit.matchers",
+      "org.junit.rules",
+      "org.junit.runner",
+      "org.junit.runner.manipulation",
+      "org.junit.runner.notification",
+      "org.junit.runners",
+      "org.junit.runners.model",
+      "org.junit.runners.parameterized",
+      "org.junit.validator"
+    ],
+    "net.bytebuddy:byte-buddy": [
+      "net.bytebuddy",
+      "net.bytebuddy.agent.builder",
+      "net.bytebuddy.asm",
+      "net.bytebuddy.build",
+      "net.bytebuddy.description",
+      "net.bytebuddy.description.annotation",
+      "net.bytebuddy.description.enumeration",
+      "net.bytebuddy.description.field",
+      "net.bytebuddy.description.method",
+      "net.bytebuddy.description.modifier",
+      "net.bytebuddy.description.type",
+      "net.bytebuddy.dynamic",
+      "net.bytebuddy.dynamic.loading",
+      "net.bytebuddy.dynamic.scaffold",
+      "net.bytebuddy.dynamic.scaffold.inline",
+      "net.bytebuddy.dynamic.scaffold.subclass",
+      "net.bytebuddy.implementation",
+      "net.bytebuddy.implementation.attribute",
+      "net.bytebuddy.implementation.auxiliary",
+      "net.bytebuddy.implementation.bind",
+      "net.bytebuddy.implementation.bind.annotation",
+      "net.bytebuddy.implementation.bytecode",
+      "net.bytebuddy.implementation.bytecode.assign",
+      "net.bytebuddy.implementation.bytecode.assign.primitive",
+      "net.bytebuddy.implementation.bytecode.assign.reference",
+      "net.bytebuddy.implementation.bytecode.collection",
+      "net.bytebuddy.implementation.bytecode.constant",
+      "net.bytebuddy.implementation.bytecode.member",
+      "net.bytebuddy.jar.asm",
+      "net.bytebuddy.jar.asm.commons",
+      "net.bytebuddy.jar.asm.signature",
+      "net.bytebuddy.matcher",
+      "net.bytebuddy.pool",
+      "net.bytebuddy.utility",
+      "net.bytebuddy.utility.dispatcher",
+      "net.bytebuddy.utility.nullability",
+      "net.bytebuddy.utility.privilege",
+      "net.bytebuddy.utility.visitor"
+    ],
+    "net.bytebuddy:byte-buddy-agent": [
+      "net.bytebuddy.agent",
+      "net.bytebuddy.agent.utility.nullability"
+    ],
+    "net.bytebuddy:byte-buddy:jar:sources": [
+      "net.bytebuddy.build"
+    ],
     "org.checkerframework:checker-qual": [
+      "org.checkerframework.checker.builder.qual",
+      "org.checkerframework.checker.calledmethods.qual",
       "org.checkerframework.checker.compilermsgs.qual",
       "org.checkerframework.checker.fenum.qual",
-      "org.checkerframework.checker.formatter",
       "org.checkerframework.checker.formatter.qual",
       "org.checkerframework.checker.guieffect.qual",
       "org.checkerframework.checker.i18n.qual",
-      "org.checkerframework.checker.i18nformatter",
       "org.checkerframework.checker.i18nformatter.qual",
       "org.checkerframework.checker.index.qual",
       "org.checkerframework.checker.initialization.qual",
       "org.checkerframework.checker.interning.qual",
       "org.checkerframework.checker.lock.qual",
-      "org.checkerframework.checker.nullness",
+      "org.checkerframework.checker.mustcall.qual",
       "org.checkerframework.checker.nullness.qual",
       "org.checkerframework.checker.optional.qual",
       "org.checkerframework.checker.propkey.qual",
-      "org.checkerframework.checker.regex",
       "org.checkerframework.checker.regex.qual",
       "org.checkerframework.checker.signature.qual",
-      "org.checkerframework.checker.signedness",
       "org.checkerframework.checker.signedness.qual",
       "org.checkerframework.checker.tainting.qual",
-      "org.checkerframework.checker.units",
       "org.checkerframework.checker.units.qual",
       "org.checkerframework.common.aliasing.qual",
+      "org.checkerframework.common.initializedfields.qual",
       "org.checkerframework.common.reflection.qual",
+      "org.checkerframework.common.returnsreceiver.qual",
       "org.checkerframework.common.subtyping.qual",
-      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.util.count.report.qual",
       "org.checkerframework.common.value.qual",
       "org.checkerframework.dataflow.qual",
-      "org.checkerframework.framework.qual",
-      "org.checkerframework.framework.util"
+      "org.checkerframework.framework.qual"
+    ],
+    "org.hamcrest:hamcrest-core": [
+      "org.hamcrest",
+      "org.hamcrest.core",
+      "org.hamcrest.internal"
+    ],
+    "org.mockito:mockito-core": [
+      "org.mockito",
+      "org.mockito.codegen",
+      "org.mockito.configuration",
+      "org.mockito.creation.instance",
+      "org.mockito.exceptions.base",
+      "org.mockito.exceptions.misusing",
+      "org.mockito.exceptions.stacktrace",
+      "org.mockito.exceptions.verification",
+      "org.mockito.exceptions.verification.junit",
+      "org.mockito.exceptions.verification.opentest4j",
+      "org.mockito.hamcrest",
+      "org.mockito.internal",
+      "org.mockito.internal.configuration",
+      "org.mockito.internal.configuration.injection",
+      "org.mockito.internal.configuration.injection.filter",
+      "org.mockito.internal.configuration.injection.scanner",
+      "org.mockito.internal.configuration.plugins",
+      "org.mockito.internal.creation",
+      "org.mockito.internal.creation.bytebuddy",
+      "org.mockito.internal.creation.instance",
+      "org.mockito.internal.creation.proxy",
+      "org.mockito.internal.creation.settings",
+      "org.mockito.internal.creation.util",
+      "org.mockito.internal.debugging",
+      "org.mockito.internal.exceptions",
+      "org.mockito.internal.exceptions.stacktrace",
+      "org.mockito.internal.exceptions.util",
+      "org.mockito.internal.framework",
+      "org.mockito.internal.hamcrest",
+      "org.mockito.internal.handler",
+      "org.mockito.internal.invocation",
+      "org.mockito.internal.invocation.finder",
+      "org.mockito.internal.invocation.mockref",
+      "org.mockito.internal.junit",
+      "org.mockito.internal.listeners",
+      "org.mockito.internal.matchers",
+      "org.mockito.internal.matchers.apachecommons",
+      "org.mockito.internal.matchers.text",
+      "org.mockito.internal.progress",
+      "org.mockito.internal.reporting",
+      "org.mockito.internal.runners",
+      "org.mockito.internal.runners.util",
+      "org.mockito.internal.session",
+      "org.mockito.internal.stubbing",
+      "org.mockito.internal.stubbing.answers",
+      "org.mockito.internal.stubbing.defaultanswers",
+      "org.mockito.internal.util",
+      "org.mockito.internal.util.collections",
+      "org.mockito.internal.util.concurrent",
+      "org.mockito.internal.util.io",
+      "org.mockito.internal.util.reflection",
+      "org.mockito.internal.verification",
+      "org.mockito.internal.verification.api",
+      "org.mockito.internal.verification.argumentmatching",
+      "org.mockito.internal.verification.checkers",
+      "org.mockito.invocation",
+      "org.mockito.junit",
+      "org.mockito.listeners",
+      "org.mockito.mock",
+      "org.mockito.plugins",
+      "org.mockito.quality",
+      "org.mockito.session",
+      "org.mockito.stubbing",
+      "org.mockito.verification"
+    ],
+    "org.objenesis:objenesis": [
+      "org.objenesis",
+      "org.objenesis.instantiator",
+      "org.objenesis.instantiator.android",
+      "org.objenesis.instantiator.annotations",
+      "org.objenesis.instantiator.basic",
+      "org.objenesis.instantiator.gcj",
+      "org.objenesis.instantiator.perc",
+      "org.objenesis.instantiator.sun",
+      "org.objenesis.instantiator.util",
+      "org.objenesis.strategy"
+    ],
+    "org.ow2.asm:asm": [
+      "org.objectweb.asm",
+      "org.objectweb.asm.signature"
     ]
   },
   "repositories": {
     "https://repo1.maven.org/maven2/": [
+      "com.google.auto.value:auto-value-annotations",
+      "com.google.auto.value:auto-value-annotations:jar:sources",
       "com.google.code.findbugs:jsr305",
       "com.google.code.findbugs:jsr305:jar:sources",
+      "com.google.code.gson:gson",
+      "com.google.code.gson:gson:jar:sources",
       "com.google.errorprone:error_prone_annotations",
       "com.google.errorprone:error_prone_annotations:jar:sources",
       "com.google.guava:failureaccess",
@@ -159,9 +457,27 @@
       "com.google.j2objc:j2objc-annotations",
       "com.google.j2objc:j2objc-annotations:jar:sources",
       "com.google.protobuf:protobuf-java",
+      "com.google.protobuf:protobuf-java-util",
+      "com.google.protobuf:protobuf-java-util:jar:sources",
       "com.google.protobuf:protobuf-java:jar:sources",
+      "com.google.truth:truth",
+      "com.google.truth:truth:jar:sources",
+      "junit:junit",
+      "junit:junit:jar:sources",
+      "net.bytebuddy:byte-buddy",
+      "net.bytebuddy:byte-buddy-agent",
+      "net.bytebuddy:byte-buddy-agent:jar:sources",
+      "net.bytebuddy:byte-buddy:jar:sources",
       "org.checkerframework:checker-qual",
-      "org.checkerframework:checker-qual:jar:sources"
+      "org.checkerframework:checker-qual:jar:sources",
+      "org.hamcrest:hamcrest-core",
+      "org.hamcrest:hamcrest-core:jar:sources",
+      "org.mockito:mockito-core",
+      "org.mockito:mockito-core:jar:sources",
+      "org.objenesis:objenesis",
+      "org.objenesis:objenesis:jar:sources",
+      "org.ow2.asm:asm",
+      "org.ow2.asm:asm:jar:sources"
     ]
   },
   "services": {},
diff --git a/examples/protobuf-java/.bazelrc b/examples/protobuf-java/.bazelrc
new file mode 100644
index 0000000..2bcf89f
--- /dev/null
+++ b/examples/protobuf-java/.bazelrc
@@ -0,0 +1,13 @@
+# Required to get `protobuf` compiling. Note that MSVC requires a
+# different flag than both macOS and Linux.
+
+common --enable_platform_specific_config
+common:linux --cxxopt=-std=c++17
+common:linux --host_cxxopt=-std=c++17
+common:macos --cxxopt=-std=c++17
+common:macos --host_cxxopt=-std=c++17
+common:windows --cxxopt=/std:c++17
+common:windows --host_cxxopt=/std:c++17
+
+# Enable protobuf MSVC support on Windows
+build:windows --define=protobuf_allow_msvc=true
diff --git a/examples/protobuf-java/MODULE.bazel b/examples/protobuf-java/MODULE.bazel
index b9da199..746e548 100644
--- a/examples/protobuf-java/MODULE.bazel
+++ b/examples/protobuf-java/MODULE.bazel
@@ -1,6 +1,6 @@
 module(name = "rules_jvm_external_example_protobuf_java")
 
-protobuf_version = "25.5"
+protobuf_version = "31.1"
 
 bazel_dep(name = "bazel_skylib", version = "1.7.1")
 bazel_dep(name = "protobuf", version = protobuf_version, repo_name = "com_google_protobuf")
@@ -15,8 +15,12 @@
 maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
 maven.install(
     artifacts = [
-        "com.google.protobuf:protobuf-java:3.%s" % protobuf_version,
-        "com.google.protobuf:protobuf-java-util:3.%s" % protobuf_version,
+        "com.google.protobuf:protobuf-java:4.%s" % protobuf_version,
+        "com.google.protobuf:protobuf-java-util:4.%s" % protobuf_version,
+    ],
+    known_contributing_modules = [
+        "bazel_worker_java",
+        "rules_jvm_external_example_protobuf_java",
     ],
     repositories = [
         "https://repo1.maven.org/maven2",
diff --git a/examples/protobuf-java/MODULE.bazel.lock b/examples/protobuf-java/MODULE.bazel.lock
index b637eb0..d5a1318 100644
--- a/examples/protobuf-java/MODULE.bazel.lock
+++ b/examples/protobuf-java/MODULE.bazel.lock
@@ -1,5 +1,5 @@
 {
-  "lockFileVersion": 11,
+  "lockFileVersion": 13,
   "registryFileHashes": {
     "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
     "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
@@ -9,17 +9,28 @@
     "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16",
     "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915",
     "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed",
-    "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/source.json": "1b996859f840d8efc7c720efc61dcf2a84b1261cb3974cbbe9b6666ebf567775",
+    "https://bcr.bazel.build/modules/abseil-py/2.1.0/MODULE.bazel": "5ebe5bf853769c65707e5c28f216798f7a4b1042015e6a36e6d03094d94bec8a",
+    "https://bcr.bazel.build/modules/abseil-py/2.1.0/source.json": "0e8fc4f088ce07099c1cd6594c20c7ddbb48b4b3c0849b7d94ba94be88ff042b",
+    "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896",
+    "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85",
+    "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b",
     "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef",
-    "https://bcr.bazel.build/modules/apple_support/1.5.0/source.json": "eb98a7627c0bc486b57f598ad8da50f6625d974c8f723e9ea71bd39f709c9862",
+    "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b",
     "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd",
     "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
     "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d",
     "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a",
     "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
-    "https://bcr.bazel.build/modules/bazel_features/1.25.0/MODULE.bazel": "e2e60a10a6da64bbf533f15ca652bf61a033e41c2ed734d79a9a08ba87f68c1a",
-    "https://bcr.bazel.build/modules/bazel_features/1.25.0/source.json": "c9f80ab580fa120bc4e65e0cca734ac81dddd695847965f3f73c84dc63a5a420",
+    "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b",
+    "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a",
+    "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9",
+    "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87",
+    "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc",
     "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+    "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a",
     "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
     "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e",
     "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686",
@@ -31,16 +42,33 @@
     "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d",
     "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
     "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.1/MODULE.bazel": "02a13b77321773b2042e70ee5e4c5e099c8ddee4cf2da9cd420442c36938d4bd",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/MODULE.bazel": "460aa12d01231a80cce03c548287b433b321d205b0028ae596728c35e5ee442e",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/source.json": "d353c410d47a8b65d09fa98e83d57ebec257a2c2b9c6e42d6fda1cb25e5464a5",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/MODULE.bazel": "82494a01018bb7ef06d4a17ec4cd7a758721f10eb8b6c820a818e70d669500db",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/source.json": "a2d30458fd86cf022c2b6331e652526fa08e17573b2f5034a9dbcacdf9c2583c",
     "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
     "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
+    "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8",
+    "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350",
+    "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a",
+    "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0",
+    "https://bcr.bazel.build/modules/gazelle/0.40.0/MODULE.bazel": "42ba5378ebe845fca43989a53186ab436d956db498acde790685fe0e8f9c6146",
+    "https://bcr.bazel.build/modules/gazelle/0.40.0/source.json": "1e5ef6e4d8b9b6836d93273c781e78ff829ea2e077afef7a57298040fa4f010a",
     "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb",
     "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
     "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6",
-    "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4",
     "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
+    "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108",
+    "https://bcr.bazel.build/modules/googletest/1.15.2/source.json": "dbdda654dcb3a0d7a8bc5d0ac5fc7e150b58c2a986025ae5bc634bb2cb61f470",
     "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
-    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000",
     "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
+    "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74",
+    "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.3/source.json": "742075a428ad12a3fa18a69014c2f57f01af910c6d9d18646c990200853e641a",
     "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
     "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
     "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29",
@@ -51,42 +79,67 @@
     "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
     "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
     "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
-    "https://bcr.bazel.build/modules/protobuf/25.5/MODULE.bazel": "9d90a65251561f7ce2123dbbf22631f2b00e632429d7c106144a7ccb773c8858",
+    "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a",
+    "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12",
     "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
+    "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
+    "https://bcr.bazel.build/modules/protobuf/27.2/MODULE.bazel": "32450b50673882e4c8c3d10a83f3bc82161b213ed2f80d17e38bece8f165c295",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92",
     "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95",
-    "https://bcr.bazel.build/modules/protobuf/29.1/source.json": "04cca85dce26b895ed037d98336d860367fe09919208f2ad383f0df1aff63199",
     "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
+    "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573",
     "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
+    "https://bcr.bazel.build/modules/protobuf/31.1/MODULE.bazel": "379a389bb330b7b8c1cdf331cc90bf3e13de5614799b3b52cdb7c6f389f6b38e",
+    "https://bcr.bazel.build/modules/protobuf/31.1/source.json": "25af5d0219da0c0fc4d1191a24ce438e6ca7f49d2e1a94f354efeba6ef10426f",
     "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e",
-    "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680",
     "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206",
-    "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4",
-    "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
-    "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4",
+    "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa",
+    "https://bcr.bazel.build/modules/rules_android/0.6.6/MODULE.bazel": "b0fb569752aab65ab1a9db0a8f6cfaf5aa1754965e17e95dcf0e4d88e192a68d",
+    "https://bcr.bazel.build/modules/rules_android/0.6.6/source.json": "a9d8dc2d5a102dc03269a94acc886a4cab82cdcb9ccbc77b0f665d6d17a6ae09",
+    "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a",
+    "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366",
     "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
     "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191",
     "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
     "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87",
-    "https://bcr.bazel.build/modules/rules_cc/0.0.16/source.json": "227e83737046aa4f50015da48e98e0d8ab42fd0ec74d8d653b6cc9f9a357f200",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a",
     "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c",
     "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f",
     "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
     "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c",
     "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6",
     "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8",
-    "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e",
+    "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8",
+    "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270",
+    "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd",
+    "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0",
+    "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/MODULE.bazel": "edfc3a9cea7bedb0eaaff37b0d7817c1a4bf72b3c615580b0ffcee6c52690fd4",
+    "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/source.json": "6b5cd0b3da2bd0e6949580851db990a04af0a285f072b9a0f059424457cd8cc9",
     "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
     "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
+    "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963",
     "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31",
+    "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64",
     "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
-    "https://bcr.bazel.build/modules/rules_java/7.12.4/MODULE.bazel": "ace7124656f4903a738ece5fb5bf3a5db732335554bf8afa110511a91965b145",
-    "https://bcr.bazel.build/modules/rules_java/7.12.4/source.json": "2d0713098ca273a3b1b16bc3ebff0d81aec7c3b10d934967f5d1899617494d09",
     "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
     "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
     "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1",
+    "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e",
+    "https://bcr.bazel.build/modules/rules_java/8.13.0/source.json": "4605c0f676b87dd9d1fabd4d743b71f04d97503bd1a79aad53f87399fb5396de",
+    "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017",
+    "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939",
+    "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71",
+    "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2",
     "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
-    "https://bcr.bazel.build/modules/rules_kotlin/2.1.0/MODULE.bazel": "453368f2bbfde20a62a29adebb4971b4229691dc849b6e5f45c228d37a132d14",
-    "https://bcr.bazel.build/modules/rules_kotlin/2.1.0/source.json": "5910b2111b32d81df63c28a0cf92986dd7f87bfbe8e2af146af74eec4f287e1a",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5",
     "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
     "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
     "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
@@ -96,7 +149,10 @@
     "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a",
     "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06",
     "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f",
     "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73",
+    "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2",
     "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96",
     "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e",
     "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
@@ -105,25 +161,43 @@
     "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382",
     "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed",
     "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58",
-    "https://bcr.bazel.build/modules/rules_python/0.31.0/source.json": "a41c836d4065888eef4377f2f27b6eea0fedb9b5adb1bab1970437373fe90dc7",
+    "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937",
+    "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500",
+    "https://bcr.bazel.build/modules/rules_python/0.37.2/MODULE.bazel": "b5ffde91410745750b6c13be1c5dc4555ef5bc50562af4a89fd77807fdde626a",
     "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+    "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43",
+    "https://bcr.bazel.build/modules/rules_python/1.0.0/source.json": "b0162a65c6312e45e7912e39abd1a7f8856c2c7e41ecc9b6dc688a6f6400a917",
+    "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/MODULE.bazel": "d44fec647d0aeb67b9f3b980cf68ba634976f3ae7ccd6c07d790b59b87a4f251",
+    "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/source.json": "37c10335f2361c337c5c1f34ed36d2da70534c23088062b33a8bdaab68aa9dea",
+    "https://bcr.bazel.build/modules/rules_shell/0.1.2/MODULE.bazel": "66e4ca3ce084b04af0b9ff05ff14cab4e5df7503973818bb91cbc6cda08d32fc",
     "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c",
-    "https://bcr.bazel.build/modules/rules_shell/0.4.0/MODULE.bazel": "0f8f11bb3cd11755f0b48c1de0bbcf62b4b34421023aa41a2fc74ef68d9584f0",
-    "https://bcr.bazel.build/modules/rules_shell/0.4.0/source.json": "1d7fa7f941cd41dc2704ba5b4edc2e2230eea1cc600d80bd2b65838204c50b95",
+    "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b",
+    "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592",
+    "https://bcr.bazel.build/modules/rules_shell/0.4.1/source.json": "4757bd277fe1567763991c4425b483477bb82e35e777a56fd846eb5cceda324a",
+    "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca",
+    "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046",
+    "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186",
+    "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd",
     "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb",
     "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9",
     "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
     "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
     "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79",
-    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806",
     "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198"
   },
   "selectedYankedVersions": {},
   "moduleExtensions": {
     "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": {
       "general": {
-        "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=",
-        "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=",
+        "bzlTransitiveDigest": "ltCGFbl/LQQZXn/LEMXfKX7pGwyqNiOCHcmiQW0tmjM=",
+        "usagesDigest": "0sv83SRsyI6lGvOdlpRn0tc9RjvaEXPpa1yYtUlWLWk=",
         "recordedFileInputs": {},
         "recordedDirentsInputs": {},
         "envVariables": {},
@@ -148,10 +222,27 @@
         ]
       }
     },
+    "@@rules_android~//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
+      "general": {
+        "bzlTransitiveDigest": "NAy+0M15JNVEBb8Tny6t7j3lKqTnsAMjoBB6LJ+C370=",
+        "usagesDigest": "weZLGEpNa+fTJZ9CEljWxpN3/kuPzj/ULgebzOt2h4g=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "androidsdk": {
+            "bzlFile": "@@rules_android~//rules/android_sdk_repository:rule.bzl",
+            "ruleClassName": "_android_sdk_repository",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
     "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
       "general": {
-        "bzlTransitiveDigest": "xwcWqSOUpaiEuuDhs9yiN05kllbzEpKXpuZIvlTV6ww=",
-        "usagesDigest": "ksNVU0P9YgSyiju+tBgNTHmhx1RcATsUWoDzGFhZ3fc=",
+        "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=",
+        "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=",
         "recordedFileInputs": {},
         "recordedDirentsInputs": {},
         "envVariables": {},
@@ -161,9 +252,9 @@
             "ruleClassName": "kotlin_compiler_git_repository",
             "attributes": {
               "urls": [
-                "https://github.com/JetBrains/kotlin/releases/download/v2.1.0/kotlin-compiler-2.1.0.zip"
+                "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip"
               ],
-              "sha256": "b6698d5728ad8f9edcdd01617d638073191d8a03139cc538a391b4e3759ad297"
+              "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88"
             }
           },
           "com_github_jetbrains_kotlin": {
@@ -171,7 +262,7 @@
             "ruleClassName": "kotlin_capabilities_repository",
             "attributes": {
               "git_repository_name": "com_github_jetbrains_kotlin_git",
-              "compiler_version": "2.1.0"
+              "compiler_version": "1.9.23"
             }
           },
           "com_github_google_ksp": {
@@ -179,50 +270,31 @@
             "ruleClassName": "ksp_compiler_plugin_repository",
             "attributes": {
               "urls": [
-                "https://github.com/google/ksp/releases/download/2.1.0-1.0.28/artifacts.zip"
+                "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip"
               ],
-              "sha256": "fc27b08cadc061a4a989af01cbeccb613feef1995f4aad68f2be0f886a3ee251",
-              "strip_version": "2.1.0-1.0.28"
+              "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d",
+              "strip_version": "1.9.23-1.0.20"
             }
           },
           "com_github_pinterest_ktlint": {
             "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
             "ruleClassName": "http_file",
             "attributes": {
-              "sha256": "a9f923be58fbd32670a17f0b729b1df804af882fa57402165741cb26e5440ca1",
+              "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985",
               "urls": [
-                "https://github.com/pinterest/ktlint/releases/download/1.3.1/ktlint"
+                "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint"
               ],
               "executable": true
             }
           },
-          "kotlinx_serialization_core_jvm": {
+          "rules_android": {
             "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_jar",
+            "ruleClassName": "http_archive",
             "attributes": {
-              "sha256": "29c821a8d4e25cbfe4f2ce96cdd4526f61f8f4e69a135f9612a34a81d93b65f1",
+              "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
+              "strip_prefix": "rules_android-0.1.1",
               "urls": [
-                "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.6.3/kotlinx-serialization-core-jvm-1.6.3.jar"
-              ]
-            }
-          },
-          "kotlinx_serialization_json": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_jar",
-            "attributes": {
-              "sha256": "8c0016890a79ab5980dd520a5ab1a6738023c29aa3b6437c482e0e5fdc06dab1",
-              "urls": [
-                "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json/1.6.3/kotlinx-serialization-json-1.6.3.jar"
-              ]
-            }
-          },
-          "kotlinx_serialization_json_jvm": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_jar",
-            "attributes": {
-              "sha256": "d3234179bcff1886d53d67c11eca47f7f3cf7b63c349d16965f6db51b7f3dd9a",
-              "urls": [
-                "https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1.6.3/kotlinx-serialization-json-jvm-1.6.3.jar"
+                "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"
               ]
             }
           }
@@ -235,1012 +307,6 @@
           ]
         ]
       }
-    },
-    "@@rules_python~//python/extensions:python.bzl%python": {
-      "general": {
-        "bzlTransitiveDigest": "8vDKUdCc6qEk2/YsFiPsFO1Jqgl+XPFRklapOxMAbE8=",
-        "usagesDigest": "ATOseWU5EE5A0RV+r4ACrYJ9g+Rp7OdaFygles1jsNk=",
-        "recordedFileInputs": {},
-        "recordedDirentsInputs": {},
-        "envVariables": {
-          "RULES_PYTHON_BZLMOD_DEBUG": null
-        },
-        "generatedRepoSpecs": {
-          "python_3_8_aarch64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "1825b1f7220bc93ff143f2e70b5c6a79c6469e0eeb40824e07a7277f59aabfda",
-              "patches": [],
-              "platform": "aarch64-apple-darwin",
-              "python_version": "3.8.18",
-              "release_filename": "20231002/cpython-3.8.18+20231002-aarch64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.8.18+20231002-aarch64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_8_aarch64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "236a300f386ead02ca98dbddbc026ff4ef4de6701a394106e291ff8b75445ee1",
-              "patches": [],
-              "platform": "aarch64-unknown-linux-gnu",
-              "python_version": "3.8.18",
-              "release_filename": "20231002/cpython-3.8.18+20231002-aarch64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.8.18+20231002-aarch64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_8_x86_64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "fcf04532e644644213977242cd724fe5e84c0a5ac92ae038e07f1b01b474fca3",
-              "patches": [],
-              "platform": "x86_64-apple-darwin",
-              "python_version": "3.8.18",
-              "release_filename": "20231002/cpython-3.8.18+20231002-x86_64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.8.18+20231002-x86_64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_8_x86_64-pc-windows-msvc": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "a9d203e78caed94de368d154e841610cef6f6b484738573f4ae9059d37e898a5",
-              "patches": [],
-              "platform": "x86_64-pc-windows-msvc",
-              "python_version": "3.8.18",
-              "release_filename": "20231002/cpython-3.8.18+20231002-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.8.18+20231002-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_8_x86_64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "1e8a3babd1500111359b0f5675d770984bcbcb2cc8890b117394f0ed342fb9ec",
-              "patches": [],
-              "platform": "x86_64-unknown-linux-gnu",
-              "python_version": "3.8.18",
-              "release_filename": "20231002/cpython-3.8.18+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.8.18+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_8_host": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "host_toolchain",
-            "attributes": {
-              "python_version": "3.8.18",
-              "user_repository_name": "python_3_8",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_8": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "toolchain_aliases",
-            "attributes": {
-              "python_version": "3.8.18",
-              "user_repository_name": "python_3_8",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_9_aarch64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "fdc4054837e37b69798c2ef796222a480bc1f80e8ad3a01a95d0168d8282a007",
-              "patches": [],
-              "platform": "aarch64-apple-darwin",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-aarch64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-aarch64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_aarch64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "1e0a3e8ce8e58901a259748c0ab640d2b8294713782d14229e882c6898b2fb36",
-              "patches": [],
-              "platform": "aarch64-unknown-linux-gnu",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-aarch64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-aarch64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_ppc64le-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "101c38b22fb2f5a0945156da4259c8e9efa0c08de9d7f59afa51e7ce6e22a1cc",
-              "patches": [],
-              "platform": "ppc64le-unknown-linux-gnu",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-ppc64le-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-ppc64le-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_s390x-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "eee31e55ffbc1f460d7b17f05dd89e45a2636f374a6f8dc29ea13d0497f7f586",
-              "patches": [],
-              "platform": "s390x-unknown-linux-gnu",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-s390x-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-s390x-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_x86_64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "82231cb77d4a5c8081a1a1d5b8ae440abe6993514eb77a926c826e9a69a94fb1",
-              "patches": [],
-              "platform": "x86_64-apple-darwin",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-x86_64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-x86_64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_x86_64-pc-windows-msvc": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "02ea7bb64524886bd2b05d6b6be4401035e4ba4319146f274f0bcd992822cd75",
-              "patches": [],
-              "platform": "x86_64-pc-windows-msvc",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_x86_64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "f3ff38b1ccae7dcebd8bbf2e533c9a984fac881de0ffd1636fbb61842bd924de",
-              "patches": [],
-              "platform": "x86_64-unknown-linux-gnu",
-              "python_version": "3.9.18",
-              "release_filename": "20231002/cpython-3.9.18+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.9.18+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_9_host": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "host_toolchain",
-            "attributes": {
-              "python_version": "3.9.18",
-              "user_repository_name": "python_3_9",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_9": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "toolchain_aliases",
-            "attributes": {
-              "python_version": "3.9.18",
-              "user_repository_name": "python_3_9",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_10_aarch64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "fd027b1dedf1ea034cdaa272e91771bdf75ddef4c8653b05d224a0645aa2ca3c",
-              "patches": [],
-              "platform": "aarch64-apple-darwin",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-aarch64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-aarch64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_aarch64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "8675915ff454ed2f1597e27794bc7df44f5933c26b94aa06af510fe91b58bb97",
-              "patches": [],
-              "platform": "aarch64-unknown-linux-gnu",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-aarch64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-aarch64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_ppc64le-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "f3f9c43eec1a0c3f72845d0b705da17a336d3906b7df212d2640b8f47e8ff375",
-              "patches": [],
-              "platform": "ppc64le-unknown-linux-gnu",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-ppc64le-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-ppc64le-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_s390x-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "859f6cfe9aedb6e8858892fdc124037e83ab05f28d42a7acd314c6a16d6bd66c",
-              "patches": [],
-              "platform": "s390x-unknown-linux-gnu",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-s390x-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-s390x-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_x86_64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "be0b19b6af1f7d8c667e5abef5505ad06cf72e5a11bb5844970c395a7e5b1275",
-              "patches": [],
-              "platform": "x86_64-apple-darwin",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-x86_64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-x86_64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_x86_64-pc-windows-msvc": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "b8d930ce0d04bda83037ad3653d7450f8907c88e24bb8255a29b8dab8930d6f1",
-              "patches": [],
-              "platform": "x86_64-pc-windows-msvc",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_x86_64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "5d0429c67c992da19ba3eb58b3acd0b35ec5e915b8cae9a4aa8ca565c423847a",
-              "patches": [],
-              "platform": "x86_64-unknown-linux-gnu",
-              "python_version": "3.10.13",
-              "release_filename": "20231002/cpython-3.10.13+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-3.10.13+20231002-x86_64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_10_host": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "host_toolchain",
-            "attributes": {
-              "python_version": "3.10.13",
-              "user_repository_name": "python_3_10",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_10": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "toolchain_aliases",
-            "attributes": {
-              "python_version": "3.10.13",
-              "user_repository_name": "python_3_10",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_11_aarch64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "b042c966920cf8465385ca3522986b12d745151a72c060991088977ca36d3883",
-              "patches": [],
-              "platform": "aarch64-apple-darwin",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-aarch64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-aarch64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_aarch64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "b102eaf865eb715aa98a8a2ef19037b6cc3ae7dfd4a632802650f29de635aa13",
-              "patches": [],
-              "platform": "aarch64-unknown-linux-gnu",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-aarch64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-aarch64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_ppc64le-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "b44e1b74afe75c7b19143413632c4386708ae229117f8f950c2094e9681d34c7",
-              "patches": [],
-              "platform": "ppc64le-unknown-linux-gnu",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-ppc64le-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-ppc64le-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_s390x-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "49520e3ff494708020f306e30b0964f079170be83e956be4504f850557378a22",
-              "patches": [],
-              "platform": "s390x-unknown-linux-gnu",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-s390x-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-s390x-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_x86_64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "a0e615eef1fafdc742da0008425a9030b7ea68a4ae4e73ac557ef27b112836d4",
-              "patches": [],
-              "platform": "x86_64-apple-darwin",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-x86_64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-x86_64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_x86_64-pc-windows-msvc": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "67077e6fa918e4f4fd60ba169820b00be7c390c497bf9bc9cab2c255ea8e6f3e",
-              "patches": [],
-              "platform": "x86_64-pc-windows-msvc",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_x86_64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "4a51ce60007a6facf64e5495f4cf322e311ba9f39a8cd3f3e4c026eae488e140",
-              "patches": [],
-              "platform": "x86_64-unknown-linux-gnu",
-              "python_version": "3.11.7",
-              "release_filename": "20240107/cpython-3.11.7+20240107-x86_64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.11.7+20240107-x86_64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_11_host": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "host_toolchain",
-            "attributes": {
-              "python_version": "3.11.7",
-              "user_repository_name": "python_3_11",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_11": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "toolchain_aliases",
-            "attributes": {
-              "python_version": "3.11.7",
-              "user_repository_name": "python_3_11",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_12_aarch64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "f93f8375ca6ac0a35d58ff007043cbd3a88d9609113f1cb59cf7c8d215f064af",
-              "patches": [],
-              "platform": "aarch64-apple-darwin",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-aarch64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-aarch64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_aarch64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "236533ef20e665007a111c2f36efb59c87ae195ad7dca223b6dc03fb07064f0b",
-              "patches": [],
-              "platform": "aarch64-unknown-linux-gnu",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-aarch64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-aarch64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_ppc64le-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "78051f0d1411ee62bc2af5edfccf6e8400ac4ef82887a2affc19a7ace6a05267",
-              "patches": [],
-              "platform": "ppc64le-unknown-linux-gnu",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-ppc64le-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-ppc64le-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_s390x-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "60631211c701f8d2c56e5dd7b154e68868128a019b9db1d53a264f56c0d4aee2",
-              "patches": [],
-              "platform": "s390x-unknown-linux-gnu",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-s390x-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-s390x-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_x86_64-apple-darwin": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "eca96158c1568dedd9a0b3425375637a83764d1fa74446438293089a8bfac1f8",
-              "patches": [],
-              "platform": "x86_64-apple-darwin",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-x86_64-apple-darwin-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-x86_64-apple-darwin-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_x86_64-pc-windows-msvc": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "fd5a9e0f41959d0341246d3643f2b8794f638adc0cec8dd5e1b6465198eae08a",
-              "patches": [],
-              "platform": "x86_64-pc-windows-msvc",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_x86_64-unknown-linux-gnu": {
-            "bzlFile": "@@rules_python~//python:repositories.bzl",
-            "ruleClassName": "python_repository",
-            "attributes": {
-              "sha256": "74e330b8212ca22fd4d9a2003b9eec14892155566738febc8e5e572f267b9472",
-              "patches": [],
-              "platform": "x86_64-unknown-linux-gnu",
-              "python_version": "3.12.1",
-              "release_filename": "20240107/cpython-3.12.1+20240107-x86_64-unknown-linux-gnu-install_only.tar.gz",
-              "urls": [
-                "https://github.com/indygreg/python-build-standalone/releases/download/20240107/cpython-3.12.1+20240107-x86_64-unknown-linux-gnu-install_only.tar.gz"
-              ],
-              "distutils_content": "",
-              "strip_prefix": "python",
-              "coverage_tool": "",
-              "ignore_root_user_error": false
-            }
-          },
-          "python_3_12_host": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "host_toolchain",
-            "attributes": {
-              "python_version": "3.12.1",
-              "user_repository_name": "python_3_12",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "python_3_12": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "toolchain_aliases",
-            "attributes": {
-              "python_version": "3.12.1",
-              "user_repository_name": "python_3_12",
-              "platforms": [
-                "aarch64-apple-darwin",
-                "aarch64-unknown-linux-gnu",
-                "ppc64le-unknown-linux-gnu",
-                "s390x-unknown-linux-gnu",
-                "x86_64-apple-darwin",
-                "x86_64-pc-windows-msvc",
-                "x86_64-unknown-linux-gnu"
-              ]
-            }
-          },
-          "pythons_hub": {
-            "bzlFile": "@@rules_python~//python/private/bzlmod:pythons_hub.bzl",
-            "ruleClassName": "hub_repo",
-            "attributes": {
-              "default_python_version": "3.11",
-              "toolchain_prefixes": [
-                "_0000_python_3_8_",
-                "_0001_python_3_9_",
-                "_0002_python_3_10_",
-                "_0003_python_3_12_",
-                "_0004_python_3_11_"
-              ],
-              "toolchain_python_versions": [
-                "3.8",
-                "3.9",
-                "3.10",
-                "3.12",
-                "3.11"
-              ],
-              "toolchain_set_python_version_constraints": [
-                "True",
-                "True",
-                "True",
-                "True",
-                "False"
-              ],
-              "toolchain_user_repository_names": [
-                "python_3_8",
-                "python_3_9",
-                "python_3_10",
-                "python_3_12",
-                "python_3_11"
-              ]
-            }
-          },
-          "python_versions": {
-            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
-            "ruleClassName": "multi_toolchain_aliases",
-            "attributes": {
-              "python_versions": {
-                "3.8": "python_3_8",
-                "3.9": "python_3_9",
-                "3.10": "python_3_10",
-                "3.11": "python_3_11",
-                "3.12": "python_3_12"
-              }
-            }
-          }
-        },
-        "recordedRepoMappingEntries": [
-          [
-            "rules_python~",
-            "bazel_skylib",
-            "bazel_skylib~"
-          ],
-          [
-            "rules_python~",
-            "bazel_tools",
-            "bazel_tools"
-          ]
-        ]
-      }
-    },
-    "@@rules_python~//python/private/bzlmod:internal_deps.bzl%internal_deps": {
-      "general": {
-        "bzlTransitiveDigest": "7yogJIhmw7i9Wq/n9sQB8N0F84220dJbw64SjOwrmQk=",
-        "usagesDigest": "r7vtlnQfWxEwrL+QFXux06yzeWEkq/hrcwAssoCoSLY=",
-        "recordedFileInputs": {},
-        "recordedDirentsInputs": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "rules_python_internal": {
-            "bzlFile": "@@rules_python~//python/private:internal_config_repo.bzl",
-            "ruleClassName": "internal_config_repo",
-            "attributes": {}
-          },
-          "pypi__build": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/58/91/17b00d5fac63d3dca605f1b8269ba3c65e98059e1fd99d00283e42a454f0/build-0.10.0-py3-none-any.whl",
-              "sha256": "af266720050a66c893a6096a2f410989eeac74ff9a68ba194b3f6473e8e26171",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__click": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl",
-              "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__colorama": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl",
-              "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__importlib_metadata": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/cc/37/db7ba97e676af155f5fcb1a35466f446eadc9104e25b83366e8088c9c926/importlib_metadata-6.8.0-py3-none-any.whl",
-              "sha256": "3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__installer": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl",
-              "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__more_itertools": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/5a/cb/6dce742ea14e47d6f565589e859ad225f2a5de576d7696e0623b784e226b/more_itertools-10.1.0-py3-none-any.whl",
-              "sha256": "64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__packaging": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl",
-              "sha256": "994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__pep517": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/ee/2f/ef63e64e9429111e73d3d6cbee80591672d16f2725e648ebc52096f3d323/pep517-0.13.0-py3-none-any.whl",
-              "sha256": "4ba4446d80aed5b5eac6509ade100bff3e7943a8489de249654a5ae9b33ee35b",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__pip": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/50/c2/e06851e8cc28dcad7c155f4753da8833ac06a5c704c109313b8d5a62968a/pip-23.2.1-py3-none-any.whl",
-              "sha256": "7ccf472345f20d35bdc9d1841ff5f313260c2c33fe417f48c30ac46cccabf5be",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__pip_tools": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/e8/df/47e6267c6b5cdae867adbdd84b437393e6202ce4322de0a5e0b92960e1d6/pip_tools-7.3.0-py3-none-any.whl",
-              "sha256": "8717693288720a8c6ebd07149c93ab0be1fced0b5191df9e9decd3263e20d85e",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__pyproject_hooks": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/d5/ea/9ae603de7fbb3df820b23a70f6aff92bf8c7770043254ad8d2dc9d6bcba4/pyproject_hooks-1.0.0-py3-none-any.whl",
-              "sha256": "283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__setuptools": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/4f/ab/0bcfebdfc3bfa8554b2b2c97a555569c4c1ebc74ea288741ea8326c51906/setuptools-68.1.2-py3-none-any.whl",
-              "sha256": "3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__tomli": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl",
-              "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__wheel": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/b8/8b/31273bf66016be6ad22bb7345c37ff350276cfd46e389a0c2ac5da9d9073/wheel-0.41.2-py3-none-any.whl",
-              "sha256": "75909db2664838d015e3d9139004ee16711748a52c8f336b52882266540215d8",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          },
-          "pypi__zipp": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "url": "https://files.pythonhosted.org/packages/8c/08/d3006317aefe25ea79d3b76c9650afabaf6d63d1c8443b236e7405447503/zipp-3.16.2-py3-none-any.whl",
-              "sha256": "679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0",
-              "type": "zip",
-              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:defs.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude in /python/pip_install/tools/bazel.py\n        # to avoid non-determinism following pip install's behavior.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/* *\",\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
-            }
-          }
-        },
-        "recordedRepoMappingEntries": [
-          [
-            "rules_python~",
-            "bazel_tools",
-            "bazel_tools"
-          ]
-        ]
-      }
     }
   }
 }
diff --git a/maven_install.json b/maven_install.json
index d331443..07c3b81 100644
--- a/maven_install.json
+++ b/maven_install.json
@@ -1,31 +1,48 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 1448912684,
-  "__RESOLVED_ARTIFACTS_HASH": 771049556,
+  "__INPUT_ARTIFACTS_HASH": 1994476565,
+  "__RESOLVED_ARTIFACTS_HASH": -274973469,
+  "conflict_resolution": {
+    "com.google.errorprone:error_prone_annotations:2.23.0": "com.google.errorprone:error_prone_annotations:2.41.0",
+    "com.google.guava:guava:33.0.0-jre": "com.google.guava:guava:33.5.0-jre",
+    "com.google.protobuf:protobuf-java:4.27.2": "com.google.protobuf:protobuf-java:4.31.0"
+  },
   "artifacts": {
+    "com.google.auto.value:auto-value-annotations": {
+      "shasums": {
+        "jar": "e1c45e6beadaef9797cb0d9afd5a45621ad061cd8632012f85582853a3887825"
+      },
+      "version": "1.10.4"
+    },
     "com.google.code.findbugs:jsr305": {
       "shasums": {
         "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"
       },
       "version": "3.0.2"
     },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593"
+      },
+      "version": "2.10.1"
+    },
     "com.google.errorprone:error_prone_annotations": {
       "shasums": {
-        "jar": "721cb91842b46fa056847d104d5225c8b8e1e8b62263b993051e1e5a0137b7ec"
+        "jar": "a56e782b5b50811ac204073a355a21d915a2107fce13ec711331ad036f660fcc"
       },
-      "version": "2.11.0"
+      "version": "2.41.0"
     },
     "com.google.guava:failureaccess": {
       "shasums": {
-        "jar": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26"
+        "jar": "cbfc3906b19b8f55dd7cfd6dfe0aa4532e834250d7f080bd8d211a3e246b59cb"
       },
-      "version": "1.0.1"
+      "version": "1.0.3"
     },
     "com.google.guava:guava": {
       "shasums": {
-        "jar": "a42edc9cab792e39fe39bb94f3fca655ed157ff87a8af78e1d6ba5b07c4a00ab"
+        "jar": "1e301f0c52ac248b0b14fdc3d12283c77252d4d6f48521d572e7d8c4c2cc4ac7"
       },
-      "version": "31.1-jre"
+      "version": "33.5.0-jre"
     },
     "com.google.guava:listenablefuture": {
       "shasums": {
@@ -35,15 +52,27 @@
     },
     "com.google.j2objc:j2objc-annotations": {
       "shasums": {
-        "jar": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b"
+        "jar": "84d3a150518485f8140ea99b8a985656749629f6433c92b80c75b36aba3b099b"
       },
-      "version": "1.3"
+      "version": "3.1"
     },
     "com.google.protobuf:protobuf-java": {
       "shasums": {
-        "jar": "b5ae02c6b76780261852cdc2549c1e36a6b4cc9d339ef80a8ef7c599c9775a96"
+        "jar": "68773dccd6cc5835af7a748759cecf5ea20ff083136e3847fbe94572b8e0ed6a"
       },
-      "version": "4.29.4"
+      "version": "4.31.0"
+    },
+    "com.google.protobuf:protobuf-java-util": {
+      "shasums": {
+        "jar": "a2665294d3e4675482bde593df8283f8c965f0207785e8e9b223f790644f5b08"
+      },
+      "version": "4.27.2"
+    },
+    "com.google.truth:truth": {
+      "shasums": {
+        "jar": "235c28e96ee6701ab01cc852fb294cb0f34756f636a8154b9aef08fb1215bbc4"
+      },
+      "version": "1.4.0"
     },
     "io.netty:netty-tcnative-boringssl-static": {
       "shasums": {
@@ -62,11 +91,29 @@
       },
       "version": "2.0.61.Final"
     },
+    "junit:junit": {
+      "shasums": {
+        "jar": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3"
+      },
+      "version": "4.13.2"
+    },
+    "net.bytebuddy:byte-buddy": {
+      "shasums": {
+        "jar": "e99761a526df0fefbbd3fe14436b0f953000cdfa5151dc63c0b18d37d9c46f1c"
+      },
+      "version": "1.14.5"
+    },
+    "net.bytebuddy:byte-buddy-agent": {
+      "shasums": {
+        "jar": "55f19862b870f5d85890ba5386b1b45e9bbc88d5fe1f819abe0c788b4929fa6b"
+      },
+      "version": "1.14.5"
+    },
     "org.checkerframework:checker-qual": {
       "shasums": {
-        "jar": "ff10785ac2a357ec5de9c293cb982a2cbb605c0309ea4cc1cb9b9bc6dbe7f3cb"
+        "jar": "ccaedd33af0b7894d9f2f3b644f4d19e43928e32902e61ac4d10777830f5aac7"
       },
-      "version": "3.12.0"
+      "version": "3.42.0"
     },
     "org.hamcrest:hamcrest": {
       "shasums": {
@@ -79,16 +126,55 @@
         "jar": "e09109e54a289d88506b9bfec987ddd199f4217c9464132668351b9a4f00bee9"
       },
       "version": "2.1"
+    },
+    "org.jspecify:jspecify": {
+      "shasums": {
+        "jar": "1fad6e6be7557781e4d33729d49ae1cdc8fdda6fe477bb0cc68ce351eafdfbab"
+      },
+      "version": "1.0.0"
+    },
+    "org.mockito:mockito-core": {
+      "shasums": {
+        "jar": "b1689b06617ea01fd777bfaedbdde512faf083d639a049f79b388d5a4e96d2e5"
+      },
+      "version": "5.4.0"
+    },
+    "org.objenesis:objenesis": {
+      "shasums": {
+        "jar": "02dfd0b0439a5591e35b708ed2f5474eb0948f53abf74637e959b8e4ef69bfeb"
+      },
+      "version": "3.3"
+    },
+    "org.ow2.asm:asm": {
+      "shasums": {
+        "jar": "3c6fac2424db3d4a853b669f4e3d1d9c3c552235e19a319673f887083c2303a1"
+      },
+      "version": "9.6"
     }
   },
   "dependencies": {
     "com.google.guava:guava": [
-      "com.google.code.findbugs:jsr305",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
       "com.google.guava:listenablefuture",
       "com.google.j2objc:j2objc-annotations",
-      "org.checkerframework:checker-qual"
+      "org.jspecify:jspecify"
+    ],
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:guava",
+      "com.google.j2objc:j2objc-annotations",
+      "com.google.protobuf:protobuf-java"
+    ],
+    "com.google.truth:truth": [
+      "com.google.auto.value:auto-value-annotations",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:guava",
+      "junit:junit",
+      "org.checkerframework:checker-qual",
+      "org.ow2.asm:asm"
     ],
     "io.netty:netty-tcnative-boringssl-static": [
       "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64",
@@ -133,16 +219,41 @@
       "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64",
       "io.netty:netty-tcnative-classes"
     ],
+    "junit:junit": [
+      "org.hamcrest:hamcrest-core"
+    ],
     "org.hamcrest:hamcrest-core": [
       "org.hamcrest:hamcrest"
+    ],
+    "org.mockito:mockito-core": [
+      "net.bytebuddy:byte-buddy",
+      "net.bytebuddy:byte-buddy-agent",
+      "org.objenesis:objenesis"
     ]
   },
   "packages": {
+    "com.google.auto.value:auto-value-annotations": [
+      "com.google.auto.value",
+      "com.google.auto.value.extension.memoized",
+      "com.google.auto.value.extension.serializable",
+      "com.google.auto.value.extension.toprettystring"
+    ],
     "com.google.code.findbugs:jsr305": [
       "javax.annotation",
       "javax.annotation.concurrent",
       "javax.annotation.meta"
     ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
     "com.google.errorprone:error_prone_annotations": [
       "com.google.errorprone.annotations",
       "com.google.errorprone.annotations.concurrent"
@@ -177,9 +288,93 @@
       "com.google.protobuf",
       "com.google.protobuf.compiler"
     ],
+    "com.google.protobuf:protobuf-java-util": [
+      "com.google.protobuf.util"
+    ],
+    "com.google.truth:truth": [
+      "com.google.common.truth"
+    ],
     "io.netty:netty-tcnative-classes": [
       "io.netty.internal.tcnative"
     ],
+    "junit:junit": [
+      "junit.extensions",
+      "junit.framework",
+      "junit.runner",
+      "junit.textui",
+      "org.junit",
+      "org.junit.experimental",
+      "org.junit.experimental.categories",
+      "org.junit.experimental.max",
+      "org.junit.experimental.results",
+      "org.junit.experimental.runners",
+      "org.junit.experimental.theories",
+      "org.junit.experimental.theories.internal",
+      "org.junit.experimental.theories.suppliers",
+      "org.junit.function",
+      "org.junit.internal",
+      "org.junit.internal.builders",
+      "org.junit.internal.management",
+      "org.junit.internal.matchers",
+      "org.junit.internal.requests",
+      "org.junit.internal.runners",
+      "org.junit.internal.runners.model",
+      "org.junit.internal.runners.rules",
+      "org.junit.internal.runners.statements",
+      "org.junit.matchers",
+      "org.junit.rules",
+      "org.junit.runner",
+      "org.junit.runner.manipulation",
+      "org.junit.runner.notification",
+      "org.junit.runners",
+      "org.junit.runners.model",
+      "org.junit.runners.parameterized",
+      "org.junit.validator"
+    ],
+    "net.bytebuddy:byte-buddy": [
+      "net.bytebuddy",
+      "net.bytebuddy.agent.builder",
+      "net.bytebuddy.asm",
+      "net.bytebuddy.build",
+      "net.bytebuddy.description",
+      "net.bytebuddy.description.annotation",
+      "net.bytebuddy.description.enumeration",
+      "net.bytebuddy.description.field",
+      "net.bytebuddy.description.method",
+      "net.bytebuddy.description.modifier",
+      "net.bytebuddy.description.type",
+      "net.bytebuddy.dynamic",
+      "net.bytebuddy.dynamic.loading",
+      "net.bytebuddy.dynamic.scaffold",
+      "net.bytebuddy.dynamic.scaffold.inline",
+      "net.bytebuddy.dynamic.scaffold.subclass",
+      "net.bytebuddy.implementation",
+      "net.bytebuddy.implementation.attribute",
+      "net.bytebuddy.implementation.auxiliary",
+      "net.bytebuddy.implementation.bind",
+      "net.bytebuddy.implementation.bind.annotation",
+      "net.bytebuddy.implementation.bytecode",
+      "net.bytebuddy.implementation.bytecode.assign",
+      "net.bytebuddy.implementation.bytecode.assign.primitive",
+      "net.bytebuddy.implementation.bytecode.assign.reference",
+      "net.bytebuddy.implementation.bytecode.collection",
+      "net.bytebuddy.implementation.bytecode.constant",
+      "net.bytebuddy.implementation.bytecode.member",
+      "net.bytebuddy.jar.asm",
+      "net.bytebuddy.jar.asm.commons",
+      "net.bytebuddy.jar.asm.signature",
+      "net.bytebuddy.matcher",
+      "net.bytebuddy.pool",
+      "net.bytebuddy.utility",
+      "net.bytebuddy.utility.dispatcher",
+      "net.bytebuddy.utility.nullability",
+      "net.bytebuddy.utility.privilege",
+      "net.bytebuddy.utility.visitor"
+    ],
+    "net.bytebuddy:byte-buddy-agent": [
+      "net.bytebuddy.agent",
+      "net.bytebuddy.agent.utility.nullability"
+    ],
     "org.checkerframework:checker-qual": [
       "org.checkerframework.checker.builder.qual",
       "org.checkerframework.checker.calledmethods.qual",
@@ -193,6 +388,7 @@
       "org.checkerframework.checker.initialization.qual",
       "org.checkerframework.checker.interning.qual",
       "org.checkerframework.checker.lock.qual",
+      "org.checkerframework.checker.mustcall.qual",
       "org.checkerframework.checker.nullness.qual",
       "org.checkerframework.checker.optional.qual",
       "org.checkerframework.checker.propkey.qual",
@@ -206,7 +402,7 @@
       "org.checkerframework.common.reflection.qual",
       "org.checkerframework.common.returnsreceiver.qual",
       "org.checkerframework.common.subtyping.qual",
-      "org.checkerframework.common.util.report.qual",
+      "org.checkerframework.common.util.count.report.qual",
       "org.checkerframework.common.value.qual",
       "org.checkerframework.dataflow.qual",
       "org.checkerframework.framework.qual"
@@ -226,17 +422,106 @@
     ],
     "org.hamcrest:hamcrest-core": [
       "org.hamcrest"
+    ],
+    "org.jspecify:jspecify": [
+      "org.jspecify.annotations"
+    ],
+    "org.mockito:mockito-core": [
+      "org.mockito",
+      "org.mockito.codegen",
+      "org.mockito.configuration",
+      "org.mockito.creation.instance",
+      "org.mockito.exceptions.base",
+      "org.mockito.exceptions.misusing",
+      "org.mockito.exceptions.stacktrace",
+      "org.mockito.exceptions.verification",
+      "org.mockito.exceptions.verification.junit",
+      "org.mockito.exceptions.verification.opentest4j",
+      "org.mockito.hamcrest",
+      "org.mockito.internal",
+      "org.mockito.internal.configuration",
+      "org.mockito.internal.configuration.injection",
+      "org.mockito.internal.configuration.injection.filter",
+      "org.mockito.internal.configuration.injection.scanner",
+      "org.mockito.internal.configuration.plugins",
+      "org.mockito.internal.creation",
+      "org.mockito.internal.creation.bytebuddy",
+      "org.mockito.internal.creation.instance",
+      "org.mockito.internal.creation.proxy",
+      "org.mockito.internal.creation.settings",
+      "org.mockito.internal.creation.util",
+      "org.mockito.internal.debugging",
+      "org.mockito.internal.exceptions",
+      "org.mockito.internal.exceptions.stacktrace",
+      "org.mockito.internal.exceptions.util",
+      "org.mockito.internal.framework",
+      "org.mockito.internal.hamcrest",
+      "org.mockito.internal.handler",
+      "org.mockito.internal.invocation",
+      "org.mockito.internal.invocation.finder",
+      "org.mockito.internal.invocation.mockref",
+      "org.mockito.internal.junit",
+      "org.mockito.internal.listeners",
+      "org.mockito.internal.matchers",
+      "org.mockito.internal.matchers.apachecommons",
+      "org.mockito.internal.matchers.text",
+      "org.mockito.internal.progress",
+      "org.mockito.internal.reporting",
+      "org.mockito.internal.runners",
+      "org.mockito.internal.runners.util",
+      "org.mockito.internal.session",
+      "org.mockito.internal.stubbing",
+      "org.mockito.internal.stubbing.answers",
+      "org.mockito.internal.stubbing.defaultanswers",
+      "org.mockito.internal.util",
+      "org.mockito.internal.util.collections",
+      "org.mockito.internal.util.concurrent",
+      "org.mockito.internal.util.io",
+      "org.mockito.internal.util.reflection",
+      "org.mockito.internal.verification",
+      "org.mockito.internal.verification.api",
+      "org.mockito.internal.verification.argumentmatching",
+      "org.mockito.internal.verification.checkers",
+      "org.mockito.invocation",
+      "org.mockito.junit",
+      "org.mockito.listeners",
+      "org.mockito.mock",
+      "org.mockito.plugins",
+      "org.mockito.quality",
+      "org.mockito.session",
+      "org.mockito.stubbing",
+      "org.mockito.verification"
+    ],
+    "org.objenesis:objenesis": [
+      "org.objenesis",
+      "org.objenesis.instantiator",
+      "org.objenesis.instantiator.android",
+      "org.objenesis.instantiator.annotations",
+      "org.objenesis.instantiator.basic",
+      "org.objenesis.instantiator.gcj",
+      "org.objenesis.instantiator.perc",
+      "org.objenesis.instantiator.sun",
+      "org.objenesis.instantiator.util",
+      "org.objenesis.strategy"
+    ],
+    "org.ow2.asm:asm": [
+      "org.objectweb.asm",
+      "org.objectweb.asm.signature"
     ]
   },
   "repositories": {
     "https://repo1.maven.org/maven2/": [
+      "com.google.auto.value:auto-value-annotations",
       "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
       "com.google.errorprone:error_prone_annotations",
       "com.google.guava:failureaccess",
       "com.google.guava:guava",
       "com.google.guava:listenablefuture",
       "com.google.j2objc:j2objc-annotations",
       "com.google.protobuf:protobuf-java",
+      "com.google.protobuf:protobuf-java-util",
+      "com.google.truth:truth",
       "io.netty:netty-tcnative-boringssl-static",
       "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64",
       "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64",
@@ -244,9 +529,16 @@
       "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64",
       "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64",
       "io.netty:netty-tcnative-classes",
+      "junit:junit",
+      "net.bytebuddy:byte-buddy",
+      "net.bytebuddy:byte-buddy-agent",
       "org.checkerframework:checker-qual",
       "org.hamcrest:hamcrest",
-      "org.hamcrest:hamcrest-core"
+      "org.hamcrest:hamcrest-core",
+      "org.jspecify:jspecify",
+      "org.mockito:mockito-core",
+      "org.objenesis:objenesis",
+      "org.ow2.asm:asm"
     ]
   },
   "services": {},
diff --git a/private/extensions/maven.bzl b/private/extensions/maven.bzl
index b440d32..0d700d0 100644
--- a/private/extensions/maven.bzl
+++ b/private/extensions/maven.bzl
@@ -348,12 +348,14 @@
         # Case 1: Simple string notation: "group:artifact:version"
         if type(value) == "string":
             coords = value
-        # Case 2: Map notation
+            # Case 2: Map notation
+
         elif type(value) == "dict":
             # Case 2a: Map with "module" key
             if "module" in value.keys():
                 coords = value["module"]
-            # Case 2b: Map with "group" and "name" keys
+                # Case 2b: Map with "group" and "name" keys
+
             elif "group" in value.keys() and "name" in value.keys():
                 coords = "%s:%s" % (value["group"], value["name"])
             else:
diff --git a/private/rules/coursier.bzl b/private/rules/coursier.bzl
index ad30f1b..ff0b5ec 100644
--- a/private/rules/coursier.bzl
+++ b/private/rules/coursier.bzl
@@ -59,7 +59,7 @@
 )
 """
 
-DEFAULT_AAR_IMPORT_LABEL = "@build_bazel_rules_android//android:rules.bzl"
+DEFAULT_AAR_IMPORT_LABEL = "@rules_android//rules:rules.bzl"
 
 _AAR_IMPORT_STATEMENT = """\
 load("%s", "aar_import")
@@ -255,7 +255,9 @@
     return artifact_relative_path
 
 def _get_aar_import_statement_or_empty_str(repository_ctx):
-    if repository_ctx.attr.use_starlark_android_rules:
+    # Use the Starlark version of aar_import if requested, or if this version of Bazel
+    # does not have native aar_import.
+    if repository_ctx.attr.use_starlark_android_rules or not hasattr(native, "aar_import"):
         # parse the label to validate it
         _ = Label(repository_ctx.attr.aar_import_bzl_label)
         return _AAR_IMPORT_STATEMENT % repository_ctx.attr.aar_import_bzl_label
diff --git a/private/rules/maven_install.bzl b/private/rules/maven_install.bzl
index 297ae28..757c803 100644
--- a/private/rules/maven_install.bzl
+++ b/private/rules/maven_install.bzl
@@ -68,12 +68,13 @@
       use_credentials_from_home_netrc_file: Whether to pass machine login credentials from the ~/.netrc file to coursier.
       fail_if_repin_required: Whether to fail the build if the required maven artifacts have been changed but not repinned. Requires the `maven_install_json` to have been set.
       use_starlark_android_rules: Whether to use the native or Starlark version
-        of the Android rules. Default is False.
+        of the Android rules. Default is False if the running version of Bazel supports native aar_import.
+        If the running version of Bazel does not support native aar_import, this parameter is ignored and the
+        Starlark Android rules is used.
       aar_import_bzl_label: The label (as a string) to use to import aar_import
         from. This is usually needed only if the top-level workspace file does
         not use the typical default repository name to import the Android
-        Starlark rules. Default is
-        "@build_bazel_rules_android//rules:rules.bzl".
+        Starlark rules. Default is "@rules_android//rules:rules.bzl".
       duplicate_version_warning: What to do if an artifact is specified multiple times. If "error" then
         fail the build, if "warn" then print a message and continue, if "none" then do nothing. The default
         is "warn".
@@ -103,6 +104,11 @@
     if additional_netrc_lines and maven_install_json == None:
         fail("`additional_netrc_lines` is only supported with `maven_install_json` specified", "additional_netrc_lines")
 
+    if not hasattr(native, "aar_import"):
+        # If this version of bazel does not have the native version of
+        # aar_import, then the Starlark version of aar_import must be used.
+        use_starlark_android_rules = True
+
     # The first coursier_fetch generates the @unpinned_maven
     # repository, which executes Coursier.
     #
diff --git a/tests/custom_maven_install/java_export_exclusion_testing_install.json b/tests/custom_maven_install/java_export_exclusion_testing_install.json
index ab0afcb..34dbd85 100644
--- a/tests/custom_maven_install/java_export_exclusion_testing_install.json
+++ b/tests/custom_maven_install/java_export_exclusion_testing_install.json
@@ -1,13 +1,13 @@
 {
   "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-  "__INPUT_ARTIFACTS_HASH": 1917488203,
-  "__RESOLVED_ARTIFACTS_HASH": 1233788803,
+  "__INPUT_ARTIFACTS_HASH": -382709041,
+  "__RESOLVED_ARTIFACTS_HASH": -2016706042,
   "artifacts": {
     "com.google.protobuf:protobuf-java": {
       "shasums": {
-        "jar": "d9fd335a65165c760f53ae718878448627ce742ab6e9102dffe9bc2ea7b136ca"
+        "jar": "d60dfe7c68a0d38a248cca96924f289dc7e1966a887ee7cae397701af08575ae"
       },
-      "version": "3.23.1"
+      "version": "4.31.1"
     }
   },
   "dependencies": {},
diff --git a/tests/integration/maven_bom/bom-dependencies.golden.xml b/tests/integration/maven_bom/bom-dependencies.golden.xml
index 384b84a..5fd5056 100755
--- a/tests/integration/maven_bom/bom-dependencies.golden.xml
+++ b/tests/integration/maven_bom/bom-dependencies.golden.xml
@@ -20,7 +20,7 @@
             <dependency>
                 <groupId>com.google.guava</groupId>
                 <artifactId>guava</artifactId>
-                <version>31.1-jre</version>
+                <version>33.5.0-jre</version>
             </dependency>
             <dependency>
                 <groupId>org.hamcrest</groupId>
diff --git a/tests/integration/maven_bom/transitive-bom-dependencies.golden.xml b/tests/integration/maven_bom/transitive-bom-dependencies.golden.xml
index a1662ec..8ef7915 100755
--- a/tests/integration/maven_bom/transitive-bom-dependencies.golden.xml
+++ b/tests/integration/maven_bom/transitive-bom-dependencies.golden.xml
@@ -25,7 +25,7 @@
             <dependency>
                 <groupId>com.google.guava</groupId>
                 <artifactId>guava</artifactId>
-                <version>31.1-jre</version>
+                <version>33.5.0-jre</version>
             </dependency>
         </dependencies>
     </dependencyManagement>
diff --git a/tests/integration/override_targets/BUILD b/tests/integration/override_targets/BUILD
index 7d96fb3..db09635 100644
--- a/tests/integration/override_targets/BUILD
+++ b/tests/integration/override_targets/BUILD
@@ -1,7 +1,32 @@
 load("@aspect_bazel_lib//lib:diff_test.bzl", "diff_test")
+load("@bazel_skylib//rules:build_test.bzl", "build_test")
+load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
+load("@rules_android//android:rules.bzl", "aar_import")
 load("@rules_java//java:defs.bzl", "java_library")
 load("//tests/integration:is_bzlmod_enabled.bzl", "is_bzlmod_enabled")
 
+aar_import(
+    name = "aar_import_that_consumes_the_downloaded_file_directly",
+    # Will produce an error if the downloaded file does not have the `.aar` file extension
+    aar = "@com_android_support_appcompat_v7_aar_28_0_0//file:file",
+    deps = [
+        "@starlark_aar_import_test//:com_android_support_animated_vector_drawable",
+        "@starlark_aar_import_test//:com_android_support_support_annotations",
+        "@starlark_aar_import_test//:com_android_support_support_compat",
+        "@starlark_aar_import_test//:com_android_support_support_core_ui",
+        "@starlark_aar_import_test//:com_android_support_support_core_utils",
+        "@starlark_aar_import_test//:com_android_support_support_fragment",
+        "@starlark_aar_import_test//:com_android_support_support_vector_drawable",
+    ],
+)
+
+build_test(
+    name = "test_does_aar_artifact_have_the_correct_file_extension",
+    targets = [
+        ":aar_import_that_consumes_the_downloaded_file_directly",
+    ],
+)
+
 java_library(
     name = "additional_deps",
     visibility = ["//visibility:public"],
diff --git a/tests/integration/pom_file/pom-with-runtime-dep.golden.xml b/tests/integration/pom_file/pom-with-runtime-dep.golden.xml
index 1c59899..a5d9d46 100755
--- a/tests/integration/pom_file/pom-with-runtime-dep.golden.xml
+++ b/tests/integration/pom_file/pom-with-runtime-dep.golden.xml
@@ -17,7 +17,7 @@
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
-            <version>31.1-jre</version>
+            <version>33.5.0-jre</version>
             <scope>runtime</scope>
         </dependency>
     </dependencies>
diff --git a/tests/integration/pom_file/pom-with-specific-exclusions.golden.xml b/tests/integration/pom_file/pom-with-specific-exclusions.golden.xml
index 975891d..c02cdfb 100644
--- a/tests/integration/pom_file/pom-with-specific-exclusions.golden.xml
+++ b/tests/integration/pom_file/pom-with-specific-exclusions.golden.xml
@@ -11,7 +11,7 @@
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
-            <version>31.1-jre</version>
+            <version>33.5.0-jre</version>
             <scope>runtime</scope>
             <exclusions>
                 <exclusion>
diff --git a/tests/unit/aar_import/BUILD b/tests/unit/aar_import/BUILD
index 3b16423..b1be0c9 100644
--- a/tests/unit/aar_import/BUILD
+++ b/tests/unit/aar_import/BUILD
@@ -20,6 +20,16 @@
     name = "aar_import_that_consumes_the_downloaded_file_directly",
     # Will produce an error if the downloaded file does not have the `.aar` file extension
     aar = "@com_android_support_appcompat_v7_aar_28_0_0//file:file",
+    deps = [
+        "@starlark_aar_import_test//:com_android_support_animated_vector_drawable",
+        "@starlark_aar_import_test//:com_android_support_collections",
+        "@starlark_aar_import_test//:com_android_support_cursoradapter",
+        "@starlark_aar_import_test//:com_android_support_support_annotations",
+        "@starlark_aar_import_test//:com_android_support_support_compat",
+        "@starlark_aar_import_test//:com_android_support_support_core_utils",
+        "@starlark_aar_import_test//:com_android_support_support_fragment",
+        "@starlark_aar_import_test//:com_android_support_support_vector_drawable",
+    ],
 )
 
 build_test(