Moved rust extension rules into a separate `rules_rust_ext` workspace. (#3007)

This change moves the `bindgen`, `proto`, and `wasm_bindgen`
sub-packages into individual workspaces within the `extensions`
directory. The intent is improve ease of maintenance of both core and
extension Rust rules by ensuring changes to extensions have no impact on
the core rules. Core rules should *never* depend on extensions.

Load statements should be updated according to the following table:

| before | after |
| --- | --- |
| `@rules_rust//bindgen` | `@rules_rust_bindgen//` |
| `@rules_rust//proto/prost` | `@rules_rust_prost//` |
| `@rules_rust//proto/protobuf` | `@rules_rust_protobuf//` |
| `@rules_rust//wasm_bindgen` | `@rules_rust_wasm_bindgen//` |

closes https://github.com/bazelbuild/rules_rust/issues/2882
diff --git a/extensions/bindgen/.bazelignore b/extensions/bindgen/.bazelignore
new file mode 100644
index 0000000..8c29e7d
--- /dev/null
+++ b/extensions/bindgen/.bazelignore
@@ -0,0 +1,5 @@
+examples
+bazel-out
+bazel-testlogs
+bazel-extensions
+bazel-bin
diff --git a/extensions/bindgen/.bazelrc b/extensions/bindgen/.bazelrc
new file mode 100644
index 0000000..6b20ca4
--- /dev/null
+++ b/extensions/bindgen/.bazelrc
@@ -0,0 +1,78 @@
+###############################################################################
+## Bazel Configuration Flags
+##
+## `.bazelrc` is a Bazel configuration file.
+## https://bazel.build/docs/best-practices#bazelrc-file
+###############################################################################
+
+# https://bazel.build/reference/command-line-reference#flag--enable_platform_specific_config
+common --enable_platform_specific_config
+
+# Enable the only currently supported report type
+# https://bazel.build/reference/command-line-reference#flag--combined_report
+coverage --combined_report=lcov
+
+# Avoid fully cached builds reporting no coverage and failing CI
+# https://bazel.build/reference/command-line-reference#flag--experimental_fetch_all_coverage_outputs
+coverage --experimental_fetch_all_coverage_outputs
+
+# Required for some of the tests
+# https://bazel.build/reference/command-line-reference#flag--experimental_cc_shared_library
+common --experimental_cc_shared_library
+
+###############################################################################
+## Unique configuration groups
+###############################################################################
+
+# Enable use of the nightly toolchains.
+build:nightly --@rules_rust//rust/toolchain/channel=nightly
+
+# Enable rustfmt for all targets in the workspace
+build:rustfmt --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect
+build:rustfmt --output_groups=+rustfmt_checks
+
+# Enable clippy for all targets in the workspace
+build:clippy --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
+build:clippy --output_groups=+clippy_checks
+
+# Enable unpretty for all targets in the workspace
+build:unpretty --aspects=@rules_rust//rust:defs.bzl%rust_unpretty_aspect
+build:unpretty --output_groups=+rust_unpretty
+
+# `unpretty` requires the nightly toolchain. See tracking issue:
+# https://github.com/rust-lang/rust/issues/43364
+build:unpretty --config=nightly
+
+###############################################################################
+## Incompatibility flags
+###############################################################################
+
+# https://github.com/bazelbuild/bazel/issues/8195
+build --incompatible_disallow_empty_glob=true
+
+# https://github.com/bazelbuild/bazel/issues/12821
+build --nolegacy_external_runfiles
+
+# Required for cargo_build_script support before Bazel 7
+build --incompatible_merge_fixed_and_default_shell_env
+
+###############################################################################
+## Bzlmod
+###############################################################################
+
+# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
+# https://github.com/bazelbuild/rules_rust/issues/2181
+common --noenable_bzlmod --enable_workspace
+
+# Disable the bzlmod lockfile, so we don't accidentally commit MODULE.bazel.lock
+common --lockfile_mode=off
+
+###############################################################################
+## Custom user flags
+##
+## This should always be the last thing in the `.bazelrc` file to ensure
+## consistent behavior when setting flags in that file as `.bazelrc` files are
+## evaluated top to bottom.
+###############################################################################
+
+try-import %workspace%/user.bazelrc
diff --git a/extensions/bindgen/.gitignore b/extensions/bindgen/.gitignore
new file mode 100644
index 0000000..758ea05
--- /dev/null
+++ b/extensions/bindgen/.gitignore
@@ -0,0 +1,27 @@
+# Git ignore patterns
+
+# Bazel
+/bazel-*
+user.bazelrc
+MODULE.bazel.lock
+
+# rust-analyzer
+rust-project.json
+
+# rustfmt
+*.rs.bk
+
+# Cargo
+**/target/
+
+# npm
+**/node_modules/
+
+# IDEs
+.vscode
+.idea
+.idea/**
+*.swp
+
+# BazelCI
+bazelci.py
diff --git a/extensions/bindgen/3rdparty/BUILD.bazel b/extensions/bindgen/3rdparty/BUILD.bazel
new file mode 100644
index 0000000..6bcc35a
--- /dev/null
+++ b/extensions/bindgen/3rdparty/BUILD.bazel
@@ -0,0 +1,71 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+load("@rules_rust//crate_universe:defs.bzl", "crate", "crates_vendor")
+load("//:repositories.bzl", "BINDGEN_VERSION")
+
+_BINDGEN_CLI_PACKAGES = {
+    "clap": crate.spec(
+        version = "4.3.3",
+    ),
+    "clap_complete": crate.spec(
+        version = "4.3.1",
+    ),
+    "env_logger": crate.spec(
+        version = "0.10.0",
+    ),
+}
+
+crates_vendor(
+    name = "crates_vendor",
+    annotations = {
+        "bindgen": [crate.annotation(
+            gen_build_script = True,
+        )],
+        "clang-sys": [crate.annotation(
+            gen_build_script = True,
+        )],
+        "libc": [crate.annotation(
+            gen_build_script = True,
+        )],
+        "winapi": [crate.annotation(
+            gen_build_script = True,
+        )],
+    },
+    cargo_lockfile = "Cargo.Bazel.lock",
+    generate_build_scripts = False,
+    mode = "remote",
+    packages = dict({
+        "bindgen": crate.spec(
+            default_features = False,
+            features = ["runtime"],
+            version = BINDGEN_VERSION,
+        ),
+        "bindgen-cli": crate.spec(
+            default_features = False,
+            features = ["runtime"],
+            version = BINDGEN_VERSION,
+        ),
+        "clang-sys": crate.spec(
+            # Should match the version of llvm-project being used.
+            features = ["clang_14_0"],
+            version = "1.6.1",
+        ),
+    }.items() + _BINDGEN_CLI_PACKAGES.items()),
+    repository_name = "rules_rust_bindgen_deps",
+    tags = ["manual"],
+)
+
+alias(
+    name = "bindgen",
+    actual = "@rules_rust_bindgen__bindgen-cli-{}//:bindgen-cli".format(BINDGEN_VERSION),
+    tags = ["manual"],
+    visibility = ["//visibility:public"],
+)
+
+bzl_library(
+    name = "bzl_lib",
+    srcs = [
+        "//3rdparty/crates:crates.bzl",
+        "//3rdparty/crates:defs.bzl",
+    ],
+    visibility = ["//:__pkg__"],
+)
diff --git a/extensions/bindgen/3rdparty/BUILD.bindgen-cli.bazel b/extensions/bindgen/3rdparty/BUILD.bindgen-cli.bazel
new file mode 100644
index 0000000..1889c6b
--- /dev/null
+++ b/extensions/bindgen/3rdparty/BUILD.bindgen-cli.bazel
@@ -0,0 +1,44 @@
+load("@rules_rust//rust:defs.bzl", "rust_binary")
+load("@rules_rust_bindgen//:repositories.bzl", "BINDGEN_VERSION")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_binary(
+    name = "bindgen-cli",
+    srcs = glob(["**/*.rs"]),
+    compile_data = glob(
+        include = ["**"],
+        exclude = [
+            "**/* *",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "runtime",
+    ],
+    crate_root = "main.rs",
+    edition = "2018",
+    rustc_flags = ["--cap-lints=allow"],
+    tags = [
+        "cargo-bazel",
+        "crate-name=bindgen-cli",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = BINDGEN_VERSION,
+    # This list is produced by adding the contents of https://github.com/rust-lang/rust-bindgen/blob/main/bindgen-cli/Cargo.toml
+    # to `@rules_rust_bindgen//3rdparty:crates_vendor`, rendering dependencies, and updating the deps
+    deps = [
+        "@rules_rust_bindgen_deps__bindgen-{}//:bindgen".format(BINDGEN_VERSION),
+        "@rules_rust_bindgen_deps__clap-4.5.17//:clap",
+        "@rules_rust_bindgen_deps__clap_complete-4.5.26//:clap_complete",
+        "@rules_rust_bindgen_deps__env_logger-0.10.2//:env_logger",
+        "@rules_rust_bindgen_deps__log-0.4.22//:log",
+        "@rules_rust_bindgen_deps__proc-macro2-1.0.86//:proc_macro2",
+        "@rules_rust_bindgen_deps__shlex-1.3.0//:shlex",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/BUILD.zlib.bazel b/extensions/bindgen/3rdparty/BUILD.zlib.bazel
new file mode 100644
index 0000000..687375d
--- /dev/null
+++ b/extensions/bindgen/3rdparty/BUILD.zlib.bazel
@@ -0,0 +1,76 @@
+load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+_ZLIB_HEADERS = [
+    "crc32.h",
+    "deflate.h",
+    "gzguts.h",
+    "inffast.h",
+    "inffixed.h",
+    "inflate.h",
+    "inftrees.h",
+    "trees.h",
+    "zconf.h",
+    "zlib.h",
+    "zutil.h",
+]
+
+# In order to limit the damage from the `includes` propagation
+# via `:zlib`, copy the public headers to a subdirectory and
+# expose those.
+_ZLIB_HEADER_PREFIX = "zlib/include"
+
+_ZLIB_PREFIXED_HEADERS = ["{}/{}".format(_ZLIB_HEADER_PREFIX, hdr) for hdr in _ZLIB_HEADERS]
+
+[
+    copy_file(
+        name = "{}.copy".format(hdr),
+        src = hdr,
+        out = "{}/{}".format(_ZLIB_HEADER_PREFIX, hdr),
+    )
+    for hdr in _ZLIB_HEADERS
+]
+
+_COMMON_COPTS = [
+    "-Wno-deprecated-non-prototype",
+    "-Wno-unused-variable",
+    "-Wno-implicit-function-declaration",
+]
+
+cc_library(
+    name = "zlib",
+    srcs = [
+        "adler32.c",
+        "compress.c",
+        "crc32.c",
+        "deflate.c",
+        "gzclose.c",
+        "gzlib.c",
+        "gzread.c",
+        "gzwrite.c",
+        "infback.c",
+        "inffast.c",
+        "inflate.c",
+        "inftrees.c",
+        "trees.c",
+        "uncompr.c",
+        "zutil.c",
+        # Include the un-prefixed headers in srcs to work
+        # around the fact that zlib isn't consistent in its
+        # choice of <> or "" delimiter when including itself.
+    ] + _ZLIB_HEADERS,
+    hdrs = _ZLIB_PREFIXED_HEADERS,
+    copts = select({
+        "@platforms//os:linux": [
+            # Required for opt builds to avoid
+            # `libzlib.a(crc32.o): requires unsupported dynamic reloc 11; recompile with -fPIC`
+            "-fPIC",
+            # Silence all warnings
+            "-w",
+        ] + _COMMON_COPTS,
+        "@platforms//os:windows": [],
+        "//conditions:default": _COMMON_COPTS,
+    }),
+    includes = ["zlib/include/"],
+    visibility = ["//visibility:public"],
+)
diff --git a/extensions/bindgen/3rdparty/Cargo.Bazel.lock b/extensions/bindgen/3rdparty/Cargo.Bazel.lock
new file mode 100644
index 0000000..541c684
--- /dev/null
+++ b/extensions/bindgen/3rdparty/Cargo.Bazel.lock
@@ -0,0 +1,550 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "annotate-snippets"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e"
+dependencies = [
+ "unicode-width",
+ "yansi-term",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "bindgen"
+version = "0.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
+dependencies = [
+ "annotate-snippets",
+ "bitflags",
+ "cexpr",
+ "clang-sys",
+ "itertools",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn",
+]
+
+[[package]]
+name = "bindgen-cli"
+version = "0.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "333f9e46d58d875afb8ab923c22dbb7e61788f55ad28f2b5d98bf910d90bd5aa"
+dependencies = [
+ "bindgen",
+ "clap",
+ "clap_complete",
+ "shlex",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+
+[[package]]
+name = "cexpr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clang-sys"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.5.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "205d5ef6d485fa47606b98b0ddc4ead26eb850aaa86abfb562a94fb3280ecba0"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
+
+[[package]]
+name = "direct-cargo-bazel-deps"
+version = "0.0.1"
+dependencies = [
+ "bindgen",
+ "bindgen-cli",
+ "clang-sys",
+ "clap",
+ "clap_complete",
+ "env_logger",
+]
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "env_logger"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+dependencies = [
+ "humantime",
+ "is-terminal",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.158"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+
+[[package]]
+name = "libloading"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
+dependencies = [
+ "cfg-if",
+ "windows-targets",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "syn"
+version = "2.0.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "yansi-term"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1"
+dependencies = [
+ "winapi",
+]
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.aho-corasick-1.1.3.bazel b/extensions/bindgen/3rdparty/crates/BUILD.aho-corasick-1.1.3.bazel
new file mode 100644
index 0000000..266cec1
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.aho-corasick-1.1.3.bazel
@@ -0,0 +1,89 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "aho_corasick",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "perf-literal",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=aho-corasick",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.1.3",
+    deps = [
+        "@rules_rust_bindgen_deps__memchr-2.7.4//:memchr",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.2.bazel b/extensions/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.2.bazel
new file mode 100644
index 0000000..3c9105c
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.2.bazel
@@ -0,0 +1,91 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "annotate_snippets",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "color",
+        "default",
+        "yansi-term",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=annotate-snippets",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.9.2",
+    deps = [
+        "@rules_rust_bindgen_deps__unicode-width-0.1.13//:unicode_width",
+        "@rules_rust_bindgen_deps__yansi-term-0.1.2//:yansi_term",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.anstream-0.6.15.bazel b/extensions/bindgen/3rdparty/crates/BUILD.anstream-0.6.15.bazel
new file mode 100644
index 0000000..f54c6c7
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.anstream-0.6.15.bazel
@@ -0,0 +1,106 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "anstream",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "auto",
+        "default",
+        "wincon",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=anstream",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.6.15",
+    deps = [
+        "@rules_rust_bindgen_deps__anstyle-1.0.8//:anstyle",
+        "@rules_rust_bindgen_deps__anstyle-parse-0.2.5//:anstyle_parse",
+        "@rules_rust_bindgen_deps__anstyle-query-1.1.1//:anstyle_query",
+        "@rules_rust_bindgen_deps__colorchoice-1.0.2//:colorchoice",
+        "@rules_rust_bindgen_deps__is_terminal_polyfill-1.70.1//:is_terminal_polyfill",
+        "@rules_rust_bindgen_deps__utf8parse-0.2.2//:utf8parse",
+    ] + select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__anstyle-wincon-3.0.4//:anstyle_wincon",  # aarch64-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__anstyle-wincon-3.0.4//:anstyle_wincon",  # i686-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__anstyle-wincon-3.0.4//:anstyle_wincon",  # x86_64-pc-windows-msvc
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.anstyle-1.0.8.bazel b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-1.0.8.bazel
new file mode 100644
index 0000000..9023696
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-1.0.8.bazel
@@ -0,0 +1,86 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "anstyle",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=anstyle",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.8",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.5.bazel b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.5.bazel
new file mode 100644
index 0000000..0c1950d
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.5.bazel
@@ -0,0 +1,89 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "anstyle_parse",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "utf8",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=anstyle-parse",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.2.5",
+    deps = [
+        "@rules_rust_bindgen_deps__utf8parse-0.2.2//:utf8parse",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.anstyle-query-1.1.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-query-1.1.1.bazel
new file mode 100644
index 0000000..e6a2fa5
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-query-1.1.1.bazel
@@ -0,0 +1,94 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "anstyle_query",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=anstyle-query",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.1.1",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.anstyle-wincon-3.0.4.bazel b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-wincon-3.0.4.bazel
new file mode 100644
index 0000000..763d062
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.anstyle-wincon-3.0.4.bazel
@@ -0,0 +1,96 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "anstyle_wincon",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=anstyle-wincon",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "3.0.4",
+    deps = [
+        "@rules_rust_bindgen_deps__anstyle-1.0.8//:anstyle",
+    ] + select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.bazel b/extensions/bindgen/3rdparty/crates/BUILD.bazel
new file mode 100644
index 0000000..237501e
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.bazel
@@ -0,0 +1,62 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+package(default_visibility = ["//visibility:public"])
+
+exports_files(
+    [
+        "cargo-bazel.json",
+        "crates.bzl",
+        "defs.bzl",
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
+)
+
+filegroup(
+    name = "srcs",
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
+)
+
+# Workspace Member Dependencies
+alias(
+    name = "bindgen",
+    actual = "@rules_rust_bindgen_deps__bindgen-0.70.1//:bindgen",
+    tags = ["manual"],
+)
+
+alias(
+    name = "clang-sys",
+    actual = "@rules_rust_bindgen_deps__clang-sys-1.8.1//:clang_sys",
+    tags = ["manual"],
+)
+
+alias(
+    name = "clap",
+    actual = "@rules_rust_bindgen_deps__clap-4.5.17//:clap",
+    tags = ["manual"],
+)
+
+alias(
+    name = "clap_complete",
+    actual = "@rules_rust_bindgen_deps__clap_complete-4.5.26//:clap_complete",
+    tags = ["manual"],
+)
+
+alias(
+    name = "env_logger",
+    actual = "@rules_rust_bindgen_deps__env_logger-0.10.2//:env_logger",
+    tags = ["manual"],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.bindgen-0.70.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.bindgen-0.70.1.bazel
new file mode 100644
index 0000000..f1880d6
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.bindgen-0.70.1.bazel
@@ -0,0 +1,169 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "bindgen",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "__cli",
+        "experimental",
+        "prettyplease",
+        "runtime",
+    ],
+    crate_root = "lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=bindgen",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.70.1",
+    deps = [
+        "@rules_rust_bindgen_deps__annotate-snippets-0.9.2//:annotate_snippets",
+        "@rules_rust_bindgen_deps__bindgen-0.70.1//:build_script_build",
+        "@rules_rust_bindgen_deps__bitflags-2.6.0//:bitflags",
+        "@rules_rust_bindgen_deps__cexpr-0.6.0//:cexpr",
+        "@rules_rust_bindgen_deps__clang-sys-1.8.1//:clang_sys",
+        "@rules_rust_bindgen_deps__itertools-0.13.0//:itertools",
+        "@rules_rust_bindgen_deps__prettyplease-0.2.22//:prettyplease",
+        "@rules_rust_bindgen_deps__proc-macro2-1.0.86//:proc_macro2",
+        "@rules_rust_bindgen_deps__quote-1.0.37//:quote",
+        "@rules_rust_bindgen_deps__regex-1.10.6//:regex",
+        "@rules_rust_bindgen_deps__rustc-hash-1.1.0//:rustc_hash",
+        "@rules_rust_bindgen_deps__shlex-1.3.0//:shlex",
+        "@rules_rust_bindgen_deps__syn-2.0.77//:syn",
+    ],
+)
+
+cargo_build_script(
+    name = "_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            "**/*.rs",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "__cli",
+        "experimental",
+        "prettyplease",
+        "runtime",
+    ],
+    crate_name = "build_script_build",
+    crate_root = "build.rs",
+    data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    edition = "2018",
+    link_deps = [
+        "@rules_rust_bindgen_deps__clang-sys-1.8.1//:clang_sys",
+        "@rules_rust_bindgen_deps__prettyplease-0.2.22//:prettyplease",
+    ],
+    pkg_name = "bindgen",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=bindgen",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = "0.70.1",
+    visibility = ["//visibility:private"],
+)
+
+alias(
+    name = "build_script_build",
+    actual = ":_bs",
+    tags = ["manual"],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.bitflags-2.6.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.bitflags-2.6.0.bazel
new file mode 100644
index 0000000..2521fc0
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.bitflags-2.6.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "bitflags",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=bitflags",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "2.6.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel
new file mode 100644
index 0000000..00d4930
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "cexpr",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=cexpr",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.6.0",
+    deps = [
+        "@rules_rust_bindgen_deps__nom-7.1.3//:nom",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
new file mode 100644
index 0000000..fdb278e
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "cfg_if",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=cfg-if",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.clang-sys-1.8.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.clang-sys-1.8.1.bazel
new file mode 100644
index 0000000..f8e7ffc
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.clang-sys-1.8.1.bazel
@@ -0,0 +1,188 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clang_sys",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "clang_10_0",
+        "clang_11_0",
+        "clang_12_0",
+        "clang_13_0",
+        "clang_14_0",
+        "clang_3_5",
+        "clang_3_6",
+        "clang_3_7",
+        "clang_3_8",
+        "clang_3_9",
+        "clang_4_0",
+        "clang_5_0",
+        "clang_6_0",
+        "clang_7_0",
+        "clang_8_0",
+        "clang_9_0",
+        "libloading",
+        "runtime",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clang-sys",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.8.1",
+    deps = [
+        "@rules_rust_bindgen_deps__clang-sys-1.8.1//:build_script_build",
+        "@rules_rust_bindgen_deps__glob-0.3.1//:glob",
+        "@rules_rust_bindgen_deps__libc-0.2.158//:libc",
+        "@rules_rust_bindgen_deps__libloading-0.8.5//:libloading",
+    ],
+)
+
+cargo_build_script(
+    name = "_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            "**/*.rs",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "clang_10_0",
+        "clang_11_0",
+        "clang_12_0",
+        "clang_13_0",
+        "clang_14_0",
+        "clang_3_5",
+        "clang_3_6",
+        "clang_3_7",
+        "clang_3_8",
+        "clang_3_9",
+        "clang_4_0",
+        "clang_5_0",
+        "clang_6_0",
+        "clang_7_0",
+        "clang_8_0",
+        "clang_9_0",
+        "libloading",
+        "runtime",
+    ],
+    crate_name = "build_script_build",
+    crate_root = "build.rs",
+    data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    edition = "2021",
+    links = "clang",
+    pkg_name = "clang-sys",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clang-sys",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = "1.8.1",
+    visibility = ["//visibility:private"],
+    deps = [
+        "@rules_rust_bindgen_deps__glob-0.3.1//:glob",
+    ],
+)
+
+alias(
+    name = "build_script_build",
+    actual = ":_bs",
+    tags = ["manual"],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.clap-4.5.17.bazel b/extensions/bindgen/3rdparty/crates/BUILD.clap-4.5.17.bazel
new file mode 100644
index 0000000..f559678
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.clap-4.5.17.bazel
@@ -0,0 +1,98 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "color",
+        "default",
+        "derive",
+        "error-context",
+        "help",
+        "std",
+        "suggestions",
+        "usage",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    proc_macro_deps = [
+        "@rules_rust_bindgen_deps__clap_derive-4.5.13//:clap_derive",
+    ],
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "4.5.17",
+    deps = [
+        "@rules_rust_bindgen_deps__clap_builder-4.5.17//:clap_builder",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.clap_builder-4.5.17.bazel b/extensions/bindgen/3rdparty/crates/BUILD.clap_builder-4.5.17.bazel
new file mode 100644
index 0000000..3c7e60c
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.clap_builder-4.5.17.bazel
@@ -0,0 +1,96 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap_builder",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "color",
+        "error-context",
+        "help",
+        "std",
+        "suggestions",
+        "usage",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap_builder",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "4.5.17",
+    deps = [
+        "@rules_rust_bindgen_deps__anstream-0.6.15//:anstream",
+        "@rules_rust_bindgen_deps__anstyle-1.0.8//:anstyle",
+        "@rules_rust_bindgen_deps__clap_lex-0.7.2//:clap_lex",
+        "@rules_rust_bindgen_deps__strsim-0.11.1//:strsim",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.clap_complete-4.5.26.bazel b/extensions/bindgen/3rdparty/crates/BUILD.clap_complete-4.5.26.bazel
new file mode 100644
index 0000000..a4d2b26
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.clap_complete-4.5.26.bazel
@@ -0,0 +1,88 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap_complete",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap_complete",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "4.5.26",
+    deps = [
+        "@rules_rust_bindgen_deps__clap-4.5.17//:clap",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.clap_derive-4.5.13.bazel b/extensions/bindgen/3rdparty/crates/BUILD.clap_derive-4.5.13.bazel
new file mode 100644
index 0000000..41957b6
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.clap_derive-4.5.13.bazel
@@ -0,0 +1,91 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_proc_macro")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_proc_macro(
+    name = "clap_derive",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap_derive",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "4.5.13",
+    deps = [
+        "@rules_rust_bindgen_deps__heck-0.5.0//:heck",
+        "@rules_rust_bindgen_deps__proc-macro2-1.0.86//:proc_macro2",
+        "@rules_rust_bindgen_deps__quote-1.0.37//:quote",
+        "@rules_rust_bindgen_deps__syn-2.0.77//:syn",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.clap_lex-0.7.2.bazel b/extensions/bindgen/3rdparty/crates/BUILD.clap_lex-0.7.2.bazel
new file mode 100644
index 0000000..f8819b9
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.clap_lex-0.7.2.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap_lex",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap_lex",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.7.2",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.2.bazel b/extensions/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.2.bazel
new file mode 100644
index 0000000..03c264a
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.2.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "colorchoice",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=colorchoice",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.2",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.either-1.13.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.either-1.13.0.bazel
new file mode 100644
index 0000000..fbee39b
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.either-1.13.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "either",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=either",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.13.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.env_logger-0.10.2.bazel b/extensions/bindgen/3rdparty/crates/BUILD.env_logger-0.10.2.bazel
new file mode 100644
index 0000000..c6af796
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.env_logger-0.10.2.bazel
@@ -0,0 +1,96 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "env_logger",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "auto-color",
+        "color",
+        "default",
+        "humantime",
+        "regex",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=env_logger",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.10.2",
+    deps = [
+        "@rules_rust_bindgen_deps__humantime-2.1.0//:humantime",
+        "@rules_rust_bindgen_deps__is-terminal-0.4.13//:is_terminal",
+        "@rules_rust_bindgen_deps__log-0.4.22//:log",
+        "@rules_rust_bindgen_deps__regex-1.10.6//:regex",
+        "@rules_rust_bindgen_deps__termcolor-1.4.1//:termcolor",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel
new file mode 100644
index 0000000..9a3feac
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "glob",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=glob",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.3.1",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.heck-0.5.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.heck-0.5.0.bazel
new file mode 100644
index 0000000..e223840
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.heck-0.5.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "heck",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=heck",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.5.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.hermit-abi-0.4.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.hermit-abi-0.4.0.bazel
new file mode 100644
index 0000000..fa2db81
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.hermit-abi-0.4.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "hermit_abi",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=hermit-abi",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.4.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
new file mode 100644
index 0000000..9ea6618
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "humantime",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=humantime",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "2.1.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.13.bazel b/extensions/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.13.bazel
new file mode 100644
index 0000000..9f30af0
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.13.bazel
@@ -0,0 +1,172 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "is_terminal",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=is-terminal",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.4.13",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-linux-android": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:i686-apple-darwin": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:i686-linux-android": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:wasm32-wasi": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:wasm32-wasip1": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-linux-android": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.52.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "@rules_rust_bindgen_deps__libc-0.2.158//:libc",  # cfg(any(unix, target_os = "wasi"))
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.is_terminal_polyfill-1.70.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.is_terminal_polyfill-1.70.1.bazel
new file mode 100644
index 0000000..f4b486a
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.is_terminal_polyfill-1.70.1.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "is_terminal_polyfill",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=is_terminal_polyfill",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.70.1",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.itertools-0.13.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.itertools-0.13.0.bazel
new file mode 100644
index 0000000..0c8ae7c
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.itertools-0.13.0.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "itertools",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=itertools",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.13.0",
+    deps = [
+        "@rules_rust_bindgen_deps__either-1.13.0//:either",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.libc-0.2.158.bazel b/extensions/bindgen/3rdparty/crates/BUILD.libc-0.2.158.bazel
new file mode 100644
index 0000000..c1d836a
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.libc-0.2.158.bazel
@@ -0,0 +1,355 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "libc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [
+            "default",  # aarch64-apple-darwin
+            "std",  # aarch64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [
+            "default",  # aarch64-apple-ios
+            "std",  # aarch64-apple-ios
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
+            "default",  # aarch64-apple-ios-sim
+            "std",  # aarch64-apple-ios-sim
+        ],
+        "@rules_rust//rust/platform:aarch64-linux-android": [
+            "default",  # aarch64-linux-android
+            "std",  # aarch64-linux-android
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
+            "default",  # aarch64-unknown-fuchsia
+            "std",  # aarch64-unknown-fuchsia
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+            "default",  # aarch64-unknown-linux-gnu
+            "std",  # aarch64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+            "default",  # aarch64-unknown-nixos-gnu
+            "std",  # aarch64-unknown-nixos-gnu
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
+            "default",  # aarch64-unknown-nto-qnx710
+            "std",  # aarch64-unknown-nto-qnx710
+        ],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+            "default",  # arm-unknown-linux-gnueabi
+            "std",  # arm-unknown-linux-gnueabi
+        ],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [
+            "default",  # armv7-linux-androideabi
+            "std",  # armv7-linux-androideabi
+        ],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
+            "default",  # armv7-unknown-linux-gnueabi
+            "std",  # armv7-unknown-linux-gnueabi
+        ],
+        "@rules_rust//rust/platform:i686-apple-darwin": [
+            "default",  # i686-apple-darwin
+            "std",  # i686-apple-darwin
+        ],
+        "@rules_rust//rust/platform:i686-linux-android": [
+            "default",  # i686-linux-android
+            "std",  # i686-linux-android
+        ],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [
+            "default",  # i686-unknown-freebsd
+            "std",  # i686-unknown-freebsd
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "default",  # i686-unknown-linux-gnu
+            "std",  # i686-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+            "default",  # powerpc-unknown-linux-gnu
+            "std",  # powerpc-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+            "default",  # s390x-unknown-linux-gnu
+            "std",  # s390x-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:wasm32-wasi": [
+            "default",  # wasm32-wasi
+            "std",  # wasm32-wasi
+        ],
+        "@rules_rust//rust/platform:wasm32-wasip1": [
+            "default",  # wasm32-wasip1
+            "std",  # wasm32-wasip1
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [
+            "default",  # x86_64-apple-darwin
+            "std",  # x86_64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [
+            "default",  # x86_64-apple-ios
+            "std",  # x86_64-apple-ios
+        ],
+        "@rules_rust//rust/platform:x86_64-linux-android": [
+            "default",  # x86_64-linux-android
+            "std",  # x86_64-linux-android
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+            "default",  # x86_64-unknown-freebsd
+            "std",  # x86_64-unknown-freebsd
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
+            "default",  # x86_64-unknown-fuchsia
+            "std",  # x86_64-unknown-fuchsia
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "default",  # x86_64-unknown-linux-gnu
+            "std",  # x86_64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "default",  # x86_64-unknown-nixos-gnu
+            "std",  # x86_64-unknown-nixos-gnu
+        ],
+        "//conditions:default": [],
+    }),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=libc",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.2.158",
+    deps = [
+        "@rules_rust_bindgen_deps__libc-0.2.158//:build_script_build",
+    ],
+)
+
+cargo_build_script(
+    name = "_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            "**/*.rs",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [
+            "default",  # aarch64-apple-darwin
+            "std",  # aarch64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [
+            "default",  # aarch64-apple-ios
+            "std",  # aarch64-apple-ios
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
+            "default",  # aarch64-apple-ios-sim
+            "std",  # aarch64-apple-ios-sim
+        ],
+        "@rules_rust//rust/platform:aarch64-linux-android": [
+            "default",  # aarch64-linux-android
+            "std",  # aarch64-linux-android
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
+            "default",  # aarch64-unknown-fuchsia
+            "std",  # aarch64-unknown-fuchsia
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+            "default",  # aarch64-unknown-linux-gnu
+            "std",  # aarch64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+            "default",  # aarch64-unknown-nixos-gnu
+            "std",  # aarch64-unknown-nixos-gnu
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
+            "default",  # aarch64-unknown-nto-qnx710
+            "std",  # aarch64-unknown-nto-qnx710
+        ],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+            "default",  # arm-unknown-linux-gnueabi
+            "std",  # arm-unknown-linux-gnueabi
+        ],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [
+            "default",  # armv7-linux-androideabi
+            "std",  # armv7-linux-androideabi
+        ],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
+            "default",  # armv7-unknown-linux-gnueabi
+            "std",  # armv7-unknown-linux-gnueabi
+        ],
+        "@rules_rust//rust/platform:i686-apple-darwin": [
+            "default",  # i686-apple-darwin
+            "std",  # i686-apple-darwin
+        ],
+        "@rules_rust//rust/platform:i686-linux-android": [
+            "default",  # i686-linux-android
+            "std",  # i686-linux-android
+        ],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [
+            "default",  # i686-unknown-freebsd
+            "std",  # i686-unknown-freebsd
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "default",  # i686-unknown-linux-gnu
+            "std",  # i686-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+            "default",  # powerpc-unknown-linux-gnu
+            "std",  # powerpc-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+            "default",  # s390x-unknown-linux-gnu
+            "std",  # s390x-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:wasm32-wasi": [
+            "default",  # wasm32-wasi
+            "std",  # wasm32-wasi
+        ],
+        "@rules_rust//rust/platform:wasm32-wasip1": [
+            "default",  # wasm32-wasip1
+            "std",  # wasm32-wasip1
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [
+            "default",  # x86_64-apple-darwin
+            "std",  # x86_64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [
+            "default",  # x86_64-apple-ios
+            "std",  # x86_64-apple-ios
+        ],
+        "@rules_rust//rust/platform:x86_64-linux-android": [
+            "default",  # x86_64-linux-android
+            "std",  # x86_64-linux-android
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+            "default",  # x86_64-unknown-freebsd
+            "std",  # x86_64-unknown-freebsd
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
+            "default",  # x86_64-unknown-fuchsia
+            "std",  # x86_64-unknown-fuchsia
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "default",  # x86_64-unknown-linux-gnu
+            "std",  # x86_64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "default",  # x86_64-unknown-nixos-gnu
+            "std",  # x86_64-unknown-nixos-gnu
+        ],
+        "//conditions:default": [],
+    }),
+    crate_name = "build_script_build",
+    crate_root = "build.rs",
+    data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    edition = "2015",
+    pkg_name = "libc",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=libc",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = "0.2.158",
+    visibility = ["//visibility:private"],
+)
+
+alias(
+    name = "build_script_build",
+    actual = ":_bs",
+    tags = ["manual"],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.libloading-0.8.5.bazel b/extensions/bindgen/3rdparty/crates/BUILD.libloading-0.8.5.bazel
new file mode 100644
index 0000000..db7aa51
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.libloading-0.8.5.bazel
@@ -0,0 +1,166 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "libloading",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=libloading",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.8.5",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-linux-android": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-targets-0.52.6//:windows_targets",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:i686-apple-darwin": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:i686-linux-android": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-targets-0.52.6//:windows_targets",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-linux-android": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-targets-0.52.6//:windows_targets",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "@rules_rust_bindgen_deps__cfg-if-1.0.0//:cfg_if",  # cfg(unix)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.log-0.4.22.bazel b/extensions/bindgen/3rdparty/crates/BUILD.log-0.4.22.bazel
new file mode 100644
index 0000000..187a337
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.log-0.4.22.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "log",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=log",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.4.22",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.memchr-2.7.4.bazel b/extensions/bindgen/3rdparty/crates/BUILD.memchr-2.7.4.bazel
new file mode 100644
index 0000000..938c8b9
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.memchr-2.7.4.bazel
@@ -0,0 +1,86 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "memchr",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "alloc",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=memchr",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "2.7.4",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel
new file mode 100644
index 0000000..af1cf2e
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "minimal_lexical",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=minimal-lexical",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.2.1",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel b/extensions/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel
new file mode 100644
index 0000000..098350c
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel
@@ -0,0 +1,90 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "nom",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "alloc",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=nom",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "7.1.3",
+    deps = [
+        "@rules_rust_bindgen_deps__memchr-2.7.4//:memchr",
+        "@rules_rust_bindgen_deps__minimal-lexical-0.2.1//:minimal_lexical",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.prettyplease-0.2.22.bazel b/extensions/bindgen/3rdparty/crates/BUILD.prettyplease-0.2.22.bazel
new file mode 100644
index 0000000..cfcbce3
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.prettyplease-0.2.22.bazel
@@ -0,0 +1,89 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "prettyplease",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "verbatim",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=prettyplease",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.2.22",
+    deps = [
+        "@rules_rust_bindgen_deps__proc-macro2-1.0.86//:proc_macro2",
+        "@rules_rust_bindgen_deps__syn-2.0.77//:syn",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.86.bazel b/extensions/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.86.bazel
new file mode 100644
index 0000000..62cb139
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.86.bazel
@@ -0,0 +1,132 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "proc_macro2",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "proc-macro",
+    ] + select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [
+            "default",  # aarch64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "default",  # aarch64-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+            "default",  # aarch64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+            "default",  # aarch64-unknown-nixos-gnu
+        ],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+            "default",  # arm-unknown-linux-gnueabi
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "default",  # i686-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "default",  # i686-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+            "default",  # powerpc-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+            "default",  # s390x-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [
+            "default",  # x86_64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "default",  # x86_64-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+            "default",  # x86_64-unknown-freebsd
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "default",  # x86_64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "default",  # x86_64-unknown-nixos-gnu
+        ],
+        "//conditions:default": [],
+    }),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=proc-macro2",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.86",
+    deps = [
+        "@rules_rust_bindgen_deps__unicode-ident-1.0.13//:unicode_ident",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.quote-1.0.37.bazel b/extensions/bindgen/3rdparty/crates/BUILD.quote-1.0.37.bazel
new file mode 100644
index 0000000..007b2a1
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.quote-1.0.37.bazel
@@ -0,0 +1,132 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "quote",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "proc-macro",
+    ] + select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [
+            "default",  # aarch64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "default",  # aarch64-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
+            "default",  # aarch64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
+            "default",  # aarch64-unknown-nixos-gnu
+        ],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
+            "default",  # arm-unknown-linux-gnueabi
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "default",  # i686-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "default",  # i686-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
+            "default",  # powerpc-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
+            "default",  # s390x-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [
+            "default",  # x86_64-apple-darwin
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "default",  # x86_64-pc-windows-msvc
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
+            "default",  # x86_64-unknown-freebsd
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "default",  # x86_64-unknown-linux-gnu
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "default",  # x86_64-unknown-nixos-gnu
+        ],
+        "//conditions:default": [],
+    }),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=quote",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.37",
+    deps = [
+        "@rules_rust_bindgen_deps__proc-macro2-1.0.86//:proc_macro2",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.regex-1.10.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.regex-1.10.6.bazel
new file mode 100644
index 0000000..7e9dc18
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.regex-1.10.6.bazel
@@ -0,0 +1,99 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "regex",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "perf",
+        "perf-backtrack",
+        "perf-cache",
+        "perf-dfa",
+        "perf-inline",
+        "perf-literal",
+        "perf-onepass",
+        "std",
+        "unicode-perl",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=regex",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.10.6",
+    deps = [
+        "@rules_rust_bindgen_deps__aho-corasick-1.1.3//:aho_corasick",
+        "@rules_rust_bindgen_deps__memchr-2.7.4//:memchr",
+        "@rules_rust_bindgen_deps__regex-automata-0.4.7//:regex_automata",
+        "@rules_rust_bindgen_deps__regex-syntax-0.8.4//:regex_syntax",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.regex-automata-0.4.7.bazel b/extensions/bindgen/3rdparty/crates/BUILD.regex-automata-0.4.7.bazel
new file mode 100644
index 0000000..f5e00e5
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.regex-automata-0.4.7.bazel
@@ -0,0 +1,104 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "regex_automata",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "alloc",
+        "dfa-onepass",
+        "hybrid",
+        "meta",
+        "nfa-backtrack",
+        "nfa-pikevm",
+        "nfa-thompson",
+        "perf-inline",
+        "perf-literal",
+        "perf-literal-multisubstring",
+        "perf-literal-substring",
+        "std",
+        "syntax",
+        "unicode-perl",
+        "unicode-word-boundary",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=regex-automata",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.4.7",
+    deps = [
+        "@rules_rust_bindgen_deps__aho-corasick-1.1.3//:aho_corasick",
+        "@rules_rust_bindgen_deps__memchr-2.7.4//:memchr",
+        "@rules_rust_bindgen_deps__regex-syntax-0.8.4//:regex_syntax",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.regex-syntax-0.8.4.bazel b/extensions/bindgen/3rdparty/crates/BUILD.regex-syntax-0.8.4.bazel
new file mode 100644
index 0000000..1471932
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.regex-syntax-0.8.4.bazel
@@ -0,0 +1,86 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "regex_syntax",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "std",
+        "unicode-perl",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=regex-syntax",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.8.4",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
new file mode 100644
index 0000000..24e64db
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
@@ -0,0 +1,86 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "rustc_hash",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=rustc-hash",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.1.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.shlex-1.3.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.shlex-1.3.0.bazel
new file mode 100644
index 0000000..f0d6894
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.shlex-1.3.0.bazel
@@ -0,0 +1,86 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "shlex",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=shlex",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.3.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.strsim-0.11.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.strsim-0.11.1.bazel
new file mode 100644
index 0000000..3d92d23
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.strsim-0.11.1.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "strsim",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=strsim",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.11.1",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.syn-2.0.77.bazel b/extensions/bindgen/3rdparty/crates/BUILD.syn-2.0.77.bazel
new file mode 100644
index 0000000..2af188f
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.syn-2.0.77.bazel
@@ -0,0 +1,98 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "syn",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "clone-impls",
+        "default",
+        "derive",
+        "extra-traits",
+        "full",
+        "parsing",
+        "printing",
+        "proc-macro",
+        "visit-mut",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=syn",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "2.0.77",
+    deps = [
+        "@rules_rust_bindgen_deps__proc-macro2-1.0.86//:proc_macro2",
+        "@rules_rust_bindgen_deps__quote-1.0.37//:quote",
+        "@rules_rust_bindgen_deps__unicode-ident-1.0.13//:unicode_ident",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.termcolor-1.4.1.bazel b/extensions/bindgen/3rdparty/crates/BUILD.termcolor-1.4.1.bazel
new file mode 100644
index 0000000..0cba58e
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.termcolor-1.4.1.bazel
@@ -0,0 +1,94 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "termcolor",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=termcolor",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.4.1",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__winapi-util-0.1.9//:winapi_util",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__winapi-util-0.1.9//:winapi_util",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__winapi-util-0.1.9//:winapi_util",  # cfg(windows)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.13.bazel b/extensions/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.13.bazel
new file mode 100644
index 0000000..5351fd4
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.13.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "unicode_ident",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=unicode-ident",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.13",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.13.bazel b/extensions/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.13.bazel
new file mode 100644
index 0000000..53db0c5
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.13.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "unicode_width",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=unicode-width",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.1.13",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.2.bazel b/extensions/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.2.bazel
new file mode 100644
index 0000000..480b734
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.2.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "utf8parse",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=utf8parse",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.2.2",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/extensions/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
new file mode 100644
index 0000000..38f5ccc
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -0,0 +1,155 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "winapi",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "consoleapi",
+        "errhandlingapi",
+        "fileapi",
+        "handleapi",
+        "processenv",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=winapi",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.3.9",
+    deps = [
+        "@rules_rust_bindgen_deps__winapi-0.3.9//:build_script_build",
+    ],
+)
+
+cargo_build_script(
+    name = "_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            "**/*.rs",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "consoleapi",
+        "errhandlingapi",
+        "fileapi",
+        "handleapi",
+        "processenv",
+    ],
+    crate_name = "build_script_build",
+    crate_root = "build.rs",
+    data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    edition = "2015",
+    pkg_name = "winapi",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=winapi",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = "0.3.9",
+    visibility = ["//visibility:private"],
+)
+
+alias(
+    name = "build_script_build",
+    actual = ":_bs",
+    tags = ["manual"],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
new file mode 100644
index 0000000..6ed07a9
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "winapi_i686_pc_windows_gnu",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=winapi-i686-pc-windows-gnu",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.4.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.9.bazel b/extensions/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.9.bazel
new file mode 100644
index 0000000..8a8b9f3
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.9.bazel
@@ -0,0 +1,94 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "winapi_util",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=winapi-util",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.1.9",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.59.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.59.0//:windows_sys",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows-sys-0.59.0//:windows_sys",  # cfg(windows)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
new file mode 100644
index 0000000..42e1386
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "winapi_x86_64_pc_windows_gnu",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=winapi-x86_64-pc-windows-gnu",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.4.0",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows-sys-0.52.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows-sys-0.52.0.bazel
new file mode 100644
index 0000000..0f6780a
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows-sys-0.52.0.bazel
@@ -0,0 +1,94 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_sys",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "Win32",
+        "Win32_Foundation",
+        "Win32_Storage",
+        "Win32_Storage_FileSystem",
+        "Win32_System",
+        "Win32_System_Console",
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows-sys",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.0",
+    deps = [
+        "@rules_rust_bindgen_deps__windows-targets-0.52.6//:windows_targets",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows-sys-0.59.0.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows-sys-0.59.0.bazel
new file mode 100644
index 0000000..36d4c68
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows-sys-0.59.0.bazel
@@ -0,0 +1,95 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_sys",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "Win32",
+        "Win32_Foundation",
+        "Win32_Storage",
+        "Win32_Storage_FileSystem",
+        "Win32_System",
+        "Win32_System_Console",
+        "Win32_System_SystemInformation",
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows-sys",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.59.0",
+    deps = [
+        "@rules_rust_bindgen_deps__windows-targets-0.52.6//:windows_targets",
+    ],
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows-targets-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows-targets-0.52.6.bazel
new file mode 100644
index 0000000..e0a55ad
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows-targets-0.52.6.bazel
@@ -0,0 +1,103 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_targets",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows-targets",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows_aarch64_msvc-0.52.6//:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows_i686_msvc-0.52.6//:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
+        ],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__windows_i686_gnu-0.52.6//:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__windows_x86_64_msvc-0.52.6//:windows_x86_64_msvc",  # cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
+            "@rules_rust_bindgen_deps__windows_x86_64_gnu-0.52.6//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+        ],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
+            "@rules_rust_bindgen_deps__windows_x86_64_gnu-0.52.6//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.52.6.bazel
new file mode 100644
index 0000000..cd5bb33
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_aarch64_gnullvm",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_aarch64_gnullvm",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.52.6.bazel
new file mode 100644
index 0000000..87dbeef
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_aarch64_msvc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_aarch64_msvc",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.52.6.bazel
new file mode 100644
index 0000000..efba5b0
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_i686_gnu",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_i686_gnu",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_gnullvm-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_gnullvm-0.52.6.bazel
new file mode 100644
index 0000000..bd5f152
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_gnullvm-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_i686_gnullvm",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_i686_gnullvm",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.52.6.bazel
new file mode 100644
index 0000000..7d6007f
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_i686_msvc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_i686_msvc",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.52.6.bazel
new file mode 100644
index 0000000..f6a1aa3
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_x86_64_gnu",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_x86_64_gnu",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.52.6.bazel
new file mode 100644
index 0000000..a1d4479
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_x86_64_gnullvm",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_x86_64_gnullvm",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.52.6.bazel b/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.52.6.bazel
new file mode 100644
index 0000000..7492fbb
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.52.6.bazel
@@ -0,0 +1,82 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "windows_x86_64_msvc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=windows_x86_64_msvc",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.52.6",
+)
diff --git a/extensions/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel b/extensions/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel
new file mode 100644
index 0000000..2a09273
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel
@@ -0,0 +1,94 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "yansi_term",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = True,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=yansi-term",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:wasm32-wasip1": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.1.2",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__winapi-0.3.9//:winapi",  # cfg(target_os = "windows")
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__winapi-0.3.9//:winapi",  # cfg(target_os = "windows")
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@rules_rust_bindgen_deps__winapi-0.3.9//:winapi",  # cfg(target_os = "windows")
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/extensions/bindgen/3rdparty/crates/alias_rules.bzl b/extensions/bindgen/3rdparty/crates/alias_rules.bzl
new file mode 100644
index 0000000..14b04c1
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/alias_rules.bzl
@@ -0,0 +1,47 @@
+"""Alias that transitions its target to `compilation_mode=opt`.  Use `transition_alias="opt"` to enable."""
+
+load("@rules_cc//cc:defs.bzl", "CcInfo")
+load("@rules_rust//rust:rust_common.bzl", "COMMON_PROVIDERS")
+
+def _transition_alias_impl(ctx):
+    # `ctx.attr.actual` is a list of 1 item due to the transition
+    providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]
+    if CcInfo in ctx.attr.actual[0]:
+        providers.append(ctx.attr.actual[0][CcInfo])
+    return providers
+
+def _change_compilation_mode(compilation_mode):
+    def _change_compilation_mode_impl(_settings, _attr):
+        return {
+            "//command_line_option:compilation_mode": compilation_mode,
+        }
+
+    return transition(
+        implementation = _change_compilation_mode_impl,
+        inputs = [],
+        outputs = [
+            "//command_line_option:compilation_mode",
+        ],
+    )
+
+def _transition_alias_rule(compilation_mode):
+    return rule(
+        implementation = _transition_alias_impl,
+        provides = COMMON_PROVIDERS,
+        attrs = {
+            "actual": attr.label(
+                mandatory = True,
+                doc = "`rust_library()` target to transition to `compilation_mode=opt`.",
+                providers = COMMON_PROVIDERS,
+                cfg = _change_compilation_mode(compilation_mode),
+            ),
+            "_allowlist_function_transition": attr.label(
+                default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
+            ),
+        },
+        doc = "Transitions a Rust library crate to the `compilation_mode=opt`.",
+    )
+
+transition_alias_dbg = _transition_alias_rule("dbg")
+transition_alias_fastbuild = _transition_alias_rule("fastbuild")
+transition_alias_opt = _transition_alias_rule("opt")
diff --git a/extensions/bindgen/3rdparty/crates/crates.bzl b/extensions/bindgen/3rdparty/crates/crates.bzl
new file mode 100644
index 0000000..caeb931
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/crates.bzl
@@ -0,0 +1,32 @@
+###############################################################################
+# @generated
+# This file is auto-generated by the cargo-bazel tool.
+#
+# DO NOT MODIFY: Local changes may be replaced in future executions.
+###############################################################################
+"""Rules for defining repositories for remote `crates_vendor` repositories"""
+
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
+
+# buildifier: disable=bzl-visibility
+load("@rules_rust//crate_universe/private:crates_vendor.bzl", "crates_vendor_remote_repository")
+
+# buildifier: disable=bzl-visibility
+load("@rules_rust_bindgen//3rdparty/crates:defs.bzl", _crate_repositories = "crate_repositories")
+
+def crate_repositories():
+    """Generates repositories for vendored crates.
+
+    Returns:
+      A list of repos visible to the module through the module extension.
+    """
+    maybe(
+        crates_vendor_remote_repository,
+        name = "rules_rust_bindgen_deps",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.bazel"),
+        defs_module = Label("@rules_rust_bindgen//3rdparty/crates:defs.bzl"),
+    )
+
+    direct_deps = [struct(repo = "rules_rust_bindgen_deps", is_dev_dep = False)]
+    direct_deps.extend(_crate_repositories())
+    return direct_deps
diff --git a/extensions/bindgen/3rdparty/crates/defs.bzl b/extensions/bindgen/3rdparty/crates/defs.bzl
new file mode 100644
index 0000000..d6de2be
--- /dev/null
+++ b/extensions/bindgen/3rdparty/crates/defs.bzl
@@ -0,0 +1,1061 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @//3rdparty:crates_vendor
+###############################################################################
+"""
+# `crates_repository` API
+
+- [aliases](#aliases)
+- [crate_deps](#crate_deps)
+- [all_crate_deps](#all_crate_deps)
+- [crate_repositories](#crate_repositories)
+
+"""
+
+load("@bazel_skylib//lib:selects.bzl", "selects")
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
+
+###############################################################################
+# MACROS API
+###############################################################################
+
+# An identifier that represent common dependencies (unconditional).
+_COMMON_CONDITION = ""
+
+def _flatten_dependency_maps(all_dependency_maps):
+    """Flatten a list of dependency maps into one dictionary.
+
+    Dependency maps have the following structure:
+
+    ```python
+    DEPENDENCIES_MAP = {
+        # The first key in the map is a Bazel package
+        # name of the workspace this file is defined in.
+        "workspace_member_package": {
+
+            # Not all dependencies are supported for all platforms.
+            # the condition key is the condition required to be true
+            # on the host platform.
+            "condition": {
+
+                # An alias to a crate target.     # The label of the crate target the
+                # Aliases are only crate names.   # package name refers to.
+                "package_name":                   "@full//:label",
+            }
+        }
+    }
+    ```
+
+    Args:
+        all_dependency_maps (list): A list of dicts as described above
+
+    Returns:
+        dict: A dictionary as described above
+    """
+    dependencies = {}
+
+    for workspace_deps_map in all_dependency_maps:
+        for pkg_name, conditional_deps_map in workspace_deps_map.items():
+            if pkg_name not in dependencies:
+                non_frozen_map = dict()
+                for key, values in conditional_deps_map.items():
+                    non_frozen_map.update({key: dict(values.items())})
+                dependencies.setdefault(pkg_name, non_frozen_map)
+                continue
+
+            for condition, deps_map in conditional_deps_map.items():
+                # If the condition has not been recorded, do so and continue
+                if condition not in dependencies[pkg_name]:
+                    dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))
+                    continue
+
+                # Alert on any miss-matched dependencies
+                inconsistent_entries = []
+                for crate_name, crate_label in deps_map.items():
+                    existing = dependencies[pkg_name][condition].get(crate_name)
+                    if existing and existing != crate_label:
+                        inconsistent_entries.append((crate_name, existing, crate_label))
+                    dependencies[pkg_name][condition].update({crate_name: crate_label})
+
+    return dependencies
+
+def crate_deps(deps, package_name = None):
+    """Finds the fully qualified label of the requested crates for the package where this macro is called.
+
+    Args:
+        deps (list): The desired list of crate targets.
+        package_name (str, optional): The package name of the set of dependencies to look up.
+            Defaults to `native.package_name()`.
+
+    Returns:
+        list: A list of labels to generated rust targets (str)
+    """
+
+    if not deps:
+        return []
+
+    if package_name == None:
+        package_name = native.package_name()
+
+    # Join both sets of dependencies
+    dependencies = _flatten_dependency_maps([
+        _NORMAL_DEPENDENCIES,
+        _NORMAL_DEV_DEPENDENCIES,
+        _PROC_MACRO_DEPENDENCIES,
+        _PROC_MACRO_DEV_DEPENDENCIES,
+        _BUILD_DEPENDENCIES,
+        _BUILD_PROC_MACRO_DEPENDENCIES,
+    ]).pop(package_name, {})
+
+    # Combine all conditional packages so we can easily index over a flat list
+    # TODO: Perhaps this should actually return select statements and maintain
+    # the conditionals of the dependencies
+    flat_deps = {}
+    for deps_set in dependencies.values():
+        for crate_name, crate_label in deps_set.items():
+            flat_deps.update({crate_name: crate_label})
+
+    missing_crates = []
+    crate_targets = []
+    for crate_target in deps:
+        if crate_target not in flat_deps:
+            missing_crates.append(crate_target)
+        else:
+            crate_targets.append(flat_deps[crate_target])
+
+    if missing_crates:
+        fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format(
+            missing_crates,
+            package_name,
+            dependencies,
+        ))
+
+    return crate_targets
+
+def all_crate_deps(
+        normal = False,
+        normal_dev = False,
+        proc_macro = False,
+        proc_macro_dev = False,
+        build = False,
+        build_proc_macro = False,
+        package_name = None):
+    """Finds the fully qualified label of all requested direct crate dependencies \
+    for the package where this macro is called.
+
+    If no parameters are set, all normal dependencies are returned. Setting any one flag will
+    otherwise impact the contents of the returned list.
+
+    Args:
+        normal (bool, optional): If True, normal dependencies are included in the
+            output list.
+        normal_dev (bool, optional): If True, normal dev dependencies will be
+            included in the output list..
+        proc_macro (bool, optional): If True, proc_macro dependencies are included
+            in the output list.
+        proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
+            included in the output list.
+        build (bool, optional): If True, build dependencies are included
+            in the output list.
+        build_proc_macro (bool, optional): If True, build proc_macro dependencies are
+            included in the output list.
+        package_name (str, optional): The package name of the set of dependencies to look up.
+            Defaults to `native.package_name()` when unset.
+
+    Returns:
+        list: A list of labels to generated rust targets (str)
+    """
+
+    if package_name == None:
+        package_name = native.package_name()
+
+    # Determine the relevant maps to use
+    all_dependency_maps = []
+    if normal:
+        all_dependency_maps.append(_NORMAL_DEPENDENCIES)
+    if normal_dev:
+        all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)
+    if proc_macro:
+        all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)
+    if proc_macro_dev:
+        all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)
+    if build:
+        all_dependency_maps.append(_BUILD_DEPENDENCIES)
+    if build_proc_macro:
+        all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)
+
+    # Default to always using normal dependencies
+    if not all_dependency_maps:
+        all_dependency_maps.append(_NORMAL_DEPENDENCIES)
+
+    dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)
+
+    if not dependencies:
+        if dependencies == None:
+            fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file")
+        else:
+            return []
+
+    crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())
+    for condition, deps in dependencies.items():
+        crate_deps += selects.with_or({
+            tuple(_CONDITIONS[condition]): deps.values(),
+            "//conditions:default": [],
+        })
+
+    return crate_deps
+
+def aliases(
+        normal = False,
+        normal_dev = False,
+        proc_macro = False,
+        proc_macro_dev = False,
+        build = False,
+        build_proc_macro = False,
+        package_name = None):
+    """Produces a map of Crate alias names to their original label
+
+    If no dependency kinds are specified, `normal` and `proc_macro` are used by default.
+    Setting any one flag will otherwise determine the contents of the returned dict.
+
+    Args:
+        normal (bool, optional): If True, normal dependencies are included in the
+            output list.
+        normal_dev (bool, optional): If True, normal dev dependencies will be
+            included in the output list..
+        proc_macro (bool, optional): If True, proc_macro dependencies are included
+            in the output list.
+        proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
+            included in the output list.
+        build (bool, optional): If True, build dependencies are included
+            in the output list.
+        build_proc_macro (bool, optional): If True, build proc_macro dependencies are
+            included in the output list.
+        package_name (str, optional): The package name of the set of dependencies to look up.
+            Defaults to `native.package_name()` when unset.
+
+    Returns:
+        dict: The aliases of all associated packages
+    """
+    if package_name == None:
+        package_name = native.package_name()
+
+    # Determine the relevant maps to use
+    all_aliases_maps = []
+    if normal:
+        all_aliases_maps.append(_NORMAL_ALIASES)
+    if normal_dev:
+        all_aliases_maps.append(_NORMAL_DEV_ALIASES)
+    if proc_macro:
+        all_aliases_maps.append(_PROC_MACRO_ALIASES)
+    if proc_macro_dev:
+        all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)
+    if build:
+        all_aliases_maps.append(_BUILD_ALIASES)
+    if build_proc_macro:
+        all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)
+
+    # Default to always using normal aliases
+    if not all_aliases_maps:
+        all_aliases_maps.append(_NORMAL_ALIASES)
+        all_aliases_maps.append(_PROC_MACRO_ALIASES)
+
+    aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)
+
+    if not aliases:
+        return dict()
+
+    common_items = aliases.pop(_COMMON_CONDITION, {}).items()
+
+    # If there are only common items in the dictionary, immediately return them
+    if not len(aliases.keys()) == 1:
+        return dict(common_items)
+
+    # Build a single select statement where each conditional has accounted for the
+    # common set of aliases.
+    crate_aliases = {"//conditions:default": dict(common_items)}
+    for condition, deps in aliases.items():
+        condition_triples = _CONDITIONS[condition]
+        for triple in condition_triples:
+            if triple in crate_aliases:
+                crate_aliases[triple].update(deps)
+            else:
+                crate_aliases.update({triple: dict(deps.items() + common_items)})
+
+    return select(crate_aliases)
+
+###############################################################################
+# WORKSPACE MEMBER DEPS AND ALIASES
+###############################################################################
+
+_NORMAL_DEPENDENCIES = {
+    "": {
+        _COMMON_CONDITION: {
+            "bindgen": Label("@rules_rust_bindgen_deps__bindgen-0.70.1//:bindgen"),
+            "clang-sys": Label("@rules_rust_bindgen_deps__clang-sys-1.8.1//:clang_sys"),
+            "clap": Label("@rules_rust_bindgen_deps__clap-4.5.17//:clap"),
+            "clap_complete": Label("@rules_rust_bindgen_deps__clap_complete-4.5.26//:clap_complete"),
+            "env_logger": Label("@rules_rust_bindgen_deps__env_logger-0.10.2//:env_logger"),
+        },
+    },
+}
+
+_NORMAL_ALIASES = {
+    "": {
+        _COMMON_CONDITION: {
+        },
+    },
+}
+
+_NORMAL_DEV_DEPENDENCIES = {
+    "": {
+    },
+}
+
+_NORMAL_DEV_ALIASES = {
+    "": {
+    },
+}
+
+_PROC_MACRO_DEPENDENCIES = {
+    "": {
+    },
+}
+
+_PROC_MACRO_ALIASES = {
+    "": {
+    },
+}
+
+_PROC_MACRO_DEV_DEPENDENCIES = {
+    "": {
+    },
+}
+
+_PROC_MACRO_DEV_ALIASES = {
+    "": {
+    },
+}
+
+_BUILD_DEPENDENCIES = {
+    "": {
+    },
+}
+
+_BUILD_ALIASES = {
+    "": {
+    },
+}
+
+_BUILD_PROC_MACRO_DEPENDENCIES = {
+    "": {
+    },
+}
+
+_BUILD_PROC_MACRO_ALIASES = {
+    "": {
+    },
+}
+
+_CONDITIONS = {
+    "aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"],
+    "aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"],
+    "aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"],
+    "aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"],
+    "aarch64-pc-windows-gnullvm": [],
+    "aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"],
+    "aarch64-unknown-fuchsia": ["@rules_rust//rust/platform:aarch64-unknown-fuchsia"],
+    "aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"],
+    "aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"],
+    "aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"],
+    "arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"],
+    "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"],
+    "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"],
+    "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
+    "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"],
+    "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"],
+    "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"],
+    "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
+    "cfg(any(unix, target_os = \"wasi\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:wasm32-wasi", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
+    "cfg(target_os = \"hermit\")": [],
+    "cfg(target_os = \"windows\")": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
+    "cfg(unix)": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
+    "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
+    "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"],
+    "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"],
+    "i686-pc-windows-gnu": [],
+    "i686-pc-windows-gnullvm": [],
+    "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"],
+    "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"],
+    "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"],
+    "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"],
+    "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"],
+    "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"],
+    "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"],
+    "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"],
+    "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"],
+    "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"],
+    "wasm32-wasi": ["@rules_rust//rust/platform:wasm32-wasi"],
+    "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"],
+    "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"],
+    "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"],
+    "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"],
+    "x86_64-pc-windows-gnu": [],
+    "x86_64-pc-windows-gnullvm": [],
+    "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
+    "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"],
+    "x86_64-unknown-fuchsia": ["@rules_rust//rust/platform:x86_64-unknown-fuchsia"],
+    "x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu"],
+    "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
+    "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"],
+}
+
+###############################################################################
+
+def crate_repositories():
+    """A macro for defining repositories for all generated crates.
+
+    Returns:
+      A list of repos visible to the module through the module extension.
+    """
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__aho-corasick-1.1.3",
+        sha256 = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/aho-corasick/1.1.3/download"],
+        strip_prefix = "aho-corasick-1.1.3",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.aho-corasick-1.1.3.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__annotate-snippets-0.9.2",
+        sha256 = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/annotate-snippets/0.9.2/download"],
+        strip_prefix = "annotate-snippets-0.9.2",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.annotate-snippets-0.9.2.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__anstream-0.6.15",
+        sha256 = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/anstream/0.6.15/download"],
+        strip_prefix = "anstream-0.6.15",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.anstream-0.6.15.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__anstyle-1.0.8",
+        sha256 = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/anstyle/1.0.8/download"],
+        strip_prefix = "anstyle-1.0.8",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.anstyle-1.0.8.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__anstyle-parse-0.2.5",
+        sha256 = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/anstyle-parse/0.2.5/download"],
+        strip_prefix = "anstyle-parse-0.2.5",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.anstyle-parse-0.2.5.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__anstyle-query-1.1.1",
+        sha256 = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/anstyle-query/1.1.1/download"],
+        strip_prefix = "anstyle-query-1.1.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.anstyle-query-1.1.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__anstyle-wincon-3.0.4",
+        sha256 = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.4/download"],
+        strip_prefix = "anstyle-wincon-3.0.4",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.anstyle-wincon-3.0.4.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__bindgen-0.70.1",
+        sha256 = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/bindgen/0.70.1/download"],
+        strip_prefix = "bindgen-0.70.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.bindgen-0.70.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__bitflags-2.6.0",
+        sha256 = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/bitflags/2.6.0/download"],
+        strip_prefix = "bitflags-2.6.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.bitflags-2.6.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__cexpr-0.6.0",
+        sha256 = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/cexpr/0.6.0/download"],
+        strip_prefix = "cexpr-0.6.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.cexpr-0.6.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__cfg-if-1.0.0",
+        sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/cfg-if/1.0.0/download"],
+        strip_prefix = "cfg-if-1.0.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.cfg-if-1.0.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__clang-sys-1.8.1",
+        sha256 = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/clang-sys/1.8.1/download"],
+        strip_prefix = "clang-sys-1.8.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.clang-sys-1.8.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__clap-4.5.17",
+        sha256 = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/clap/4.5.17/download"],
+        strip_prefix = "clap-4.5.17",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.clap-4.5.17.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__clap_builder-4.5.17",
+        sha256 = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/clap_builder/4.5.17/download"],
+        strip_prefix = "clap_builder-4.5.17",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.clap_builder-4.5.17.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__clap_complete-4.5.26",
+        sha256 = "205d5ef6d485fa47606b98b0ddc4ead26eb850aaa86abfb562a94fb3280ecba0",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/clap_complete/4.5.26/download"],
+        strip_prefix = "clap_complete-4.5.26",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.clap_complete-4.5.26.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__clap_derive-4.5.13",
+        sha256 = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/clap_derive/4.5.13/download"],
+        strip_prefix = "clap_derive-4.5.13",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.clap_derive-4.5.13.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__clap_lex-0.7.2",
+        sha256 = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/clap_lex/0.7.2/download"],
+        strip_prefix = "clap_lex-0.7.2",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.clap_lex-0.7.2.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__colorchoice-1.0.2",
+        sha256 = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/colorchoice/1.0.2/download"],
+        strip_prefix = "colorchoice-1.0.2",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.colorchoice-1.0.2.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__either-1.13.0",
+        sha256 = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/either/1.13.0/download"],
+        strip_prefix = "either-1.13.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.either-1.13.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__env_logger-0.10.2",
+        sha256 = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/env_logger/0.10.2/download"],
+        strip_prefix = "env_logger-0.10.2",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.env_logger-0.10.2.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__glob-0.3.1",
+        sha256 = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/glob/0.3.1/download"],
+        strip_prefix = "glob-0.3.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.glob-0.3.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__heck-0.5.0",
+        sha256 = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/heck/0.5.0/download"],
+        strip_prefix = "heck-0.5.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.heck-0.5.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__hermit-abi-0.4.0",
+        sha256 = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/hermit-abi/0.4.0/download"],
+        strip_prefix = "hermit-abi-0.4.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.hermit-abi-0.4.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__humantime-2.1.0",
+        sha256 = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/humantime/2.1.0/download"],
+        strip_prefix = "humantime-2.1.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.humantime-2.1.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__is-terminal-0.4.13",
+        sha256 = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/is-terminal/0.4.13/download"],
+        strip_prefix = "is-terminal-0.4.13",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.is-terminal-0.4.13.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__is_terminal_polyfill-1.70.1",
+        sha256 = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.1/download"],
+        strip_prefix = "is_terminal_polyfill-1.70.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.is_terminal_polyfill-1.70.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__itertools-0.13.0",
+        sha256 = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/itertools/0.13.0/download"],
+        strip_prefix = "itertools-0.13.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.itertools-0.13.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__libc-0.2.158",
+        sha256 = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/libc/0.2.158/download"],
+        strip_prefix = "libc-0.2.158",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.libc-0.2.158.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__libloading-0.8.5",
+        sha256 = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/libloading/0.8.5/download"],
+        strip_prefix = "libloading-0.8.5",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.libloading-0.8.5.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__log-0.4.22",
+        sha256 = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/log/0.4.22/download"],
+        strip_prefix = "log-0.4.22",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.log-0.4.22.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__memchr-2.7.4",
+        sha256 = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/memchr/2.7.4/download"],
+        strip_prefix = "memchr-2.7.4",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.memchr-2.7.4.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__minimal-lexical-0.2.1",
+        sha256 = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/minimal-lexical/0.2.1/download"],
+        strip_prefix = "minimal-lexical-0.2.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.minimal-lexical-0.2.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__nom-7.1.3",
+        sha256 = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/nom/7.1.3/download"],
+        strip_prefix = "nom-7.1.3",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.nom-7.1.3.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__prettyplease-0.2.22",
+        sha256 = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/prettyplease/0.2.22/download"],
+        strip_prefix = "prettyplease-0.2.22",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.prettyplease-0.2.22.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__proc-macro2-1.0.86",
+        sha256 = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/proc-macro2/1.0.86/download"],
+        strip_prefix = "proc-macro2-1.0.86",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.proc-macro2-1.0.86.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__quote-1.0.37",
+        sha256 = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/quote/1.0.37/download"],
+        strip_prefix = "quote-1.0.37",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.quote-1.0.37.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__regex-1.10.6",
+        sha256 = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/regex/1.10.6/download"],
+        strip_prefix = "regex-1.10.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.regex-1.10.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__regex-automata-0.4.7",
+        sha256 = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/regex-automata/0.4.7/download"],
+        strip_prefix = "regex-automata-0.4.7",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.regex-automata-0.4.7.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__regex-syntax-0.8.4",
+        sha256 = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/regex-syntax/0.8.4/download"],
+        strip_prefix = "regex-syntax-0.8.4",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.regex-syntax-0.8.4.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__rustc-hash-1.1.0",
+        sha256 = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/rustc-hash/1.1.0/download"],
+        strip_prefix = "rustc-hash-1.1.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.rustc-hash-1.1.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__shlex-1.3.0",
+        sha256 = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/shlex/1.3.0/download"],
+        strip_prefix = "shlex-1.3.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.shlex-1.3.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__strsim-0.11.1",
+        sha256 = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/strsim/0.11.1/download"],
+        strip_prefix = "strsim-0.11.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.strsim-0.11.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__syn-2.0.77",
+        sha256 = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/syn/2.0.77/download"],
+        strip_prefix = "syn-2.0.77",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.syn-2.0.77.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__termcolor-1.4.1",
+        sha256 = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/termcolor/1.4.1/download"],
+        strip_prefix = "termcolor-1.4.1",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.termcolor-1.4.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__unicode-ident-1.0.13",
+        sha256 = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/unicode-ident/1.0.13/download"],
+        strip_prefix = "unicode-ident-1.0.13",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.unicode-ident-1.0.13.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__unicode-width-0.1.13",
+        sha256 = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/unicode-width/0.1.13/download"],
+        strip_prefix = "unicode-width-0.1.13",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.unicode-width-0.1.13.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__utf8parse-0.2.2",
+        sha256 = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/utf8parse/0.2.2/download"],
+        strip_prefix = "utf8parse-0.2.2",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.utf8parse-0.2.2.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__winapi-0.3.9",
+        sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/winapi/0.3.9/download"],
+        strip_prefix = "winapi-0.3.9",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.winapi-0.3.9.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__winapi-i686-pc-windows-gnu-0.4.0",
+        sha256 = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download"],
+        strip_prefix = "winapi-i686-pc-windows-gnu-0.4.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__winapi-util-0.1.9",
+        sha256 = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/winapi-util/0.1.9/download"],
+        strip_prefix = "winapi-util-0.1.9",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.winapi-util-0.1.9.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__winapi-x86_64-pc-windows-gnu-0.4.0",
+        sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"],
+        strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows-sys-0.52.0",
+        sha256 = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows-sys/0.52.0/download"],
+        strip_prefix = "windows-sys-0.52.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows-sys-0.52.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows-sys-0.59.0",
+        sha256 = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows-sys/0.59.0/download"],
+        strip_prefix = "windows-sys-0.59.0",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows-sys-0.59.0.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows-targets-0.52.6",
+        sha256 = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows-targets/0.52.6/download"],
+        strip_prefix = "windows-targets-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows-targets-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_aarch64_gnullvm-0.52.6",
+        sha256 = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download"],
+        strip_prefix = "windows_aarch64_gnullvm-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_aarch64_msvc-0.52.6",
+        sha256 = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download"],
+        strip_prefix = "windows_aarch64_msvc-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_aarch64_msvc-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_i686_gnu-0.52.6",
+        sha256 = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_i686_gnu/0.52.6/download"],
+        strip_prefix = "windows_i686_gnu-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_i686_gnu-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_i686_gnullvm-0.52.6",
+        sha256 = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download"],
+        strip_prefix = "windows_i686_gnullvm-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_i686_gnullvm-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_i686_msvc-0.52.6",
+        sha256 = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_i686_msvc/0.52.6/download"],
+        strip_prefix = "windows_i686_msvc-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_i686_msvc-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_x86_64_gnu-0.52.6",
+        sha256 = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download"],
+        strip_prefix = "windows_x86_64_gnu-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_x86_64_gnu-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_x86_64_gnullvm-0.52.6",
+        sha256 = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download"],
+        strip_prefix = "windows_x86_64_gnullvm-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__windows_x86_64_msvc-0.52.6",
+        sha256 = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download"],
+        strip_prefix = "windows_x86_64_msvc-0.52.6",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.windows_x86_64_msvc-0.52.6.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "rules_rust_bindgen_deps__yansi-term-0.1.2",
+        sha256 = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/yansi-term/0.1.2/download"],
+        strip_prefix = "yansi-term-0.1.2",
+        build_file = Label("@rules_rust_bindgen//3rdparty/crates:BUILD.yansi-term-0.1.2.bazel"),
+    )
+
+    return [
+        struct(repo = "rules_rust_bindgen_deps__bindgen-0.70.1", is_dev_dep = False),
+        struct(repo = "rules_rust_bindgen_deps__clang-sys-1.8.1", is_dev_dep = False),
+        struct(repo = "rules_rust_bindgen_deps__clap-4.5.17", is_dev_dep = False),
+        struct(repo = "rules_rust_bindgen_deps__clap_complete-4.5.26", is_dev_dep = False),
+        struct(repo = "rules_rust_bindgen_deps__env_logger-0.10.2", is_dev_dep = False),
+    ]
diff --git a/extensions/bindgen/3rdparty/patches/BUILD.bazel b/extensions/bindgen/3rdparty/patches/BUILD.bazel
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/extensions/bindgen/3rdparty/patches/BUILD.bazel
diff --git a/extensions/bindgen/3rdparty/patches/README.md b/extensions/bindgen/3rdparty/patches/README.md
new file mode 100644
index 0000000..296fbfd
--- /dev/null
+++ b/extensions/bindgen/3rdparty/patches/README.md
@@ -0,0 +1,25 @@
+# Patches
+
+All patches pair with the versions of the referenced repositories defined in `@rules_rust_bindgen//:repositories.bzl`.
+
+## [llvm-project.cxx17](./llvm-project.cxx17.patch)
+
+The llvm-project requires a compiler that builds with at least C++14 but there's no configuration
+for this on the targets defined in the repo. This patch plumbs through flags for setting the C++
+version on targets to avoid any need for bazel configuration flags. If this patch causes issues
+for users with their current toolchain or toolchain definitions then simply defining the `llvm-raw`
+repository before loading `rust_bindgen_dependencies` should avoid this.
+
+## [llvm-project.incompatible_disallow_empty_glob](./llvm-project.incompatible_disallow_empty_glob.patch)
+
+Uses of `glob` are updated to have `allow_empty = True` added so the llvm-project repo is compatible
+with consumers building with [--incompatible_disallow_empty_glob](https://bazel.build/reference/command-line-reference#flag--incompatible_disallow_empty_glob).
+
+Most of this patch is generated using the following regex and replace patterns. There are a handful
+of additional modifications for more extravagant globs.
+
+| regex | replace |
+| --- | --- |
+| `glob\(([\[\w\d_\-\*\/\.\],=\n\s"]+)\) \+` | `glob($1, allow_empty = True) +` |
+| `glob\(([\[\w\d_\-\*\/\.\],=\n\s"]+)\),` | `glob($1, allow_empty = True),` |
+| `(,[\s\n]+), ` | `$1` |
diff --git a/extensions/bindgen/3rdparty/patches/llvm-project.cxx17.patch b/extensions/bindgen/3rdparty/patches/llvm-project.cxx17.patch
new file mode 100644
index 0000000..fba5384
--- /dev/null
+++ b/extensions/bindgen/3rdparty/patches/llvm-project.cxx17.patch
@@ -0,0 +1,537 @@
+diff --git a/utils/bazel/configure.bzl b/utils/bazel/configure.bzl
+index 4c5ab8bd0972..44de2da1a136 100644
+--- a/utils/bazel/configure.bzl
++++ b/utils/bazel/configure.bzl
+@@ -70,6 +70,11 @@ def _overlay_directories(repository_ctx):
+         ))
+ 
+ def _llvm_configure_impl(repository_ctx):
++    # Force this repository rule to update if any of the overlay
++    # sources change.
++    for target in repository_ctx.attr._srcs:
++        repository_ctx.path(target)
++
+     _overlay_directories(repository_ctx)
+ 
+     # Create a starlark file with the requested LLVM targets.
+@@ -86,6 +91,16 @@ llvm_configure = repository_rule(
+     configure = True,
+     attrs = {
+         "targets": attr.string_list(default = DEFAULT_TARGETS),
++        "_srcs": attr.label_list(default = [
++            Label("//utils/bazel/llvm-project-overlay/clang:BUILD.bazel"),
++            Label("//utils/bazel/llvm-project-overlay/libunwind:BUILD.bazel"),
++            Label("//utils/bazel/llvm-project-overlay/llvm:binary_alias.bzl"),
++            Label("//utils/bazel/llvm-project-overlay/llvm:BUILD.bazel"),
++            Label("//utils/bazel/llvm-project-overlay/llvm:cc_plugin_library.bzl"),
++            Label("//utils/bazel/llvm-project-overlay/llvm:config.bzl"),
++            Label("//utils/bazel/llvm-project-overlay/llvm:tblgen.bzl"),
++            Label("//utils/bazel/llvm-project-overlay/llvm:template_rule.bzl"),
++        ]),
+     },
+ )
+ 
+diff --git a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+index a2b1e0f33073..0c1abe607b58 100644
+--- a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
++++ b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+@@ -5,6 +5,7 @@
+ load("//llvm:tblgen.bzl", "gentbl")
+ load("//llvm:binary_alias.bzl", "binary_alias")
+ load("//llvm:cc_plugin_library.bzl", "cc_plugin_library")
++load("//llvm:config.bzl", "llvm_stdcxx_copts")
+ 
+ package(
+     default_visibility = ["//visibility:public"],
+@@ -28,7 +29,7 @@ cc_binary(
+     ]),
+     copts = [
+         "$(STACK_FRAME_UNLIMITED)",
+-    ],
++    ] + llvm_stdcxx_copts,
+     stamp = 0,
+     deps = [
+         "//llvm:Support",
+@@ -391,8 +392,8 @@ cc_library(
+ cc_library(
+     name = "basic",
+     srcs = [
+-        "include/clang/Basic/Version.inc",
+         "include/VCSVersion.inc",
++        "include/clang/Basic/Version.inc",
+     ] + glob([
+         "lib/Basic/*.cpp",
+         "lib/Basic/*.c",
+@@ -406,7 +407,7 @@ cc_library(
+     copts = [
+         "-DHAVE_VCS_VERSION_INC",
+         "$(STACK_FRAME_UNLIMITED)",
+-    ],
++    ] + llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = [
+         "include/clang/Basic/arm_fp16.inc",
+@@ -471,6 +472,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Lex/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":basic",
+@@ -711,7 +713,7 @@ cc_library(
+         # headers such as `CXXABI.h`.
+         "-I$(GENDIR)/external/llvm-project/clang/lib/AST",
+         "-I$(GENDIR)/external/llvm-project/clang/lib/AST/Interp",
+-    ],
++    ] + llvm_stdcxx_copts,
+     textual_hdrs = [
+         "include/clang/AST/AttrImpl.inc",
+         "include/clang/AST/AttrNodeTraverse.inc",
+@@ -763,6 +765,7 @@ cc_library(
+         "include/clang/Index/*.h",
+         "include/clang-c/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -786,6 +789,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Analysis/**/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/Analysis/**/*.def",
+@@ -844,7 +848,7 @@ cc_library(
+         "include/clang/Sema/*.h",
+         "include/clang-c/*.h",
+     ]),
+-    copts = ["$(STACK_FRAME_UNLIMITED)"],
++    copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = [
+         "include/clang/Sema/AttrParsedAttrImpl.inc",
+@@ -911,6 +915,7 @@ cc_library(
+         "include/clang/Parse/AttrParserStringSwitches.inc",
+         "include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc",
+     ] + glob(["include/clang/Parse/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -932,6 +937,7 @@ cc_library(
+         "lib/ASTMatchers/*.h",
+     ]),
+     hdrs = glob(["include/clang/ASTMatchers/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -948,7 +954,7 @@ cc_library(
+         "lib/ASTMatchers/Dynamic/*.h",
+     ]),
+     hdrs = glob(["include/clang/ASTMatchers/Dynamic/*.h"]),
+-    copts = ["$(STACK_FRAME_UNLIMITED)"],
++    copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -966,6 +972,7 @@ cc_library(
+         "lib/Rewrite/*.h",
+     ]),
+     hdrs = glob(["include/clang/Rewrite/Core/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -982,6 +989,7 @@ cc_library(
+         "lib/Testing/*.cpp",
+     ]),
+     hdrs = glob(["include/clang/Testing/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":basic",
+@@ -996,6 +1004,7 @@ cc_library(
+         "lib/Tooling/Core/*.h",
+     ]),
+     hdrs = glob(["include/clang/Tooling/Core/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -1018,6 +1027,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Tooling/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -1042,6 +1052,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Tooling/Inclusions/**/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":basic",
+         ":lex",
+@@ -1061,6 +1072,7 @@ cc_library(
+         "include/clang/Tooling/Refactoring/**/*.h",
+         "include/clang/Tooling/Refactoring/**/*.def",
+     ]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+         ":ast_matchers",
+@@ -1094,6 +1106,7 @@ cc_library(
+     name = "tooling_syntax",
+     srcs = glob(["lib/Tooling/Syntax/**/*.cpp"]),
+     hdrs = glob(["include/clang/Tooling/Syntax/**/*.h"]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+         ":basic",
+@@ -1108,6 +1121,7 @@ cc_library(
+     name = "tooling_dependency_scanning",
+     srcs = glob(["lib/Tooling/DependencyScanning/**/*.cpp"]),
+     hdrs = glob(["include/clang/Tooling/DependencyScanning/**/*.h"]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":basic",
+         ":codegen",
+@@ -1123,6 +1137,7 @@ cc_library(
+     name = "transformer",
+     srcs = glob(["lib/Tooling/Transformer/**/*.cpp"]),
+     hdrs = glob(["include/clang/Tooling/Transformer/**/*.h"]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+         ":ast_matchers",
+@@ -1138,6 +1153,7 @@ cc_library(
+     name = "ast-diff",
+     srcs = glob(["lib/Tooling/ASTDiff/*.cpp"]),
+     hdrs = glob(["include/clang/Tooling/ASTDiff/*.h"]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+         ":basic",
+@@ -1150,6 +1166,7 @@ cc_library(
+     name = "crosstu",
+     srcs = glob(["lib/CrossTU/*.cpp"]),
+     hdrs = glob(["include/clang/CrossTU/*.h"]),
++    copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+         ":basic",
+@@ -1174,6 +1191,7 @@ cc_library(
+     ] + glob([
+         "include/clang/Format/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":basic",
+@@ -1188,6 +1206,7 @@ cc_library(
+     name = "edit",
+     srcs = glob(["lib/Edit/*.cpp"]),
+     hdrs = glob(["include/clang/Edit/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -1222,6 +1241,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/StaticAnalyzer/Core/**/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/StaticAnalyzer/Core/**/*.def",
+@@ -1268,7 +1288,7 @@ cc_library(
+     ] + glob([
+         "include/clang/StaticAnalyzer/Checkers/**/*.h",
+     ]),
+-    copts = ["$(STACK_FRAME_UNLIMITED)"],
++    copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":analysis",
+@@ -1316,7 +1336,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Driver/*.h",
+     ]),
+-    copts = ["$(STACK_FRAME_UNLIMITED)"],
++    copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = [
+         "include",
+         # TODO: This is likely a layering issue, but files in Arch are currently
+@@ -1479,7 +1499,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Frontend/*.h",
+     ]),
+-    copts = ["$(STACK_FRAME_UNLIMITED)"],
++    copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     data = [":builtin_headers_gen"],
+     includes = ["include"],
+     textual_hdrs = glob([
+@@ -1519,6 +1539,7 @@ cc_library(
+         "lib/Frontend/Rewrite/*.h",
+     ]),
+     hdrs = glob(["include/clang/Rewrite/Frontend/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":ast",
+@@ -1541,6 +1562,7 @@ cc_library(
+         "lib/Interpreter/*.h",
+     ]),
+     hdrs = glob(["include/clang/Interpreter/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":analysis",
+@@ -1573,7 +1595,7 @@ cc_library(
+         "lib/CodeGen/*.h",
+     ]),
+     hdrs = glob(["include/clang/CodeGen/*.h"]),
+-    copts = ["$(STACK_FRAME_UNLIMITED)"],
++    copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":analysis",
+@@ -1624,6 +1646,7 @@ cc_library(
+         "lib/StaticAnalyzer/Frontend/**/*.h",
+     ]),
+     hdrs = glob(["include/clang/StaticAnalyzer/Frontend/**/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":analysis",
+@@ -1678,6 +1701,7 @@ cc_library(
+     hdrs = glob([
+         "include/clang/Serialization/*.h",
+     ]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/Serialization/*.def",
+@@ -1705,6 +1729,7 @@ cc_library(
+         "lib/FrontendTool/*.h",
+     ]),
+     hdrs = glob(["include/clang/FrontendTool/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":arc_migrate",
+@@ -1726,6 +1751,7 @@ cc_library(
+         "lib/ARCMigrate/*.h",
+     ]),
+     hdrs = glob(["include/clang/ARCMigrate/*.h"]),
++    copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+         ":analysis",
+@@ -1752,6 +1778,7 @@ cc_library(
+         "tools/libclang/*.h",
+     ]),
+     hdrs = glob(["include/clang-c/*.h"]),
++    copts = llvm_stdcxx_copts,
+     defines = ["CINDEX_NO_EXPORTS"],
+     deps = [
+         ":arc_migrate",
+@@ -1783,7 +1810,7 @@ cc_plugin_library(
+     copts = select({
+         "@bazel_tools//src/conditions:windows": ["-D_CINDEX_LIB_"],
+         "//conditions:default": [],
+-    }),
++    }) + llvm_stdcxx_copts,
+     strip_include_prefix = "include",
+     deps = [
+         ":arc_migrate",
+@@ -1912,7 +1939,7 @@ cc_library(
+         # Disable stack frame size checks in the driver because
+         # clang::ensureStackAddressSpace allocates a large array on the stack.
+         "$(STACK_FRAME_UNLIMITED)",
+-    ],
++    ] + llvm_stdcxx_copts,
+     deps = [
+         ":analysis",
+         ":ast",
+@@ -1947,6 +1974,7 @@ cc_library(
+ cc_binary(
+     name = "clang",
+     srcs = [],
++    copts = llvm_stdcxx_copts,
+     stamp = 0,
+     deps = [
+         ":clang-driver",
+diff --git a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+index 85d79a29b571..716d7f5d9645 100644
+--- a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
++++ b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+@@ -4,7 +4,7 @@
+ 
+ load(":template_rule.bzl", "template_rule")
+ load(":tblgen.bzl", "gentbl")
+-load(":config.bzl", "llvm_config_defines")
++load(":config.bzl", "llvm_config_defines", "llvm_stdcxx_copts")
+ load(":targets.bzl", "llvm_targets")
+ load(":enum_targets_gen.bzl", "enum_targets_gen")
+ load(":binary_alias.bzl", "binary_alias")
+@@ -21,10 +21,12 @@ exports_files(["LICENSE.TXT"])
+ # toolchain or the `.bazelrc` file. This is just a workaround until we have a
+ # widely available feature to enable unlimited stack frame instead of using
+ # this `Make` variable.
+-llvm_copts = [
++llvm_c_only_opts = [
+     "$(STACK_FRAME_UNLIMITED)",
+ ]
+ 
++llvm_copts = llvm_c_only_opts + llvm_stdcxx_copts
++
+ enum_targets_gen(
+     name = "targets_def_gen",
+     src = "include/llvm/Config/Targets.def.in",
+@@ -167,10 +169,69 @@ genrule(
+           "echo -e '#undef HANDLE_EXTENSION' >> $@\n",
+ )
+ 
++# TODO: This separation is required to separate out C++ and C opts
++# https://github.com/bazelbuild/bazel/issues/16551
+ cc_library(
+-    name = "Support",
++    name = "Support-c",
+     srcs = glob([
+         "lib/Support/*.c",
++    ]),
++    hdrs = glob([
++        "include/llvm/Support/**/*.h",
++        "include/llvm/ADT/*.h",
++    ]) + [
++        "include/llvm-c/Core.h",
++        "include/llvm-c/DataTypes.h",
++        "include/llvm-c/Deprecated.h",
++        "include/llvm-c/DisassemblerTypes.h",
++        "include/llvm-c/Error.h",
++        "include/llvm-c/ErrorHandling.h",
++        "include/llvm-c/ExternC.h",
++        "include/llvm-c/Support.h",
++        "include/llvm-c/Types.h",
++        "include/llvm/ExecutionEngine/JITSymbol.h",
++        "include/llvm/Support/Extension.def",
++        "include/llvm/Support/VCSRevision.h",
++    ],
++    copts = llvm_c_only_opts,
++    includes = ["include"],
++    linkopts = select({
++        "@bazel_tools//src/conditions:windows": [],
++        "@bazel_tools//src/conditions:freebsd": [
++            "-pthread",
++            "-lexecinfo",
++            "-ldl",
++            "-lm",
++        ],
++        "//conditions:default": [
++            "-pthread",
++            "-ldl",
++            "-lm",
++        ],
++    }),
++    textual_hdrs = glob([
++        "include/llvm/Support/*.def",
++        "lib/Support/*.h",
++        "lib/Support/*.inc",
++    ]),
++    deps = [
++        ":config",
++        ":Demangle",
++        # We unconditionally depend on the custom LLVM terminfo wrapper. This
++        # will be an empty library unless terminfo is enabled, in which case it
++        # will both provide the necessary dependencies and configuration
++        # defines.
++        "@llvm_terminfo//:terminfo",
++        # We unconditionally depend on the custom LLVM zlib wrapper. This will
++        # be an empty library unless zlib is enabled, in which case it will
++        # both provide the necessary dependencies and configuration defines.
++        "@llvm_zlib//:zlib",
++    ],
++)
++
++cc_library(
++    name = "Support",
++    srcs = glob([
+         "lib/Support/*.cpp",
+         "lib/Support/*.h",
+         "lib/Support/*.inc",
+@@ -223,6 +284,7 @@ cc_library(
+         "include/llvm/Support/*.def",
+     ]),
+     deps = [
++        ":Support-c",
+         ":config",
+         ":Demangle",
+         # We unconditionally depend on the custom LLVM terminfo wrapper. This
+diff --git a/utils/bazel/llvm-project-overlay/llvm/cc_plugin_library.bzl b/utils/bazel/llvm-project-overlay/llvm/cc_plugin_library.bzl
+index 2ebd39c630dc..e45bd8a1ce92 100644
+--- a/utils/bazel/llvm-project-overlay/llvm/cc_plugin_library.bzl
++++ b/utils/bazel/llvm-project-overlay/llvm/cc_plugin_library.bzl
+@@ -16,6 +16,7 @@ configure generic aspects of all generated rules such as `testonly`. Lastly,
+ """
+ 
+ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_import", "cc_library")
++load(":config.bzl", "llvm_stdcxx_copts")
+ 
+ def cc_plugin_library(name, srcs, hdrs, include_prefix = None, strip_include_prefix = None, alwayslink = False, features = [], tags = [], testonly = False, **kwargs):
+     # Neither the name of the plugin binary nor tags on whether it is built are
+@@ -29,6 +30,7 @@ def cc_plugin_library(name, srcs, hdrs, include_prefix = None, strip_include_pre
+     dylib_name = name + ".dylib"
+     interface_output_name = name + "_interface_output"
+     import_name = name + "_import"
++    copts = kwargs.pop("copts", [])
+     for impl_name in [dll_name, dylib_name, so_name]:
+         cc_binary(
+             name = impl_name,
+@@ -38,6 +40,7 @@ def cc_plugin_library(name, srcs, hdrs, include_prefix = None, strip_include_pre
+             features = features,
+             tags = ["manual"] + tags,
+             testonly = testonly,
++            copts = copts + llvm_stdcxx_copts,
+             **kwargs
+         )
+     native.filegroup(
+diff --git a/utils/bazel/llvm-project-overlay/llvm/config.bzl b/utils/bazel/llvm-project-overlay/llvm/config.bzl
+index 2046b2645362..736844bfc2d0 100644
+--- a/utils/bazel/llvm-project-overlay/llvm/config.bzl
++++ b/utils/bazel/llvm-project-overlay/llvm/config.bzl
+@@ -97,3 +97,8 @@ llvm_config_defines = os_defines + select({
+     "__STDC_CONSTANT_MACROS",
+     "__STDC_FORMAT_MACROS",
+ ]
++
++llvm_stdcxx_copts = select({
++    "@platforms//os:windows": ["/std:c++17"],
++    "//conditions:default": ["-std=c++17"],
++})
+diff --git a/utils/bazel/llvm-project-overlay/llvm/tblgen.bzl b/utils/bazel/llvm-project-overlay/llvm/tblgen.bzl
+index d43390918e39..e0482a6fd4fa 100644
+--- a/utils/bazel/llvm-project-overlay/llvm/tblgen.bzl
++++ b/utils/bazel/llvm-project-overlay/llvm/tblgen.bzl
+@@ -12,6 +12,8 @@ TODO(chandlerc): Currently this expresses include-based dependencies as
+ correctly understood by the build system.
+ """
+ 
++load(":config.bzl", "llvm_stdcxx_copts")
++
+ def gentbl(
+         name,
+         tblgen,
+@@ -77,5 +79,6 @@ def gentbl(
+             # distinction between these two.
+             hdrs = [f for (_, f) in tbl_outs],
+             features = ["-parse_headers", "-header_modules"],
++            copts = llvm_stdcxx_copts,
+             **kwargs
+         )
diff --git a/extensions/bindgen/3rdparty/patches/llvm-project.incompatible_disallow_empty_glob.patch b/extensions/bindgen/3rdparty/patches/llvm-project.incompatible_disallow_empty_glob.patch
new file mode 100644
index 0000000..001affa
--- /dev/null
+++ b/extensions/bindgen/3rdparty/patches/llvm-project.incompatible_disallow_empty_glob.patch
@@ -0,0 +1,2191 @@
+diff --git a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+index 0c1abe607b58..a382a3bc3d69 100644
+--- a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
++++ b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+@@ -26,7 +26,7 @@ cc_binary(
+     srcs = glob([
+         "utils/TableGen/*.cpp",
+         "utils/TableGen/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = [
+         "$(STACK_FRAME_UNLIMITED)",
+     ] + llvm_stdcxx_copts,
+@@ -68,7 +68,7 @@ gentbl(
+     ],
+     tblgen = ":clang-tblgen",
+     td_file = "include/clang/Basic/Diagnostic.td",
+-    td_srcs = glob(["include/clang/Basic/*.td"]),
++    td_srcs = glob(["include/clang/Basic/*.td"], allow_empty = True),
+ )
+ 
+ gentbl(
+@@ -333,11 +333,11 @@ gentbl(
+ # Table definition files can be used for documentation:
+ filegroup(
+     name = "all_table_defs",
+-    srcs = glob(["include/**/*.td"]),
++    srcs = glob(["include/**/*.td"], allow_empty = True),
+ )
+ 
+ exports_files(
+-    glob(["include/**/*.td"]),
++    glob(["include/**/*.td"], allow_empty = True),
+ )
+ 
+ genrule(
+@@ -384,7 +384,7 @@ cc_library(
+     name = "basic_internal_headers",
+     hdrs = glob([
+         "lib/Basic/*.h",
+-    ]),
++    ], allow_empty = True),
+     features = ["-header_modules"],
+     strip_include_prefix = "lib/Basic",
+ )
+@@ -400,10 +400,10 @@ cc_library(
+         "lib/Basic/*.h",
+         "lib/Basic/Targets/*.cpp",
+         "lib/Basic/Targets/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Basic/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = [
+         "-DHAVE_VCS_VERSION_INC",
+         "$(STACK_FRAME_UNLIMITED)",
+@@ -435,7 +435,7 @@ cc_library(
+         "include/clang/Basic/DiagnosticIndexName.inc",
+     ] + glob([
+         "include/clang/Basic/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":basic_arm_cde_gen",
+         ":basic_arm_fp16_inc_gen",
+@@ -468,10 +468,10 @@ cc_library(
+     srcs = glob([
+         "lib/Lex/*.cpp",
+         "lib/Lex/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Lex/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -694,13 +694,13 @@ cc_library(
+         "lib/AST/*.h",
+         "lib/AST/Interp/*.cpp",
+         "lib/AST/Interp/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "lib/AST/AttrDocTable.inc",
+         "lib/AST/Interp/Opcodes.inc",
+     ],
+     hdrs = glob([
+         "include/clang/AST/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = [
+         # FIXME: This is necessary to allow "file relative" include paths from
+         # non-generated `srcs` to find generated `srcs` above. Bazel should
+@@ -731,7 +731,7 @@ cc_library(
+         "include/clang/AST/StmtNodes.inc",
+     ] + glob([
+         "include/clang/AST/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":ast_attr_gen",
+         ":ast_comment_command_info_gen",
+@@ -760,7 +760,7 @@ cc_library(
+     srcs = glob([
+         "lib/Index/*.cpp",
+         "lib/Index/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Index/*.h",
+         "include/clang-c/*.h",
+@@ -785,15 +785,15 @@ cc_library(
+     srcs = glob([
+         "lib/Analysis/*.cpp",
+         "lib/Analysis/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Analysis/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/Analysis/**/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":ast",
+         ":ast_matchers",
+@@ -843,7 +843,7 @@ cc_library(
+     srcs = glob([
+         "lib/Sema/*.cpp",
+         "lib/Sema/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Sema/*.h",
+         "include/clang-c/*.h",
+@@ -910,11 +910,11 @@ cc_library(
+     ] + glob([
+         "lib/Parse/*.cpp",
+         "lib/Parse/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/clang/Parse/AttrParserStringSwitches.inc",
+         "include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc",
+-    ] + glob(["include/clang/Parse/*.h"]),
++    ] + glob(["include/clang/Parse/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -935,8 +935,8 @@ cc_library(
+     srcs = glob([
+         "lib/ASTMatchers/*.cpp",
+         "lib/ASTMatchers/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/ASTMatchers/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/ASTMatchers/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -952,8 +952,8 @@ cc_library(
+     srcs = glob([
+         "lib/ASTMatchers/Dynamic/*.cpp",
+         "lib/ASTMatchers/Dynamic/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/ASTMatchers/Dynamic/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/ASTMatchers/Dynamic/*.h"], allow_empty = True),
+     copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -970,8 +970,8 @@ cc_library(
+     srcs = glob([
+         "lib/Rewrite/*.cpp",
+         "lib/Rewrite/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/Rewrite/Core/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/Rewrite/Core/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -987,8 +987,8 @@ cc_library(
+     name = "testing",
+     srcs = glob([
+         "lib/Testing/*.cpp",
+-    ]),
+-    hdrs = glob(["include/clang/Testing/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/Testing/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1002,8 +1002,8 @@ cc_library(
+     srcs = glob([
+         "lib/Tooling/Core/*.cpp",
+         "lib/Tooling/Core/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/Tooling/Core/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/Tooling/Core/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1026,7 +1026,7 @@ cc_library(
+     ),
+     hdrs = glob([
+         "include/clang/Tooling/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1048,10 +1048,10 @@ cc_library(
+     name = "tooling_inclusions",
+     srcs = glob([
+         "lib/Tooling/Inclusions/**/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Tooling/Inclusions/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":basic",
+@@ -1067,11 +1067,11 @@ cc_library(
+     srcs = glob([
+         "lib/Tooling/Refactoring/**/*.cpp",
+         "lib/Tooling/Refactoring/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Tooling/Refactoring/**/*.h",
+         "include/clang/Tooling/Refactoring/**/*.def",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+@@ -1104,8 +1104,8 @@ gentbl(
+ 
+ cc_library(
+     name = "tooling_syntax",
+-    srcs = glob(["lib/Tooling/Syntax/**/*.cpp"]),
+-    hdrs = glob(["include/clang/Tooling/Syntax/**/*.h"]),
++    srcs = glob(["lib/Tooling/Syntax/**/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/clang/Tooling/Syntax/**/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+@@ -1119,8 +1119,8 @@ cc_library(
+ 
+ cc_library(
+     name = "tooling_dependency_scanning",
+-    srcs = glob(["lib/Tooling/DependencyScanning/**/*.cpp"]),
+-    hdrs = glob(["include/clang/Tooling/DependencyScanning/**/*.h"]),
++    srcs = glob(["lib/Tooling/DependencyScanning/**/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/clang/Tooling/DependencyScanning/**/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":basic",
+@@ -1135,8 +1135,8 @@ cc_library(
+ 
+ cc_library(
+     name = "transformer",
+-    srcs = glob(["lib/Tooling/Transformer/**/*.cpp"]),
+-    hdrs = glob(["include/clang/Tooling/Transformer/**/*.h"]),
++    srcs = glob(["lib/Tooling/Transformer/**/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/clang/Tooling/Transformer/**/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+@@ -1151,8 +1151,8 @@ cc_library(
+ 
+ cc_library(
+     name = "ast-diff",
+-    srcs = glob(["lib/Tooling/ASTDiff/*.cpp"]),
+-    hdrs = glob(["include/clang/Tooling/ASTDiff/*.h"]),
++    srcs = glob(["lib/Tooling/ASTDiff/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/clang/Tooling/ASTDiff/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+@@ -1164,8 +1164,8 @@ cc_library(
+ 
+ cc_library(
+     name = "crosstu",
+-    srcs = glob(["lib/CrossTU/*.cpp"]),
+-    hdrs = glob(["include/clang/CrossTU/*.h"]),
++    srcs = glob(["lib/CrossTU/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/clang/CrossTU/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     deps = [
+         ":ast",
+@@ -1184,13 +1184,13 @@ cc_library(
+             "lib/Format/*.cpp",
+             "lib/Format/*.h",
+         ],
+-    ),
++    allow_empty = True),
+     hdrs = [
+         "lib/Format/FormatTokenLexer.h",
+         "lib/Format/Macros.h",
+     ] + glob([
+         "include/clang/Format/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1204,8 +1204,8 @@ cc_library(
+ 
+ cc_library(
+     name = "edit",
+-    srcs = glob(["lib/Edit/*.cpp"]),
+-    hdrs = glob(["include/clang/Edit/*.h"]),
++    srcs = glob(["lib/Edit/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/clang/Edit/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1237,15 +1237,15 @@ cc_library(
+     srcs = glob([
+         "lib/StaticAnalyzer/Core/**/*.cpp",
+         "lib/StaticAnalyzer/Core/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/StaticAnalyzer/Core/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/StaticAnalyzer/Core/**/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":analysis",
+         ":ast",
+@@ -1282,12 +1282,12 @@ cc_library(
+     srcs = glob([
+         "lib/StaticAnalyzer/Checkers/**/*.cpp",
+         "lib/StaticAnalyzer/Checkers/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/clang/StaticAnalyzer/Checkers/Checkers.inc",
+     ] + glob([
+         "include/clang/StaticAnalyzer/Checkers/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1332,10 +1332,10 @@ cc_library(
+         exclude = [
+             "lib/Driver/ToolChains/MSVCSetupApi.h",
+         ],
+-    ),
++    allow_empty = True),
+     hdrs = glob([
+         "include/clang/Driver/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = [
+         "include",
+@@ -1349,7 +1349,7 @@ cc_library(
+     }),
+     textual_hdrs = glob([
+         "include/clang/Driver/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":ast",
+         ":basic",
+@@ -1466,7 +1466,7 @@ gentbl(
+ # We generate the set of builtin headers under a special subdirectory in the
+ # 'bin' section of the bazel output so that they can be used as data
+ # dependencies. It requires listing explicitly all the generated inputs here.
+-builtin_headers = glob(["lib/Headers/**/*.h"]) + [
++builtin_headers = glob(["lib/Headers/**/*.h"], allow_empty = True) + [
+     "lib/Headers/arm_cde.h",
+     "lib/Headers/arm_fp16.h",
+     "lib/Headers/arm_mve.h",
+@@ -1495,16 +1495,16 @@ cc_library(
+     srcs = glob([
+         "lib/Frontend/*.cpp",
+         "lib/Frontend/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Frontend/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     data = [":builtin_headers_gen"],
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/Frontend/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":ast",
+         ":basic",
+@@ -1537,8 +1537,8 @@ cc_library(
+     srcs = glob([
+         "lib/Frontend/Rewrite/*.cpp",
+         "lib/Frontend/Rewrite/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/Rewrite/Frontend/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/Rewrite/Frontend/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1560,8 +1560,8 @@ cc_library(
+     srcs = glob([
+         "lib/Interpreter/*.cpp",
+         "lib/Interpreter/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/Interpreter/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/Interpreter/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1593,8 +1593,8 @@ cc_library(
+     srcs = glob([
+         "lib/CodeGen/*.cpp",
+         "lib/CodeGen/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/CodeGen/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/CodeGen/*.h"], allow_empty = True),
+     copts = ["$(STACK_FRAME_UNLIMITED)"] + llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1644,8 +1644,8 @@ cc_library(
+     srcs = glob([
+         "lib/StaticAnalyzer/Frontend/**/*.cpp",
+         "lib/StaticAnalyzer/Frontend/**/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/StaticAnalyzer/Frontend/**/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/StaticAnalyzer/Frontend/**/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1697,15 +1697,15 @@ cc_library(
+     ] + glob([
+         "lib/Serialization/*.cpp",
+         "lib/Serialization/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/clang/Serialization/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/clang/Serialization/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":ast",
+         ":basic",
+@@ -1727,8 +1727,8 @@ cc_library(
+     srcs = glob([
+         "lib/FrontendTool/*.cpp",
+         "lib/FrontendTool/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/FrontendTool/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/FrontendTool/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1749,8 +1749,8 @@ cc_library(
+     srcs = glob([
+         "lib/ARCMigrate/*.cpp",
+         "lib/ARCMigrate/*.h",
+-    ]),
+-    hdrs = glob(["include/clang/ARCMigrate/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/clang/ARCMigrate/*.h"], allow_empty = True),
+     copts = llvm_stdcxx_copts,
+     includes = ["include"],
+     deps = [
+@@ -1776,7 +1776,7 @@ cc_library(
+     srcs = glob([
+         "tools/libclang/*.cpp",
+         "tools/libclang/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob(["include/clang-c/*.h"]),
+     copts = llvm_stdcxx_copts,
+     defines = ["CINDEX_NO_EXPORTS"],
+@@ -1805,7 +1805,7 @@ cc_plugin_library(
+     srcs = glob([
+         "tools/libclang/*.cpp",
+         "tools/libclang/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob(["include/clang-c/*.h"]),
+     copts = select({
+         "@bazel_tools//src/conditions:windows": ["-D_CINDEX_LIB_"],
+@@ -1914,7 +1914,7 @@ cc_binary(
+     srcs = glob([
+         "tools/clang-import-test/*.cpp",
+         "tools/clang-import-test/*.h",
+-    ]),
++    ], allow_empty = True),
+     stamp = 0,
+     deps = [
+         ":ast",
+@@ -1934,7 +1934,7 @@ cc_library(
+     srcs = glob([
+         "tools/driver/*.cpp",
+         "tools/driver/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = [
+         # Disable stack frame size checks in the driver because
+         # clang::ensureStackAddressSpace allocates a large array on the stack.
+@@ -1986,7 +1986,7 @@ cc_binary(
+     srcs = glob([
+         "tools/diagtool/*.cpp",
+         "tools/diagtool/*.h",
+-    ]),
++    ], allow_empty = True),
+     stamp = 0,
+     deps = [
+         ":basic",
+diff --git a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+index 716d7f5d9645..1e3e7a8ff0e7 100644
+--- a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
++++ b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+@@ -39,7 +39,7 @@ enum_targets_gen(
+ llvm_target_asm_printers = [
+     t
+     for t in llvm_targets
+-    if glob(["lib/Target/{}/*AsmPrinter.cpp".format(t)])
++    if glob(["lib/Target/{}/*AsmPrinter.cpp".format(t)], allow_empty = True)
+ ]
+ 
+ enum_targets_gen(
+@@ -54,7 +54,7 @@ enum_targets_gen(
+ llvm_target_asm_parsers = [
+     t
+     for t in llvm_targets
+-    if glob(["lib/Target/{}/AsmParser/CMakeLists.txt".format(t)])
++    if glob(["lib/Target/{}/AsmParser/CMakeLists.txt".format(t)], allow_empty = True)
+ ]
+ 
+ enum_targets_gen(
+@@ -69,7 +69,7 @@ enum_targets_gen(
+ llvm_target_disassemblers = [
+     t
+     for t in llvm_targets
+-    if glob(["lib/Target/{}/Disassembler/CMakeLists.txt".format(t)])
++    if glob(["lib/Target/{}/Disassembler/CMakeLists.txt".format(t)], allow_empty = True)
+ ]
+ 
+ enum_targets_gen(
+@@ -84,7 +84,7 @@ enum_targets_gen(
+ llvm_target_mcas = [
+     t
+     for t in llvm_targets
+-    if glob(["lib/Target/{}/MCA/CMakeLists.txt".format(t)])
++    if glob(["lib/Target/{}/MCA/CMakeLists.txt".format(t)], allow_empty = True)
+ ]
+ 
+ enum_targets_gen(
+@@ -149,8 +149,8 @@ cc_library(
+     srcs = glob([
+         "lib/Demangle/*.cpp",
+         "lib/Demangle/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/Demangle/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Demangle/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [":config"],
+ )
+@@ -175,11 +175,11 @@ cc_library(
+     name = "Support-c",
+     srcs = glob([
+         "lib/Support/*.c",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Support/**/*.h",
+         "include/llvm/ADT/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Core.h",
+         "include/llvm-c/DataTypes.h",
+         "include/llvm-c/Deprecated.h",
+@@ -213,7 +213,7 @@ cc_library(
+         "include/llvm/Support/*.def",
+         "lib/Support/*.h",
+         "lib/Support/*.inc",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":config",
+         ":Demangle",
+@@ -241,16 +241,16 @@ cc_library(
+         "@bazel_tools//src/conditions:windows": glob([
+             "lib/Support/Windows/*.h",
+             "lib/Support/Windows/*.inc",
+-        ]),
++        ], allow_empty = True),
+         "//conditions:default": glob([
+             "lib/Support/Unix/*.h",
+             "lib/Support/Unix/*.inc",
+-        ]),
++        ], allow_empty = True),
+     }),
+     hdrs = glob([
+         "include/llvm/Support/**/*.h",
+         "include/llvm/ADT/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Core.h",
+         "include/llvm-c/DataTypes.h",
+         "include/llvm-c/Deprecated.h",
+@@ -282,7 +282,7 @@ cc_library(
+     }),
+     textual_hdrs = glob([
+         "include/llvm/Support/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":Support-c",
+         ":config",
+@@ -306,8 +306,8 @@ cc_library(
+     srcs = glob([
+         "lib/FileCheck/*.cpp",
+         "lib/FileCheck/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/FileCheck/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/FileCheck/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [":Support"],
+ )
+@@ -317,8 +317,8 @@ cc_library(
+     srcs = glob([
+         "lib/LineEditor/*.cpp",
+         "lib/LineEditor/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/LineEditor/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/LineEditor/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Support",
+@@ -331,8 +331,8 @@ cc_library(
+     srcs = glob([
+         "lib/Option/*.cpp",
+         "lib/Option/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/Option/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Option/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Support",
+@@ -345,8 +345,8 @@ cc_library(
+     srcs = glob([
+         "lib/TableGen/*.cpp",
+         "lib/TableGen/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/TableGen/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/TableGen/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Support",
+@@ -365,7 +365,7 @@ cc_library(
+         exclude = [
+             "include/llvm/LinkAllPasses.h",
+         ],
+-    ) + [
++    allow_empty = True) + [
+         "include/llvm/IR/Value.def",
+         "include/llvm-c/Comdat.h",
+         "include/llvm-c/DebugInfo.h",
+@@ -379,16 +379,16 @@ cc_library(
+         "lib/BinaryFormat/*.cpp",
+         "lib/BinaryFormat/*.def",
+         "lib/BinaryFormat/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/BinaryFormat/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     includes = ["include"],
+     textual_hdrs = glob([
+         "include/llvm/BinaryFormat/*.def",
+         "include/llvm/BinaryFormat/ELFRelocs/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":Support",
+     ],
+@@ -396,7 +396,7 @@ cc_library(
+ 
+ cc_library(
+     name = "DebugInfo",
+-    hdrs = glob(["include/llvm/DebugInfo/*.h"]),
++    hdrs = glob(["include/llvm/DebugInfo/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Object",
+@@ -409,8 +409,8 @@ cc_library(
+     srcs = glob([
+         "lib/DebugInfo/MSF/*.cpp",
+         "lib/DebugInfo/MSF/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/DebugInfo/MSF/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/DebugInfo/MSF/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [":Support"],
+ )
+@@ -420,14 +420,14 @@ cc_library(
+     srcs = glob([
+         "lib/DebugInfo/CodeView/*.cpp",
+         "lib/DebugInfo/CodeView/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/DebugInfo/CodeView/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     textual_hdrs = glob([
+         "include/llvm/DebugInfo/CodeView/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":BinaryFormat",
+         ":DebugInfoMSF",
+@@ -442,11 +442,11 @@ cc_library(
+         "lib/DebugInfo/PDB/*.h",
+         "lib/DebugInfo/PDB/Native/*.cpp",
+         "lib/DebugInfo/PDB/Native/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/DebugInfo/PDB/*.h",
+         "include/llvm/DebugInfo/PDB/Native/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -463,10 +463,10 @@ cc_library(
+     name = "Debuginfod",
+     srcs = glob([
+         "lib/Debuginfod/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Debuginfod/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Support",
+@@ -478,12 +478,12 @@ cc_library(
+     srcs = glob([
+         "lib/MC/*.cpp",
+         "lib/MC/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/MC/*.h",
+         "include/llvm/MC/*.def",
+         "include/llvm/MC/*.inc",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -499,8 +499,8 @@ cc_library(
+     srcs = glob([
+         "lib/DebugInfo/DWARF/*.cpp",
+         "lib/DebugInfo/DWARF/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/DebugInfo/DWARF/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/DebugInfo/DWARF/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -516,8 +516,8 @@ cc_library(
+     srcs = glob([
+         "lib/DebugInfo/Symbolize/*.cpp",
+         "lib/DebugInfo/Symbolize/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/DebugInfo/Symbolize/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/DebugInfo/Symbolize/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -553,7 +553,7 @@ cc_library(
+     hdrs = glob([
+         "utils/TableGen/*.h",
+         "utils/TableGen/GlobalISel/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     features = ["-header_modules"],
+     strip_include_prefix = "utils/TableGen",
+@@ -581,7 +581,7 @@ gentbl(
+     td_srcs = glob([
+         "include/llvm/CodeGen/*.td",
+         "include/llvm/IR/Intrinsics*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ gentbl(
+@@ -592,7 +592,7 @@ gentbl(
+     td_srcs = glob([
+         "include/llvm/CodeGen/*.td",
+         "include/llvm/IR/Intrinsics*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ # Note that the intrinsics are not currently set up so they can be pruned for
+@@ -672,7 +672,7 @@ llvm_target_intrinsics_list = [
+         td_srcs = glob([
+             "include/llvm/CodeGen/*.td",
+             "include/llvm/IR/*.td",
+-        ]),
++        ], allow_empty = True),
+     ),
+ ] for target in llvm_target_intrinsics_list]
+ 
+@@ -692,7 +692,7 @@ cc_library(
+     srcs = glob([
+         "lib/Bitstream/Reader/*.cpp",
+         "lib/Bitstream/Reader/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/llvm/Bitstream/BitCodes.h",
+         "include/llvm/Bitstream/BitstreamReader.h",
+@@ -707,7 +707,7 @@ cc_library(
+     name = "BitstreamWriter",
+     srcs = glob([
+         "lib/Bitstream/Writer/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/llvm/Bitstream/BitCodes.h",
+         "include/llvm/Bitstream/BitstreamWriter.h",
+@@ -726,13 +726,13 @@ cc_library(
+             "lib/Remarks/*.h",
+         ],
+         exclude = ["lib/Remarks/RemarkLinker.cpp"],
+-    ),
++    allow_empty = True),
+     hdrs = glob(
+         [
+             "include/llvm/Remarks/*.h",
+         ],
+         exclude = ["include/llvm/Remarks/RemarkLinker.h"],
+-    ) + [
++    allow_empty = True) + [
+         "include/llvm-c/Remarks.h",
+     ],
+     copts = llvm_copts,
+@@ -767,7 +767,7 @@ cc_library(
+     srcs = glob([
+         "lib/IR/*.cpp",
+         "lib/IR/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob(
+         [
+             "include/llvm/*.h",
+@@ -776,12 +776,12 @@ cc_library(
+         exclude = [
+             "include/llvm/LinkAllPasses.h",
+         ],
+-    ) + [
++    allow_empty = True) + [
+         "include/llvm-c/Comdat.h",
+         "include/llvm-c/DebugInfo.h",
+     ] + [":llvm_intrinsics_headers"],
+     copts = llvm_copts,
+-    textual_hdrs = glob(["include/llvm/IR/*.def"]),
++    textual_hdrs = glob(["include/llvm/IR/*.def"], allow_empty = True),
+     deps = [
+         ":BinaryFormat",
+         ":Remarks",
+@@ -798,7 +798,7 @@ cc_library(
+     srcs = glob([
+         "lib/Bitcode/Reader/*.cpp",
+         "lib/Bitcode/Reader/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/llvm-c/BitReader.h",
+         "include/llvm/Bitcode/BitcodeAnalyzer.h",
+@@ -820,8 +820,8 @@ cc_library(
+     srcs = glob([
+         "lib/MC/MCParser/*.cpp",
+         "lib/MC/MCParser/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/MC/MCParser/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/MC/MCParser/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -835,12 +835,12 @@ cc_library(
+     name = "TextAPI",
+     srcs = glob([
+         "lib/TextAPI/**/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/TextAPI/**/*.h",
+         "include/llvm/TextAPI/**/*.def",
+         "lib/TextAPI/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -853,10 +853,10 @@ cc_library(
+     srcs = glob([
+         "lib/Object/*.cpp",
+         "lib/Object/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Object/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Object.h",
+     ],
+     copts = llvm_copts,
+@@ -877,8 +877,8 @@ cc_library(
+     srcs = glob([
+         "lib/ObjectYAML/*.cpp",
+         "lib/ObjectYAML/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/ObjectYAML/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/ObjectYAML/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -893,11 +893,11 @@ cc_library(
+     srcs = glob([
+         "lib/ProfileData/*.cpp",
+         "lib/ProfileData/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/ProfileData/*.h",
+         "include/llvm/ProfileData/*.inc",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Core",
+@@ -912,8 +912,8 @@ cc_library(
+     srcs = glob([
+         "lib/ProfileData/Coverage/*.cpp",
+         "lib/ProfileData/Coverage/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/ProfileData/Coverage/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/ProfileData/Coverage/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Object",
+@@ -930,20 +930,20 @@ cc_library(
+             "lib/Analysis/*.h",
+             "lib/Analysis/*.def",
+         ],
+-    ),
++    allow_empty = True),
+     hdrs = glob(
+         [
+             "include/llvm/Analysis/*.h",
+             "include/llvm/Analysis/Utils/*.h",
+         ],
+-    ) + [
++    allow_empty = True) + [
+         "include/llvm-c/Analysis.h",
+         "include/llvm-c/Initialization.h",
+     ],
+     copts = llvm_copts,
+     textual_hdrs = glob([
+         "include/llvm/Analysis/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":BinaryFormat",
+         ":Core",
+@@ -959,7 +959,7 @@ cc_library(
+     srcs = glob([
+         "lib/Bitcode/Writer/*.cpp",
+         "lib/Bitcode/Writer/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/llvm-c/BitWriter.h",
+         "include/llvm/Bitcode/BitcodeCommon.h",
+@@ -984,10 +984,10 @@ cc_library(
+     srcs = glob([
+         "lib/Target/*.cpp",
+         "lib/Target/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Target/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Target.h",
+         "include/llvm-c/TargetMachine.h",
+     ],
+@@ -1007,8 +1007,8 @@ cc_library(
+     srcs = glob([
+         "lib/DWP/*.cpp",
+         "lib/DWP/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/DWP/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/DWP/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":DebugInfoDWARF",
+@@ -1024,8 +1024,8 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/Utils/*.cpp",
+         "lib/Transforms/Utils/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/Transforms/Utils/*.h"]) + [
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Transforms/Utils/*.h"], allow_empty = True) + [
+         "include/llvm/Transforms/Utils.h",
+         "include/llvm-c/Transforms/Utils.h",
+     ],
+@@ -1053,7 +1053,7 @@ gentbl(
+     td_srcs = glob([
+         "include/llvm/CodeGen/*.td",
+         "include/llvm/IR/Intrinsics*.td",
+-    ]) + [
++    ], allow_empty = True) + [
+         "lib/Target/AMDGPU/InstCombineTables.td",
+         "include/llvm/TableGen/SearchableTable.td",
+     ],
+@@ -1064,8 +1064,8 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/InstCombine/*.cpp",
+         "lib/Transforms/InstCombine/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/Transforms/InstCombine/*.h"]) + [
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Transforms/InstCombine/*.h"], allow_empty = True) + [
+         "include/llvm-c/Transforms/InstCombine.h",
+     ],
+     copts = llvm_copts,
+@@ -1085,7 +1085,7 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/AggressiveInstCombine/*.cpp",
+         "lib/Transforms/AggressiveInstCombine/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/llvm-c/Transforms/AggressiveInstCombine.h",
+         "include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h",
+@@ -1105,8 +1105,8 @@ cc_library(
+         "lib/Transforms/Instrumentation/*.cpp",
+         "lib/Transforms/Instrumentation/*.h",
+         "lib/Transforms/Instrumentation/*.inc",
+-    ]),
+-    hdrs = glob(["include/llvm/Transforms/Instrumentation/*.h"]) + [
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Transforms/Instrumentation/*.h"], allow_empty = True) + [
+         "include/llvm/Transforms/Instrumentation.h",
+     ],
+     copts = llvm_copts,
+@@ -1127,7 +1127,7 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/ObjCARC/*.cpp",
+         "lib/Transforms/ObjCARC/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = ["include/llvm/Transforms/ObjCARC.h"],
+     copts = llvm_copts,
+     deps = [
+@@ -1145,8 +1145,8 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/Scalar/*.cpp",
+         "lib/Transforms/Scalar/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/Transforms/Scalar/*.h"]) + [
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Transforms/Scalar/*.h"], allow_empty = True) + [
+         "include/llvm-c/Transforms/Scalar.h",
+         "include/llvm/Transforms/Scalar.h",
+     ],
+@@ -1169,10 +1169,10 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/Vectorize/*.cpp",
+         "lib/Transforms/Vectorize/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Transforms/Vectorize/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Transforms/Vectorize.h",
+         "include/llvm/Transforms/Vectorize.h",
+     ],
+@@ -1192,7 +1192,7 @@ filegroup(
+     srcs = glob([
+         "include/llvm/Frontend/OpenMP/*.td",
+         "include/llvm/Frontend/Directive/*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ gentbl(
+@@ -1221,19 +1221,19 @@ cc_library(
+     name = "FrontendOpenMP",
+     srcs = glob([
+         "lib/Frontend/OpenMP/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Frontend/OpenMP/*.h",
+         "include/llvm/Frontend/OpenMP/OMP/*.h",
+         "include/llvm/Frontend/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm/Frontend/OpenMP/OMP.h.inc",
+         "include/llvm/Frontend/OpenMP/OMP.inc",
+     ],
+     copts = llvm_copts,
+     textual_hdrs = glob([
+         "include/llvm/Frontend/OpenMP/*.def",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":Analysis",
+         ":Core",
+@@ -1248,7 +1248,7 @@ filegroup(
+     srcs = glob([
+         "include/llvm/Frontend/OpenACC/*.td",
+         "include/llvm/Frontend/Directive/*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ gentbl(
+@@ -1277,12 +1277,12 @@ cc_library(
+     name = "FrontendOpenACC",
+     srcs = glob([
+         "lib/Frontend/OpenACC/*.cpp",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm/Frontend/OpenACC/ACC.inc",
+     ],
+     hdrs = glob([
+         "include/llvm/Frontend/OpenACC/*.h",
+-    ]) + ["include/llvm/Frontend/OpenACC/ACC.h.inc"],
++    ], allow_empty = True) + ["include/llvm/Frontend/OpenACC/ACC.h.inc"],
+     copts = llvm_copts,
+     deps = [
+         ":Analysis",
+@@ -1297,8 +1297,8 @@ cc_library(
+     srcs = glob([
+         "lib/AsmParser/*.cpp",
+         "lib/AsmParser/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/AsmParser/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/AsmParser/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -1312,10 +1312,10 @@ cc_library(
+     srcs = glob([
+         "lib/IRReader/*.cpp",
+         "lib/IRReader/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/IRReader/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/IRReader.h",
+     ],
+     copts = llvm_copts,
+@@ -1333,10 +1333,10 @@ cc_library(
+     srcs = glob([
+         "lib/Linker/*.cpp",
+         "lib/Linker/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Linker/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Linker.h",
+     ],
+     copts = llvm_copts,
+@@ -1353,10 +1353,10 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/IPO/*.cpp",
+         "lib/Transforms/IPO/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Transforms/IPO/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Transforms/IPO.h",
+         "include/llvm-c/Transforms/PassManagerBuilder.h",
+         "include/llvm/Transforms/IPO.h",
+@@ -1391,7 +1391,7 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/CFGuard/*.cpp",
+         "lib/Transforms/CFGuard/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = ["include/llvm/Transforms/CFGuard.h"],
+     copts = llvm_copts,
+     deps = [
+@@ -1405,7 +1405,7 @@ cc_library(
+     srcs = glob([
+         "lib/Transforms/Coroutines/*.cpp",
+         "lib/Transforms/Coroutines/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = [
+         "include/llvm-c/Transforms/Coroutines.h",
+         "include/llvm/Transforms/Coroutines.h",
+@@ -1445,7 +1445,7 @@ cc_library(
+ cc_library(
+     name = "asm_printer_defs",
+     copts = llvm_copts,
+-    textual_hdrs = glob(["lib/CodeGen/AsmPrinter/*.def"]),
++    textual_hdrs = glob(["lib/CodeGen/AsmPrinter/*.def"], allow_empty = True),
+ )
+ 
+ cc_library(
+@@ -1457,19 +1457,19 @@ cc_library(
+             "lib/CodeGen/SelectionDAG/*.cpp",
+             "lib/CodeGen/SelectionDAG/*.h",
+         ],
+-    ),
++    allow_empty = True),
+     hdrs = [
+         "include/llvm/LinkAllPasses.h",
+     ] + glob(
+         [
+             "include/llvm/CodeGen/**/*.h",
+         ],
+-    ),
++    allow_empty = True),
+     copts = llvm_copts,
+     textual_hdrs = glob([
+         "include/llvm/CodeGen/**/*.def",
+         "include/llvm/CodeGen/**/*.inc",
+-    ]),
++    ], allow_empty = True),
+     deps = [
+         ":Analysis",
+         ":AsmParser",
+@@ -1498,10 +1498,10 @@ cc_library(
+     srcs = glob([
+         "lib/MC/MCDisassembler/*.cpp",
+         "lib/MC/MCDisassembler/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/MC/MCDisassembler/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/Disassembler.h",
+     ],
+     copts = llvm_copts,
+@@ -1818,7 +1818,7 @@ filegroup(
+         "include/llvm/TableGen/*.td",
+         "include/llvm/Target/*.td",
+         "include/llvm/Target/GlobalISel/*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ gentbl(
+@@ -1836,7 +1836,7 @@ gentbl(
+         ":common_target_td_sources",
+     ] + glob([
+         "lib/Target/AMDGPU/*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ gentbl(
+@@ -1858,7 +1858,7 @@ gentbl(
+         ":common_target_td_sources",
+     ] + glob([
+         "lib/Target/AMDGPU/*.td",
+-    ]),
++    ], allow_empty = True),
+ )
+ 
+ [[
+@@ -1880,7 +1880,7 @@ gentbl(
+         ] + glob([
+             "lib/Target/" + target["name"] + "/*.td",
+             "lib/Target/" + target["name"] + "/GISel/*.td",
+-        ]),
++        ], allow_empty = True),
+         deps = target.get("tbl_deps", []),
+     )],
+     [cc_library(
+@@ -1914,7 +1914,7 @@ gentbl(
+             # library. This mixture is likely incompatible with header modules.
+             "lib/Target/" + target["name"] + "/MCTargetDesc/*.h",
+             "lib/Target/" + target["name"] + "/Utils/*.h",
+-        ]),
++        ], allow_empty = True),
+         hdrs = glob([
+             "lib/Target/" + target["name"] + "/MCTargetDesc/*.h",
+             "lib/Target/" + target["name"] + "/Utils/*.h",
+@@ -1938,7 +1938,7 @@ gentbl(
+             # distinction between these two.
+             "lib/Target/" + target["name"] + "/*.def",
+             "lib/Target/" + target["name"] + "/*.inc",
+-        ]),
++        ], allow_empty = True),
+         copts = llvm_copts,
+         features = [
+             "-parse_headers",
+@@ -1967,14 +1967,14 @@ gentbl(
+             "lib/Target/" + target["name"] + "/GISel/*.h",
+             "lib/Target/" + target["name"] + "/*.cpp",
+             "lib/Target/" + target["name"] + "/*.h",
+-        ]),
++        ], allow_empty = True),
+         hdrs = ["lib/Target/" + target["name"] + "/" + target["short_name"] + ".h"],
+         copts = llvm_copts,
+         strip_include_prefix = "lib/Target/" + target["name"],
+         textual_hdrs = glob([
+             "lib/Target/" + target["name"] + "/*.def",
+             "lib/Target/" + target["name"] + "/*.inc",
+-        ]),
++        ], allow_empty = True),
+         deps = [
+             ":Analysis",
+             ":BinaryFormat",
+@@ -2001,7 +2001,7 @@ gentbl(
+         srcs = glob([
+             "lib/Target/" + target["name"] + "/AsmParser/*.cpp",
+             "lib/Target/" + target["name"] + "/AsmParser/*.h",
+-        ]),
++        ], allow_empty = True),
+         copts = llvm_copts,
+         deps = [
+             ":BinaryFormat",
+@@ -2031,7 +2031,7 @@ gentbl(
+         # distinction between these two.
+         hdrs = glob([
+             "lib/Target/" + target["name"] + "/Disassembler/*.h",
+-        ]),
++        ], allow_empty = True),
+         features = [
+             "-parse_headers",
+             "-header_modules",
+@@ -2044,7 +2044,7 @@ gentbl(
+             "lib/Target/" + target["name"] + "/Disassembler/*.cpp",
+             "lib/Target/" + target["name"] + "/Disassembler/*.c",
+             "lib/Target/" + target["name"] + "/Disassembler/*.h",
+-        ]),
++        ], allow_empty = True),
+         copts = llvm_copts,
+         deps = [
+             ":CodeGen",
+@@ -2065,7 +2065,7 @@ gentbl(
+             "lib/Target/" + target["name"] + "/MCA/*.cpp",
+             "lib/Target/" + target["name"] + "/MCA/*.c",
+             "lib/Target/" + target["name"] + "/MCA/*.h",
+-        ]),
++        ], allow_empty = True),
+         copts = llvm_copts,
+         deps = [
+             ":MC",
+@@ -2126,10 +2126,10 @@ cc_library(
+     srcs = glob([
+         "lib/Analysis/ML/*.cpp",
+         "lib/Analysis/ML/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Analysis/ML/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Analysis",
+@@ -2143,8 +2143,8 @@ cc_library(
+     srcs = glob([
+         "lib/Passes/*.cpp",
+         "lib/Passes/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/Passes/*.h"]) + ["include/llvm-c/Transforms/PassBuilder.h"],
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/Passes/*.h"], allow_empty = True) + ["include/llvm-c/Transforms/PassBuilder.h"],
+     copts = llvm_copts,
+     deps = [
+         ":Analysis",
+@@ -2166,11 +2166,11 @@ cc_library(
+     srcs = glob([
+         "lib/LTO/*.cpp",
+         "lib/LTO/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/LTO/*.h",
+         "include/llvm/LTO/legacy/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/lto.h",
+     ],
+     copts = llvm_copts,
+@@ -2203,7 +2203,7 @@ cc_library(
+         "lib/ExecutionEngine/RuntimeDyld/*.h",
+         "lib/ExecutionEngine/RuntimeDyld/Targets/*.cpp",
+         "lib/ExecutionEngine/RuntimeDyld/Targets/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob(
+         [
+             "include/llvm/ExecutionEngine/*.h",
+@@ -2212,7 +2212,7 @@ cc_library(
+             "include/llvm/ExecutionEngine/MCJIT*.h",
+             "include/llvm/ExecutionEngine/OProfileWrapper.h",
+         ],
+-    ) + [
++    allow_empty = True) + [
+         "include/llvm-c/ExecutionEngine.h",
+     ],
+     copts = llvm_copts,
+@@ -2237,7 +2237,7 @@ cc_library(
+     srcs = glob([
+         "lib/ExecutionEngine/Interpreter/*.cpp",
+         "lib/ExecutionEngine/Interpreter/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = ["include/llvm/ExecutionEngine/Interpreter.h"],
+     copts = llvm_copts,
+     deps = [
+@@ -2255,10 +2255,10 @@ cc_library(
+     srcs = glob([
+         "lib/ExecutionEngine/JITLink/*.cpp",
+         "lib/ExecutionEngine/JITLink/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/ExecutionEngine/JITLink/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":ExecutionEngine",
+@@ -2274,8 +2274,8 @@ cc_library(
+     srcs = glob([
+         "lib/ExecutionEngine/MCJIT/*.cpp",
+         "lib/ExecutionEngine/MCJIT/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/ExecutionEngine/MCJIT*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/ExecutionEngine/MCJIT*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":CodeGen",
+@@ -2294,11 +2294,11 @@ cc_library(
+     srcs = glob([
+         "lib/ExecutionEngine/Orc/*.cpp",
+         "lib/ExecutionEngine/Orc/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/ExecutionEngine/Orc/*.h",
+         "include/llvm/ExecutionEngine/Orc/RPC/*.h",
+-    ]) + [
++    ], allow_empty = True) + [
+         "include/llvm-c/LLJIT.h",
+         "include/llvm-c/Orc.h",
+         "include/llvm-c/OrcEE.h",
+@@ -2325,10 +2325,10 @@ cc_library(
+     name = "OrcShared",
+     srcs = glob([
+         "lib/ExecutionEngine/Orc/Shared/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/ExecutionEngine/Orc/Shared/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -2350,10 +2350,10 @@ cc_library(
+     srcs = glob([
+         "lib/ExecutionEngine/Orc/TargetProcess/*.cpp",
+         "lib/ExecutionEngine/Orc/TargetProcess/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/ExecutionEngine/Orc/TargetProcess/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":BinaryFormat",
+@@ -2376,8 +2376,8 @@ cc_library(
+     srcs = glob([
+         "lib/DWARFLinker/*.cpp",
+         "lib/DWARFLinker/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/DWARFLinker/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/DWARFLinker/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":CodeGen",
+@@ -2442,10 +2442,10 @@ cc_library(
+     srcs = glob([
+         "lib/InterfaceStub/*.cpp",
+         "lib/InterfaceStub/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/InterfaceStub/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Object",
+@@ -2458,10 +2458,10 @@ cc_library(
+     name = "WindowsManifest",
+     srcs = glob([
+         "lib/WindowsManifest/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/WindowsManifest/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     linkopts = [
+         # Libxml2 is required to process Windows manifests. Without this,
+@@ -2499,10 +2499,10 @@ cc_library(
+     srcs = glob([
+         "lib/MCA/**/*.cpp",
+         "lib/MCA/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/MCA/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":MC",
+@@ -2526,8 +2526,8 @@ cc_library(
+     srcs = glob([
+         "lib/XRay/*.cpp",
+         "lib/XRay/*.h",
+-    ]),
+-    hdrs = glob(["include/llvm/XRay/*.h"]),
++    ], allow_empty = True),
++    hdrs = glob(["include/llvm/XRay/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Object",
+@@ -2594,7 +2594,7 @@ cc_binary(
+     srcs = glob([
+         "tools/dsymutil/*.cpp",
+         "tools/dsymutil/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2620,7 +2620,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llc/*.cpp",
+         "tools/llc/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2644,7 +2644,7 @@ cc_binary(
+     srcs = glob([
+         "tools/lli/*.cpp",
+         "tools/lli/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     # ll scripts rely on symbols from dependent
+     # libraries being resolvable.
+@@ -2689,7 +2689,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-ar/*.cpp",
+         "tools/llvm-ar/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2725,7 +2725,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-as/*.cpp",
+         "tools/llvm-as/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2742,7 +2742,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-bcanalyzer/*.cpp",
+         "tools/llvm-bcanalyzer/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2755,7 +2755,7 @@ cc_binary(
+     name = "llvm-cat",
+     srcs = glob([
+         "tools/llvm-cat/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2773,7 +2773,7 @@ cc_binary(
+         "tools/llvm-cfi-verify/*.cpp",
+         "tools/llvm-cfi-verify/lib/*.cpp",
+         "tools/llvm-cfi-verify/lib/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2796,7 +2796,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-cov/*.cpp",
+         "tools/llvm-cov/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2825,7 +2825,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-cvtres/*.cpp",
+         "tools/llvm-cvtres/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2841,7 +2841,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-cxxdump/*.cpp",
+         "tools/llvm-cxxdump/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2857,7 +2857,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-cxxmap/*.cpp",
+         "tools/llvm-cxxmap/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2882,7 +2882,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-cxxfilt/*.cpp",
+         "tools/llvm-cxxfilt/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2898,7 +2898,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-dis/*.cpp",
+         "tools/llvm-dis/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2914,7 +2914,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-dwarfdump/*.cpp",
+         "tools/llvm-dwarfdump/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2933,7 +2933,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-dwp/*.cpp",
+         "tools/llvm-dwp/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2974,7 +2974,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-extract/*.cpp",
+         "tools/llvm-extract/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -2993,7 +2993,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-ifs/*.cpp",
+         "tools/llvm-ifs/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3009,7 +3009,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-jitlink/*.cpp",
+         "tools/llvm-jitlink/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     # Make symbols from the standard library dynamically resolvable.
+     linkopts = select({
+@@ -3048,7 +3048,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-libtool-darwin/*.cpp",
+         "tools/llvm-libtool-darwin/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3063,7 +3063,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-link/*.cpp",
+         "tools/llvm-link/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3112,7 +3112,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-lto/*.cpp",
+         "tools/llvm-lto/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3134,7 +3134,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-lto2/*.cpp",
+         "tools/llvm-lto2/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3153,7 +3153,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-mc/*.cpp",
+         "tools/llvm-mc/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3175,7 +3175,7 @@ cc_binary(
+         "tools/llvm-mca/*.h",
+         "tools/llvm-mca/Views/*.cpp",
+         "tools/llvm-mca/Views/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3208,7 +3208,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-ml/*.cpp",
+         "tools/llvm-ml/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3227,7 +3227,7 @@ cc_binary(
+     name = "llvm-modextract",
+     srcs = glob([
+         "tools/llvm-modextract/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3255,7 +3255,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-mt/*.cpp",
+         "tools/llvm-mt/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     tags = [
+@@ -3287,7 +3287,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-nm/*.cpp",
+         "tools/llvm-nm/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3369,7 +3369,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-stress/*.cpp",
+         "tools/llvm-stress/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3425,7 +3425,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-objdump/*.cpp",
+         "tools/llvm-objdump/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3482,7 +3482,7 @@ cc_binary(
+     name = "llvm-opt-report",
+     srcs = glob([
+         "tools/llvm-opt-report/*.cpp",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3498,7 +3498,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-pdbutil/*.cpp",
+         "tools/llvm-pdbutil/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3518,7 +3518,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-profdata/*.cpp",
+         "tools/llvm-profdata/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3533,7 +3533,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-profgen/*.cpp",
+         "tools/llvm-profgen/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3578,7 +3578,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-rc/*.cpp",
+         "tools/llvm-rc/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3613,7 +3613,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-readobj/*.cpp",
+         "tools/llvm-readobj/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3641,7 +3641,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-reduce/**/*.cpp",
+         "tools/llvm-reduce/**/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     includes = ["tools/llvm-reduce"],
+     stamp = 0,
+@@ -3658,7 +3658,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-rtdyld/*.cpp",
+         "tools/llvm-rtdyld/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3691,7 +3691,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-size/*.cpp",
+         "tools/llvm-size/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3707,7 +3707,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-split/*.cpp",
+         "tools/llvm-split/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3736,7 +3736,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-strings/*.cpp",
+         "tools/llvm-strings/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3764,7 +3764,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-symbolizer/*.cpp",
+         "tools/llvm-symbolizer/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3789,7 +3789,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-undname/*.cpp",
+         "tools/llvm-undname/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3804,7 +3804,7 @@ cc_binary(
+         "tools/llvm-xray/*.cpp",
+         "tools/llvm-xray/*.cc",
+         "tools/llvm-xray/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3821,7 +3821,7 @@ cc_binary(
+     srcs = glob([
+         "tools/opt/*.cpp",
+         "tools/opt/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     linkopts = select({
+         "@bazel_tools//src/conditions:windows": [],
+@@ -3854,7 +3854,7 @@ cc_binary(
+     srcs = glob([
+         "tools/sancov/*.cpp",
+         "tools/sancov/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3875,7 +3875,7 @@ cc_binary(
+     srcs = glob([
+         "tools/sanstats/*.cpp",
+         "tools/sanstats/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3890,7 +3890,7 @@ cc_binary(
+     srcs = glob([
+         "tools/split-file/*.cpp",
+         "tools/split-file/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -3904,8 +3904,8 @@ cc_binary(
+ cc_library(
+     name = "FuzzMutate",
+     testonly = True,
+-    srcs = glob(["lib/FuzzMutate/*.cpp"]),
+-    hdrs = glob(["include/llvm/FuzzMutate/*.h"]),
++    srcs = glob(["lib/FuzzMutate/*.cpp"], allow_empty = True),
++    hdrs = glob(["include/llvm/FuzzMutate/*.h"], allow_empty = True),
+     copts = llvm_copts,
+     includes = ["include"],
+     deps = [
+@@ -3921,8 +3921,8 @@ cc_library(
+ cc_library(
+     name = "Diff",
+     testonly = True,
+-    srcs = glob(["tools/llvm-diff/lib/*.cpp"]),
+-    hdrs = glob(["tools/llvm-diff/lib/*.h"]),
++    srcs = glob(["tools/llvm-diff/lib/*.cpp"], allow_empty = True),
++    hdrs = glob(["tools/llvm-diff/lib/*.h"], allow_empty = True),
+     deps = [
+         ":Core",
+         ":Support",
+@@ -4023,7 +4023,7 @@ cc_library(
+ py_binary(
+     name = "lit",
+     testonly = True,
+-    srcs = ["utils/lit/lit.py"] + glob(["utils/lit/lit/**/*.py"]),
++    srcs = ["utils/lit/lit.py"] + glob(["utils/lit/lit/**/*.py"], allow_empty = True),
+ )
+ 
+ cc_library(
+@@ -4032,10 +4032,10 @@ cc_library(
+     srcs = glob([
+         "lib/Testing/Support/*.cpp",
+         "lib/Testing/Support/*.h",
+-    ]),
++    ], allow_empty = True),
+     hdrs = glob([
+         "include/llvm/Testing/Support/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     deps = [
+         ":Support",
+@@ -4054,7 +4054,7 @@ cc_binary(
+     srcs = glob([
+         "utils/FileCheck/*.cpp",
+         "utils/FileCheck/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [":FileCheckLib"],
+@@ -4065,7 +4065,7 @@ cc_binary(
+     srcs = glob([
+         "tools/bugpoint/*.cpp",
+         "tools/bugpoint/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -4093,7 +4093,7 @@ cc_binary(
+     srcs = glob([
+         "utils/count/*.c",
+         "utils/count/*.h",
+-    ]),
++    ], allow_empty = True),
+     stamp = 0,
+ )
+ 
+@@ -4103,7 +4103,7 @@ cc_binary(
+     srcs = glob([
+         "tools/lli/ChildTarget/*.cpp",
+         "tools/lli/ChildTarget/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     # The tests load code into this binary that expect to see symbols
+     # from libstdc++ such as __cxa_begin_catch and _ZTIi. The latter
+@@ -4164,7 +4164,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-diff/*.cpp",
+         "tools/llvm-diff/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -4181,7 +4181,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-isel-fuzzer/*.cpp",
+         "tools/llvm-isel-fuzzer/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -4225,7 +4225,7 @@ cc_binary(
+     srcs = glob([
+         "utils/not/*.cpp",
+         "utils/not/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [":Support"],
+@@ -4287,7 +4287,7 @@ cc_binary(
+     srcs = glob([
+         "tools/llvm-tli-checker/*.cpp",
+         "tools/llvm-tli-checker/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -4314,7 +4314,7 @@ cc_binary(
+     srcs = glob([
+         "tools/obj2yaml/*.cpp",
+         "tools/obj2yaml/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -4332,7 +4332,7 @@ cc_binary(
+     srcs = glob([
+         "tools/verify-uselistorder/*.cpp",
+         "tools/verify-uselistorder/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
+@@ -4351,7 +4351,7 @@ cc_binary(
+     srcs = glob([
+         "tools/yaml2obj/*.cpp",
+         "tools/yaml2obj/*.h",
+-    ]),
++    ], allow_empty = True),
+     copts = llvm_copts,
+     stamp = 0,
+     deps = [
diff --git a/extensions/bindgen/BUILD.bazel b/extensions/bindgen/BUILD.bazel
new file mode 100644
index 0000000..ee68d3c
--- /dev/null
+++ b/extensions/bindgen/BUILD.bazel
@@ -0,0 +1,35 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+load("//:defs.bzl", "rust_bindgen_toolchain")
+
+package(default_visibility = ["//visibility:public"])
+
+exports_files([
+    "defs.bzl",
+])
+
+toolchain_type(
+    name = "toolchain_type",
+)
+
+bzl_library(
+    name = "bzl_lib",
+    srcs = glob(["**/*.bzl"]),
+    deps = [
+        "//3rdparty:bzl_lib",
+        "//private:bzl_lib",
+        "@rules_rust//rust:bzl_lib",
+    ],
+)
+
+rust_bindgen_toolchain(
+    name = "default_bindgen_toolchain_impl",
+    bindgen = "//3rdparty:bindgen",
+    clang = "@llvm-project//clang:clang",
+    libclang = "@llvm-project//clang:libclang",
+)
+
+toolchain(
+    name = "default_bindgen_toolchain",
+    toolchain = "default_bindgen_toolchain_impl",
+    toolchain_type = "//:toolchain_type",
+)
diff --git a/extensions/bindgen/MODULE.bazel b/extensions/bindgen/MODULE.bazel
new file mode 100644
index 0000000..87470c9
--- /dev/null
+++ b/extensions/bindgen/MODULE.bazel
@@ -0,0 +1,41 @@
+"""bazelbuild/rules_rust/extensions/bindgen"""
+
+module(
+    name = "rules_rust_bindgen",
+    version = "0.54.1",
+)
+
+bazel_dep(
+    name = "rules_rust",
+    version = "0.54.1",
+)
+local_path_override(
+    module_name = "rules_rust",
+    path = "../..",
+)
+
+bazel_dep(
+    name = "bazel_skylib",
+    version = "1.5.0",
+)
+bazel_dep(
+    name = "rules_cc",
+    version = "0.0.9",
+)
+
+rust_ext_bindgen = use_extension("//:extensions.bzl", "rust_ext_bindgen")
+use_repo(
+    rust_ext_bindgen,
+    "llvm-raw",
+    "rules_rust_bindgen_deps",
+    "rules_rust_bindgen_deps__bindgen-0.70.1",
+    "rules_rust_bindgen_deps__bindgen-cli-0.70.1",
+    "rules_rust_bindgen_deps__clang-sys-1.8.1",
+    "rules_rust_bindgen_deps__clap-4.5.17",
+    "rules_rust_bindgen_deps__clap_complete-4.5.26",
+    "rules_rust_bindgen_deps__env_logger-0.10.2",
+)
+
+register_toolchains(
+    "//:default_bindgen_toolchain",
+)
diff --git a/extensions/bindgen/README.md b/extensions/bindgen/README.md
new file mode 100644
index 0000000..a56d141
--- /dev/null
+++ b/extensions/bindgen/README.md
@@ -0,0 +1,8 @@
+# Rust Bindgen Rules
+
+These rules are for using [Bindgen][bindgen] to generate [Rust][rust] bindings to C (and some C++) libraries.
+
+See the `rules_rust` documentation for more info: https://bazelbuild.github.io/rules_rust/rust_bindgen.html
+
+[rust]: http://www.rust-lang.org/
+[bindgen]: https://github.com/rust-lang/rust-bindgen
diff --git a/extensions/bindgen/WORKSPACE.bazel b/extensions/bindgen/WORKSPACE.bazel
new file mode 100644
index 0000000..94b61b5
--- /dev/null
+++ b/extensions/bindgen/WORKSPACE.bazel
@@ -0,0 +1,60 @@
+workspace(name = "rules_rust_bindgen")
+
+# Users of `rules_rust` will commonly be unable to load it
+# using a `local_repository`. Instead, to setup the rules,
+# please see https://bazelbuild.github.io/rules_rust/#setup
+local_repository(
+    name = "rules_rust",
+    path = "../..",
+)
+
+load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
+
+rules_rust_dependencies()
+
+rust_register_toolchains()
+
+load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
+
+crate_universe_dependencies(bootstrap = True)
+
+load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies")
+
+rust_analyzer_dependencies()
+
+load("//:repositories.bzl", "rust_bindgen_dependencies", "rust_bindgen_register_toolchains")
+
+rust_bindgen_dependencies()
+
+rust_bindgen_register_toolchains()
+
+load("//:transitive_repositories.bzl", "rust_bindgen_transitive_dependencies")
+
+rust_bindgen_transitive_dependencies()
+
+load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+
+bazel_skylib_workspace()
+
+# --- end stardoc
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+    name = "bazel_ci_rules",
+    sha256 = "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e",
+    strip_prefix = "bazelci_rules-1.0.0",
+    url = "https://github.com/bazelbuild/continuous-integration/releases/download/rules-1.0.0/bazelci_rules-1.0.0.tar.gz",
+)
+
+# To run with RBE on Bazel CI, uncomment the following lines.
+#
+# load("@bazel_ci_rules//:rbe_repo.bzl", "rbe_preconfig")
+# rbe_preconfig(name = "buildkite_config", toolchain = "ubuntu2004-bazel-java11")
+
+http_archive(
+    name = "rules_testing",
+    sha256 = "02c62574631876a4e3b02a1820cb51167bb9cdcdea2381b2fa9d9b8b11c407c4",
+    strip_prefix = "rules_testing-0.6.0",
+    url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz",
+)
diff --git a/extensions/bindgen/WORKSPACE.bzlmod b/extensions/bindgen/WORKSPACE.bzlmod
new file mode 100644
index 0000000..b5d37b5
--- /dev/null
+++ b/extensions/bindgen/WORKSPACE.bzlmod
@@ -0,0 +1 @@
+workspace(name = "rules_rust_bindgen")
diff --git a/extensions/bindgen/defs.bzl b/extensions/bindgen/defs.bzl
new file mode 100644
index 0000000..786d727
--- /dev/null
+++ b/extensions/bindgen/defs.bzl
@@ -0,0 +1,52 @@
+"""# rules_rust_bindgen
+
+These rules are for using [Bindgen][bindgen] to generate [Rust][rust] bindings to C (and some C++) libraries.
+
+[rust]: http://www.rust-lang.org/
+[bindgen]: https://github.com/rust-lang/rust-bindgen
+
+## Rules
+
+- [rust_bindgen](#rust_bindgen)
+- [rust_bindgen_library](#rust_bindgen_library)
+- [rust_bindgen_toolchain](#rust_bindgen_toolchain)
+
+## Setup
+
+To use the Rust bindgen rules, add the following to your `WORKSPACE` file to add the
+external repositories for the Rust bindgen toolchain (in addition to the [rust rules setup](https://bazelbuild.github.io/rules_rust/#setup)):
+
+```python
+load("@rules_rust_bindgen//:repositories.bzl", "rust_bindgen_dependencies", "rust_bindgen_register_toolchains")
+
+rust_bindgen_dependencies()
+
+rust_bindgen_register_toolchains()
+
+load("@rules_rust_bindgen//:transitive_repositories.bzl", "rust_bindgen_transitive_dependencies")
+
+rust_bindgen_transitive_dependencies()
+```
+
+Bindgen aims to be as hermetic as possible so will end up building `libclang` from [llvm-project][llvm_proj] from
+source. If this is found to be undesirable then no Bindgen related calls should be added to your WORKSPACE and instead
+users should define their own repositories using something akin to [crate_universe][cra_uni] and define their own
+toolchains following the instructions for [rust_bindgen_toolchain](#rust_bindgen_toolchain).
+
+[llvm_proj]: https://github.com/llvm/llvm-project
+[cra_uni]: https://bazelbuild.github.io/rules_rust/crate_universe.html
+
+---
+---
+"""
+
+load(
+    "//private:bindgen.bzl",
+    _rust_bindgen = "rust_bindgen",
+    _rust_bindgen_library = "rust_bindgen_library",
+    _rust_bindgen_toolchain = "rust_bindgen_toolchain",
+)
+
+rust_bindgen = _rust_bindgen
+rust_bindgen_library = _rust_bindgen_library
+rust_bindgen_toolchain = _rust_bindgen_toolchain
diff --git a/extensions/bindgen/extensions.bzl b/extensions/bindgen/extensions.bzl
new file mode 100644
index 0000000..b480a59
--- /dev/null
+++ b/extensions/bindgen/extensions.bzl
@@ -0,0 +1,23 @@
+"""Bzlmod module extensions"""
+
+load("//:repositories.bzl", "rust_bindgen_dependencies")
+
+def _rust_ext_bindgen_impl(module_ctx):
+    # This should contain the subset of WORKSPACE.bazel that defines
+    # repositories.
+    direct_deps = []
+
+    direct_deps.extend(rust_bindgen_dependencies())
+
+    # is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
+    # dependencies are only relevant for module extensions that can be used
+    # by other MODULES.
+    return module_ctx.extension_metadata(
+        root_module_direct_deps = [repo.repo for repo in direct_deps],
+        root_module_direct_dev_deps = [],
+    )
+
+rust_ext_bindgen = module_extension(
+    doc = "Dependencies for the rules_rust_bindgen extension.",
+    implementation = _rust_ext_bindgen_impl,
+)
diff --git a/extensions/bindgen/private/BUILD.bazel b/extensions/bindgen/private/BUILD.bazel
new file mode 100644
index 0000000..e49e2d7
--- /dev/null
+++ b/extensions/bindgen/private/BUILD.bazel
@@ -0,0 +1,12 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+
+bzl_library(
+    name = "bzl_lib",
+    srcs = glob(["**/*.bzl"]) + [
+        "@rules_cc//cc:bzl_srcs",
+    ],
+    visibility = ["//:__pkg__"],
+    deps = [
+        "@rules_rust//rust:bzl_lib",
+    ],
+)
diff --git a/extensions/bindgen/private/bindgen.bzl b/extensions/bindgen/private/bindgen.bzl
new file mode 100644
index 0000000..3a44d17
--- /dev/null
+++ b/extensions/bindgen/private/bindgen.bzl
@@ -0,0 +1,487 @@
+# Copyright 2019 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Rust Bindgen rules"""
+
+load(
+    "@bazel_tools//tools/build_defs/cc:action_names.bzl",
+    "CPP_COMPILE_ACTION_NAME",
+)
+load("@rules_cc//cc:defs.bzl", "CcInfo", "cc_library")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+load("@rules_rust//rust:rust_common.bzl", "BuildInfo")
+
+# buildifier: disable=bzl-visibility
+load("@rules_rust//rust/private:rustc.bzl", "get_linker_and_args")
+
+# buildifier: disable=bzl-visibility
+load("@rules_rust//rust/private:utils.bzl", "find_cc_toolchain", "get_lib_name_default", "get_preferred_artifact")
+
+# TODO(hlopko): use the more robust logic from rustc.bzl also here, through a reasonable API.
+def _get_libs_for_static_executable(dep):
+    """find the libraries used for linking a static executable.
+
+    Args:
+        dep (Target): A cc_library target.
+
+    Returns:
+        depset: A depset[File]
+    """
+    linker_inputs = dep[CcInfo].linking_context.linker_inputs.to_list()
+    return depset([get_preferred_artifact(lib, use_pic = False) for li in linker_inputs for lib in li.libraries])
+
+def rust_bindgen_library(
+        name,
+        header,
+        cc_lib,
+        bindgen_flags = None,
+        bindgen_features = None,
+        clang_flags = None,
+        wrap_static_fns = False,
+        **kwargs):
+    """Generates a rust source file for `header`, and builds a rust_library.
+
+    Arguments are the same as `rust_bindgen`, and `kwargs` are passed directly to rust_library.
+
+    Args:
+        name (str): A unique name for this target.
+        header (str): The label of the .h file to generate bindings for.
+        cc_lib (str): The label of the cc_library that contains the .h file. This is used to find the transitive includes.
+        bindgen_flags (list, optional): Flags to pass directly to the bindgen executable. See https://rust-lang.github.io/rust-bindgen/ for details.
+        bindgen_features (list, optional): The `features` attribute for the `rust_bindgen` target.
+        clang_flags (list, optional): Flags to pass directly to the clang executable.
+        wrap_static_fns (bool): Whether to create a separate .c file for static fns. Requires nightly toolchain, and a header that actually needs this feature (otherwise bindgen won't generate the file and Bazel complains",
+        **kwargs: Arguments to forward to the underlying `rust_library` rule.
+    """
+
+    tags = kwargs.get("tags") or []
+    if "tags" in kwargs:
+        kwargs.pop("tags")
+
+    sub_tags = tags + ([] if "manual" in tags else ["manual"])
+
+    bindgen_kwargs = {}
+    for shared in (
+        "target_compatible_with",
+        "exec_compatible_with",
+    ):
+        if shared in kwargs:
+            bindgen_kwargs.update({shared: kwargs[shared]})
+    if "merge_cc_lib_objects_into_rlib" in kwargs:
+        bindgen_kwargs.update({"merge_cc_lib_objects_into_rlib": kwargs["merge_cc_lib_objects_into_rlib"]})
+        kwargs.pop("merge_cc_lib_objects_into_rlib")
+
+    rust_bindgen(
+        name = name + "__bindgen",
+        header = header,
+        cc_lib = cc_lib,
+        bindgen_flags = bindgen_flags or [],
+        features = bindgen_features,
+        clang_flags = clang_flags or [],
+        tags = sub_tags,
+        wrap_static_fns = wrap_static_fns,
+        **bindgen_kwargs
+    )
+
+    tags = depset(tags + ["__bindgen", "no-clippy", "no-rustfmt"]).to_list()
+
+    deps = kwargs.get("deps") or []
+    if "deps" in kwargs:
+        kwargs.pop("deps")
+
+    if wrap_static_fns:
+        native.filegroup(
+            name = name + "__bindgen_c_thunks",
+            srcs = [":" + name + "__bindgen"],
+            output_group = "bindgen_c_thunks",
+        )
+
+        cc_library(
+            name = name + "__bindgen_c_thunks_library",
+            srcs = [":" + name + "__bindgen_c_thunks"],
+            deps = [cc_lib],
+        )
+
+    rust_library(
+        name = name,
+        srcs = [name + "__bindgen.rs"],
+        deps = deps + [":" + name + "__bindgen"] + ([":" + name + "__bindgen_c_thunks_library"] if wrap_static_fns else []),
+        tags = tags,
+        **kwargs
+    )
+
+def _get_user_link_flags(cc_lib):
+    linker_flags = []
+
+    for linker_input in cc_lib[CcInfo].linking_context.linker_inputs.to_list():
+        linker_flags.extend(linker_input.user_link_flags)
+
+    return linker_flags
+
+def _generate_cc_link_build_info(ctx, cc_lib):
+    """Produce the eqivilant cargo_build_script providers for use in linking the library.
+
+    Args:
+        ctx (ctx): The rule's context object
+        cc_lib (Target): The `rust_bindgen.cc_lib` target.
+
+    Returns:
+        The `BuildInfo` provider.
+    """
+    compile_data = []
+
+    rustc_flags = []
+    linker_search_paths = []
+
+    for linker_input in cc_lib[CcInfo].linking_context.linker_inputs.to_list():
+        for lib in linker_input.libraries:
+            if lib.static_library:
+                rustc_flags.append("-lstatic={}".format(get_lib_name_default(lib.static_library)))
+                linker_search_paths.append(lib.static_library.dirname)
+                compile_data.append(lib.static_library)
+            elif lib.pic_static_library:
+                rustc_flags.append("-lstatic={}".format(get_lib_name_default(lib.pic_static_library)))
+                linker_search_paths.append(lib.pic_static_library.dirname)
+                compile_data.append(lib.pic_static_library)
+
+    if not compile_data:
+        fail("No static libraries found in {}".format(
+            cc_lib.label,
+        ))
+
+    rustc_flags_file = ctx.actions.declare_file("{}.rustc_flags".format(ctx.label.name))
+    ctx.actions.write(
+        output = rustc_flags_file,
+        content = "\n".join(rustc_flags),
+    )
+
+    link_search_paths = ctx.actions.declare_file("{}.link_search_paths".format(ctx.label.name))
+    ctx.actions.write(
+        output = link_search_paths,
+        content = "\n".join([
+            "-Lnative=${{pwd}}/{}".format(path)
+            for path in depset(linker_search_paths).to_list()
+        ]),
+    )
+
+    return BuildInfo(
+        compile_data = depset(compile_data),
+        dep_env = None,
+        flags = rustc_flags_file,
+        # linker_flags is provided via CcInfo
+        linker_flags = None,
+        link_search_paths = link_search_paths,
+        out_dir = None,
+        rustc_env = None,
+    )
+
+def _rust_bindgen_impl(ctx):
+    # nb. We can't grab the cc_library`s direct headers, so a header must be provided.
+    cc_lib = ctx.attr.cc_lib
+    header = ctx.file.header
+    cc_header_list = ctx.attr.cc_lib[CcInfo].compilation_context.headers.to_list()
+    if header not in cc_header_list:
+        fail("Header {} is not in {}'s transitive headers.".format(ctx.attr.header, cc_lib), "header")
+
+    toolchain = ctx.toolchains[Label("//:toolchain_type")]
+    bindgen_bin = toolchain.bindgen
+    clang_bin = toolchain.clang
+    libclang = toolchain.libclang
+    libstdcxx = toolchain.libstdcxx
+
+    output = ctx.outputs.out
+
+    cc_toolchain, feature_configuration = find_cc_toolchain(ctx = ctx)
+
+    tools = depset(([clang_bin] if clang_bin else []), transitive = [cc_toolchain.all_files])
+
+    # libclang should only have 1 output file
+    libclang_dir = _get_libs_for_static_executable(libclang).to_list()[0].dirname
+
+    env = {
+        "LIBCLANG_PATH": libclang_dir,
+        "RUST_BACKTRACE": "1",
+    }
+    if clang_bin:
+        env["CLANG_PATH"] = clang_bin.path
+
+    args = ctx.actions.args()
+
+    # Configure Bindgen Arguments
+    args.add_all(ctx.attr.bindgen_flags)
+    args.add(header)
+    args.add("--output", output)
+
+    wrap_static_fns = getattr(ctx.attr, "wrap_static_fns", False)
+
+    c_output = None
+    if wrap_static_fns:
+        if "--wrap-static-fns" in ctx.attr.bindgen_flags:
+            fail("Do not pass `--wrap-static-fns` to `bindgen_flags, it's added automatically." +
+                 "The generated C file is accesible in the `bindgen_c_thunks` output group.")
+        c_output = ctx.actions.declare_file(ctx.label.name + ".bindgen_c_thunks.c")
+        args.add("--experimental")
+        args.add("--wrap-static-fns")
+        args.add("--wrap-static-fns-path")
+        args.add(c_output.path)
+
+    # Vanilla usage of bindgen produces formatted output, here we do the same if we have `rustfmt` in our toolchain.
+    rustfmt_toolchain = ctx.toolchains[Label("@rules_rust//rust/rustfmt:toolchain_type")]
+    if rustfmt_toolchain and toolchain.default_rustfmt:
+        # Bindgen is able to find rustfmt using the RUSTFMT environment variable
+        env.update({"RUSTFMT": rustfmt_toolchain.rustfmt.path})
+        tools = depset(transitive = [tools, rustfmt_toolchain.all_files])
+    else:
+        args.add("--no-rustfmt-bindings")
+
+    # Configure Clang Arguments
+    args.add("--")
+
+    compile_variables = cc_common.create_compile_variables(
+        cc_toolchain = cc_toolchain,
+        feature_configuration = feature_configuration,
+        include_directories = cc_lib[CcInfo].compilation_context.includes,
+        quote_include_directories = cc_lib[CcInfo].compilation_context.quote_includes,
+        system_include_directories = depset(
+            transitive = [cc_lib[CcInfo].compilation_context.system_includes],
+            direct = cc_toolchain.built_in_include_directories,
+        ),
+        user_compile_flags = ctx.attr.clang_flags,
+    )
+    compile_flags = cc_common.get_memory_inefficient_command_line(
+        feature_configuration = feature_configuration,
+        action_name = CPP_COMPILE_ACTION_NAME,
+        variables = compile_variables,
+    )
+
+    # Bindgen forcibly uses clang.
+    # It's possible that the selected cc_toolchain isn't clang, and may specify flags which clang doesn't recognise.
+    # Ideally we could depend on a more specific toolchain, requesting one which is specifically clang via some constraint.
+    # Unfortunately, we can't currently rely on this, so instead we filter only to flags we know clang supports.
+    # We can add extra flags here as needed.
+    flags_known_to_clang = (
+        "-I",
+        "-iquote",
+        "-isystem",
+        "--sysroot",
+        "--gcc-toolchain",
+        "--target",
+        "-W",
+        "--system-header-prefix",
+        "--no-system-header-prefix",
+        "-Xclang",
+        "-D",
+        "-no-canonical-prefixes",
+        "-nostd",
+    )
+    open_arg = False
+    for arg in compile_flags:
+        if open_arg:
+            args.add(arg)
+            open_arg = False
+            continue
+
+        # The cc_toolchain merged these flags into its returned flags - don't strip these out.
+        if arg in ctx.attr.clang_flags:
+            args.add(arg)
+            continue
+
+        if not arg.startswith(flags_known_to_clang):
+            continue
+
+        args.add(arg)
+
+        if arg in flags_known_to_clang:
+            open_arg = True
+            continue
+
+    _, _, linker_env = get_linker_and_args(ctx, "bin", cc_toolchain, feature_configuration, None)
+    env.update(**linker_env)
+
+    # Set the dynamic linker search path so that clang uses the libstdcxx from the toolchain.
+    # DYLD_LIBRARY_PATH is LD_LIBRARY_PATH on macOS.
+    if libstdcxx:
+        env["LD_LIBRARY_PATH"] = ":".join([f.dirname for f in _get_libs_for_static_executable(libstdcxx).to_list()])
+        env["DYLD_LIBRARY_PATH"] = env["LD_LIBRARY_PATH"]
+
+    ctx.actions.run(
+        executable = bindgen_bin,
+        inputs = depset(
+            [header],
+            transitive = [
+                cc_lib[CcInfo].compilation_context.headers,
+                _get_libs_for_static_executable(libclang),
+            ] + ([
+                _get_libs_for_static_executable(libstdcxx),
+            ] if libstdcxx else []),
+        ),
+        outputs = [output] + ([c_output] if wrap_static_fns else []),
+        mnemonic = "RustBindgen",
+        progress_message = "Generating bindings for {}..".format(header.path),
+        env = env,
+        arguments = [args],
+        tools = tools,
+        # ctx.actions.run now require (through a buildifier check) that we
+        # specify this
+        toolchain = None,
+    )
+
+    if ctx.attr.merge_cc_lib_objects_into_rlib:
+        providers = [
+            _generate_cc_link_build_info(ctx, cc_lib),
+            # As in https://github.com/bazelbuild/rules_rust/pull/2361, we want
+            # to link cc_lib to the direct parent (rlib) using `-lstatic=<cc_lib>`
+            # rustc flag. Hence, we do not need to provide the whole CcInfo of
+            # cc_lib because it will cause the downstream binary to link the cc_lib
+            # again. The CcInfo here only contains the custom link flags (i.e.
+            # linkopts attribute) specified by users in cc_lib.
+            CcInfo(
+                linking_context = cc_common.create_linking_context(
+                    linker_inputs = depset([cc_common.create_linker_input(
+                        owner = ctx.label,
+                        user_link_flags = _get_user_link_flags(cc_lib),
+                    )]),
+                ),
+            ),
+        ]
+    else:
+        providers = [cc_lib[CcInfo]]
+
+    return providers + [
+        OutputGroupInfo(
+            bindgen_bindings = depset([output]),
+            bindgen_c_thunks = depset(([c_output] if wrap_static_fns else [])),
+        ),
+    ]
+
+rust_bindgen = rule(
+    doc = "Generates a rust source file from a cc_library and a header.",
+    implementation = _rust_bindgen_impl,
+    attrs = {
+        "bindgen_flags": attr.string_list(
+            doc = "Flags to pass directly to the bindgen executable. See https://rust-lang.github.io/rust-bindgen/ for details.",
+        ),
+        "cc_lib": attr.label(
+            doc = "The cc_library that contains the `.h` file. This is used to find the transitive includes.",
+            providers = [CcInfo],
+            mandatory = True,
+        ),
+        "clang_flags": attr.string_list(
+            doc = "Flags to pass directly to the clang executable.",
+        ),
+        "header": attr.label(
+            doc = "The `.h` file to generate bindings for.",
+            allow_single_file = True,
+            mandatory = True,
+        ),
+        "merge_cc_lib_objects_into_rlib": attr.bool(
+            doc = ("When True, objects from `cc_lib` will be copied into the `rlib` archive produced by " +
+                   "the rust_library that depends on this `rust_bindgen` rule (using `BuildInfo` provider)"),
+            default = True,
+        ),
+        "wrap_static_fns": attr.bool(
+            doc = "Whether to create a separate .c file for static fns. Requires nightly toolchain, and a header that actually needs this feature (otherwise bindgen won't generate the file and Bazel complains).",
+            default = False,
+        ),
+        "_cc_toolchain": attr.label(
+            default = Label("@bazel_tools//tools/cpp:current_cc_toolchain"),
+        ),
+        "_process_wrapper": attr.label(
+            default = Label("@rules_rust//util/process_wrapper"),
+            executable = True,
+            allow_single_file = True,
+            cfg = "exec",
+        ),
+    },
+    outputs = {"out": "%{name}.rs"},
+    fragments = ["cpp"],
+    toolchains = [
+        config_common.toolchain_type("//:toolchain_type"),
+        config_common.toolchain_type("@rules_rust//rust:toolchain_type"),
+        config_common.toolchain_type("@rules_rust//rust/rustfmt:toolchain_type", mandatory = False),
+        config_common.toolchain_type("@bazel_tools//tools/cpp:toolchain_type"),
+    ],
+)
+
+def _rust_bindgen_toolchain_impl(ctx):
+    return platform_common.ToolchainInfo(
+        bindgen = ctx.executable.bindgen,
+        clang = ctx.executable.clang,
+        libclang = ctx.attr.libclang,
+        libstdcxx = ctx.attr.libstdcxx,
+        default_rustfmt = ctx.attr.default_rustfmt,
+    )
+
+rust_bindgen_toolchain = rule(
+    _rust_bindgen_toolchain_impl,
+    doc = """\
+The tools required for the `rust_bindgen` rule.
+
+This rule depends on the [`bindgen`](https://crates.io/crates/bindgen) binary crate, and it
+in turn depends on both a clang binary and the clang library. To obtain these dependencies,
+`rust_bindgen_dependencies` imports bindgen and its dependencies.
+
+```python
+load("@rules_rust_bindgen//:defs.bzl", "rust_bindgen_toolchain")
+
+rust_bindgen_toolchain(
+    name = "bindgen_toolchain_impl",
+    bindgen = "//my/rust:bindgen",
+    clang = "//my/clang:clang",
+    libclang = "//my/clang:libclang.so",
+    libstdcxx = "//my/cpp:libstdc++",
+)
+
+toolchain(
+    name = "bindgen_toolchain",
+    toolchain = "bindgen_toolchain_impl",
+    toolchain_type = "@rules_rust_bindgen//:toolchain_type",
+)
+```
+
+This toolchain will then need to be registered in the current `WORKSPACE`.
+For additional information, see the [Bazel toolchains documentation](https://docs.bazel.build/versions/master/toolchains.html).
+""",
+    attrs = {
+        "bindgen": attr.label(
+            doc = "The label of a `bindgen` executable.",
+            executable = True,
+            cfg = "exec",
+        ),
+        "clang": attr.label(
+            doc = "The label of a `clang` executable.",
+            executable = True,
+            cfg = "exec",
+            allow_files = True,
+        ),
+        "default_rustfmt": attr.bool(
+            doc = "If set, `rust_bindgen` targets will always format generated sources with `rustfmt`.",
+            mandatory = False,
+            default = True,
+        ),
+        "libclang": attr.label(
+            doc = "A cc_library that provides bindgen's runtime dependency on libclang.",
+            cfg = "exec",
+            providers = [CcInfo],
+            allow_files = True,
+        ),
+        "libstdcxx": attr.label(
+            doc = "A cc_library that satisfies libclang's libstdc++ dependency. This is used to make the execution of clang hermetic. If None, system libraries will be used instead.",
+            cfg = "exec",
+            providers = [CcInfo],
+            mandatory = False,
+            allow_files = True,
+        ),
+    },
+)
diff --git a/extensions/bindgen/repositories.bzl b/extensions/bindgen/repositories.bzl
new file mode 100644
index 0000000..7f1eaa2
--- /dev/null
+++ b/extensions/bindgen/repositories.bzl
@@ -0,0 +1,86 @@
+# Copyright 2019 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Dependencies for the Rust `bindgen` rules"""
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
+load("//3rdparty/crates:defs.bzl", "crate_repositories")
+
+BINDGEN_VERSION = "0.70.1"
+
+# buildifier: disable=unnamed-macro
+def rust_bindgen_dependencies():
+    """Declare dependencies needed for bindgen.
+
+    Returns:
+        list[struct(repo=str, is_dev_dep=bool)]: A list of the repositories
+        defined by this macro.
+    """
+
+    maybe(
+        http_archive,
+        name = "llvm-raw",
+        urls = ["https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/llvm-project-14.0.6.src.tar.xz"],
+        strip_prefix = "llvm-project-14.0.6.src",
+        sha256 = "8b3cfd7bc695bd6cea0f37f53f0981f34f87496e79e2529874fd03a2f9dd3a8a",
+        build_file_content = "# empty",
+        patch_args = ["-p1"],
+        patches = [
+            Label("//3rdparty/patches:llvm-project.cxx17.patch"),
+            Label("//3rdparty/patches:llvm-project.incompatible_disallow_empty_glob.patch"),
+        ],
+    )
+
+    maybe(
+        http_archive,
+        name = "zlib",
+        build_file = Label("//3rdparty:BUILD.zlib.bazel"),
+        sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
+        strip_prefix = "zlib-1.2.11",
+        urls = [
+            "https://zlib.net/zlib-1.2.11.tar.gz",
+            "https://storage.googleapis.com/mirror.tensorflow.org/zlib.net/zlib-1.2.11.tar.gz",
+        ],
+    )
+
+    bindgen_name = "rules_rust_bindgen__bindgen-cli-{}".format(BINDGEN_VERSION)
+    maybe(
+        http_archive,
+        name = bindgen_name,
+        integrity = "sha256-Mz+eRtWNh1r7irkjwi27fmF4j1WtKPK12Yv5ENkL1ao=",
+        type = "tar.gz",
+        urls = ["https://static.crates.io/crates/bindgen-cli/bindgen-cli-{}.crate".format(BINDGEN_VERSION)],
+        strip_prefix = "bindgen-cli-{}".format(BINDGEN_VERSION),
+        build_file = Label("//3rdparty:BUILD.bindgen-cli.bazel"),
+    )
+
+    direct_deps = [
+        struct(repo = "llvm-raw", is_dev_dep = False),
+        struct(repo = bindgen_name, is_dev_dep = False),
+    ]
+    direct_deps.extend(crate_repositories())
+    return direct_deps
+
+# buildifier: disable=unnamed-macro
+def rust_bindgen_register_toolchains(register_toolchains = True):
+    """Registers the default toolchains for the `rules_rust` [bindgen][bg] rules.
+
+    [bg]: https://rust-lang.github.io/rust-bindgen/
+
+    Args:
+        register_toolchains (bool, optional): Whether or not to register toolchains.
+    """
+    if register_toolchains:
+        native.register_toolchains(str(Label("//:default_bindgen_toolchain")))
diff --git a/extensions/bindgen/test/BUILD.bazel b/extensions/bindgen/test/BUILD.bazel
new file mode 100644
index 0000000..c0263d2
--- /dev/null
+++ b/extensions/bindgen/test/BUILD.bazel
@@ -0,0 +1,3 @@
+load(":bindgen_test.bzl", "bindgen_test_suite")
+
+bindgen_test_suite(name = "cc_bindgen_test_suite")
diff --git a/extensions/bindgen/test/analysis/BUILD.bazel b/extensions/bindgen/test/analysis/BUILD.bazel
new file mode 100644
index 0000000..c0263d2
--- /dev/null
+++ b/extensions/bindgen/test/analysis/BUILD.bazel
@@ -0,0 +1,3 @@
+load(":bindgen_test.bzl", "bindgen_test_suite")
+
+bindgen_test_suite(name = "cc_bindgen_test_suite")
diff --git a/extensions/bindgen/test/analysis/bindgen_test.bzl b/extensions/bindgen/test/analysis/bindgen_test.bzl
new file mode 100644
index 0000000..7cb0e72
--- /dev/null
+++ b/extensions/bindgen/test/analysis/bindgen_test.bzl
@@ -0,0 +1,111 @@
+"""Analysis test for for rust_bindgen_library rule."""
+
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load("@rules_rust//rust:defs.bzl", "rust_binary")
+load("@rules_rust_bindgen//:defs.bzl", "rust_bindgen_library")
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
+
+def _test_cc_linkopt_impl(env, target):
+    # Assert
+    env.expect.that_action(target.actions[0]) \
+        .contains_at_least_args(["--codegen=link-arg=-shared"])
+
+def _test_cc_linkopt(name):
+    # Arrange
+    cc_library(
+        name = name + "_cc",
+        srcs = ["simple.cc"],
+        hdrs = ["simple.h"],
+        linkopts = ["-shared"],
+        tags = ["manual"],
+    )
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        edition = "2021",
+    )
+    rust_binary(
+        name = name + "_rust_binary",
+        srcs = ["main.rs"],
+        deps = [name + "_rust_bindgen"],
+        tags = ["manual"],
+        edition = "2021",
+    )
+
+    # Act
+    # TODO: Use targets attr to also verify `rust_bindgen_library` not having
+    # the linkopt after https://github.com/bazelbuild/rules_testing/issues/67
+    # is released
+    analysis_test(
+        name = name,
+        target = name + "_rust_binary",
+        impl = _test_cc_linkopt_impl,
+    )
+
+def _test_cc_lib_object_merging_impl(env, target):
+    env.expect.that_int(len(target.actions)).is_greater_than(2)
+    env.expect.that_action(target.actions[0]).mnemonic().contains("RustBindgen")
+    env.expect.that_action(target.actions[1]).mnemonic().contains("FileWrite")
+    env.expect.that_action(target.actions[1]).content().contains("-lstatic=test_cc_lib_object_merging_cc")
+    env.expect.that_action(target.actions[2]).mnemonic().contains("FileWrite")
+    env.expect.that_action(target.actions[2]).content().contains("-Lnative=")
+
+def _test_cc_lib_object_merging_disabled_impl(env, target):
+    # no FileWrite actions writing arg files registered
+    env.expect.that_int(len(target.actions)).is_greater_than(0)
+    env.expect.that_action(target.actions[0]).mnemonic().contains("RustBindgen")
+
+def _test_cc_lib_object_merging(name):
+    cc_library(
+        name = name + "_cc",
+        hdrs = ["simple.h"],
+        srcs = ["simple.cc"],
+    )
+
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        edition = "2021",
+    )
+
+    analysis_test(
+        name = name,
+        target = name + "_rust_bindgen__bindgen",
+        impl = _test_cc_lib_object_merging_impl,
+    )
+
+def _test_cc_lib_object_merging_disabled(name):
+    cc_library(
+        name = name + "_cc",
+        hdrs = ["simple.h"],
+        srcs = ["simple.cc"],
+    )
+
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        merge_cc_lib_objects_into_rlib = False,
+        edition = "2021",
+    )
+
+    analysis_test(
+        name = name,
+        target = name + "_rust_bindgen__bindgen",
+        impl = _test_cc_lib_object_merging_disabled_impl,
+    )
+
+def bindgen_test_suite(name):
+    test_suite(
+        name = name,
+        tests = [
+            _test_cc_linkopt,
+            _test_cc_lib_object_merging,
+            _test_cc_lib_object_merging_disabled,
+        ],
+    )
diff --git a/extensions/bindgen/test/analysis/main.rs b/extensions/bindgen/test/analysis/main.rs
new file mode 100644
index 0000000..c5a415d
--- /dev/null
+++ b/extensions/bindgen/test/analysis/main.rs
@@ -0,0 +1,7 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
+fn main() {
+    println!("Hello world");
+}
diff --git a/extensions/bindgen/test/analysis/simple.cc b/extensions/bindgen/test/analysis/simple.cc
new file mode 100644
index 0000000..1cd12d5
--- /dev/null
+++ b/extensions/bindgen/test/analysis/simple.cc
@@ -0,0 +1,4 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
diff --git a/extensions/bindgen/test/analysis/simple.h b/extensions/bindgen/test/analysis/simple.h
new file mode 100644
index 0000000..1cd12d5
--- /dev/null
+++ b/extensions/bindgen/test/analysis/simple.h
@@ -0,0 +1,4 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
diff --git a/extensions/bindgen/test/bindgen_test.bzl b/extensions/bindgen/test/bindgen_test.bzl
new file mode 100644
index 0000000..7cb0e72
--- /dev/null
+++ b/extensions/bindgen/test/bindgen_test.bzl
@@ -0,0 +1,111 @@
+"""Analysis test for for rust_bindgen_library rule."""
+
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load("@rules_rust//rust:defs.bzl", "rust_binary")
+load("@rules_rust_bindgen//:defs.bzl", "rust_bindgen_library")
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
+
+def _test_cc_linkopt_impl(env, target):
+    # Assert
+    env.expect.that_action(target.actions[0]) \
+        .contains_at_least_args(["--codegen=link-arg=-shared"])
+
+def _test_cc_linkopt(name):
+    # Arrange
+    cc_library(
+        name = name + "_cc",
+        srcs = ["simple.cc"],
+        hdrs = ["simple.h"],
+        linkopts = ["-shared"],
+        tags = ["manual"],
+    )
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        edition = "2021",
+    )
+    rust_binary(
+        name = name + "_rust_binary",
+        srcs = ["main.rs"],
+        deps = [name + "_rust_bindgen"],
+        tags = ["manual"],
+        edition = "2021",
+    )
+
+    # Act
+    # TODO: Use targets attr to also verify `rust_bindgen_library` not having
+    # the linkopt after https://github.com/bazelbuild/rules_testing/issues/67
+    # is released
+    analysis_test(
+        name = name,
+        target = name + "_rust_binary",
+        impl = _test_cc_linkopt_impl,
+    )
+
+def _test_cc_lib_object_merging_impl(env, target):
+    env.expect.that_int(len(target.actions)).is_greater_than(2)
+    env.expect.that_action(target.actions[0]).mnemonic().contains("RustBindgen")
+    env.expect.that_action(target.actions[1]).mnemonic().contains("FileWrite")
+    env.expect.that_action(target.actions[1]).content().contains("-lstatic=test_cc_lib_object_merging_cc")
+    env.expect.that_action(target.actions[2]).mnemonic().contains("FileWrite")
+    env.expect.that_action(target.actions[2]).content().contains("-Lnative=")
+
+def _test_cc_lib_object_merging_disabled_impl(env, target):
+    # no FileWrite actions writing arg files registered
+    env.expect.that_int(len(target.actions)).is_greater_than(0)
+    env.expect.that_action(target.actions[0]).mnemonic().contains("RustBindgen")
+
+def _test_cc_lib_object_merging(name):
+    cc_library(
+        name = name + "_cc",
+        hdrs = ["simple.h"],
+        srcs = ["simple.cc"],
+    )
+
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        edition = "2021",
+    )
+
+    analysis_test(
+        name = name,
+        target = name + "_rust_bindgen__bindgen",
+        impl = _test_cc_lib_object_merging_impl,
+    )
+
+def _test_cc_lib_object_merging_disabled(name):
+    cc_library(
+        name = name + "_cc",
+        hdrs = ["simple.h"],
+        srcs = ["simple.cc"],
+    )
+
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        merge_cc_lib_objects_into_rlib = False,
+        edition = "2021",
+    )
+
+    analysis_test(
+        name = name,
+        target = name + "_rust_bindgen__bindgen",
+        impl = _test_cc_lib_object_merging_disabled_impl,
+    )
+
+def bindgen_test_suite(name):
+    test_suite(
+        name = name,
+        tests = [
+            _test_cc_linkopt,
+            _test_cc_lib_object_merging,
+            _test_cc_lib_object_merging_disabled,
+        ],
+    )
diff --git a/extensions/bindgen/test/integration/BUILD.bazel b/extensions/bindgen/test/integration/BUILD.bazel
new file mode 100644
index 0000000..db6430d
--- /dev/null
+++ b/extensions/bindgen/test/integration/BUILD.bazel
@@ -0,0 +1,26 @@
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_test")
+load("@rules_rust_bindgen//:defs.bzl", "rust_bindgen_library")
+
+rust_bindgen_library(
+    name = "simple_bindgen",
+    bindgen_flags = [
+        "--allowlist-function=simple_.*",
+        "--allowlist-var=SIMPLE_.*",
+    ],
+    cc_lib = "//test/integration/simple",
+    edition = "2021",
+    header = "//test/integration/simple:simple.h",
+    wrap_static_fns = True,
+)
+
+rust_binary(
+    name = "simple_example",
+    srcs = ["main.rs"],
+    edition = "2021",
+    deps = [":simple_bindgen"],
+)
+
+rust_test(
+    name = "simple_test",
+    crate = ":simple_example",
+)
diff --git a/extensions/bindgen/test/integration/main.rs b/extensions/bindgen/test/integration/main.rs
new file mode 100644
index 0000000..d466824
--- /dev/null
+++ b/extensions/bindgen/test/integration/main.rs
@@ -0,0 +1,28 @@
+//! rust_bindgen_library example consumer
+
+fn simple_function() -> i64 {
+    unsafe { simple_bindgen::simple_function() }
+}
+
+fn simple_static_function() -> i64 {
+    unsafe { simple_bindgen::simple_static_function() }
+}
+
+fn main() {
+    println!(
+        "The values are {}, {}, and {}!",
+        simple_bindgen::SIMPLE_VALUE,
+        simple_function(),
+        simple_static_function(),
+    );
+}
+
+#[cfg(test)]
+mod test {
+    #[test]
+    fn do_the_test() {
+        assert_eq!(42, simple_bindgen::SIMPLE_VALUE);
+        assert_eq!(1337, super::simple_function());
+        assert_eq!(84, super::simple_static_function());
+    }
+}
diff --git a/extensions/bindgen/test/integration/simple/BUILD.bazel b/extensions/bindgen/test/integration/simple/BUILD.bazel
new file mode 100644
index 0000000..0a1162b
--- /dev/null
+++ b/extensions/bindgen/test/integration/simple/BUILD.bazel
@@ -0,0 +1,15 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+exports_files(
+    [
+        "simple.h",
+    ],
+    visibility = ["//test/integration:__pkg__"],
+)
+
+cc_library(
+    name = "simple",
+    srcs = ["simple.cc"],
+    hdrs = ["simple.h"],
+    visibility = ["//test/integration:__pkg__"],
+)
diff --git a/extensions/bindgen/test/integration/simple/simple.cc b/extensions/bindgen/test/integration/simple/simple.cc
new file mode 100644
index 0000000..7e9fe10
--- /dev/null
+++ b/extensions/bindgen/test/integration/simple/simple.cc
@@ -0,0 +1,3 @@
+#include "simple.h"
+
+EXTERN_C const int64_t simple_function() { return 1337; }
diff --git a/extensions/bindgen/test/integration/simple/simple.h b/extensions/bindgen/test/integration/simple/simple.h
new file mode 100644
index 0000000..a7ca3f4
--- /dev/null
+++ b/extensions/bindgen/test/integration/simple/simple.h
@@ -0,0 +1,18 @@
+#ifndef __SIMPLE_H_INCLUDE__
+#define __SIMPLE_H_INCLUDE__
+
+#ifdef __cplusplus
+#define EXTERN_C extern "C"
+#else
+#define EXTERN_C
+#endif
+
+#include <stdint.h>
+
+static const int64_t SIMPLE_VALUE = 42;
+
+EXTERN_C const int64_t simple_function();
+
+static inline int64_t simple_static_function() { return 84; }
+
+#endif
diff --git a/extensions/bindgen/test/main.rs b/extensions/bindgen/test/main.rs
new file mode 100644
index 0000000..c5a415d
--- /dev/null
+++ b/extensions/bindgen/test/main.rs
@@ -0,0 +1,7 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
+fn main() {
+    println!("Hello world");
+}
diff --git a/extensions/bindgen/test/simple.cc b/extensions/bindgen/test/simple.cc
new file mode 100644
index 0000000..1cd12d5
--- /dev/null
+++ b/extensions/bindgen/test/simple.cc
@@ -0,0 +1,4 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
diff --git a/extensions/bindgen/test/simple.h b/extensions/bindgen/test/simple.h
new file mode 100644
index 0000000..1cd12d5
--- /dev/null
+++ b/extensions/bindgen/test/simple.h
@@ -0,0 +1,4 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
diff --git a/extensions/bindgen/transitive_repositories.bzl b/extensions/bindgen/transitive_repositories.bzl
new file mode 100644
index 0000000..66c80ee
--- /dev/null
+++ b/extensions/bindgen/transitive_repositories.bzl
@@ -0,0 +1,21 @@
+"""Transitive dependencies for the Rust `bindgen` rules"""
+
+load("@llvm-raw//utils/bazel:configure.bzl", "llvm_configure", "llvm_disable_optional_support_deps")
+
+# buildifier: disable=unnamed-macro
+def rust_bindgen_transitive_dependencies():
+    """Declare transitive dependencies needed for bindgen."""
+
+    llvm_configure(
+        name = "llvm-project",
+        repo_mapping = {"@llvm_zlib": "@zlib"},
+        targets = [
+            "AArch64",
+            "X86",
+        ],
+    )
+
+    # Disables optional dependencies for Support like zlib and terminfo. You may
+    # instead want to configure them using the macros in the corresponding bzl
+    # files.
+    llvm_disable_optional_support_deps()