[INFO] cloning repository https://github.com/topecongiro/rtsp-client [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/topecongiro/rtsp-client" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftopecongiro%2Frtsp-client", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftopecongiro%2Frtsp-client'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] be0f745128d04f873c8ce8d7554d087b4487f0d7 [INFO] checking topecongiro/rtsp-client against master#1f12b9b0fdbe735968ac002792a720f0ba4faca6 for crater-rollup-uwu [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftopecongiro%2Frtsp-client" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/topecongiro/rtsp-client on toolchain 1f12b9b0fdbe735968ac002792a720f0ba4faca6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/topecongiro/rtsp-client [INFO] finished tweaking git repo https://github.com/topecongiro/rtsp-client [INFO] tweaked toml for git repo https://github.com/topecongiro/rtsp-client written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/topecongiro/rtsp-client 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" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sdp-types v0.1.3 [INFO] [stderr] Downloaded http-auth v0.1.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 92167deb27f92b3ca0bdb81fd7636899ca26c8a4bb3922a211b5a25c083604e2 [INFO] running `Command { std: "docker" "start" "-a" "92167deb27f92b3ca0bdb81fd7636899ca26c8a4bb3922a211b5a25c083604e2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "92167deb27f92b3ca0bdb81fd7636899ca26c8a4bb3922a211b5a25c083604e2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "92167deb27f92b3ca0bdb81fd7636899ca26c8a4bb3922a211b5a25c083604e2", kill_on_drop: false }` [INFO] [stdout] 92167deb27f92b3ca0bdb81fd7636899ca26c8a4bb3922a211b5a25c083604e2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1d386d56958d807ee94b5ea4a9c1838b153e9381cbc1c957abb5c435391c7163 [INFO] running `Command { std: "docker" "start" "-a" "1d386d56958d807ee94b5ea4a9c1838b153e9381cbc1c957abb5c435391c7163", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.117 [INFO] [stderr] Compiling proc-macro2 v1.0.36 [INFO] [stderr] Compiling syn v1.0.86 [INFO] [stderr] Compiling typenum v1.15.0 [INFO] [stderr] Compiling generic-array v0.14.5 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Checking smallvec v1.8.0 [INFO] [stderr] Checking instant v0.1.12 [INFO] [stderr] Checking tinyvec v1.5.1 [INFO] [stderr] Checking lock_api v0.4.6 [INFO] [stderr] Compiling indexmap v1.8.0 [INFO] [stderr] Checking ppv-lite86 v0.2.16 [INFO] [stderr] Compiling futures-core v0.3.21 [INFO] [stderr] Checking aho-corasick v0.7.18 [INFO] [stderr] Checking cpufeatures v0.2.1 [INFO] [stderr] Compiling heck v0.4.0 [INFO] [stderr] Checking once_cell v1.9.0 [INFO] [stderr] Checking regex-syntax v0.6.25 [INFO] [stderr] Checking pin-project-lite v0.2.8 [INFO] [stderr] Compiling http-auth v0.1.5 [INFO] [stderr] Compiling anyhow v1.0.53 [INFO] [stderr] Checking termcolor v1.1.2 [INFO] [stderr] Checking unicode-bidi v0.3.7 [INFO] [stderr] Checking bstr v0.2.17 [INFO] [stderr] Checking os_str_bytes v6.0.0 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Checking textwrap v0.14.2 [INFO] [stderr] Checking fallible-iterator v0.2.0 [INFO] [stderr] Checking sdp-types v0.1.3 [INFO] [stderr] Compiling quote v1.0.15 [INFO] [stderr] Checking unicode-normalization v0.1.19 [INFO] [stderr] Checking getrandom v0.2.4 [INFO] [stderr] Checking parking_lot_core v0.8.5 [INFO] [stderr] Checking signal-hook-registry v1.4.0 [INFO] [stderr] Checking num_cpus v1.13.1 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking mio v0.7.14 [INFO] [stderr] Checking regex v1.5.4 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking parking_lot v0.11.2 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking md-5 v0.9.1 [INFO] [stderr] Checking sha2 v0.9.9 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking env_logger v0.9.0 [INFO] [stderr] Checking url v2.2.2 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling tokio-macros v1.7.0 [INFO] [stderr] Compiling thiserror-impl v1.0.30 [INFO] [stderr] Compiling clap_derive v3.0.14 [INFO] [stderr] Checking tokio v1.16.1 [INFO] [stderr] Checking thiserror v1.0.30 [INFO] [stderr] Checking clap v3.0.14 [INFO] [stderr] Checking tokio-stream v0.1.8 [INFO] [stderr] Checking rtsp_client v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `tokio::select` [INFO] [stdout] --> src/main.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::select; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt` [INFO] [stdout] --> src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::io::AsyncReadExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::select` [INFO] [stdout] --> src/main.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::select; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IpAddr` [INFO] [stdout] --> src/rtsp.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{IpAddr, SocketAddr}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::RangeInclusive` [INFO] [stdout] --> src/rtsp.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::ops::RangeInclusive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt` [INFO] [stdout] --> src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::io::AsyncReadExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/rtsp.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UdpSocket` [INFO] [stdout] --> src/rtsp.rs:13:30 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::{net::{TcpStream, UdpSocket}, io::AsyncWriteExt}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IpAddr` [INFO] [stdout] --> src/rtsp.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{IpAddr, SocketAddr}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::rtp::RtpStream` [INFO] [stdout] --> src/rtsp.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::rtp::RtpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::RangeInclusive` [INFO] [stdout] --> src/rtsp.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::ops::RangeInclusive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow` [INFO] [stdout] --> src/rtsp/data_stream.rs:8:14 [INFO] [stdout] | [INFO] [stdout] 8 | use anyhow::{anyhow, bail}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/rtsp.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToSocketAddrs` [INFO] [stdout] --> src/rtsp/data_stream.rs:10:18 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio::net::{ToSocketAddrs, UdpSocket}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `url::Url` [INFO] [stdout] --> src/rtsp/data_stream.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use url::Url; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::Config` [INFO] [stdout] --> src/rtsp/data_stream.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::Config; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UdpSocket` [INFO] [stdout] --> src/rtsp.rs:13:30 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::{net::{TcpStream, UdpSocket}, io::AsyncWriteExt}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::rtp::RtpStream` [INFO] [stdout] --> src/rtsp.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::rtp::RtpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow` [INFO] [stdout] --> src/rtsp/data_stream.rs:8:14 [INFO] [stdout] | [INFO] [stdout] 8 | use anyhow::{anyhow, bail}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToSocketAddrs` [INFO] [stdout] --> src/rtsp/data_stream.rs:10:18 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio::net::{ToSocketAddrs, UdpSocket}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `url::Url` [INFO] [stdout] --> src/rtsp/data_stream.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use url::Url; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::Config` [INFO] [stdout] --> src/rtsp/data_stream.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::Config; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio_stream::StreamExt` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio_stream::StreamExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio_stream::StreamExt` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio_stream::StreamExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `video_stream` [INFO] [stdout] --> src/main.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let video_stream = client.connect(url).await?; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_stream` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/main.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | let mut buf = vec![0u8; 1500]; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf2` [INFO] [stdout] --> src/main.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | let mut buf2 = vec![0u8; 1500]; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_buf2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interval` [INFO] [stdout] --> src/main.rs:52:13 [INFO] [stdout] | [INFO] [stdout] 52 | let mut interval = interval(Duration::from_secs(5)); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `video_stream` [INFO] [stdout] --> src/main.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let video_stream = client.connect(url).await?; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_stream` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/main.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | let mut buf = vec![0u8; 1500]; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf2` [INFO] [stdout] --> src/main.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | let mut buf2 = vec![0u8; 1500]; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_buf2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interval` [INFO] [stdout] --> src/main.rs:52:13 [INFO] [stdout] | [INFO] [stdout] 52 | let mut interval = interval(Duration::from_secs(5)); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | let mut client = RtspClient::new(config).await?; [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: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | let mut buf = vec![0u8; 1500]; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | let mut buf2 = vec![0u8; 1500]; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | let mut interval = interval(Duration::from_secs(5)); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | let mut client = RtspClient::new(config).await?; [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: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | let mut buf = vec![0u8; 1500]; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | let mut buf2 = vec![0u8; 1500]; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | let mut interval = interval(Duration::from_secs(5)); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/rtp.rs:30:19 [INFO] [stdout] | [INFO] [stdout] 29 | impl RtpStream { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] 30 | pub(crate) fn new(socket: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/rtp/packet.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub(crate) struct RtpPacket { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 8 | /// The size of padding at the end or the packet. If `None`, there is no padding. [INFO] [stdout] 9 | padding: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 10 | /// An extension header. [INFO] [stdout] 11 | extension_header: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | has_marker: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 13 | csrc_count: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | payload_type: RtpPayloadType, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 15 | sequence_number: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 16 | timestamp: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 17 | ssrc: u32, [INFO] [stdout] | ^^^^ [INFO] [stdout] 18 | csrc_list: [u32; 15], // FIXME: not ideal :( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 19 | payload: Bytes, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtpPacket` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `contents` are never read [INFO] [stdout] --> src/rtp/packet.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub(crate) struct ExtensionHeader { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 24 | id: u16, [INFO] [stdout] | ^^ [INFO] [stdout] 25 | contents: Bytes, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExtensionHeader` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/rtp/packet.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | Unknown(u8), [INFO] [stdout] | ------- ^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `RtpPayloadType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 30 | Unknown(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtsp_stream` and `data_stream` are never read [INFO] [stdout] --> src/rtsp.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub(crate) struct VideoStream { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 62 | rtsp_stream: RtspStream, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 63 | data_stream: DataStream, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `play` is never used [INFO] [stdout] --> src/rtsp.rs:145:25 [INFO] [stdout] | [INFO] [stdout] 97 | impl RtspStream { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | pub(crate) async fn play(&mut self, session: u32) -> anyhow::Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Options` and `Play` are never constructed [INFO] [stdout] --> src/rtsp.rs:244:5 [INFO] [stdout] | [INFO] [stdout] 242 | enum RtspMethod { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 243 | Describe, [INFO] [stdout] 244 | Options, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 245 | Play, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtspMethod` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `response` is never read [INFO] [stdout] --> src/rtsp.rs:288:5 [INFO] [stdout] | [INFO] [stdout] 287 | pub(crate) struct DescribeResponse { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 288 | response: RtspResponse, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DescribeResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/rtp.rs:30:19 [INFO] [stdout] | [INFO] [stdout] 29 | impl RtpStream { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] 30 | pub(crate) fn new(socket: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `session` is never used [INFO] [stdout] --> src/rtsp.rs:293:19 [INFO] [stdout] | [INFO] [stdout] 292 | impl DescribeResponse { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 293 | pub(crate) fn session(&self) -> &sdp_types::Session { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayResponse` is never constructed [INFO] [stdout] --> src/rtsp.rs:313:19 [INFO] [stdout] | [INFO] [stdout] 313 | pub(crate) struct PlayResponse { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `response` and `session` are never read [INFO] [stdout] --> src/rtsp.rs:319:5 [INFO] [stdout] | [INFO] [stdout] 318 | pub(crate) struct SetupResponse { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 319 | response: RtspResponse, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 320 | peer_ports: (u16, u16), [INFO] [stdout] 321 | session: (u32, usize), // (Session ID, timeout) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SetupResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `timeout` and `session_id` are never used [INFO] [stdout] --> src/rtsp.rs:325:19 [INFO] [stdout] | [INFO] [stdout] 324 | impl SetupResponse { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 325 | pub(crate) fn timeout(&self) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub(crate) fn session_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/rtp/packet.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub(crate) struct RtpPacket { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 8 | /// The size of padding at the end or the packet. If `None`, there is no padding. [INFO] [stdout] 9 | padding: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 10 | /// An extension header. [INFO] [stdout] 11 | extension_header: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | has_marker: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 13 | csrc_count: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | payload_type: RtpPayloadType, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 15 | sequence_number: u16, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 16 | timestamp: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 17 | ssrc: u32, [INFO] [stdout] | ^^^^ [INFO] [stdout] 18 | csrc_list: [u32; 15], // FIXME: not ideal :( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 19 | payload: Bytes, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtpPacket` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `version` is never read [INFO] [stdout] --> src/rtsp.rs:378:5 [INFO] [stdout] | [INFO] [stdout] 374 | pub(crate) struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 378 | version: RtspVersion, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtp_socket`, `rtcp_socket`, and `ports` are never read [INFO] [stdout] --> src/rtsp/data_stream.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) struct DataStream { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 16 | rtp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 17 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 18 | ports: RtpRtcpPorts, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `contents` are never read [INFO] [stdout] --> src/rtp/packet.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub(crate) struct ExtensionHeader { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 24 | id: u16, [INFO] [stdout] | ^^ [INFO] [stdout] 25 | contents: Bytes, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExtensionHeader` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `local` and `peer` are never read [INFO] [stdout] --> src/rtsp/data_stream.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub(crate) struct RtpRtcpPorts { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 22 | local: (u16, u16), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | peer: (u16, u16), [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/rtp/packet.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | Unknown(u8), [INFO] [stdout] | ------- ^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `RtpPayloadType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 30 | Unknown(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `local_rtp_port` and `local_rtcp_port` are never used [INFO] [stdout] --> src/rtsp/data_stream.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 32 | impl DataStream { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 33 | pub(crate) fn local_rtp_port(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub(crate) fn local_rtcp_port(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtsp_stream` and `data_stream` are never read [INFO] [stdout] --> src/rtsp.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub(crate) struct VideoStream { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 62 | rtsp_stream: RtspStream, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 63 | data_stream: DataStream, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `punch_firewall_hole` is never used [INFO] [stdout] --> src/rtsp/data_stream.rs:76:10 [INFO] [stdout] | [INFO] [stdout] 76 | async fn punch_firewall_hole( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `play` is never used [INFO] [stdout] --> src/rtsp.rs:145:25 [INFO] [stdout] | [INFO] [stdout] 97 | impl RtspStream { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | pub(crate) async fn play(&mut self, session: u32) -> anyhow::Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Options` and `Play` are never constructed [INFO] [stdout] --> src/rtsp.rs:244:5 [INFO] [stdout] | [INFO] [stdout] 242 | enum RtspMethod { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 243 | Describe, [INFO] [stdout] 244 | Options, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 245 | Play, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtspMethod` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `response` is never read [INFO] [stdout] --> src/rtsp.rs:288:5 [INFO] [stdout] | [INFO] [stdout] 287 | pub(crate) struct DescribeResponse { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 288 | response: RtspResponse, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DescribeResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `session` is never used [INFO] [stdout] --> src/rtsp.rs:293:19 [INFO] [stdout] | [INFO] [stdout] 292 | impl DescribeResponse { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 293 | pub(crate) fn session(&self) -> &sdp_types::Session { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayResponse` is never constructed [INFO] [stdout] --> src/rtsp.rs:313:19 [INFO] [stdout] | [INFO] [stdout] 313 | pub(crate) struct PlayResponse { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `response` and `session` are never read [INFO] [stdout] --> src/rtsp.rs:319:5 [INFO] [stdout] | [INFO] [stdout] 318 | pub(crate) struct SetupResponse { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 319 | response: RtspResponse, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 320 | peer_ports: (u16, u16), [INFO] [stdout] 321 | session: (u32, usize), // (Session ID, timeout) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SetupResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `timeout` and `session_id` are never used [INFO] [stdout] --> src/rtsp.rs:325:19 [INFO] [stdout] | [INFO] [stdout] 324 | impl SetupResponse { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 325 | pub(crate) fn timeout(&self) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub(crate) fn session_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `version` is never read [INFO] [stdout] --> src/rtsp.rs:378:5 [INFO] [stdout] | [INFO] [stdout] 374 | pub(crate) struct Config { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 378 | version: RtspVersion, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtp_socket`, `rtcp_socket`, and `ports` are never read [INFO] [stdout] --> src/rtsp/data_stream.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) struct DataStream { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 16 | rtp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 17 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 18 | ports: RtpRtcpPorts, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `local` and `peer` are never read [INFO] [stdout] --> src/rtsp/data_stream.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub(crate) struct RtpRtcpPorts { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 22 | local: (u16, u16), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | peer: (u16, u16), [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `local_rtp_port` and `local_rtcp_port` are never used [INFO] [stdout] --> src/rtsp/data_stream.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 32 | impl DataStream { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 33 | pub(crate) fn local_rtp_port(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub(crate) fn local_rtcp_port(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `punch_firewall_hole` is never used [INFO] [stdout] --> src/rtsp/data_stream.rs:76:10 [INFO] [stdout] | [INFO] [stdout] 76 | async fn punch_firewall_hole( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | / env_logger::builder() [INFO] [stdout] 37 | | .filter_module(env!("CARGO_PKG_NAME"), LevelFilter::Trace) [INFO] [stdout] 38 | | .try_init(); [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] 36 | let _ = env_logger::builder() [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | / env_logger::builder() [INFO] [stdout] 37 | | .filter_module(env!("CARGO_PKG_NAME"), LevelFilter::Trace) [INFO] [stdout] 38 | | .try_init(); [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] 36 | let _ = env_logger::builder() [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 38 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 38 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.76s [INFO] running `Command { std: "docker" "inspect" "1d386d56958d807ee94b5ea4a9c1838b153e9381cbc1c957abb5c435391c7163", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1d386d56958d807ee94b5ea4a9c1838b153e9381cbc1c957abb5c435391c7163", kill_on_drop: false }` [INFO] [stdout] 1d386d56958d807ee94b5ea4a9c1838b153e9381cbc1c957abb5c435391c7163