Nov 04 10:27:58.573 INFO checking ammongit/markov-music against master#2ad8c7b3502616aff142a4640cce911c6c2c5463 for pr-55655 Nov 04 10:27:58.575 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-55655/worker-4/master#2ad8c7b3502616aff142a4640cce911c6c2c5463:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-4/pr-55655/master#2ad8c7b3502616aff142a4640cce911c6c2c5463:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +2ad8c7b3502616aff142a4640cce911c6c2c5463-alt check --frozen --all --all-targets" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"` Nov 04 10:27:59.007 INFO blam! 3034ad8a7f138a6b2b37a1493289fa680f42184876edddb6830736c91bd0bea3 Nov 04 10:27:59.013 INFO running `"docker" "start" "-a" "3034ad8a7f138a6b2b37a1493289fa680f42184876edddb6830736c91bd0bea3"` Nov 04 10:28:00.404 INFO kablam! usermod: no changes Nov 04 10:28:00.671 INFO kablam! Compiling libsqlite3-sys v0.9.1 Nov 04 10:28:00.671 INFO kablam! Checking term_size v0.3.0 Nov 04 10:28:00.671 INFO kablam! Checking atty v0.2.2 Nov 04 10:28:00.671 INFO kablam! Checking thread-id v3.2.0 Nov 04 10:28:00.675 INFO kablam! Checking mpd v0.0.12 Nov 04 10:28:00.675 INFO kablam! Compiling serde_derive_internals v0.19.0 Nov 04 10:28:00.675 INFO kablam! Compiling diesel_derives v1.1.0 Nov 04 10:28:02.499 INFO kablam! Checking textwrap v0.7.0 Nov 04 10:28:02.839 INFO kablam! Checking simple-logging v2.0.1 Nov 04 10:28:04.623 INFO kablam! Checking clap v2.26.0 Nov 04 10:28:08.959 INFO kablam! Compiling serde_derive v1.0.27 Nov 04 10:28:12.514 INFO kablam! Checking diesel v1.1.1 Nov 04 10:28:20.047 INFO kablam! Checking serde v1.0.11 Nov 04 10:28:29.988 INFO kablam! Checking toml v0.4.4 Nov 04 10:28:33.746 INFO kablam! Checking markov-music v0.1.0 (/source) Nov 04 10:28:35.492 INFO kablam! warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. Nov 04 10:28:35.492 INFO kablam! --> src/utils.rs:25:40 Nov 04 10:28:35.493 INFO kablam! | Nov 04 10:28:35.493 INFO kablam! 25 | pub static ref HOME_DIR: PathBuf = env::home_dir().expect("Unable to get home directory"); Nov 04 10:28:35.493 INFO kablam! | ^^^^^^^^^^^^^ Nov 04 10:28:35.494 INFO kablam! | Nov 04 10:28:35.495 INFO kablam! = note: #[warn(deprecated)] on by default Nov 04 10:28:35.501 INFO kablam! Nov 04 10:28:36.085 INFO kablam! warning: function is never used: `random_key` Nov 04 10:28:36.085 INFO kablam! --> src/choose.rs:29:1 Nov 04 10:28:36.085 INFO kablam! | Nov 04 10:28:36.085 INFO kablam! 29 | pub fn random_key<'a, K: Eq + Hash, V>(map: &'a HashMap, rng: &mut Rng) -> Option<&'a K> { Nov 04 10:28:36.085 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.085 INFO kablam! | Nov 04 10:28:36.085 INFO kablam! = note: #[warn(dead_code)] on by default Nov 04 10:28:36.085 INFO kablam! Nov 04 10:28:36.086 INFO kablam! warning: function is never used: `roulette_wheel` Nov 04 10:28:36.086 INFO kablam! --> src/choose.rs:34:1 Nov 04 10:28:36.086 INFO kablam! | Nov 04 10:28:36.086 INFO kablam! 34 | pub fn roulette_wheel<'a, K: Eq + Hash>(map: &'a HashMap, rng: &mut Rng) -> Option<&'a K> { Nov 04 10:28:36.086 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.086 INFO kablam! Nov 04 10:28:36.086 INFO kablam! warning: method is never used: `modify_weight` Nov 04 10:28:36.086 INFO kablam! --> src/markov.rs:47:5 Nov 04 10:28:36.086 INFO kablam! | Nov 04 10:28:36.086 INFO kablam! 47 | pub fn modify_weight(&mut self, prev: T, next: T, diff: f32) { Nov 04 10:28:36.086 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.086 INFO kablam! Nov 04 10:28:36.090 INFO kablam! warning: method is never used: `clear` Nov 04 10:28:36.090 INFO kablam! --> src/markov.rs:55:5 Nov 04 10:28:36.090 INFO kablam! | Nov 04 10:28:36.091 INFO kablam! 55 | / pub fn clear(&mut self, item: &U) Nov 04 10:28:36.091 INFO kablam! 56 | | where U: Borrow, Nov 04 10:28:36.091 INFO kablam! 57 | | U: ?Sized, Nov 04 10:28:36.091 INFO kablam! 58 | | { Nov 04 10:28:36.091 INFO kablam! ... | Nov 04 10:28:36.091 INFO kablam! 61 | | } Nov 04 10:28:36.091 INFO kablam! 62 | | } Nov 04 10:28:36.091 INFO kablam! | |_____^ Nov 04 10:28:36.091 INFO kablam! Nov 04 10:28:36.091 INFO kablam! warning: method is never used: `start` Nov 04 10:28:36.091 INFO kablam! --> src/markov.rs:64:5 Nov 04 10:28:36.091 INFO kablam! | Nov 04 10:28:36.091 INFO kablam! 64 | pub fn start(&self, rng: &mut Rng) -> Option<&T> { Nov 04 10:28:36.091 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.091 INFO kablam! Nov 04 10:28:36.091 INFO kablam! warning: method is never used: `next` Nov 04 10:28:36.091 INFO kablam! --> src/markov.rs:68:5 Nov 04 10:28:36.091 INFO kablam! | Nov 04 10:28:36.091 INFO kablam! 68 | / pub fn next(&self, current: &U, rng: &mut Rng) -> Option<&T> Nov 04 10:28:36.091 INFO kablam! 69 | | where U: Borrow, Nov 04 10:28:36.091 INFO kablam! 70 | | U: ?Sized, Nov 04 10:28:36.091 INFO kablam! 71 | | { Nov 04 10:28:36.091 INFO kablam! ... | Nov 04 10:28:36.091 INFO kablam! 75 | | } Nov 04 10:28:36.091 INFO kablam! 76 | | } Nov 04 10:28:36.091 INFO kablam! | |_____^ Nov 04 10:28:36.091 INFO kablam! Nov 04 10:28:36.091 INFO kablam! warning: method is never used: `possible_next` Nov 04 10:28:36.091 INFO kablam! --> src/markov.rs:78:5 Nov 04 10:28:36.091 INFO kablam! | Nov 04 10:28:36.091 INFO kablam! 78 | / pub fn possible_next(&self, current: &U) -> Option<&HashMap> Nov 04 10:28:36.091 INFO kablam! 79 | | where U: Borrow, Nov 04 10:28:36.091 INFO kablam! 80 | | U: ?Sized, Nov 04 10:28:36.091 INFO kablam! 81 | | { Nov 04 10:28:36.091 INFO kablam! 82 | | self.assocs.get(current.borrow()) Nov 04 10:28:36.091 INFO kablam! 83 | | } Nov 04 10:28:36.091 INFO kablam! | |_____^ Nov 04 10:28:36.091 INFO kablam! Nov 04 10:28:36.091 INFO kablam! warning: function is never used: `split_cmd` Nov 04 10:28:36.091 INFO kablam! --> src/socket.rs:28:1 Nov 04 10:28:36.091 INFO kablam! | Nov 04 10:28:36.091 INFO kablam! 28 | fn split_cmd(command: &mut str) -> (&mut str, &mut str) { Nov 04 10:28:36.091 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.091 INFO kablam! Nov 04 10:28:36.094 INFO kablam! warning: struct is never constructed: `SocketServer` Nov 04 10:28:36.094 INFO kablam! --> src/socket.rs:36:1 Nov 04 10:28:36.094 INFO kablam! | Nov 04 10:28:36.094 INFO kablam! 36 | pub struct SocketServer { Nov 04 10:28:36.095 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.095 INFO kablam! Nov 04 10:28:36.095 INFO kablam! warning: method is never used: `bind` Nov 04 10:28:36.095 INFO kablam! --> src/socket.rs:41:5 Nov 04 10:28:36.095 INFO kablam! | Nov 04 10:28:36.095 INFO kablam! 41 | pub fn bind(config: &DaemonConfig) -> Result { Nov 04 10:28:36.095 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.095 INFO kablam! Nov 04 10:28:36.095 INFO kablam! warning: method is never used: `wait` Nov 04 10:28:36.095 INFO kablam! --> src/socket.rs:47:5 Nov 04 10:28:36.095 INFO kablam! | Nov 04 10:28:36.095 INFO kablam! 47 | pub fn wait(&self) -> Result<()> { Nov 04 10:28:36.095 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.095 INFO kablam! Nov 04 10:28:36.095 INFO kablam! warning: method is never used: `respond` Nov 04 10:28:36.095 INFO kablam! --> src/socket.rs:58:5 Nov 04 10:28:36.095 INFO kablam! | Nov 04 10:28:36.095 INFO kablam! 58 | fn respond(&self, command: &mut str) -> Result<&'static str> { Nov 04 10:28:36.095 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.095 INFO kablam! Nov 04 10:28:36.095 INFO kablam! warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. Nov 04 10:28:36.095 INFO kablam! --> src/utils.rs:25:40 Nov 04 10:28:36.095 INFO kablam! | Nov 04 10:28:36.095 INFO kablam! 25 | pub static ref HOME_DIR: PathBuf = env::home_dir().expect("Unable to get home directory"); Nov 04 10:28:36.095 INFO kablam! | ^^^^^^^^^^^^^ Nov 04 10:28:36.095 INFO kablam! | Nov 04 10:28:36.095 INFO kablam! = note: #[warn(deprecated)] on by default Nov 04 10:28:36.095 INFO kablam! Nov 04 10:28:36.098 INFO kablam! warning: method is never used: `set_recommend` Nov 04 10:28:36.098 INFO kablam! --> src/socket.rs:72:5 Nov 04 10:28:36.099 INFO kablam! | Nov 04 10:28:36.099 INFO kablam! 72 | fn set_recommend(&self, arg: &mut str) -> &'static str { Nov 04 10:28:36.099 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.099 INFO kablam! Nov 04 10:28:36.099 INFO kablam! warning: function is never used: `empty_mut_str` Nov 04 10:28:36.099 INFO kablam! --> src/utils.rs:29:1 Nov 04 10:28:36.099 INFO kablam! | Nov 04 10:28:36.099 INFO kablam! 29 | pub fn empty_mut_str() -> &'static mut str { Nov 04 10:28:36.099 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.099 INFO kablam! Nov 04 10:28:36.099 INFO kablam! warning: function is never used: `sigmoid` Nov 04 10:28:36.099 INFO kablam! --> src/utils.rs:34:1 Nov 04 10:28:36.099 INFO kablam! | Nov 04 10:28:36.099 INFO kablam! 34 | pub fn sigmoid(n: f32) -> f32 { Nov 04 10:28:36.099 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.099 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: function is never used: `random_key` Nov 04 10:28:36.575 INFO kablam! --> src/choose.rs:29:1 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 29 | pub fn random_key<'a, K: Eq + Hash, V>(map: &'a HashMap, rng: &mut Rng) -> Option<&'a K> { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! = note: #[warn(dead_code)] on by default Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: function is never used: `roulette_wheel` Nov 04 10:28:36.575 INFO kablam! --> src/choose.rs:34:1 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 34 | pub fn roulette_wheel<'a, K: Eq + Hash>(map: &'a HashMap, rng: &mut Rng) -> Option<&'a K> { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: method is never used: `modify_weight` Nov 04 10:28:36.575 INFO kablam! --> src/markov.rs:47:5 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 47 | pub fn modify_weight(&mut self, prev: T, next: T, diff: f32) { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: method is never used: `clear` Nov 04 10:28:36.575 INFO kablam! --> src/markov.rs:55:5 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 55 | / pub fn clear(&mut self, item: &U) Nov 04 10:28:36.575 INFO kablam! 56 | | where U: Borrow, Nov 04 10:28:36.575 INFO kablam! 57 | | U: ?Sized, Nov 04 10:28:36.575 INFO kablam! 58 | | { Nov 04 10:28:36.575 INFO kablam! ... | Nov 04 10:28:36.575 INFO kablam! 61 | | } Nov 04 10:28:36.575 INFO kablam! 62 | | } Nov 04 10:28:36.575 INFO kablam! | |_____^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: method is never used: `start` Nov 04 10:28:36.575 INFO kablam! --> src/markov.rs:64:5 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 64 | pub fn start(&self, rng: &mut Rng) -> Option<&T> { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: method is never used: `next` Nov 04 10:28:36.575 INFO kablam! --> src/markov.rs:68:5 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 68 | / pub fn next(&self, current: &U, rng: &mut Rng) -> Option<&T> Nov 04 10:28:36.575 INFO kablam! 69 | | where U: Borrow, Nov 04 10:28:36.575 INFO kablam! 70 | | U: ?Sized, Nov 04 10:28:36.575 INFO kablam! 71 | | { Nov 04 10:28:36.575 INFO kablam! ... | Nov 04 10:28:36.575 INFO kablam! 75 | | } Nov 04 10:28:36.575 INFO kablam! 76 | | } Nov 04 10:28:36.575 INFO kablam! | |_____^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: method is never used: `possible_next` Nov 04 10:28:36.575 INFO kablam! --> src/markov.rs:78:5 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 78 | / pub fn possible_next(&self, current: &U) -> Option<&HashMap> Nov 04 10:28:36.575 INFO kablam! 79 | | where U: Borrow, Nov 04 10:28:36.575 INFO kablam! 80 | | U: ?Sized, Nov 04 10:28:36.575 INFO kablam! 81 | | { Nov 04 10:28:36.575 INFO kablam! 82 | | self.assocs.get(current.borrow()) Nov 04 10:28:36.575 INFO kablam! 83 | | } Nov 04 10:28:36.575 INFO kablam! | |_____^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: function is never used: `split_cmd` Nov 04 10:28:36.575 INFO kablam! --> src/socket.rs:28:1 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 28 | fn split_cmd(command: &mut str) -> (&mut str, &mut str) { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: struct is never constructed: `SocketServer` Nov 04 10:28:36.575 INFO kablam! --> src/socket.rs:36:1 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 36 | pub struct SocketServer { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.575 INFO kablam! Nov 04 10:28:36.575 INFO kablam! warning: method is never used: `bind` Nov 04 10:28:36.575 INFO kablam! --> src/socket.rs:41:5 Nov 04 10:28:36.575 INFO kablam! | Nov 04 10:28:36.575 INFO kablam! 41 | pub fn bind(config: &DaemonConfig) -> Result { Nov 04 10:28:36.575 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.576 INFO kablam! Nov 04 10:28:36.576 INFO kablam! warning: method is never used: `wait` Nov 04 10:28:36.576 INFO kablam! --> src/socket.rs:47:5 Nov 04 10:28:36.576 INFO kablam! | Nov 04 10:28:36.576 INFO kablam! 47 | pub fn wait(&self) -> Result<()> { Nov 04 10:28:36.576 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.576 INFO kablam! Nov 04 10:28:36.576 INFO kablam! warning: method is never used: `respond` Nov 04 10:28:36.576 INFO kablam! --> src/socket.rs:58:5 Nov 04 10:28:36.576 INFO kablam! | Nov 04 10:28:36.576 INFO kablam! 58 | fn respond(&self, command: &mut str) -> Result<&'static str> { Nov 04 10:28:36.576 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.576 INFO kablam! Nov 04 10:28:36.583 INFO kablam! warning: method is never used: `set_recommend` Nov 04 10:28:36.583 INFO kablam! --> src/socket.rs:72:5 Nov 04 10:28:36.583 INFO kablam! | Nov 04 10:28:36.583 INFO kablam! 72 | fn set_recommend(&self, arg: &mut str) -> &'static str { Nov 04 10:28:36.583 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.583 INFO kablam! Nov 04 10:28:36.583 INFO kablam! warning: function is never used: `empty_mut_str` Nov 04 10:28:36.583 INFO kablam! --> src/utils.rs:29:1 Nov 04 10:28:36.583 INFO kablam! | Nov 04 10:28:36.583 INFO kablam! 29 | pub fn empty_mut_str() -> &'static mut str { Nov 04 10:28:36.583 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.583 INFO kablam! Nov 04 10:28:36.583 INFO kablam! warning: function is never used: `sigmoid` Nov 04 10:28:36.583 INFO kablam! --> src/utils.rs:34:1 Nov 04 10:28:36.583 INFO kablam! | Nov 04 10:28:36.583 INFO kablam! 34 | pub fn sigmoid(n: f32) -> f32 { Nov 04 10:28:36.583 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Nov 04 10:28:36.583 INFO kablam! Nov 04 10:28:36.643 INFO kablam! Finished dev [unoptimized + debuginfo] target(s) in 36.20s Nov 04 10:28:36.656 INFO kablam! su: No module specific data is present Nov 04 10:28:37.895 INFO running `"docker" "rm" "-f" "3034ad8a7f138a6b2b37a1493289fa680f42184876edddb6830736c91bd0bea3"` Nov 04 10:28:38.255 INFO blam! 3034ad8a7f138a6b2b37a1493289fa680f42184876edddb6830736c91bd0bea3