[INFO] updating cached repository justinj/last-layer-algs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/justinj/last-layer-algs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/justinj/last-layer-algs" "work/ex/beta-1.38-1/sources/1.37.0/gh/justinj/last-layer-algs"` [INFO] [stderr] Cloning into 'work/ex/beta-1.38-1/sources/1.37.0/gh/justinj/last-layer-algs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/justinj/last-layer-algs" "work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/justinj/last-layer-algs"` [INFO] [stderr] Cloning into 'work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/justinj/last-layer-algs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] de67ade8d71983d3212403132647f244448ff666 [INFO] sha for GitHub repo justinj/last-layer-algs: de67ade8d71983d3212403132647f244448ff666 [INFO] validating manifest of justinj/last-layer-algs on toolchain 1.37.0 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of justinj/last-layer-algs on toolchain beta-2019-08-13 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing justinj/last-layer-algs [INFO] finished frobbing justinj/last-layer-algs [INFO] frobbed toml for justinj/last-layer-algs written to work/ex/beta-1.38-1/sources/1.37.0/gh/justinj/last-layer-algs/Cargo.toml [INFO] started frobbing justinj/last-layer-algs [INFO] finished frobbing justinj/last-layer-algs [INFO] frobbed toml for justinj/last-layer-algs written to work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/justinj/last-layer-algs/Cargo.toml [INFO] crate justinj/last-layer-algs already has a lockfile, it will not be regenerated [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] testing justinj/last-layer-algs against beta-2019-08-13 for beta-1.38-1 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.38-1/worker-2/beta-2019-08-13:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/beta-1.38-1/sources/beta-2019-08-13/gh/justinj/last-layer-algs:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+beta-2019-08-13" "build" "--frozen"` [INFO] [stdout] 2e5b8e7bbc07008ac11a8d69e91c2b7258f99f1261bd0fe6cf6b3326d7ff7549 [INFO] running `"docker" "start" "-a" "2e5b8e7bbc07008ac11a8d69e91c2b7258f99f1261bd0fe6cf6b3326d7ff7549"` [INFO] [stderr] Compiling rustc-serialize v0.3.21 [INFO] [stderr] Compiling rust-crypto v0.2.36 [INFO] [stderr] Compiling openssl-sys v0.7.17 [INFO] [stderr] Compiling libz-sys v1.0.7 [INFO] [stderr] Compiling curl-sys v0.2.5 [INFO] [stderr] Compiling unicode-bidi v0.2.3 [INFO] [stderr] Compiling clap v2.19.0 [INFO] [stderr] Compiling time v0.1.35 [INFO] [stderr] Compiling idna v0.1.0 [INFO] [stderr] Compiling url v1.2.3 [INFO] [stderr] warning[E0713]: borrow may still be in use when destructor runs [INFO] [stderr] --> /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/url-1.2.3/src/form_urlencoded.rs:246:40 [INFO] [stderr] | [INFO] [stderr] 244 | impl<'a> Target for ::UrlQuery<'a> { [INFO] [stderr] | -- lifetime `'a` defined here [INFO] [stderr] 245 | fn as_mut_string(&mut self) -> &mut String { &mut self.url.serialization } [INFO] [stderr] 246 | fn finish(self) -> &'a mut ::Url { self.url } [INFO] [stderr] | ^^^^^^^^ - here, drop of `self` needs exclusive access to `*self.url`, because the type `UrlQuery<'_>` implements the `Drop` trait [INFO] [stderr] | | [INFO] [stderr] | returning this value requires that `*self.url` is borrowed for `'a` [INFO] [stderr] | [INFO] [stderr] = warning: this error has been downgraded to a warning for backwards compatibility with previous releases [INFO] [stderr] = warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future [INFO] [stderr] = note: for more information, try `rustc --explain E0729` [INFO] [stderr] [INFO] [stderr] Compiling num-bigint v0.1.35 [INFO] [stderr] Compiling num-complex v0.1.35 [INFO] [stderr] Compiling num-rational v0.1.35 [INFO] [stderr] Compiling num v0.1.36 [INFO] [stderr] Compiling cairo v0.0.4 [INFO] [stderr] Compiling curl v0.3.11 [INFO] [stderr] Compiling oauth-client v0.1.4 (https://github.com/justinj/oauth-client-rs#649fe40d) [INFO] [stderr] Compiling last-layer-algs v0.1.0 (/opt/crater/workdir) [INFO] [stderr] error[E0554]: `#![feature]` may not be used on the beta release channel [INFO] [stderr] --> src/main.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/algorithm.rs:16:20 [INFO] [stderr] | [INFO] [stderr] 16 | type Err = Box; [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/algorithm_iterator.rs:48:65 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn from_starting_algorithm(s: &str) -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/tweet.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | fn next_or_err(lines: &mut Iterator) -> Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Iterator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/tweet.rs:25:75 [INFO] [stderr] | [INFO] [stderr] 25 | fn next_or_err(lines: &mut Iterator) -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/tweet.rs:29:35 [INFO] [stderr] | [INFO] [stderr] 29 | fn load() -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/tweet.rs:55:90 [INFO] [stderr] | [INFO] [stderr] 55 | fn upload_image(consumer: &Token, access: &Token, filename: &str) -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/tweet.rs:74:101 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn post_tweet(consumer: &Token, access: &Token, status: &str, filename: &str) -> Result<(), Box> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/tweet.rs:85:65 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn tweet(alg: &str, image_filename: &str) -> Result<(), Box> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: unused imports: `D`, `FPRIME`, `F`, `RPRIME`, `R`, `UPRIME`, `U` [INFO] [stderr] --> src/f2l_cubestate.rs:6:31 [INFO] [stderr] | [INFO] [stderr] 6 | use generator::move_indices::{F, R, U, RPRIME, UPRIME, FPRIME, D}; [INFO] [stderr] | ^ ^ ^ ^^^^^^ ^^^^^^ ^^^^^^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `cubestate::CubeState` [INFO] [stderr] --> src/f2l_cubestate.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use cubestate::CubeState; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/main.rs:39:49 [INFO] [stderr] | [INFO] [stderr] 39 | fn alg_following(s: &str) -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/main.rs:45:41 [INFO] [stderr] | [INFO] [stderr] 45 | fn get_last_alg() -> Result> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/main.rs:53:45 [INFO] [stderr] | [INFO] [stderr] 53 | fn write_alg(alg: String) -> Result<(), Box> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/main.rs:59:38 [INFO] [stderr] | [INFO] [stderr] 59 | fn prepare_tweet() -> Result<(), Box> { [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Error` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/generator.rs:128:1 [INFO] [stderr] | [INFO] [stderr] 128 | / lazy_static! { [INFO] [stderr] 129 | | static ref GENERATOR_SUCCESSORS: Vec> = { [INFO] [stderr] 130 | | GENERATORS.iter().map(|g| { [INFO] [stderr] 131 | | g.successors_() [INFO] [stderr] 132 | | }).collect() [INFO] [stderr] 133 | | }; [INFO] [stderr] 134 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/generator.rs:128:1 [INFO] [stderr] | [INFO] [stderr] 128 | / lazy_static! { [INFO] [stderr] 129 | | static ref GENERATOR_SUCCESSORS: Vec> = { [INFO] [stderr] 130 | | GENERATORS.iter().map(|g| { [INFO] [stderr] 131 | | g.successors_() [INFO] [stderr] 132 | | }).collect() [INFO] [stderr] 133 | | }; [INFO] [stderr] 134 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_permutation.rs:105:1 [INFO] [stderr] | [INFO] [stderr] 105 | / lazy_static! { [INFO] [stderr] 106 | | pub static ref TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 107 | | CornerPermutation::make_transition_table() [INFO] [stderr] 108 | | }; [INFO] [stderr] ... | [INFO] [stderr] 112 | | }; [INFO] [stderr] 113 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_permutation.rs:105:1 [INFO] [stderr] | [INFO] [stderr] 105 | / lazy_static! { [INFO] [stderr] 106 | | pub static ref TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 107 | | CornerPermutation::make_transition_table() [INFO] [stderr] 108 | | }; [INFO] [stderr] ... | [INFO] [stderr] 112 | | }; [INFO] [stderr] 113 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_permutation.rs:105:1 [INFO] [stderr] | [INFO] [stderr] 105 | / lazy_static! { [INFO] [stderr] 106 | | pub static ref TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 107 | | CornerPermutation::make_transition_table() [INFO] [stderr] 108 | | }; [INFO] [stderr] ... | [INFO] [stderr] 112 | | }; [INFO] [stderr] 113 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_permutation.rs:105:1 [INFO] [stderr] | [INFO] [stderr] 105 | / lazy_static! { [INFO] [stderr] 106 | | pub static ref TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 107 | | CornerPermutation::make_transition_table() [INFO] [stderr] 108 | | }; [INFO] [stderr] ... | [INFO] [stderr] 112 | | }; [INFO] [stderr] 113 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_orientation.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / lazy_static! { [INFO] [stderr] 153 | | pub static ref CO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 154 | | Orientation::make_transition_table() [INFO] [stderr] 155 | | }; [INFO] [stderr] ... | [INFO] [stderr] 159 | | }; [INFO] [stderr] 160 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_orientation.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / lazy_static! { [INFO] [stderr] 153 | | pub static ref CO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 154 | | Orientation::make_transition_table() [INFO] [stderr] 155 | | }; [INFO] [stderr] ... | [INFO] [stderr] 159 | | }; [INFO] [stderr] 160 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_orientation.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / lazy_static! { [INFO] [stderr] 153 | | pub static ref CO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 154 | | Orientation::make_transition_table() [INFO] [stderr] 155 | | }; [INFO] [stderr] ... | [INFO] [stderr] 159 | | }; [INFO] [stderr] 160 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/corner_orientation.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / lazy_static! { [INFO] [stderr] 153 | | pub static ref CO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 154 | | Orientation::make_transition_table() [INFO] [stderr] 155 | | }; [INFO] [stderr] ... | [INFO] [stderr] 159 | | }; [INFO] [stderr] 160 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/edge_orientation.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / lazy_static! { [INFO] [stderr] 152 | | pub static ref EO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 153 | | Orientation::make_transition_table() [INFO] [stderr] 154 | | }; [INFO] [stderr] ... | [INFO] [stderr] 158 | | }; [INFO] [stderr] 159 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/edge_orientation.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / lazy_static! { [INFO] [stderr] 152 | | pub static ref EO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 153 | | Orientation::make_transition_table() [INFO] [stderr] 154 | | }; [INFO] [stderr] ... | [INFO] [stderr] 158 | | }; [INFO] [stderr] 159 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/edge_orientation.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / lazy_static! { [INFO] [stderr] 152 | | pub static ref EO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 153 | | Orientation::make_transition_table() [INFO] [stderr] 154 | | }; [INFO] [stderr] ... | [INFO] [stderr] 158 | | }; [INFO] [stderr] 159 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::ONCE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/edge_orientation.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / lazy_static! { [INFO] [stderr] 152 | | pub static ref EO_TRANSITIONS: Vec<[usize; 18]> = { [INFO] [stderr] 153 | | Orientation::make_transition_table() [INFO] [stderr] 154 | | }; [INFO] [stderr] ... | [INFO] [stderr] 158 | | }; [INFO] [stderr] 159 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `last-layer-algs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "2e5b8e7bbc07008ac11a8d69e91c2b7258f99f1261bd0fe6cf6b3326d7ff7549"` [INFO] running `"docker" "rm" "-f" "2e5b8e7bbc07008ac11a8d69e91c2b7258f99f1261bd0fe6cf6b3326d7ff7549"` [INFO] [stdout] 2e5b8e7bbc07008ac11a8d69e91c2b7258f99f1261bd0fe6cf6b3326d7ff7549