[INFO] cloning repository https://github.com/fnick851/rust-the-book [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fnick851/rust-the-book" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffnick851%2Frust-the-book", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffnick851%2Frust-the-book'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 89593b4179cbb581f9f7fe49ad516af2d35f0ab7 [INFO] building fnick851/rust-the-book against master#11663cd3bfefef7d34e8f0892c250bf698049392+rustflags=-Dtail-expr-drop-order for pr-134523 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffnick851%2Frust-the-book" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/fnick851/rust-the-book on toolchain 11663cd3bfefef7d34e8f0892c250bf698049392 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/fnick851/rust-the-book [INFO] finished tweaking git repo https://github.com/fnick851/rust-the-book [INFO] tweaked toml for git repo https://github.com/fnick851/rust-the-book written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/fnick851/rust-the-book 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" "+11663cd3bfefef7d34e8f0892c250bf698049392" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3b479a76890830c341e909bfd4cc309cfbdc6658aca4453a815bff8b1945a521 [INFO] running `Command { std: "docker" "start" "-a" "3b479a76890830c341e909bfd4cc309cfbdc6658aca4453a815bff8b1945a521", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3b479a76890830c341e909bfd4cc309cfbdc6658aca4453a815bff8b1945a521", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3b479a76890830c341e909bfd4cc309cfbdc6658aca4453a815bff8b1945a521", kill_on_drop: false }` [INFO] [stdout] 3b479a76890830c341e909bfd4cc309cfbdc6658aca4453a815bff8b1945a521 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f9ba47586ad40d91358f0529a17d1847b36e432ca35d997f4d28aca71425229f [INFO] running `Command { std: "docker" "start" "-a" "f9ba47586ad40d91358f0529a17d1847b36e432ca35d997f4d28aca71425229f", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.65 [INFO] [stderr] Compiling cc v1.0.46 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling rustc-demangle v0.1.16 [INFO] [stderr] Compiling unicode-width v0.1.6 [INFO] [stderr] Compiling strsim v0.8.0 [INFO] [stderr] Compiling vec_map v0.8.1 [INFO] [stderr] Compiling smallvec v0.4.5 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Compiling backtrace-sys v0.1.32 [INFO] [stderr] Compiling atty v0.2.13 [INFO] [stderr] Compiling rand v0.4.6 [INFO] [stderr] Compiling clap v2.33.0 [INFO] [stderr] Compiling rand v0.3.23 [INFO] [stderr] Compiling backtrace v0.3.40 [INFO] [stderr] Compiling error-chain v0.10.0 [INFO] [stderr] Compiling ferris-says v0.1.1 [INFO] [stderr] Compiling hello_rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: function `seat_at_table` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | fn seat_at_table() {} [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `take_order` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | fn take_order() {} [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serve_order` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | fn serve_order() {} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `take_payment` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | fn take_payment() {} [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/vector.rs:2:9 [INFO] [stdout] | [INFO] [stdout] 2 | let mut v = vec![1, 2, 3, 4, 5]; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `seasonal_fruit` is never read [INFO] [stdout] --> src/bin/super_path.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Breakfast { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 13 | pub toast: String, [INFO] [stdout] 14 | seasonal_fruit: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> src/bin/enum.rs:29:26 [INFO] [stdout] | [INFO] [stdout] 29 | if let Coin::Quarter(state) = some_value { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Alaska` is never constructed [INFO] [stdout] --> src/bin/enum.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 3 | enum UsState { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] 4 | Alabama, [INFO] [stdout] 5 | Alaska, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UsState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Penny`, `Nickel`, and `Dime` are never constructed [INFO] [stdout] --> src/bin/enum.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 7 | enum Coin { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] 8 | Penny, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 9 | Nickel, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 10 | Dime, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `f` [INFO] [stdout] --> src/bin/result.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | let f = match f { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_f` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/result.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | read_username_from_file(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 20 | let _ = read_username_from_file(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `summarize` is never used [INFO] [stdout] --> src/bin/trait.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 2 | pub trait Summary { [INFO] [stdout] | ------- method in this trait [INFO] [stdout] 3 | fn summarize(&self) -> String; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `reply` and `retweet` are never read [INFO] [stdout] --> src/bin/trait.rs:8:13 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Tweet { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 8 | pub reply: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 9 | pub retweet: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/bin/ownership.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | let s = "hello"; // s is valid from this point forward [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s1` [INFO] [stdout] --> src/bin/ownership.rs:50:17 [INFO] [stdout] | [INFO] [stdout] 50 | let s1 = gives_ownership(); // gives_ownership moves its return [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_s1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s3` [INFO] [stdout] --> src/bin/ownership.rs:55:17 [INFO] [stdout] | [INFO] [stdout] 55 | let s3 = takes_and_gives_back(s2); // s2 is moved into [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_s3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `content` is never read [INFO] [stdout] --> src/bin/trait2.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct NewsArticle { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub content: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `reply` and `retweet` are never read [INFO] [stdout] --> src/bin/trait2.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct Tweet { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 22 | pub reply: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | pub retweet: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.29s [INFO] running `Command { std: "docker" "inspect" "f9ba47586ad40d91358f0529a17d1847b36e432ca35d997f4d28aca71425229f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f9ba47586ad40d91358f0529a17d1847b36e432ca35d997f4d28aca71425229f", kill_on_drop: false }` [INFO] [stdout] f9ba47586ad40d91358f0529a17d1847b36e432ca35d997f4d28aca71425229f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c675ffcb68bc6d0d2bc70aafcd5a76cbbae0d699f927d04e6a6a89794030d339 [INFO] running `Command { std: "docker" "start" "-a" "c675ffcb68bc6d0d2bc70aafcd5a76cbbae0d699f927d04e6a6a89794030d339", kill_on_drop: false }` [INFO] [stderr] Compiling hello_rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/bin/ownership.rs:5:13 [INFO] [stdout] | [INFO] [stdout] 5 | let s = "hello"; // s is valid from this point forward [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s1` [INFO] [stdout] --> src/bin/ownership.rs:50:17 [INFO] [stdout] | [INFO] [stdout] 50 | let s1 = gives_ownership(); // gives_ownership moves its return [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_s1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s3` [INFO] [stdout] --> src/bin/ownership.rs:55:17 [INFO] [stdout] | [INFO] [stdout] 55 | let s3 = takes_and_gives_back(s2); // s2 is moved into [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_s3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `f` [INFO] [stdout] --> src/bin/result.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | let f = match f { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_f` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/bin/result.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | read_username_from_file(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 20 | let _ = read_username_from_file(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> src/bin/enum.rs:29:26 [INFO] [stdout] | [INFO] [stdout] 29 | if let Coin::Quarter(state) = some_value { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `seasonal_fruit` is never read [INFO] [stdout] --> src/bin/super_path.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Breakfast { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 13 | pub toast: String, [INFO] [stdout] 14 | seasonal_fruit: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `seat_at_table` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | fn seat_at_table() {} [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `take_order` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | fn take_order() {} [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serve_order` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | fn serve_order() {} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `take_payment` is never used [INFO] [stdout] --> src/bin/restrt_lib.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | fn take_payment() {} [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bin/vector.rs:2:9 [INFO] [stdout] | [INFO] [stdout] 2 | let mut v = vec![1, 2, 3, 4, 5]; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.06s [INFO] running `Command { std: "docker" "inspect" "c675ffcb68bc6d0d2bc70aafcd5a76cbbae0d699f927d04e6a6a89794030d339", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c675ffcb68bc6d0d2bc70aafcd5a76cbbae0d699f927d04e6a6a89794030d339", kill_on_drop: false }` [INFO] [stdout] c675ffcb68bc6d0d2bc70aafcd5a76cbbae0d699f927d04e6a6a89794030d339