[INFO] fetching crate ftswarm 0.2.5... [INFO] testing ftswarm-0.2.5 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7 [INFO] extracting crate ftswarm 0.2.5 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate ftswarm 0.2.5 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate ftswarm 0.2.5 [INFO] tweaked toml for crates.io crate ftswarm 0.2.5 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate ftswarm 0.2.5 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate ftswarm 0.2.5 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded ftswarm_serial v0.2.5 [INFO] [stderr] Downloaded ftswarm_macros v0.2.5 [INFO] [stderr] Downloaded ftswarm_proto v0.2.5 [INFO] [stderr] Downloaded unescaper v0.1.4 [INFO] [stderr] Downloaded env_filter v0.1.0 [INFO] [stderr] Downloaded thiserror-impl v1.0.57 [INFO] [stderr] Downloaded env_logger v0.11.3 [INFO] [stderr] Downloaded io-kit-sys v0.4.0 [INFO] [stderr] Downloaded zerocopy-derive v0.8.0-alpha.5 [INFO] [stderr] Downloaded thiserror v1.0.57 [INFO] [stderr] Downloaded rand v0.9.0-alpha.0 [INFO] [stderr] Downloaded serialport v4.3.0 [INFO] [stderr] Downloaded rand_chacha v0.9.0-alpha.0 [INFO] [stderr] Downloaded zerocopy v0.8.0-alpha.5 [INFO] [stderr] Downloaded syn v2.0.52 [INFO] [stderr] Downloaded rand_core v0.9.0-alpha.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] fc84d2f474db32062948ffb2d84c65ea0bc0457fa1c0d449c2c61e6659d07efc [INFO] running `Command { std: "docker" "start" "-a" "fc84d2f474db32062948ffb2d84c65ea0bc0457fa1c0d449c2c61e6659d07efc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fc84d2f474db32062948ffb2d84c65ea0bc0457fa1c0d449c2c61e6659d07efc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fc84d2f474db32062948ffb2d84c65ea0bc0457fa1c0d449c2c61e6659d07efc", kill_on_drop: false }` [INFO] [stdout] fc84d2f474db32062948ffb2d84c65ea0bc0457fa1c0d449c2c61e6659d07efc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] baa0e3d498f932ce9ee2f2d0910ffd675d68d2390140dfa4215b7767cbcd7524 [INFO] running `Command { std: "docker" "start" "-a" "baa0e3d498f932ce9ee2f2d0910ffd675d68d2390140dfa4215b7767cbcd7524", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.153 [INFO] [stderr] Compiling proc-macro2 v1.0.78 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling thiserror v1.0.57 [INFO] [stderr] Compiling zerocopy v0.8.0-alpha.5 [INFO] [stderr] Compiling libudev-sys v0.1.4 [INFO] [stderr] Compiling smallvec v1.13.1 [INFO] [stderr] Compiling bitflags v2.4.2 [INFO] [stderr] Compiling log v0.4.21 [INFO] [stderr] Compiling strum v0.26.2 [INFO] [stderr] Compiling lock_api v0.4.11 [INFO] [stderr] Compiling quote v1.0.35 [INFO] [stderr] Compiling syn v2.0.52 [INFO] [stderr] Compiling getrandom v0.2.12 [INFO] [stderr] Compiling nix v0.26.4 [INFO] [stderr] Compiling parking_lot_core v0.9.9 [INFO] [stderr] Compiling socket2 v0.5.6 [INFO] [stderr] Compiling signal-hook-registry v1.4.1 [INFO] [stderr] Compiling mio v0.8.11 [INFO] [stderr] Compiling num_cpus v1.16.0 [INFO] [stderr] Compiling libudev v0.3.0 [INFO] [stderr] Compiling parking_lot v0.12.1 [INFO] [stderr] Compiling rand_core v0.9.0-alpha.0 [INFO] [stderr] Compiling rand_chacha v0.9.0-alpha.0 [INFO] [stderr] Compiling rand v0.9.0-alpha.0 [INFO] [stderr] Compiling thiserror-impl v1.0.57 [INFO] [stderr] Compiling strum_macros v0.26.2 [INFO] [stderr] Compiling tokio-macros v2.2.0 [INFO] [stderr] Compiling ftswarm_macros v0.2.5 [INFO] [stderr] Compiling tokio v1.36.0 [INFO] [stderr] Compiling unescaper v0.1.4 [INFO] [stderr] Compiling serialport v4.3.0 [INFO] [stderr] Compiling ftswarm_serial v0.2.5 [INFO] [stderr] Compiling ftswarm_proto v0.2.5 [INFO] [stderr] Compiling ftswarm v0.2.5 (/opt/rustwide/workdir) [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:46:25 [INFO] [stdout] | [INFO] [stdout] 46 | async fn lock(mutex: &Mutex) -> std::sync::MutexGuard { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 46 | async fn lock(mutex: &Mutex) -> std::sync::MutexGuard<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.23s [INFO] running `Command { std: "docker" "inspect" "baa0e3d498f932ce9ee2f2d0910ffd675d68d2390140dfa4215b7767cbcd7524", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "baa0e3d498f932ce9ee2f2d0910ffd675d68d2390140dfa4215b7767cbcd7524", kill_on_drop: false }` [INFO] [stdout] baa0e3d498f932ce9ee2f2d0910ffd675d68d2390140dfa4215b7767cbcd7524 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8f33c9b4e02a5400bf936b8827f0c345eef9ab0c0fa537c40dc8651cd5151c23 [INFO] running `Command { std: "docker" "start" "-a" "8f33c9b4e02a5400bf936b8827f0c345eef9ab0c0fa537c40dc8651cd5151c23", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.7.1 [INFO] [stderr] Compiling regex-syntax v0.8.2 [INFO] [stderr] Compiling anstyle v1.0.6 [INFO] [stderr] Compiling ftswarm_serial v0.2.5 [INFO] [stderr] Compiling ftswarm v0.2.5 (/opt/rustwide/workdir) [INFO] [stderr] Compiling anstream v0.6.13 [INFO] [stderr] Compiling aho-corasick v1.1.2 [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:46:25 [INFO] [stdout] | [INFO] [stdout] 46 | async fn lock(mutex: &Mutex) -> std::sync::MutexGuard { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 46 | async fn lock(mutex: &Mutex) -> std::sync::MutexGuard<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling regex-automata v0.4.6 [INFO] [stderr] Compiling regex v1.10.3 [INFO] [stderr] Compiling env_filter v0.1.0 [INFO] [stderr] Compiling env_logger v0.11.3 [INFO] [stdout] error[E0277]: `Result>, PoisonError>>` is not a future [INFO] [stdout] --> examples/hello_world.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | led1.lock().await.set_color(LedColor::blue()).await?; [INFO] [stdout] | ^^^^^ `Result>, PoisonError>>` is not a future [INFO] [stdout] | [INFO] [stdout] = help: the trait `Future` is not implemented for `Result>, PoisonError>>` [INFO] [stdout] = note: Result>, PoisonError>> must be a future or must implement `IntoFuture` to be awaited [INFO] [stdout] = note: required for `Result>, PoisonError>>` to implement `IntoFuture` [INFO] [stdout] = note: the full name for the type has been written to '/opt/rustwide/target/debug/examples/hello_world-6e3e91441484ac63.long-type-13598350707145883221.txt' [INFO] [stdout] = note: consider using `--verbose` to print the full type name to the console [INFO] [stdout] help: remove the `.await` [INFO] [stdout] | [INFO] [stdout] 46 - led1.lock().await.set_color(LedColor::blue()).await?; [INFO] [stdout] 46 + led1.lock().set_color(LedColor::blue()).await?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> examples/hello_world.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | led1.lock().await.set_color(LedColor::blue()).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Result>, PoisonError>>` is not a future [INFO] [stdout] --> examples/hello_world.rs:47:17 [INFO] [stdout] | [INFO] [stdout] 47 | led2.lock().await.set_color(LedColor::cyan()).await?; [INFO] [stdout] | ^^^^^ `Result>, PoisonError>>` is not a future [INFO] [stdout] | [INFO] [stdout] = help: the trait `Future` is not implemented for `Result>, PoisonError>>` [INFO] [stdout] = note: Result>, PoisonError>> must be a future or must implement `IntoFuture` to be awaited [INFO] [stdout] = note: required for `Result>, PoisonError>>` to implement `IntoFuture` [INFO] [stdout] = note: the full name for the type has been written to '/opt/rustwide/target/debug/examples/hello_world-6e3e91441484ac63.long-type-10166109208090637409.txt' [INFO] [stdout] = note: consider using `--verbose` to print the full type name to the console [INFO] [stdout] help: remove the `.await` [INFO] [stdout] | [INFO] [stdout] 47 - led2.lock().await.set_color(LedColor::cyan()).await?; [INFO] [stdout] 47 + led2.lock().set_color(LedColor::cyan()).await?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> examples/hello_world.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | led2.lock().await.set_color(LedColor::cyan()).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Result>, PoisonError>>` is not a future [INFO] [stdout] --> examples/hello_world.rs:49:42 [INFO] [stdout] | [INFO] [stdout] 49 | let mut switch_state = switch.lock().await.value; [INFO] [stdout] | ^^^^^ `Result>, PoisonError>>` is not a future [INFO] [stdout] | [INFO] [stdout] = help: the trait `Future` is not implemented for `Result>, PoisonError>>` [INFO] [stdout] = note: Result>, PoisonError>> must be a future or must implement `IntoFuture` to be awaited [INFO] [stdout] = note: required for `Result>, PoisonError>>` to implement `IntoFuture` [INFO] [stdout] = note: the full name for the type has been written to '/opt/rustwide/target/debug/examples/hello_world-6e3e91441484ac63.long-type-4465384064355562995.txt' [INFO] [stdout] = note: consider using `--verbose` to print the full type name to the console [INFO] [stdout] help: remove the `.await` [INFO] [stdout] | [INFO] [stdout] 49 - let mut switch_state = switch.lock().await.value; [INFO] [stdout] 49 + let mut switch_state = switch.lock().value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Result>, PoisonError>>` is not a future [INFO] [stdout] --> examples/hello_world.rs:51:35 [INFO] [stdout] | [INFO] [stdout] 51 | let value = switch.lock().await.value; [INFO] [stdout] | ^^^^^ `Result>, PoisonError>>` is not a future [INFO] [stdout] | [INFO] [stdout] = help: the trait `Future` is not implemented for `Result>, PoisonError>>` [INFO] [stdout] = note: Result>, PoisonError>> must be a future or must implement `IntoFuture` to be awaited [INFO] [stdout] = note: required for `Result>, PoisonError>>` to implement `IntoFuture` [INFO] [stdout] = note: the full name for the type has been written to '/opt/rustwide/target/debug/examples/hello_world-6e3e91441484ac63.long-type-11367913204497067747.txt' [INFO] [stdout] = note: consider using `--verbose` to print the full type name to the console [INFO] [stdout] help: remove the `.await` [INFO] [stdout] | [INFO] [stdout] 51 - let value = switch.lock().await.value; [INFO] [stdout] 51 + let value = switch.lock().value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Result>, PoisonError>>` is not a future [INFO] [stdout] --> examples/hello_world.rs:59:25 [INFO] [stdout] | [INFO] [stdout] 59 | led1.lock().await.set_color(color.clone()).await?; [INFO] [stdout] | ^^^^^ `Result>, PoisonError>>` is not a future [INFO] [stdout] | [INFO] [stdout] = help: the trait `Future` is not implemented for `Result>, PoisonError>>` [INFO] [stdout] = note: Result>, PoisonError>> must be a future or must implement `IntoFuture` to be awaited [INFO] [stdout] = note: required for `Result>, PoisonError>>` to implement `IntoFuture` [INFO] [stdout] = note: the full name for the type has been written to '/opt/rustwide/target/debug/examples/hello_world-6e3e91441484ac63.long-type-15310234314045719595.txt' [INFO] [stdout] = note: consider using `--verbose` to print the full type name to the console [INFO] [stdout] help: remove the `.await` [INFO] [stdout] | [INFO] [stdout] 59 - led1.lock().await.set_color(color.clone()).await?; [INFO] [stdout] 59 + led1.lock().set_color(color.clone()).await?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> examples/hello_world.rs:59:13 [INFO] [stdout] | [INFO] [stdout] 59 | led1.lock().await.set_color(color.clone()).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Result>, PoisonError>>` is not a future [INFO] [stdout] --> examples/hello_world.rs:60:25 [INFO] [stdout] | [INFO] [stdout] 60 | led2.lock().await.set_color(color).await?; [INFO] [stdout] | ^^^^^ `Result>, PoisonError>>` is not a future [INFO] [stdout] | [INFO] [stdout] = help: the trait `Future` is not implemented for `Result>, PoisonError>>` [INFO] [stdout] = note: Result>, PoisonError>> must be a future or must implement `IntoFuture` to be awaited [INFO] [stdout] = note: required for `Result>, PoisonError>>` to implement `IntoFuture` [INFO] [stdout] = note: the full name for the type has been written to '/opt/rustwide/target/debug/examples/hello_world-6e3e91441484ac63.long-type-4863163126125078974.txt' [INFO] [stdout] = note: consider using `--verbose` to print the full type name to the console [INFO] [stdout] help: remove the `.await` [INFO] [stdout] | [INFO] [stdout] 60 - led2.lock().await.set_color(color).await?; [INFO] [stdout] 60 + led2.lock().set_color(color).await?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> examples/hello_world.rs:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | led2.lock().await.set_color(color).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0277, E0282. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0277`. [INFO] [stdout] [INFO] [stderr] error: could not compile `ftswarm` (example "hello_world") due to 10 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lib.rs:46:25 [INFO] [stdout] | [INFO] [stdout] 46 | async fn lock(mutex: &Mutex) -> std::sync::MutexGuard { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 46 | async fn lock(mutex: &Mutex) -> std::sync::MutexGuard<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "8f33c9b4e02a5400bf936b8827f0c345eef9ab0c0fa537c40dc8651cd5151c23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8f33c9b4e02a5400bf936b8827f0c345eef9ab0c0fa537c40dc8651cd5151c23", kill_on_drop: false }` [INFO] [stdout] 8f33c9b4e02a5400bf936b8827f0c345eef9ab0c0fa537c40dc8651cd5151c23