[INFO] updating cached repository https://github.com/FredericDesgreniers/advent_of_code_rs [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"` [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 431d46277d54c93ce73689c6198d3261d6c0216b [INFO] checking FredericDesgreniers/advent_of_code_rs against master#45d050cde277b22a755847338f2acc2c7b834141 for pr-71393 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFredericDesgreniers%2Fadvent_of_code_rs" "/workspace/builds/worker-10/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-10/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/FredericDesgreniers/advent_of_code_rs on toolchain 45d050cde277b22a755847338f2acc2c7b834141 [INFO] running `"/workspace/cargo-home/bin/cargo" "+45d050cde277b22a755847338f2acc2c7b834141" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/FredericDesgreniers/advent_of_code_rs [INFO] finished tweaking git repo https://github.com/FredericDesgreniers/advent_of_code_rs [INFO] tweaked toml for git repo https://github.com/FredericDesgreniers/advent_of_code_rs written to /workspace/builds/worker-10/source/Cargo.toml [INFO] crate git repo https://github.com/FredericDesgreniers/advent_of_code_rs already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+45d050cde277b22a755847338f2acc2c7b834141" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/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" "MAP_USER_ID=0" "-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" "+45d050cde277b22a755847338f2acc2c7b834141" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] aaaa01b883ee95c0ea1d00214d725cdf96d359b3f28b4ca8bea824d0835e4224 [INFO] running `"docker" "start" "-a" "aaaa01b883ee95c0ea1d00214d725cdf96d359b3f28b4ca8bea824d0835e4224"` [INFO] [stderr] Checking cfg-if v0.1.6 [INFO] [stderr] Checking lazy_static v1.2.0 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Compiling memchr v2.1.1 [INFO] [stderr] Checking rand_xorshift v0.1.0 [INFO] [stderr] Checking arrayvec v0.4.8 [INFO] [stderr] Checking approx v0.3.0 [INFO] [stderr] Checking stb_truetype v0.2.4 [INFO] [stderr] Compiling rand_pcg v0.1.1 [INFO] [stderr] Compiling rand_chacha v0.1.0 [INFO] [stderr] Compiling rand v0.6.1 [INFO] [stderr] Checking itertools v0.7.11 [INFO] [stderr] Checking thread_local v0.3.6 [INFO] [stderr] Checking rusttype v0.7.3 [INFO] [stderr] Checking aho-corasick v0.6.9 [INFO] [stderr] Checking regex v1.1.0 [INFO] [stderr] Checking advent_of_code v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Repeat`, `SetParameter` [INFO] [stderr] --> src/lib.rs:7:20 [INFO] [stderr] | [INFO] [stderr] 7 | use gif::{Encoder, Repeat, SetParameter}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rusttype::Point` [INFO] [stderr] --> src/lib.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use rusttype::Point; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Index` [INFO] [stderr] --> src/lib.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::ops::Index; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:53:27 [INFO] [stderr] | [INFO] [stderr] 53 | ) -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Repeat`, `SetParameter` [INFO] [stderr] --> src/lib.rs:7:20 [INFO] [stderr] | [INFO] [stderr] 7 | use gif::{Encoder, Repeat, SetParameter}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rusttype::Point` [INFO] [stderr] --> src/lib.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use rusttype::Point; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Index` [INFO] [stderr] --> src/lib.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::ops::Index; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:53:27 [INFO] [stderr] | [INFO] [stderr] 53 | ) -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 5 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: 5 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused label [INFO] [stderr] --> src/bin/day6.rs:26:3 [INFO] [stderr] | [INFO] [stderr] 26 | 'x: for x in 0..SIZE { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_labels)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `num_traits::real::Real` [INFO] [stderr] --> src/bin/day6.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use num_traits::real::Real; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `gif::Encoder` [INFO] [stderr] --> src/bin/day3.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use gif::Encoder; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/bin/day3.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary braces around block return value [INFO] [stderr] --> src/bin/day3.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | { Regex::new("#(:?[0-9]+) @ (:?[0-9]+),(:?[0-9]+): (:?[0-9]+)x(:?[0-9]+)").unwrap() }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_braces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 2 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unnecessary braces around block return value [INFO] [stderr] --> src/bin/day4.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | { Regex::new("\\[(:?.+) (:?[0-9]+):(:?[0-9]+)\\] (:?.*)").unwrap() }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_braces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused label [INFO] [stderr] --> src/bin/day6.rs:26:3 [INFO] [stderr] | [INFO] [stderr] 26 | 'x: for x in 0..SIZE { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_labels)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary braces around block return value [INFO] [stderr] --> src/bin/day4.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | { Regex::new("\\[(:?.+) (:?[0-9]+):(:?[0-9]+)\\] (:?.*)").unwrap() }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_braces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `num_traits::real::Real` [INFO] [stderr] --> src/bin/day5.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use num_traits::real::Real; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/day5.rs:7:6 [INFO] [stderr] | [INFO] [stderr] 7 | let mut input = INPUT.chars().filter(|c| c.is_alphabetic()).collect_vec(); [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 `bestLen` should have a snake case name [INFO] [stderr] --> src/bin/day5.rs:11:10 [INFO] [stderr] | [INFO] [stderr] 11 | let mut bestLen = ::std::usize::MAX; [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `best_len` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `leftC` should have a snake case name [INFO] [stderr] --> src/bin/day5.rs:21:8 [INFO] [stderr] | [INFO] [stderr] 21 | let leftC = input[i]; [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `left_c` [INFO] [stderr] [INFO] [stderr] warning: unused import: `gif::Encoder` [INFO] [stderr] --> src/bin/day3.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use gif::Encoder; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/bin/day3.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary braces around block return value [INFO] [stderr] --> src/bin/day3.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | { Regex::new("#(:?[0-9]+) @ (:?[0-9]+),(:?[0-9]+): (:?[0-9]+)x(:?[0-9]+)").unwrap() }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_braces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `rightC` should have a snake case name [INFO] [stderr] --> src/bin/day5.rs:22:8 [INFO] [stderr] | [INFO] [stderr] 22 | let rightC = input[i + 1]; [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `right_c` [INFO] [stderr] [INFO] [stderr] warning: 5 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused import: `num_traits::real::Real` [INFO] [stderr] --> src/bin/day6.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use num_traits::real::Real; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/bin/day7.rs:81:8 [INFO] [stderr] | [INFO] [stderr] 81 | for (i, worker) in &mut workers.iter_mut().enumerate() { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `num_traits::real::Real` [INFO] [stderr] --> src/bin/day5.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use num_traits::real::Real; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 2 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/day5.rs:7:6 [INFO] [stderr] | [INFO] [stderr] 7 | let mut input = INPUT.chars().filter(|c| c.is_alphabetic()).collect_vec(); [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 `bestLen` should have a snake case name [INFO] [stderr] --> src/bin/day5.rs:11:10 [INFO] [stderr] | [INFO] [stderr] 11 | let mut bestLen = ::std::usize::MAX; [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `best_len` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `leftC` should have a snake case name [INFO] [stderr] --> src/bin/day5.rs:21:8 [INFO] [stderr] | [INFO] [stderr] 21 | let leftC = input[i]; [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `left_c` [INFO] [stderr] [INFO] [stderr] warning: variable `rightC` should have a snake case name [INFO] [stderr] --> src/bin/day5.rs:22:8 [INFO] [stderr] | [INFO] [stderr] 22 | let rightC = input[i + 1]; [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `right_c` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/day4.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | let mut inputs = INPUT [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: 5 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/bin/day7.rs:81:8 [INFO] [stderr] | [INFO] [stderr] 81 | for (i, worker) in &mut workers.iter_mut().enumerate() { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 1 warning emitted [INFO] [stderr] [INFO] [stderr] warning: 2 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/day4.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | let mut inputs = INPUT [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: unused variable: `update_info` [INFO] [stderr] --> src/bin/day3.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | let mut update_info = false; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_update_info` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `update_info` [INFO] [stderr] --> src/bin/day3.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | let mut update_info = false; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_update_info` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 2 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/day3.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | let mut image = File::create("day3_timelapse.gif").unwrap(); [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/bin/day3.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | let mut update_info = false; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: static variable `parser` should have an upper case name [INFO] [stderr] --> src/bin/day3.rs:21:20 [INFO] [stderr] | [INFO] [stderr] 21 | pub static ref parser: Regex = [INFO] [stderr] | ^^^^^^ help: convert the identifier to upper case: `PARSER` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_upper_case_globals)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bin/day3.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | let mut image = File::create("day3_timelapse.gif").unwrap(); [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/bin/day3.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | let mut update_info = false; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: static variable `parser` should have an upper case name [INFO] [stderr] --> src/bin/day3.rs:21:20 [INFO] [stderr] | [INFO] [stderr] 21 | pub static ref parser: Regex = [INFO] [stderr] | ^^^^^^ help: convert the identifier to upper case: `PARSER` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_upper_case_globals)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 7 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: 1 warning emitted [INFO] [stderr] [INFO] [stderr] warning: 7 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 10.94s [INFO] running `"docker" "inspect" "aaaa01b883ee95c0ea1d00214d725cdf96d359b3f28b4ca8bea824d0835e4224"` [INFO] running `"docker" "rm" "-f" "aaaa01b883ee95c0ea1d00214d725cdf96d359b3f28b4ca8bea824d0835e4224"` [INFO] [stdout] aaaa01b883ee95c0ea1d00214d725cdf96d359b3f28b4ca8bea824d0835e4224