diff --git a/BUILD.bazel b/BUILD.bazel
index 4a52beb..531e515 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -142,6 +142,7 @@
     name = "rust_analyzer",
     targets = [
         "//sw/host/opentitanlib:opentitanlib",
+        "//sw/host/opentitanlib/opentitantool_derive:opentitantool_derive",
         "//sw/host/opentitansession:opentitansession",
         "//sw/host/opentitantool:opentitantool",
     ],
diff --git a/sw/host/opentitanlib/src/otp/alert_handler.rs b/sw/host/opentitanlib/src/otp/alert_handler.rs
index cc8a1b2..b149408 100644
--- a/sw/host/opentitanlib/src/otp/alert_handler.rs
+++ b/sw/host/opentitanlib/src/otp/alert_handler.rs
@@ -14,7 +14,7 @@
 use std::convert::TryFrom;
 
 /// ALERT_HANDLER_ALERT_CLASS related register values.
-#[derive(Clone, Copy)]
+#[derive(Clone, Copy, Debug, PartialEq)]
 struct AlertClassRegs {
     regwen: u32,
     ctrl: u32,
@@ -24,6 +24,7 @@
 }
 
 /// Register values for alert_handler used in CRC32 calculation.
+#[derive(Debug, PartialEq)]
 pub struct AlertRegs {
     /// ALERT_HANDLER_LOC_ALERT_REGWEN
     regwen: [u32; ALERT_HANDLER_ALERT_REGWEN_MULTIREG_COUNT as usize],
@@ -41,6 +42,7 @@
     class_regs: [AlertClassRegs; ALERT_HANDLER_PARAM_N_CLASSES as usize],
 }
 
+// TODO: Use bindgen to produce the following enum definitions.
 /// Alert classification values.
 ///
 /// Based on values generated by sparse-fsm-encode.py and defined in
@@ -130,6 +132,8 @@
 }
 
 impl AlertRegs {
+    /// Compute the CRC32 of the internal register values to match the value produced by
+    /// `sw/device/silicon_creator/lib/drivers/alert.h:alert_config_crc32`.
     pub fn crc32(self) -> u32 {
         let crc = new_crc();
         let mut digest = crc.digest();
@@ -137,55 +141,49 @@
         digest.finalize()
     }
 
-    pub fn new<T: OtpRead>(lc_state: LcStateVal, otp: &T) -> Result<Self> {
+    /// Create the set of alert_handler register values from a given lifecycle state and OTP.
+    ///
+    /// The internal fields of `AlertRegs` should match those produced on the device after
+    /// alert_handler is configured in `sw/device/silicon_creator/lib/shutdown.h:shutdown_init`.
+    pub fn try_new<T: OtpRead>(lc_state: LcStateVal, otp: &T) -> Result<Self> {
         let mut alert = AlertRegs::default();
 
         let lc_shift = match lc_state {
             LcStateVal::Prod => 0,
-            LcStateVal::ProdEnd => 8,
-            LcStateVal::Dev => 16,
-            LcStateVal::Rma => 24,
+            LcStateVal::ProdEnd => 1,
+            LcStateVal::Dev => 2,
+            LcStateVal::Rma => 3,
             LcStateVal::Test => return Ok(alert),
         };
 
         let class_enable = otp.read32("ROM_ALERT_CLASS_EN")?;
-        let class_escalate = otp.read32("ROM_ALERT_CLASS_ESCALATION")?;
+        let class_escalate = otp.read32("ROM_ALERT_ESCALATION")?;
 
         for i in 0..ALERT_HANDLER_ALERT_CLASS_SHADOWED_MULTIREG_COUNT as usize {
             let value = otp.read32_offset(Some("ROM_ALERT_CLASSIFICATION"), i * 4)?;
-            let cls = AlertClass::try_from(
-                value.view_bits::<Lsb0>()[lc_shift..lc_shift + 1].load_le::<u8>(),
-            )?;
-            let enable = AlertEnable::try_from(
-                class_enable.view_bits::<Lsb0>()[cls.index()..cls.index() + 1].load_le::<u8>(),
-            )?;
+            let cls = AlertClass::try_from(value.to_le_bytes()[lc_shift])?;
+            let enable = AlertEnable::try_from(class_enable.to_le_bytes()[cls.index()])?;
             alert.configure(i, cls, enable)?;
         }
 
         for i in 0..ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_MULTIREG_COUNT as usize {
             let value = otp.read32_offset(Some("ROM_LOCAL_ALERT_CLASSIFICATION"), i * 4)?;
-            let cls = AlertClass::try_from(
-                value.view_bits::<Lsb0>()[lc_shift..lc_shift + 1].load_le::<u8>(),
-            )?;
-            let enable = AlertEnable::try_from(
-                class_enable.view_bits::<Lsb0>()[cls.index()..cls.index() + 1].load_le::<u8>(),
-            )?;
+            let cls = AlertClass::try_from(value.to_le_bytes()[lc_shift])?;
+            let enable = AlertEnable::try_from(class_enable.to_le_bytes()[cls.index()])?;
             alert.local_configure(i, cls, enable)?;
         }
 
         for i in 0..ALERT_HANDLER_PARAM_N_CLASSES as usize {
             let mut phase_cycs = [0; ALERT_HANDLER_PARAM_N_PHASES as usize];
             for phase in 0..ALERT_HANDLER_PARAM_N_PHASES as usize {
-                phase_cycs[phase] = otp
-                    .read32_offset(Some("ROM_ALERT_PHASE_CYCLES"), i * phase_cycs.len() + phase)?;
+                phase_cycs[phase] = otp.read32_offset(
+                    Some("ROM_ALERT_PHASE_CYCLES"),
+                    (i * phase_cycs.len() + phase) * 4,
+                )?;
             }
             let config = AlertClassConfig {
-                enabled: AlertEnable::try_from(
-                    class_enable.view_bits::<Lsb0>()[i..i + 1].load_le::<u8>(),
-                )?,
-                escalate: AlertEscalate::try_from(
-                    class_escalate.view_bits::<Lsb0>()[i..i + 1].load_le::<u8>(),
-                )?,
+                enabled: AlertEnable::try_from(class_enable.to_le_bytes()[i])?,
+                escalate: AlertEscalate::try_from(class_escalate.to_le_bytes()[i])?,
                 accum_thresh: otp.read32_offset(Some("ROM_ALERT_ACCUM_THRESH"), i * 4)?,
                 timeout_cyc: otp.read32_offset(Some("ROM_ALERT_TIMEOUT_CYCLES"), i * 4)?,
                 phase_cycs,
@@ -261,7 +259,18 @@
         };
 
         let mut reg = 0 as u32;
+
+        reg |= (0 & ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E0_MASK)
+            << ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E0_OFFSET;
+        reg |= (1 & ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E1_MASK)
+            << ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E1_OFFSET;
+        reg |= (2 & ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_MASK)
+            << ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_OFFSET;
+        reg |= (3 & ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E3_MASK)
+            << ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E3_OFFSET;
+
         let reg_bits = reg.view_bits_mut::<Lsb0>();
+
         match config.enabled {
             AlertEnable::None => {}
             AlertEnable::Enabled => {
@@ -295,7 +304,7 @@
             AlertEscalate::None => {}
         }
 
-        self.class[index] = reg;
+        self.class_regs[index].ctrl = reg;
         self.class_regs[index].accum_thresh = config.accum_thresh;
         self.class_regs[index].timeout_cyc = config.timeout_cyc;
         self.class_regs[index].phase_cycs = config.phase_cycs;
@@ -304,23 +313,23 @@
     }
 }
 
-trait CRC32Add {
+trait Crc32Add {
     fn crc32_add(self, diegst: &mut Digest<u32>);
 }
 
-impl CRC32Add for u32 {
+impl Crc32Add for u32 {
     fn crc32_add(self, digest: &mut Digest<u32>) {
         digest.update(self.to_le_bytes().as_slice())
     }
 }
 
-impl<T: CRC32Add, const N: usize> CRC32Add for [T; N] {
+impl<T: Crc32Add, const N: usize> Crc32Add for [T; N] {
     fn crc32_add(self, digest: &mut Digest<u32>) {
         self.map(|v| v.crc32_add(digest));
     }
 }
 
-impl CRC32Add for AlertClassRegs {
+impl Crc32Add for AlertClassRegs {
     fn crc32_add(self, digest: &mut Digest<u32>) {
         self.regwen.crc32_add(digest);
         self.ctrl.crc32_add(digest);
@@ -330,7 +339,7 @@
     }
 }
 
-impl CRC32Add for AlertRegs {
+impl Crc32Add for AlertRegs {
     fn crc32_add(self, digest: &mut Digest<u32>) {
         self.regwen.crc32_add(digest);
         self.en.crc32_add(digest);
@@ -431,15 +440,30 @@
 
     struct TestOtp {}
 
+    // OTP values that corrispond to the above `TEST_REG` values.
     impl OtpRead for TestOtp {
         fn read32_offset(&self, name: Option<&str>, offset: usize) -> Result<u32> {
-            let mut start_offset = 0;
-            if let Some(name) = name {}
-            Ok(0)
+            let name = name.unwrap();
+            Ok(match name {
+                "ROM_ALERT_CLASS_EN" => 0xa9a9a9a9,
+                "ROM_ALERT_ESCALATION" => 0xd1d1d1d1,
+                "ROM_ALERT_CLASSIFICATION" | "ROM_LOCAL_ALERT_CLASSIFICATION" => 0x94949494,
+                "ROM_ALERT_PHASE_CYCLES" => [
+                    0x00000000, 0x0000000a, 0x0000000a, 0xffffffff, // Class 0
+                    0x00000000, 0x0000000a, 0x0000000a, 0xffffffff, // Class 1
+                    0x00000000, 0x00000000, 0x00000000, 0x00000000, // Class 2
+                    0x00000000, 0x00000000, 0x00000000, 0x00000000, // Class 3
+                ][offset / 4],
+                "ROM_ALERT_ACCUM_THRESH" | "ROM_ALERT_TIMEOUT_CYCLES" => 0x00000000,
+                _ => panic!("No such OTP value {}", name),
+            })
         }
     }
 
     // A sanity test to make sure the correct CRC algorithm is being used.
+    //
+    // These values are taken from the CRC32 unit tests in
+    // `sw/device/silicon_creator/lib/crc32_unittest.cc`.
     #[test]
     fn test_new_crc() {
         let crc = new_crc();
@@ -462,4 +486,12 @@
     fn test_crc_from_regs() {
         assert_eq!(TEST_REGS.crc32(), 0xf9616122);
     }
+
+    #[test]
+    fn test_regs_from_otp() {
+        assert_eq!(
+            TEST_REGS,
+            AlertRegs::try_new(LcStateVal::Dev, &TestOtp {}).unwrap()
+        );
+    }
 }
diff --git a/sw/host/opentitanlib/src/otp/alert_handler_regs.rs b/sw/host/opentitanlib/src/otp/alert_handler_regs.rs
index f947327..4bf11df 100644
--- a/sw/host/opentitanlib/src/otp/alert_handler_regs.rs
+++ b/sw/host/opentitanlib/src/otp/alert_handler_regs.rs
@@ -1,3 +1,7 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
 /* automatically generated by rust-bindgen 0.60.1 */
 
 pub const ALERT_HANDLER_PARAM_N_ALERTS: u32 = 65;
diff --git a/sw/host/opentitanlib/src/otp/otp_img.rs b/sw/host/opentitanlib/src/otp/otp_img.rs
index 69d4963..14214a9 100644
--- a/sw/host/opentitanlib/src/otp/otp_img.rs
+++ b/sw/host/opentitanlib/src/otp/otp_img.rs
@@ -39,16 +39,6 @@
     fn read32_offset(&self, name: Option<&str>, offset: usize) -> Result<u32>;
 }
 
-impl OtpRead for OtpImg {
-    fn read32_offset(&self, name: Option<&str>, offset: usize) -> Result<u32> {
-        let mut start_offset = 0;
-        if let Some(name) = name {
-
-        }
-        Ok(0)
-    }
-}
-
 impl OtpImgPartition {
     pub fn get_item(&mut self, name: &str) -> Option<&mut OtpImgItem> {
         self.items
diff --git a/third_party/rust/crates/crates.bzl b/third_party/rust/crates/crates.bzl
index 996d8a9..6c4a529 100644
--- a/third_party/rust/crates/crates.bzl
+++ b/third_party/rust/crates/crates.bzl
@@ -212,347 +212,176 @@
         # Each of these may be used to temporarily override the location of
         # the crate to a path on your local filesystem for local development
         # of crates you may be using in your project.
-        CoreFoundation_sys__0_1_4=None,
-
-        IOKit_sys__0_1_5=None,
-
-        addr2line__0_17_0=None,
-
-        adler__1_0_2=None,
-
-        aho_corasick__0_7_19=None,
-
-        android_system_properties__0_1_5=None,
-
-        ansi_term__0_12_1=None,
-
-        anyhow__1_0_64=None,
-
-        atty__0_2_14=None,
-
-        autocfg__0_1_8=None,
-
-        autocfg__1_1_0=None,
-
-        backtrace__0_3_66=None,
-
-        base64ct__1_1_1=None,
-
-        bitflags__1_3_2=None,
-
-        bitvec__1_0_1=None,
-
-        block_buffer__0_10_3=None,
-
-        bumpalo__3_11_0=None,
-
-        byteorder__1_4_3=None,
-
-        cc__1_0_73=None,
-
-        cfg_if__0_1_10=None,
-
-        cfg_if__1_0_0=None,
-
-        chrono__0_4_22=None,
-
-        clap__2_34_0=None,
-
-        console__0_15_1=None,
-
-        const_oid__0_6_2=None,
-
-        core_foundation_sys__0_8_3=None,
-
-        cpufeatures__0_2_5=None,
-
-        crc__3_0_0=None,
-
-        crc_catalog__2_1_0=None,
-
-        crc32fast__1_3_2=None,
-
-        crypto_bigint__0_2_11=None,
-
-        crypto_common__0_1_6=None,
-
-        ctor__0_1_23=None,
-
-        der__0_4_5=None,
-
-        derive_more__0_14_1=None,
-
-        deser_hjson__1_0_2=None,
-
-        digest__0_10_3=None,
-
-        digest__0_9_0=None,
-
-        directories__4_0_1=None,
-
-        dirs_sys__0_3_7=None,
-
-        encode_unicode__0_3_6=None,
-
-        env_logger__0_8_4=None,
-
-        erased_serde__0_3_23=None,
-
-        fastrand__1_8_0=None,
-
-        flate2__1_0_24=None,
-
-        funty__2_0_0=None,
-
-        generic_array__0_14_6=None,
-
-        getrandom__0_2_7=None,
-
-        ghost__0_1_6=None,
-
-        gimli__0_26_2=None,
-
-        heck__0_3_3=None,
-
-        hermit_abi__0_1_19=None,
-
-        hex__0_4_3=None,
-
-        humantime__2_1_0=None,
-
-        iana_time_zone__0_1_47=None,
-
-        indicatif__0_16_2=None,
-
-        instant__0_1_12=None,
-
-        inventory__0_2_3=None,
-
-        itoa__1_0_3=None,
-
-        js_sys__0_3_60=None,
-
-        lazy_static__1_4_0=None,
-
-        libc__0_2_132=None,
-
-        libm__0_2_5=None,
-
-        libudev__0_3_0=None,
-
-        libudev_sys__0_1_4=None,
-
-        libusb1_sys__0_5_0=None,
-
-        log__0_4_17=None,
-
-        mach__0_1_2=None,
-
-        mach__0_3_2=None,
-
-        memchr__2_5_0=None,
-
-        memoffset__0_6_5=None,
-
-        miniz_oxide__0_5_4=None,
-
-        mio__0_7_14=None,
-
-        mio_signals__0_1_5=None,
-
-        miow__0_3_7=None,
-
-        nix__0_17_0=None,
-
-        nix__0_24_2=None,
-
-        ntapi__0_3_7=None,
-
-        num_bigint_dig__0_7_0=None,
-
-        num_integer__0_1_45=None,
-
-        num_iter__0_1_43=None,
-
-        num_traits__0_2_15=None,
-
-        num_enum__0_5_7=None,
-
-        num_enum_derive__0_5_7=None,
-
-        number_prefix__0_4_0=None,
-
-        object__0_25_3=None,
-
-        object__0_29_0=None,
-
-        once_cell__1_14_0=None,
-
-        pem_rfc7468__0_2_4=None,
-
-        pkcs1__0_2_4=None,
-
-        pkcs8__0_7_6=None,
-
-        pkg_config__0_3_25=None,
-
-        ppv_lite86__0_2_16=None,
-
-        proc_macro_crate__1_2_1=None,
-
-        proc_macro_error__1_0_4=None,
-
-        proc_macro_error_attr__1_0_4=None,
-
-        proc_macro2__0_4_30=None,
-
-        proc_macro2__1_0_43=None,
-
-        quote__0_6_13=None,
-
-        quote__1_0_21=None,
-
-        radium__0_7_0=None,
-
-        rand__0_8_5=None,
-
-        rand_chacha__0_3_1=None,
-
-        rand_core__0_6_3=None,
-
-        raw_tty__0_1_0=None,
-
-        redox_syscall__0_2_16=None,
-
-        redox_users__0_4_3=None,
-
-        regex__1_6_0=None,
-
-        regex_syntax__0_6_27=None,
-
-        remove_dir_all__0_5_3=None,
-
-        rsa__0_5_0=None,
-
-        rusb__0_8_1=None,
-
-        rustc_demangle__0_1_21=None,
-
-        rustc_version__0_2_3=None,
-
-        ryu__1_0_11=None,
-
-        semver__0_9_0=None,
-
-        semver_parser__0_7_0=None,
-
-        serde__1_0_144=None,
-
-        serde_derive__1_0_144=None,
-
-        serde_json__1_0_85=None,
-
-        serialport__4_2_0=None,
-
-        sha2__0_10_5=None,
-
-        shellwords__1_1_0=None,
-
-        smallvec__1_9_0=None,
-
-        spin__0_5_2=None,
-
-        spki__0_4_1=None,
-
-        strsim__0_8_0=None,
-
-        structopt__0_3_26=None,
-
-        structopt_derive__0_4_18=None,
-
-        subtle__2_4_1=None,
-
-        syn__0_15_44=None,
-
-        syn__1_0_99=None,
-
-        synstructure__0_12_6=None,
-
-        tap__1_0_1=None,
-
-        tempfile__3_3_0=None,
-
-        termcolor__1_1_3=None,
-
-        terminal_size__0_1_17=None,
-
-        textwrap__0_11_0=None,
-
-        thiserror__1_0_34=None,
-
-        thiserror_impl__1_0_34=None,
-
-        time__0_1_44=None,
-
-        toml__0_5_9=None,
-
-        typenum__1_15_0=None,
-
-        typetag__0_1_8=None,
-
-        typetag_impl__0_1_8=None,
-
-        unicode_ident__1_0_3=None,
-
-        unicode_segmentation__1_9_0=None,
-
-        unicode_width__0_1_9=None,
-
-        unicode_xid__0_1_0=None,
-
-        unicode_xid__0_2_3=None,
-
-        vcpkg__0_2_15=None,
-
-        vec_map__0_8_2=None,
-
-        version_check__0_9_4=None,
-
-        void__1_0_2=None,
-
-        wasi__0_10_0_wasi_snapshot_preview1=None,
-
-        wasi__0_11_0_wasi_snapshot_preview1=None,
-
-        wasm_bindgen__0_2_83=None,
-
-        wasm_bindgen_backend__0_2_83=None,
-
-        wasm_bindgen_macro__0_2_83=None,
-
-        wasm_bindgen_macro_support__0_2_83=None,
-
-        wasm_bindgen_shared__0_2_83=None,
-
-        winapi__0_3_9=None,
-
-        winapi_i686_pc_windows_gnu__0_4_0=None,
-
-        winapi_util__0_1_5=None,
-
-        winapi_x86_64_pc_windows_gnu__0_4_0=None,
-
-        wyz__0_5_0=None,
-
-        zerocopy__0_5_0=None,
-
-        zerocopy_derive__0_3_1=None,
-
-        zeroize__1_4_3=None,
-
-        zeroize_derive__1_3_2=None,
-
-    ):
+        CoreFoundation_sys__0_1_4 = None,
+        IOKit_sys__0_1_5 = None,
+        addr2line__0_17_0 = None,
+        adler__1_0_2 = None,
+        aho_corasick__0_7_19 = None,
+        android_system_properties__0_1_5 = None,
+        ansi_term__0_12_1 = None,
+        anyhow__1_0_64 = None,
+        atty__0_2_14 = None,
+        autocfg__0_1_8 = None,
+        autocfg__1_1_0 = None,
+        backtrace__0_3_66 = None,
+        base64ct__1_1_1 = None,
+        bitflags__1_3_2 = None,
+        bitvec__1_0_1 = None,
+        block_buffer__0_10_3 = None,
+        bumpalo__3_11_0 = None,
+        byteorder__1_4_3 = None,
+        cc__1_0_73 = None,
+        cfg_if__0_1_10 = None,
+        cfg_if__1_0_0 = None,
+        chrono__0_4_22 = None,
+        clap__2_34_0 = None,
+        console__0_15_1 = None,
+        const_oid__0_6_2 = None,
+        core_foundation_sys__0_8_3 = None,
+        cpufeatures__0_2_5 = None,
+        crc__3_0_0 = None,
+        crc_catalog__2_1_0 = None,
+        crc32fast__1_3_2 = None,
+        crypto_bigint__0_2_11 = None,
+        crypto_common__0_1_6 = None,
+        ctor__0_1_23 = None,
+        der__0_4_5 = None,
+        derive_more__0_14_1 = None,
+        deser_hjson__1_0_2 = None,
+        digest__0_10_3 = None,
+        digest__0_9_0 = None,
+        directories__4_0_1 = None,
+        dirs_sys__0_3_7 = None,
+        encode_unicode__0_3_6 = None,
+        env_logger__0_8_4 = None,
+        erased_serde__0_3_23 = None,
+        fastrand__1_8_0 = None,
+        flate2__1_0_24 = None,
+        funty__2_0_0 = None,
+        generic_array__0_14_6 = None,
+        getrandom__0_2_7 = None,
+        ghost__0_1_6 = None,
+        gimli__0_26_2 = None,
+        heck__0_3_3 = None,
+        hermit_abi__0_1_19 = None,
+        hex__0_4_3 = None,
+        humantime__2_1_0 = None,
+        iana_time_zone__0_1_47 = None,
+        indicatif__0_16_2 = None,
+        instant__0_1_12 = None,
+        inventory__0_2_3 = None,
+        itoa__1_0_3 = None,
+        js_sys__0_3_60 = None,
+        lazy_static__1_4_0 = None,
+        libc__0_2_132 = None,
+        libm__0_2_5 = None,
+        libudev__0_3_0 = None,
+        libudev_sys__0_1_4 = None,
+        libusb1_sys__0_5_0 = None,
+        log__0_4_17 = None,
+        mach__0_1_2 = None,
+        mach__0_3_2 = None,
+        memchr__2_5_0 = None,
+        memoffset__0_6_5 = None,
+        miniz_oxide__0_5_4 = None,
+        mio__0_7_14 = None,
+        mio_signals__0_1_5 = None,
+        miow__0_3_7 = None,
+        nix__0_17_0 = None,
+        nix__0_24_2 = None,
+        ntapi__0_3_7 = None,
+        num_bigint_dig__0_7_0 = None,
+        num_integer__0_1_45 = None,
+        num_iter__0_1_43 = None,
+        num_traits__0_2_15 = None,
+        num_enum__0_5_7 = None,
+        num_enum_derive__0_5_7 = None,
+        number_prefix__0_4_0 = None,
+        object__0_25_3 = None,
+        object__0_29_0 = None,
+        once_cell__1_14_0 = None,
+        pem_rfc7468__0_2_4 = None,
+        pkcs1__0_2_4 = None,
+        pkcs8__0_7_6 = None,
+        pkg_config__0_3_25 = None,
+        ppv_lite86__0_2_16 = None,
+        proc_macro_crate__1_2_1 = None,
+        proc_macro_error__1_0_4 = None,
+        proc_macro_error_attr__1_0_4 = None,
+        proc_macro2__0_4_30 = None,
+        proc_macro2__1_0_43 = None,
+        quote__0_6_13 = None,
+        quote__1_0_21 = None,
+        radium__0_7_0 = None,
+        rand__0_8_5 = None,
+        rand_chacha__0_3_1 = None,
+        rand_core__0_6_3 = None,
+        raw_tty__0_1_0 = None,
+        redox_syscall__0_2_16 = None,
+        redox_users__0_4_3 = None,
+        regex__1_6_0 = None,
+        regex_syntax__0_6_27 = None,
+        remove_dir_all__0_5_3 = None,
+        rsa__0_5_0 = None,
+        rusb__0_8_1 = None,
+        rustc_demangle__0_1_21 = None,
+        rustc_version__0_2_3 = None,
+        ryu__1_0_11 = None,
+        semver__0_9_0 = None,
+        semver_parser__0_7_0 = None,
+        serde__1_0_144 = None,
+        serde_derive__1_0_144 = None,
+        serde_json__1_0_85 = None,
+        serialport__4_2_0 = None,
+        sha2__0_10_5 = None,
+        shellwords__1_1_0 = None,
+        smallvec__1_9_0 = None,
+        spin__0_5_2 = None,
+        spki__0_4_1 = None,
+        strsim__0_8_0 = None,
+        structopt__0_3_26 = None,
+        structopt_derive__0_4_18 = None,
+        subtle__2_4_1 = None,
+        syn__0_15_44 = None,
+        syn__1_0_99 = None,
+        synstructure__0_12_6 = None,
+        tap__1_0_1 = None,
+        tempfile__3_3_0 = None,
+        termcolor__1_1_3 = None,
+        terminal_size__0_1_17 = None,
+        textwrap__0_11_0 = None,
+        thiserror__1_0_34 = None,
+        thiserror_impl__1_0_34 = None,
+        time__0_1_44 = None,
+        toml__0_5_9 = None,
+        typenum__1_15_0 = None,
+        typetag__0_1_8 = None,
+        typetag_impl__0_1_8 = None,
+        unicode_ident__1_0_3 = None,
+        unicode_segmentation__1_9_0 = None,
+        unicode_width__0_1_9 = None,
+        unicode_xid__0_1_0 = None,
+        unicode_xid__0_2_3 = None,
+        vcpkg__0_2_15 = None,
+        vec_map__0_8_2 = None,
+        version_check__0_9_4 = None,
+        void__1_0_2 = None,
+        wasi__0_10_0_wasi_snapshot_preview1 = None,
+        wasi__0_11_0_wasi_snapshot_preview1 = None,
+        wasm_bindgen__0_2_83 = None,
+        wasm_bindgen_backend__0_2_83 = None,
+        wasm_bindgen_macro__0_2_83 = None,
+        wasm_bindgen_macro_support__0_2_83 = None,
+        wasm_bindgen_shared__0_2_83 = None,
+        winapi__0_3_9 = None,
+        winapi_i686_pc_windows_gnu__0_4_0 = None,
+        winapi_util__0_1_5 = None,
+        winapi_x86_64_pc_windows_gnu__0_4_0 = None,
+        wyz__0_5_0 = None,
+        zerocopy__0_5_0 = None,
+        zerocopy_derive__0_3_1 = None,
+        zeroize__1_4_3 = None,
+        zeroize_derive__1_3_2 = None):
     """This function defines a collection of repos and should be called in a WORKSPACE file"""
     if CoreFoundation_sys__0_1_4:
         maybe(
@@ -1717,12 +1546,12 @@
             type = "tar.gz",
             sha256 = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324",
             strip_prefix = "libudev-sys-0.1.4",
-        patches = [
-            "@//third_party/rust/crates/patches:libudev-sys-0.1.4.patch",
-        ],
-        patch_args = [
-            "-p1",
-        ],
+            patches = [
+                "@//third_party/rust/crates/patches:libudev-sys-0.1.4.patch",
+            ],
+            patch_args = [
+                "-p1",
+            ],
             build_file = Label("//third_party/rust/crates/remote:BUILD.libudev-sys-0.1.4.bazel"),
         )
 
@@ -3612,4 +3441,3 @@
             strip_prefix = "zeroize_derive-1.3.2",
             build_file = Label("//third_party/rust/crates/remote:BUILD.zeroize_derive-1.3.2.bazel"),
         )
-
