[INFO] cloning repository https://github.com/gandeevan/onebrc
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gandeevan/onebrc" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgandeevan%2Fonebrc", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgandeevan%2Fonebrc'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7fb37ad3508b8c6083e1af1948cb88fbf94c9e8b
[INFO] checking gandeevan/onebrc against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgandeevan%2Fonebrc" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/gandeevan/onebrc
[INFO] finished tweaking git repo https://github.com/gandeevan/onebrc
[INFO] tweaked toml for git repo https://github.com/gandeevan/onebrc written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gandeevan/onebrc on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/gandeevan/onebrc 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded anstream v0.6.11
[INFO] [stderr]   Downloaded env_logger v0.11.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1edf8dad300e05f25a305ad208cc835661ddc07771a196fdb4365f1e6f19db8a
[INFO] running `Command { std: "docker" "start" "-a" "1edf8dad300e05f25a305ad208cc835661ddc07771a196fdb4365f1e6f19db8a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1edf8dad300e05f25a305ad208cc835661ddc07771a196fdb4365f1e6f19db8a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1edf8dad300e05f25a305ad208cc835661ddc07771a196fdb4365f1e6f19db8a", kill_on_drop: false }`
[INFO] [stdout] 1edf8dad300e05f25a305ad208cc835661ddc07771a196fdb4365f1e6f19db8a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c6227d5a6228c2896252ba262a44ba70335b06ad0324ff50023134d0b937c730
[INFO] running `Command { std: "docker" "start" "-a" "c6227d5a6228c2896252ba262a44ba70335b06ad0324ff50023134d0b937c730", kill_on_drop: false }`
[INFO] [stderr]     Checking memchr v2.7.1
[INFO] [stderr]     Checking regex-syntax v0.8.2
[INFO] [stderr]    Compiling libc v0.2.152
[INFO] [stderr]     Checking utf8parse v0.2.1
[INFO] [stderr]     Checking colorchoice v1.0.0
[INFO] [stderr]     Checking anstyle-query v1.0.2
[INFO] [stderr]     Checking log v0.4.20
[INFO] [stderr]     Checking anstyle v1.0.4
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking anstyle-parse v0.2.3
[INFO] [stderr]     Checking anstream v0.6.11
[INFO] [stderr]     Checking aho-corasick v1.1.2
[INFO] [stderr]     Checking memmap2 v0.9.4
[INFO] [stderr]     Checking regex-automata v0.4.5
[INFO] [stderr]     Checking regex v1.10.3
[INFO] [stderr]     Checking env_filter v0.1.0
[INFO] [stderr]     Checking env_logger v0.11.0
[INFO] [stderr]     Checking onebrc v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(stdarch_x86_avx512)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::fmt`
[INFO] [stdout]  --> src/utils.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::fmt;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::hash::Hash`
[INFO] [stdout]  --> src/utils.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::BuildHasherDefault`
[INFO] [stdout]  --> src/utils.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::hash::BuildHasherDefault;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/attempt1.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{debug, info};
[INFO] [stdout]   |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File`, `JoinHandle`, and `hash::Hash`
[INFO] [stdout]  --> src/attempt2.rs:1:56
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{cmp::{min}, collections::HashMap, fs::{self, File}, hash::Hash, sync::Arc, thread::{self, JoinHandle}, time::Instant};
[INFO] [stdout]   |                                                        ^^^^   ^^^^^^^^^^                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt5.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `env`
[INFO] [stdout]  --> src/attempt5.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, ptr, thread::{self, JoinHandle}, time::Instant};
[INFO] [stdout]   |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `THREAD_COUNT` and `attempt1`
[INFO] [stdout]  --> src/attempt5.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, KeyedStat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |             ^^^^^^^^                                                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/attempt5.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let digit = (byte - b'0');
[INFO] [stdout]     |                 ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 111 -     let digit = (byte - b'0');
[INFO] [stdout] 111 +     let digit = byte - b'0' ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt6.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, and `env`
[INFO] [stdout]  --> src/attempt6.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, ptr, thread::{self, JoinHandle}, time::Instant};
[INFO] [stdout]   |                                  ^^^                         ^^^^  ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, `attempt1`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt6.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |             ^^^^^^^^                                       ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/attempt6.rs:112:17
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let digit = (byte - b'0');
[INFO] [stdout]     |                 ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 112 -     let digit = (byte - b'0');
[INFO] [stdout] 112 +     let digit = byte - b'0' ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt7.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, and `env`
[INFO] [stdout]  --> src/attempt7.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, ptr, thread::{self, current, JoinHandle}, time::I...
[INFO] [stdout]   |                                  ^^^                         ^^^^  ^^^^  ^^^^^^^^                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, `attempt1`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt7.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |             ^^^^^^^^                                       ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt8.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, `env`, and `path::Iter`
[INFO] [stdout]  --> src/attempt8.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | ...p, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, path::Iter, ptr, sync::{atomic::AtomicUsize, Arc}, thread::{self, current, J...
[INFO] [stdout]   |       ^^^                         ^^^^  ^^^^  ^^^^^^^^   ^^^^^^^^^^                                                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, `attempt1`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt8.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |             ^^^^^^^^                                       ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]  --> src/attempt8.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]  --> src/attempt8.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::atomic::{AtomicU64};
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/attempt8.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 152 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt9.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, `env`, and `mem`
[INFO] [stdout]  --> src/attempt9.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{arch::asm, collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, mem, ptr, thread::{self, current, Join...
[INFO] [stdout]   |                                             ^^^                         ^^^^  ^^^^  ^^^^^^^^   ^^^                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, `attempt1`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt9.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |             ^^^^^^^^                                       ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]  --> src/attempt9.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt9.rs:283:89
[INFO] [stdout]     |
[INFO] [stdout] 283 |             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout]     |                                                                                         ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 283 -             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout] 283 +             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/attempt9.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt9.rs:296:97
[INFO] [stdout]     |
[INFO] [stdout] 296 | ...   station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut ...
[INFO] [stdout]     |                                                                                           ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 296 -             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut c.station);
[INFO] [stdout] 296 +             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx , &mut c.hash, &mut c.station);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt9.rs:301:63
[INFO] [stdout]     |
[INFO] [stdout] 301 |             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout]     |                                                               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 301 -             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout] 301 +             buf_idx += find_next_newline(buf.offset(buf_idx), max_buf_idx-buf_idx , &mut c);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt10.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, `env`, and `mem`
[INFO] [stdout]  --> src/attempt10.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{arch::asm, collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, mem, ptr, thread::{self, current, Join...
[INFO] [stdout]   |                                             ^^^                         ^^^^  ^^^^  ^^^^^^^^   ^^^                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, `attempt1`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt10.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |             ^^^^^^^^                                       ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]  --> src/attempt10.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]   --> src/attempt10.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         while true {
[INFO] [stdout]    |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt10.rs:275:89
[INFO] [stdout]     |
[INFO] [stdout] 275 |             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout]     |                                                                                         ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 275 -             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout] 275 +             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/attempt10.rs:281:5
[INFO] [stdout]     |
[INFO] [stdout] 281 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt10.rs:288:97
[INFO] [stdout]     |
[INFO] [stdout] 288 | ...   station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut ...
[INFO] [stdout]     |                                                                                           ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 288 -             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut c.station);
[INFO] [stdout] 288 +             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx , &mut c.hash, &mut c.station);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt10.rs:293:63
[INFO] [stdout]     |
[INFO] [stdout] 293 |             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout]     |                                                               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 293 -             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout] 293 +             buf_idx += find_next_newline(buf.offset(buf_idx), max_buf_idx-buf_idx , &mut c);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/main.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | use log::{debug, info};
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `stdarch_x86_avx512` has been stable since 1.89.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(stdarch_x86_avx512)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(stdarch_x86_avx512)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::fmt`
[INFO] [stdout]  --> src/utils.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::fmt;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::hash::Hash`
[INFO] [stdout]  --> src/utils.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::BuildHasherDefault`
[INFO] [stdout]  --> src/utils.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::hash::BuildHasherDefault;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/attempt1.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{debug, info};
[INFO] [stdout]   |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File`, `JoinHandle`, and `hash::Hash`
[INFO] [stdout]  --> src/attempt2.rs:1:56
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{cmp::{min}, collections::HashMap, fs::{self, File}, hash::Hash, sync::Arc, thread::{self, JoinHandle}, time::Instant};
[INFO] [stdout]   |                                                        ^^^^   ^^^^^^^^^^                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt5.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `THREAD_COUNT`
[INFO] [stdout]  --> src/attempt5.rs:4:86
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, KeyedStat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |                                                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/attempt5.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let digit = (byte - b'0');
[INFO] [stdout]     |                 ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 111 -     let digit = (byte - b'0');
[INFO] [stdout] 111 +     let digit = byte - b'0' ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt6.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, and `Seek`
[INFO] [stdout]  --> src/attempt6.rs:2:62
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, ptr, thread::{self, JoinHandle}, time::Instant};
[INFO] [stdout]   |                                                              ^^^^  ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt6.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/attempt6.rs:112:17
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let digit = (byte - b'0');
[INFO] [stdout]     |                 ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 112 -     let digit = (byte - b'0');
[INFO] [stdout] 112 +     let digit = byte - b'0' ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt7.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, and `current`
[INFO] [stdout]  --> src/attempt7.rs:2:62
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, ptr, thread::{self, current, JoinHandle}, time::I...
[INFO] [stdout]   |                                                              ^^^^  ^^^^  ^^^^^^^^                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt7.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt8.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, and `path::Iter`
[INFO] [stdout]  --> src/attempt8.rs:2:62
[INFO] [stdout]   |
[INFO] [stdout] 2 | ...elf, File}, io::{Read, Seek, SeekFrom}, path::Iter, ptr, sync::{atomic::AtomicUsize, Arc}, thread::{self, current, JoinHandle}, ti...
[INFO] [stdout]   |                     ^^^^  ^^^^  ^^^^^^^^   ^^^^^^^^^^                                                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt8.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]  --> src/attempt8.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]  --> src/attempt8.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::atomic::{AtomicU64};
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/attempt8.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 152 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt9.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, and `mem`
[INFO] [stdout]  --> src/attempt9.rs:2:73
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{arch::asm, collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, mem, ptr, thread::{self, current, Join...
[INFO] [stdout]   |                                                                         ^^^^  ^^^^  ^^^^^^^^   ^^^                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt9.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]  --> src/attempt9.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt9.rs:283:89
[INFO] [stdout]     |
[INFO] [stdout] 283 |             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout]     |                                                                                         ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 283 -             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout] 283 +             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/attempt9.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt9.rs:296:97
[INFO] [stdout]     |
[INFO] [stdout] 296 | ...   station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut ...
[INFO] [stdout]     |                                                                                           ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 296 -             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut c.station);
[INFO] [stdout] 296 +             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx , &mut c.hash, &mut c.station);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt9.rs:301:63
[INFO] [stdout]     |
[INFO] [stdout] 301 |             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout]     |                                                               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 301 -             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout] 301 +             buf_idx += find_next_newline(buf.offset(buf_idx), max_buf_idx-buf_idx , &mut c);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/attempt10.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `SeekFrom`, `Seek`, `current`, and `mem`
[INFO] [stdout]  --> src/attempt10.rs:2:73
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{arch::asm, collections::BTreeMap, env, fs::{self, File}, io::{Read, Seek, SeekFrom}, mem, ptr, thread::{self, current, Join...
[INFO] [stdout]   |                                                                         ^^^^  ^^^^  ^^^^^^^^   ^^^                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_LINE_SIZE`, `Stat`, `THREAD_COUNT`, and `print_result_hashmap`
[INFO] [stdout]  --> src/attempt10.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{attempt1, utils::{print_result_btreemap_kstat, print_result_hashmap, KeyedStat, Stat, MAX_LINE_SIZE, THREAD_COUNT}};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^^^^^             ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]  --> src/attempt10.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]   --> src/attempt10.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         while true {
[INFO] [stdout]    |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt10.rs:275:89
[INFO] [stdout]     |
[INFO] [stdout] 275 |             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout]     |                                                                                         ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 275 -             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx));
[INFO] [stdout] 275 +             let offset = find_next_newline_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/attempt10.rs:281:5
[INFO] [stdout]     |
[INFO] [stdout] 281 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt10.rs:288:97
[INFO] [stdout]     |
[INFO] [stdout] 288 | ...   station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut ...
[INFO] [stdout]     |                                                                                           ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 288 -             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, (max_buf_idx-buf_idx), &mut c.hash, &mut c.station);
[INFO] [stdout] 288 +             station_name_len = find_next_semicolon_vectorized(buf.offset(buf_idx) as *const u8, max_buf_idx-buf_idx , &mut c.hash, &mut c.station);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/attempt10.rs:293:63
[INFO] [stdout]     |
[INFO] [stdout] 293 |             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout]     |                                                               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 293 -             buf_idx += find_next_newline(buf.offset(buf_idx), (max_buf_idx-buf_idx), &mut c);
[INFO] [stdout] 293 +             buf_idx += find_next_newline(buf.offset(buf_idx), max_buf_idx-buf_idx , &mut c);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/main.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | use log::{debug, info};
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `stdarch_x86_avx512` has been stable since 1.89.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(stdarch_x86_avx512)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/utils.rs:74:15
[INFO] [stdout]    |
[INFO] [stdout] 74 |     for (key, value) in table {
[INFO] [stdout]    |               ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/utils.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |     for (key, value) in table {
[INFO] [stdout]    |               ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thread_id`
[INFO] [stdout]   --> src/attempt3.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn thread_run(thread_id: usize, filepath: &str, start_offset: usize, size: usize) -> HashMap<String, Stat>  {
[INFO] [stdout]    |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/attempt5.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt5.rs:204:70
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn thread_run(thread_id: usize, filepath: &str, start_offset: usize, mut file_size_per_thread: usize) -> LPTable {
[INFO] [stdout]     |                                                                      ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                                      |
[INFO] [stdout]     |                                                                      help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/attempt6.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt6.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let mut ignore_first_line = thread_id != 0;
[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/attempt6.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt6.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt6.rs:206:17
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt7.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt7.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt7.rs:225:17
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thread_id`
[INFO] [stdout]    --> src/attempt8.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | fn compute(thread_id: usize, filepath: &str, offset_counter: Arc<AtomicUsize>, file_size: usize) -> LPTable {
[INFO] [stdout]     |            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt8.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> src/attempt8.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt8.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt8.rs:268:17
[INFO] [stdout]     |
[INFO] [stdout] 268 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `station_name_len` is never read
[INFO] [stdout]    --> src/attempt9.rs:294:36
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut station_name_len = 0;
[INFO] [stdout]     |                                    ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt9.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 330 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt9.rs:336:17
[INFO] [stdout]     |
[INFO] [stdout] 336 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_slot`
[INFO] [stdout]   --> src/attempt10.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let initial_slot = slot;
[INFO] [stdout]    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_slot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `station_name_len` is never read
[INFO] [stdout]    --> src/attempt10.rs:286:36
[INFO] [stdout]     |
[INFO] [stdout] 286 |         let mut station_name_len = 0;
[INFO] [stdout]     |                                    ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0554`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `onebrc` (bin "attempt10") due to 1 previous error; 64 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/utils.rs:74:15
[INFO] [stdout]    |
[INFO] [stdout] 74 |     for (key, value) in table {
[INFO] [stdout]    |               ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/utils.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |     for (key, value) in table {
[INFO] [stdout]    |               ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thread_id`
[INFO] [stdout]   --> src/attempt3.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn thread_run(thread_id: usize, filepath: &str, start_offset: usize, size: usize) -> HashMap<String, Stat>  {
[INFO] [stdout]    |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/attempt5.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt5.rs:204:70
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn thread_run(thread_id: usize, filepath: &str, start_offset: usize, mut file_size_per_thread: usize) -> LPTable {
[INFO] [stdout]     |                                                                      ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                                                      |
[INFO] [stdout]     |                                                                      help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/attempt6.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     unsafe {
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt6.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let mut ignore_first_line = thread_id != 0;
[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/attempt6.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt6.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt6.rs:206:17
[INFO] [stdout]     |
[INFO] [stdout] 206 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt7.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt7.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt7.rs:225:17
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thread_id`
[INFO] [stdout]    --> src/attempt8.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | fn compute(thread_id: usize, filepath: &str, offset_counter: Arc<AtomicUsize>, file_size: usize) -> LPTable {
[INFO] [stdout]     |            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/attempt8.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> src/attempt8.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |     let mut file = File::open(filepath).unwrap();
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt8.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt8.rs:268:17
[INFO] [stdout]     |
[INFO] [stdout] 268 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `station_name_len` is never read
[INFO] [stdout]    --> src/attempt9.rs:294:36
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut station_name_len = 0;
[INFO] [stdout]     |                                    ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]    --> src/attempt9.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 330 |     let mut count = 0;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/attempt9.rs:336:17
[INFO] [stdout]     |
[INFO] [stdout] 336 |                 count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_slot`
[INFO] [stdout]   --> src/attempt10.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let initial_slot = slot;
[INFO] [stdout]    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_slot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `station_name_len` is never read
[INFO] [stdout]    --> src/attempt10.rs:286:36
[INFO] [stdout]     |
[INFO] [stdout] 286 |         let mut station_name_len = 0;
[INFO] [stdout]     |                                    ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0554`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `onebrc` (bin "attempt10" test) due to 1 previous error; 63 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "c6227d5a6228c2896252ba262a44ba70335b06ad0324ff50023134d0b937c730", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c6227d5a6228c2896252ba262a44ba70335b06ad0324ff50023134d0b937c730", kill_on_drop: false }`
[INFO] [stdout] c6227d5a6228c2896252ba262a44ba70335b06ad0324ff50023134d0b937c730
