[INFO] updating cached repository https://github.com/macleos/freshcast [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/mnt/big/crater/work/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"` [INFO] [stderr] From https://github.com/macleos/freshcast [INFO] [stderr] + 2447eea...2f04289 master -> master (forced update) [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2f04289ec8d3249895f279650f781c999f7dc25f [INFO] checking macleos/freshcast against master#4ff32c07da9d97e6dc315a4a5c9ffbb797cb27bb for pr-64672 [INFO] running `"git" "clone" "work/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmacleos%2Ffreshcast" "work/builds/worker-0/source"` [INFO] [stderr] Cloning into 'work/builds/worker-0/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/macleos/freshcast on toolchain 4ff32c07da9d97e6dc315a4a5c9ffbb797cb27bb [INFO] running `"/mnt/big/crater/work/cargo-home/bin/cargo" "+4ff32c07da9d97e6dc315a4a5c9ffbb797cb27bb" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/macleos/freshcast [INFO] finished tweaking git repo https://github.com/macleos/freshcast [INFO] tweaked toml for git repo https://github.com/macleos/freshcast written to work/builds/worker-0/source/Cargo.toml [INFO] crate git repo https://github.com/macleos/freshcast already has a lockfile, it will not be regenerated [INFO] running `"/mnt/big/crater/work/cargo-home/bin/cargo" "+4ff32c07da9d97e6dc315a4a5c9ffbb797cb27bb" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/mnt/big/crater/work/builds/worker-0/source:/opt/rustwide/workdir:ro,Z" "-v" "/mnt/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+4ff32c07da9d97e6dc315a4a5c9ffbb797cb27bb" "check" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 5132117c78c3f04683de72f2cbf97ed0ab4643c60cafeb50b0b9192430c289ce [INFO] running `"docker" "start" "-a" "5132117c78c3f04683de72f2cbf97ed0ab4643c60cafeb50b0b9192430c289ce"` [INFO] [stderr] Compiling ring v0.16.9 [INFO] [stderr] Checking rand_chacha v0.1.1 [INFO] [stderr] Checking rand_os v0.1.1 [INFO] [stderr] Checking bytes v0.4.12 [INFO] [stderr] Checking chrono v0.4.9 [INFO] [stderr] Checking rand v0.6.4 [INFO] [stderr] Checking tokio-io v0.1.12 [INFO] [stderr] Checking parking_lot_core v0.4.0 [INFO] [stderr] Checking tokio-threadpool v0.1.15 [INFO] [stderr] Checking tokio-codec v0.1.1 [INFO] [stderr] Checking parking_lot v0.7.1 [INFO] [stderr] Checking tokio-reactor v0.1.9 [INFO] [stderr] Checking tokio-fs v0.1.6 [INFO] [stderr] Checking sct v0.6.0 [INFO] [stderr] Checking webpki v0.21.0 [INFO] [stderr] Checking tokio-udp v0.1.3 [INFO] [stderr] Checking tokio-uds v0.2.5 [INFO] [stderr] Checking tokio-signal v0.2.7 [INFO] [stderr] Checking tokio-tcp v0.1.3 [INFO] [stderr] Checking rustls v0.16.0 [INFO] [stderr] Checking webpki-roots v0.17.0 [INFO] [stderr] Checking tokio-process v0.2.4 [INFO] [stderr] Checking tokio v0.1.22 [INFO] [stderr] Checking freshcast v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused import: `std::time::SystemTime` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::time::SystemTime; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/server.rs:148:16 [INFO] [stderr] | [INFO] [stderr] 148 | if (line.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/streamable.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/streamable.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::server` [INFO] [stderr] --> src/streamable.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::server; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/streamable.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::SeekFrom` [INFO] [stderr] --> src/streamable.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::io::SeekFrom; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::mem::drop` [INFO] [stderr] --> src/streamable.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | use std::mem::drop; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::*` [INFO] [stderr] --> src/streamable.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::net::*; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::*` [INFO] [stderr] --> src/streamable.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::sync::*; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/streamable.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/streamable.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `SystemTime`, `UNIX_EPOCH` [INFO] [stderr] --> src/streamable.rs:25:17 [INFO] [stderr] | [INFO] [stderr] 25 | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::fs::File as AsyncFile` [INFO] [stderr] --> src/streamable.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use tokio::fs::File as AsyncFile; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::io::AsyncRead` [INFO] [stderr] --> src/streamable.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | use tokio::io::AsyncRead; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::prelude::*` [INFO] [stderr] --> src/streamable.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | use tokio::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/streamable.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:357:28 [INFO] [stderr] | [INFO] [stderr] 357 | if (path == "/radio") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/main.rs:345:33 [INFO] [stderr] | [INFO] [stderr] 345 | ... thread::sleep_ms(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/main.rs:376:29 [INFO] [stderr] | [INFO] [stderr] 376 | ... thread::sleep_ms(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::SystemTime` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::time::SystemTime; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/server.rs:148:16 [INFO] [stderr] | [INFO] [stderr] 148 | if (line.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/streamable.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/streamable.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::server` [INFO] [stderr] --> src/streamable.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::server; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/streamable.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::SeekFrom` [INFO] [stderr] --> src/streamable.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::io::SeekFrom; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::mem::drop` [INFO] [stderr] --> src/streamable.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | use std::mem::drop; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::*` [INFO] [stderr] --> src/streamable.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::net::*; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::*` [INFO] [stderr] --> src/streamable.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::sync::*; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/streamable.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/streamable.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `SystemTime`, `UNIX_EPOCH` [INFO] [stderr] --> src/streamable.rs:25:17 [INFO] [stderr] | [INFO] [stderr] 25 | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::fs::File as AsyncFile` [INFO] [stderr] --> src/streamable.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use tokio::fs::File as AsyncFile; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::io::AsyncRead` [INFO] [stderr] --> src/streamable.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | use tokio::io::AsyncRead; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::prelude::*` [INFO] [stderr] --> src/streamable.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | use tokio::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/streamable.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:357:28 [INFO] [stderr] | [INFO] [stderr] 357 | if (path == "/radio") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/main.rs:345:33 [INFO] [stderr] | [INFO] [stderr] 345 | ... thread::sleep_ms(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/main.rs:376:29 [INFO] [stderr] | [INFO] [stderr] 376 | ... thread::sleep_ms(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::iter` [INFO] [stderr] --> src/streamable.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use std::iter::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `buffer` [INFO] [stderr] --> src/main.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | let buffer = &mut [0; 5096]; [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_buffer` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `buffer` [INFO] [stderr] --> src/main.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | let buffer = &mut [0; 5096]; [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `total_length` [INFO] [stderr] --> src/server.rs:142:17 [INFO] [stderr] | [INFO] [stderr] 142 | let mut total_length = 0; [INFO] [stderr] | ^^^^^^^^^^^^ help: consider prefixing with an underscore: `_total_length` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `res` [INFO] [stderr] --> src/server.rs:145:17 [INFO] [stderr] | [INFO] [stderr] 145 | let res = buffered_stream.read_line(&mut line); [INFO] [stderr] | ^^^ help: consider prefixing with an underscore: `_res` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/streamable.rs:57:20 [INFO] [stderr] | [INFO] [stderr] 57 | Ok(n) => Ok(buffer.len()), [INFO] [stderr] | ^ help: consider prefixing with an underscore: `_n` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `playlist` [INFO] [stderr] --> src/streamable.rs:170:37 [INFO] [stderr] | [INFO] [stderr] 170 | Streamable::Playlist(_, playlist) => Err(std::io::Error::new( [INFO] [stderr] | ^^^^^^^^ help: consider prefixing with an underscore: `_playlist` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `playlist` [INFO] [stderr] --> src/streamable.rs:181:37 [INFO] [stderr] | [INFO] [stderr] 181 | Streamable::Playlist(_, playlist) => Err(std::io::Error::new( [INFO] [stderr] | ^^^^^^^^ help: consider prefixing with an underscore: `_playlist` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `playlist` [INFO] [stderr] --> src/streamable.rs:199:37 [INFO] [stderr] | [INFO] [stderr] 199 | Streamable::Playlist(_, playlist) => Err(std::io::Error::new( [INFO] [stderr] | ^^^^^^^^ help: consider prefixing with an underscore: `_playlist` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | let mut tls_session = rustls::ServerSession::new(&Arc::new(config.clone())); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:128:17 [INFO] [stderr] | [INFO] [stderr] 128 | let mut tls_stream = rustls::StreamOwned::new(tls_session, stream.unwrap()); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | let mut unwrapped_stream = stream; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | let mut total_length = 0; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/streamable.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | let mut output = process::Command::new("ffmpeg") [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never used: `callbacks` [INFO] [stderr] --> src/server.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | callbacks: HashMap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write` [INFO] [stderr] --> src/streamable.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn write(&mut self, buffer: &mut [u8]) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `uwrite` [INFO] [stderr] --> src/streamable.rs:177:5 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn uwrite(&mut self, buffer: &mut [u8]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `advance` [INFO] [stderr] --> src/streamable.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn advance(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(slice_patterns)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_attributes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(slice_patterns)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #![feature(duration_as_u128)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #![feature(duration_as_u128)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #![feature(type_ascription)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #![feature(type_ascription)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | #![feature(async_await)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | #![feature(async_await)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | std::fs::create_dir_all(format!("{}/{}", &path, "freshcast-startup")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | std::fs::create_dir_all(format!("{}/{}", self.path, ident)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:306:25 [INFO] [stderr] | [INFO] [stderr] 306 | recording.send(RecordingMessage::ChangeIdent(ident)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:323:33 [INFO] [stderr] | [INFO] [stderr] 323 | ... master.send(SourceMessage::InsertSource(src_path, stream_rx)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:344:33 [INFO] [stderr] | [INFO] [stderr] 344 | ... stream_tx.send((bytes_read, stream_buffer)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:365:29 [INFO] [stderr] | [INFO] [stderr] 365 | ... source_tx.send(SourceMessage::AddListener(recorder_tx)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:375:29 [INFO] [stderr] | [INFO] [stderr] 375 | ... stream_tx.send((bytes_read, stream_buffer)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `LIVE` should have a snake case name [INFO] [stderr] --> src/main.rs:395:9 [INFO] [stderr] | [INFO] [stderr] 395 | let LIVE = String::from("/live"); [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `live` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `RADIO` should have a snake case name [INFO] [stderr] --> src/main.rs:396:9 [INFO] [stderr] | [INFO] [stderr] 396 | let RADIO = String::from("/radio"); [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `radio` [INFO] [stderr] [INFO] [stderr] warning: variable `OB` should have a snake case name [INFO] [stderr] --> src/main.rs:397:9 [INFO] [stderr] | [INFO] [stderr] 397 | let OB = String::from("/outside-broadcast"); [INFO] [stderr] | ^^ help: convert the identifier to snake case: `ob` [INFO] [stderr] [INFO] [stderr] warning: variable `OFFAIR` should have a snake case name [INFO] [stderr] --> src/main.rs:398:9 [INFO] [stderr] | [INFO] [stderr] 398 | let OFFAIR = String::from("/offair"); [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `offair` [INFO] [stderr] [INFO] [stderr] warning: variable `OFFAIR_PLAYLIST` should have a snake case name [INFO] [stderr] --> src/main.rs:399:9 [INFO] [stderr] | [INFO] [stderr] 399 | let OFFAIR_PLAYLIST = &std::env::var("FRESHCAST_PLAYLIST").unwrap_or("./eighties".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `offair_playlist` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::iter` [INFO] [stderr] --> src/streamable.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use std::iter::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `buffer` [INFO] [stderr] --> src/main.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | let buffer = &mut [0; 5096]; [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_buffer` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `buffer` [INFO] [stderr] --> src/main.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | let buffer = &mut [0; 5096]; [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `total_length` [INFO] [stderr] --> src/server.rs:142:17 [INFO] [stderr] | [INFO] [stderr] 142 | let mut total_length = 0; [INFO] [stderr] | ^^^^^^^^^^^^ help: consider prefixing with an underscore: `_total_length` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `res` [INFO] [stderr] --> src/server.rs:145:17 [INFO] [stderr] | [INFO] [stderr] 145 | let res = buffered_stream.read_line(&mut line); [INFO] [stderr] | ^^^ help: consider prefixing with an underscore: `_res` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/streamable.rs:57:20 [INFO] [stderr] | [INFO] [stderr] 57 | Ok(n) => Ok(buffer.len()), [INFO] [stderr] | ^ help: consider prefixing with an underscore: `_n` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `playlist` [INFO] [stderr] --> src/streamable.rs:170:37 [INFO] [stderr] | [INFO] [stderr] 170 | Streamable::Playlist(_, playlist) => Err(std::io::Error::new( [INFO] [stderr] | ^^^^^^^^ help: consider prefixing with an underscore: `_playlist` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `playlist` [INFO] [stderr] --> src/streamable.rs:181:37 [INFO] [stderr] | [INFO] [stderr] 181 | Streamable::Playlist(_, playlist) => Err(std::io::Error::new( [INFO] [stderr] | ^^^^^^^^ help: consider prefixing with an underscore: `_playlist` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `playlist` [INFO] [stderr] --> src/streamable.rs:199:37 [INFO] [stderr] | [INFO] [stderr] 199 | Streamable::Playlist(_, playlist) => Err(std::io::Error::new( [INFO] [stderr] | ^^^^^^^^ help: consider prefixing with an underscore: `_playlist` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | let mut tls_session = rustls::ServerSession::new(&Arc::new(config.clone())); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:128:17 [INFO] [stderr] | [INFO] [stderr] 128 | let mut tls_stream = rustls::StreamOwned::new(tls_session, stream.unwrap()); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | let mut unwrapped_stream = stream; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/server.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | let mut total_length = 0; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/streamable.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | let mut output = process::Command::new("ffmpeg") [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never used: `callbacks` [INFO] [stderr] --> src/server.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | callbacks: HashMap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write` [INFO] [stderr] --> src/streamable.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn write(&mut self, buffer: &mut [u8]) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `uwrite` [INFO] [stderr] --> src/streamable.rs:177:5 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn uwrite(&mut self, buffer: &mut [u8]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `advance` [INFO] [stderr] --> src/streamable.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn advance(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(slice_patterns)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_attributes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(slice_patterns)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #![feature(duration_as_u128)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #![feature(duration_as_u128)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #![feature(type_ascription)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #![feature(type_ascription)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/streamable.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | #![feature(async_await)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate-level attribute should be in the root module [INFO] [stderr] --> src/streamable.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | #![feature(async_await)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | std::fs::create_dir_all(format!("{}/{}", &path, "freshcast-startup")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | std::fs::create_dir_all(format!("{}/{}", self.path, ident)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:306:25 [INFO] [stderr] | [INFO] [stderr] 306 | recording.send(RecordingMessage::ChangeIdent(ident)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:323:33 [INFO] [stderr] | [INFO] [stderr] 323 | ... master.send(SourceMessage::InsertSource(src_path, stream_rx)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:344:33 [INFO] [stderr] | [INFO] [stderr] 344 | ... stream_tx.send((bytes_read, stream_buffer)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:365:29 [INFO] [stderr] | [INFO] [stderr] 365 | ... source_tx.send(SourceMessage::AddListener(recorder_tx)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:375:29 [INFO] [stderr] | [INFO] [stderr] 375 | ... stream_tx.send((bytes_read, stream_buffer)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `LIVE` should have a snake case name [INFO] [stderr] --> src/main.rs:395:9 [INFO] [stderr] | [INFO] [stderr] 395 | let LIVE = String::from("/live"); [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `live` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `RADIO` should have a snake case name [INFO] [stderr] --> src/main.rs:396:9 [INFO] [stderr] | [INFO] [stderr] 396 | let RADIO = String::from("/radio"); [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `radio` [INFO] [stderr] [INFO] [stderr] warning: variable `OB` should have a snake case name [INFO] [stderr] --> src/main.rs:397:9 [INFO] [stderr] | [INFO] [stderr] 397 | let OB = String::from("/outside-broadcast"); [INFO] [stderr] | ^^ help: convert the identifier to snake case: `ob` [INFO] [stderr] [INFO] [stderr] warning: variable `OFFAIR` should have a snake case name [INFO] [stderr] --> src/main.rs:398:9 [INFO] [stderr] | [INFO] [stderr] 398 | let OFFAIR = String::from("/offair"); [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `offair` [INFO] [stderr] [INFO] [stderr] warning: variable `OFFAIR_PLAYLIST` should have a snake case name [INFO] [stderr] --> src/main.rs:399:9 [INFO] [stderr] | [INFO] [stderr] 399 | let OFFAIR_PLAYLIST = &std::env::var("FRESHCAST_PLAYLIST").unwrap_or("./eighties".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `offair_playlist` [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 22.48s [INFO] running `"docker" "inspect" "5132117c78c3f04683de72f2cbf97ed0ab4643c60cafeb50b0b9192430c289ce"` [INFO] running `"docker" "rm" "-f" "5132117c78c3f04683de72f2cbf97ed0ab4643c60cafeb50b0b9192430c289ce"` [INFO] [stdout] 5132117c78c3f04683de72f2cbf97ed0ab4643c60cafeb50b0b9192430c289ce