[INFO] fetching crate EZDB 0.1.15...
[INFO] checking EZDB-0.1.15 against try#47af3d0de9d26c7deba4cfb203b710cc3f764e91 for pr-130443
[INFO] extracting crate EZDB 0.1.15 into /workspace/builds/worker-3-tc2/source
[INFO] validating manifest of crates.io crate EZDB 0.1.15 on toolchain 47af3d0de9d26c7deba4cfb203b710cc3f764e91
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+47af3d0de9d26c7deba4cfb203b710cc3f764e91" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate EZDB 0.1.15
[INFO] finished tweaking crates.io crate EZDB 0.1.15
[INFO] tweaked toml for crates.io crate EZDB 0.1.15 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] crate crates.io crate EZDB 0.1.15 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" "+47af3d0de9d26c7deba4cfb203b710cc3f764e91" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+47af3d0de9d26c7deba4cfb203b710cc3f764e91" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 672985312e6e61026ad8fd6128b4b335611001153e506c30b39088c52839a72d
[INFO] running `Command { std: "docker" "start" "-a" "672985312e6e61026ad8fd6128b4b335611001153e506c30b39088c52839a72d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "672985312e6e61026ad8fd6128b4b335611001153e506c30b39088c52839a72d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "672985312e6e61026ad8fd6128b4b335611001153e506c30b39088c52839a72d", kill_on_drop: false }`
[INFO] [stdout] 672985312e6e61026ad8fd6128b4b335611001153e506c30b39088c52839a72d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+47af3d0de9d26c7deba4cfb203b710cc3f764e91" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e1c99d077c60bf86f13bf1ddf917ba46a949bb64dc24c2af47df67bf02c21d8f
[INFO] running `Command { std: "docker" "start" "-a" "e1c99d077c60bf86f13bf1ddf917ba46a949bb64dc24c2af47df67bf02c21d8f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling proc-macro2 v1.0.78
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling typenum v1.17.0
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]    Compiling semver v1.0.22
[INFO] [stderr]     Checking cpufeatures v0.2.12
[INFO] [stderr]     Checking subtle v2.5.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]     Checking itoa v1.0.10
[INFO] [stderr]    Compiling platforms v3.3.0
[INFO] [stderr]    Compiling autocfg v1.1.0
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]    Compiling cc v1.0.90
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]    Compiling serde_json v1.0.114
[INFO] [stderr]     Checking half v2.4.0
[INFO] [stderr]     Checking constant_time_eq v0.3.0
[INFO] [stderr]     Checking arrayref v0.3.7
[INFO] [stderr]     Checking anstyle v1.0.6
[INFO] [stderr]     Checking regex-syntax v0.8.2
[INFO] [stderr]     Checking plotters-backend v0.3.5
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]     Checking bytes v1.6.0
[INFO] [stderr]     Checking ryu v1.0.17
[INFO] [stderr]     Checking clap_lex v0.7.0
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking arrayvec v0.7.4
[INFO] [stderr]     Checking plotters-svg v0.3.5
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking clap_builder v4.5.2
[INFO] [stderr]     Checking miniz_oxide v0.7.2
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking http v1.1.0
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]    Compiling quote v1.0.35
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]    Compiling curve25519-dalek v4.1.2
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling syn v2.0.52
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking oorandom v11.1.3
[INFO] [stderr]    Compiling blake3 v1.5.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]     Checking regex-automata v0.4.6
[INFO] [stderr]     Checking getrandom v0.2.12
[INFO] [stderr]     Checking is-terminal v0.4.12
[INFO] [stderr]     Checking rayon v1.9.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking inout v0.1.3
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking plotters v0.3.5
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking clap v4.5.2
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking regex v1.10.3
[INFO] [stderr]    Compiling serde_derive v1.0.197
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking zeroize v1.7.0
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking bitflags v2.5.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking EZDB v0.1.15 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `ServerError`, `decode_hex_to_arr32`, and `decode_hex`
[INFO] [stdout]  --> src/auth.rs:9:74
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::{db_structure::KeyString, networking_utilities::{blake3_hash, decode_hex, decode_hex_to_arr32, encode_hex, ServerError}};
[INFO] [stdout]   |                                                                          ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::PATH_SEP`
[INFO] [stdout]  --> src/client_networking.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::PATH_SEP;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `fs::File`
[INFO] [stdout]  --> src/db_structure.rs:2:77
[INFO] [stdout]   |
[INFO] [stdout] 2 |     collections::{BTreeMap, HashMap, HashSet}, fmt::{self, Debug, Display}, fs::File, io::{Read, Write}, num::{ParseFloatError, ParseIntE...
[INFO] [stdout]   |                                                                             ^^^^^^^^       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FnvHashMap` and `FnvHasher`
[INFO] [stdout]  --> src/db_structure.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use fnv::{FnvHashMap, FnvHasher};
[INFO] [stdout]   |           ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::PATH_SEP`
[INFO] [stdout]   --> src/db_structure.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::PATH_SEP;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `slice::Chunks`
[INFO] [stdout]  --> src/ezql.rs:1:47
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, fmt::Display, slice::Chunks, sync::Arc};
[INFO] [stdout]   |                                               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `subtable_from_keys`
[INFO] [stdout]  --> src/ezql.rs:3:44
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{db_structure::{remove_indices, subtable_from_keys, DbColumn, EZTable, KeyString, StrictError}, networking_utilities::{print_s...
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::PATH_SEP`
[INFO] [stdout]  --> src/ezql.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::PATH_SEP;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread::current`
[INFO] [stdout]  --> src/handlers.rs:1:66
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::BTreeMap, io::Write, sync::{Arc, RwLock}, thread::current};
[INFO] [stdout]   |                                                                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CONFIG_FOLDER`, `DbColumn`, `Metadata`, `Server`, `WriteThreadMessage`, and `parse_EZQL`
[INFO] [stdout]  --> src/handlers.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...::{DbColumn, EZTable, KeyString, Metadata, Value}, ezql::{execute_EZQL_queries, parse_EZQL, parse_serial_query}, networking_utilities::*, server_networking::{Database, Server, WriteThreadMessage, CONFIG_FOLDER...
[INFO] [stdout]   |       ^^^^^^^^                      ^^^^^^^^                                       ^^^^^^^^^^                                                                              ^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::PATH_SEP`
[INFO] [stdout]  --> src/handlers.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::PATH_SEP;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FromStr`
[INFO] [stdout]  --> src/networking_utilities.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::str::{self, FromStr, Utf8Error};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StrictError` and `remove_indices`
[INFO] [stdout]   --> src/server_networking.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::db_structure::{remove_indices, DbColumn, EZTable, KeyString, Metadata, StrictError, Value};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OpOrCond`, `Operator`, `parse_EZQL`, and `self`
[INFO] [stdout]   --> src/server_networking.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::ezql::{self, parse_EZQL, OpOrCond, Operator};
[INFO] [stdout]    |                   ^^^^  ^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/client_networking.rs:305:13
[INFO] [stdout]     |
[INFO] [stdout] 305 |         Err(e) => todo!(),
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/client_networking.rs:312:12
[INFO] [stdout]     |
[INFO] [stdout] 312 |         Ok(s) => "OK".to_owned(),
[INFO] [stdout]     |            ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `minlen`
[INFO] [stdout]    --> src/db_structure.rs:864:13
[INFO] [stdout]     |
[INFO] [stdout] 864 |         let minlen = std::cmp::min(self.columns.len(), other_table.columns.len());
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_minlen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kind`
[INFO] [stdout]     --> src/db_structure.rs:1587:51
[INFO] [stdout]      |
[INFO] [stdout] 1587 |     pub fn add_column(&mut self, name: KeyString, kind: TableKey, column: DbColumn) -> Result<(), StrictError> {
[INFO] [stdout]      |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_kind`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/db_structure.rs:2014:25
[INFO] [stdout]      |
[INFO] [stdout] 2014 |                     Err(e) => return Err(StrictError::WrongType),
[INFO] [stdout]      |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header_file`
[INFO] [stdout]    --> src/disk_utilities.rs:182:13
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut header_file = File::create(header_file_path)?;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_header_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/disk_utilities.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut header_file = File::create(header_file_path)?;
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/ezql.rs:665:25
[INFO] [stdout]     |
[INFO] [stdout] 665 |                     Err(e) => return Err(QueryError::InvalidQueryStructure),
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/ezql.rs:677:25
[INFO] [stdout]     |
[INFO] [stdout] 677 |                     Err(e) => return Err(QueryError::InvalidQueryStructure),
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/ezql.rs:695:13
[INFO] [stdout]     |
[INFO] [stdout] 695 |         Err(e) => return Err(QueryError::InvalidQueryStructure),
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keepers`
[INFO] [stdout]     --> src/ezql.rs:1078:9
[INFO] [stdout]      |
[INFO] [stdout] 1078 |     let keepers = filter_keepers(&query, &table)?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keepers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keepers`
[INFO] [stdout]     --> src/ezql.rs:1086:9
[INFO] [stdout]      |
[INFO] [stdout] 1086 |     let keepers = filter_keepers(&query, &table)?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keepers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keepers`
[INFO] [stdout]     --> src/ezql.rs:1094:9
[INFO] [stdout]      |
[INFO] [stdout] 1094 |     let keepers = filter_keepers(&query, &table)?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keepers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `requested_csv` is never read
[INFO] [stdout]   --> src/handlers.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut requested_csv = String::new();
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_time`
[INFO] [stdout]   --> src/handlers.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let current_time = get_current_time();
[INFO] [stdout]    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/networking_utilities.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |     for pos in (0..s.len()).step_by(2) {
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/networking_utilities.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 398 |     for i in 0..sep.len() {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Expect` is never used
[INFO] [stdout]    --> src/ezql.rs:521:6
[INFO] [stdout]     |
[INFO] [stdout] 521 | enum Expect {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_string` and `to_string` are never used
[INFO] [stdout]    --> src/ezql.rs:533:12
[INFO] [stdout]     |
[INFO] [stdout] 532 | impl Expect {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 533 |     pub fn from_string(s: &str) -> Result<Expect, QueryError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 547 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_inner_join_query` is never used
[INFO] [stdout]     --> src/ezql.rs:1075:4
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn execute_inner_join_query(query: Query, database: Arc<Database>) -> Result<Option<EZTable>, ServerError> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_right_join_query` is never used
[INFO] [stdout]     --> src/ezql.rs:1083:4
[INFO] [stdout]      |
[INFO] [stdout] 1083 | fn execute_right_join_query(query: Query, database: Arc<Database>) -> Result<Option<EZTable>, ServerError> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_full_join_query` is never used
[INFO] [stdout]     --> src/ezql.rs:1091:4
[INFO] [stdout]      |
[INFO] [stdout] 1091 | fn execute_full_join_query(query: Query, database: Arc<Database>) -> Result<Option<EZTable>, ServerError> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `EZDB` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `ezdb`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/ezql.rs:1008:25
[INFO] [stdout]      |
[INFO] [stdout] 1008 |                         execute_left_join_query(query, &left_table, &right_table);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1008 |                         let _ = execute_left_join_query(query, &left_table, &right_table);
[INFO] [stdout]      |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 38 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     unsafe { p() };
[INFO] [stdout]    |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     unsafe { p() };
[INFO] [stdout]    |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> benches/my_benchmark.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::string`
[INFO] [stdout]  --> benches/my_benchmark.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::string;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EZDB::client_networking`
[INFO] [stdout]  --> benches/my_benchmark.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use EZDB::client_networking;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EZDB::networking_utilities::*`
[INFO] [stdout]   --> benches/my_benchmark.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use EZDB::networking_utilities::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EZDB::client_networking::*`
[INFO] [stdout]   --> benches/my_benchmark.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use EZDB::client_networking::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> benches/my_benchmark.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 6 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ServerError`, `decode_hex_to_arr32`, and `decode_hex`
[INFO] [stdout]  --> src/auth.rs:9:74
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::{db_structure::KeyString, networking_utilities::{blake3_hash, decode_hex, decode_hex_to_arr32, encode_hex, ServerError}};
[INFO] [stdout]   |                                                                          ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `fs::File`
[INFO] [stdout]  --> src/db_structure.rs:2:77
[INFO] [stdout]   |
[INFO] [stdout] 2 |     collections::{BTreeMap, HashMap, HashSet}, fmt::{self, Debug, Display}, fs::File, io::{Read, Write}, num::{ParseFloatError, ParseIntE...
[INFO] [stdout]   |                                                                             ^^^^^^^^       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FnvHashMap` and `FnvHasher`
[INFO] [stdout]  --> src/db_structure.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use fnv::{FnvHashMap, FnvHasher};
[INFO] [stdout]   |           ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/disk_utilities.rs:309:9
[INFO] [stdout]     |
[INFO] [stdout] 309 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `slice::Chunks`
[INFO] [stdout]  --> src/ezql.rs:1:47
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, fmt::Display, slice::Chunks, sync::Arc};
[INFO] [stdout]   |                                               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `subtable_from_keys`
[INFO] [stdout]  --> src/ezql.rs:3:44
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{db_structure::{remove_indices, subtable_from_keys, DbColumn, EZTable, KeyString, StrictError}, networking_utilities::{print_s...
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread::current`
[INFO] [stdout]  --> src/handlers.rs:1:66
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::BTreeMap, io::Write, sync::{Arc, RwLock}, thread::current};
[INFO] [stdout]   |                                                                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CONFIG_FOLDER`, `DbColumn`, `Metadata`, `Server`, `WriteThreadMessage`, and `parse_EZQL`
[INFO] [stdout]  --> src/handlers.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...::{DbColumn, EZTable, KeyString, Metadata, Value}, ezql::{execute_EZQL_queries, parse_EZQL, parse_serial_query}, networking_utilities::*, server_networking::{Database, Server, WriteThreadMessage, CONFIG_FOLDER...
[INFO] [stdout]   |       ^^^^^^^^                      ^^^^^^^^                                       ^^^^^^^^^^                                                                              ^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::PATH_SEP`
[INFO] [stdout]  --> src/handlers.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::PATH_SEP;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FromStr`
[INFO] [stdout]  --> src/networking_utilities.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::str::{self, FromStr, Utf8Error};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StrictError` and `remove_indices`
[INFO] [stdout]   --> src/server_networking.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::db_structure::{remove_indices, DbColumn, EZTable, KeyString, Metadata, StrictError, Value};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OpOrCond`, `Operator`, `parse_EZQL`, and `self`
[INFO] [stdout]   --> src/server_networking.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::ezql::{self, parse_EZQL, OpOrCond, Operator};
[INFO] [stdout]    |                   ^^^^  ^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/client_networking.rs:305:13
[INFO] [stdout]     |
[INFO] [stdout] 305 |         Err(e) => todo!(),
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/client_networking.rs:312:12
[INFO] [stdout]     |
[INFO] [stdout] 312 |         Ok(s) => "OK".to_owned(),
[INFO] [stdout]     |            ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `minlen`
[INFO] [stdout]    --> src/db_structure.rs:864:13
[INFO] [stdout]     |
[INFO] [stdout] 864 |         let minlen = std::cmp::min(self.columns.len(), other_table.columns.len());
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_minlen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kind`
[INFO] [stdout]     --> src/db_structure.rs:1587:51
[INFO] [stdout]      |
[INFO] [stdout] 1587 |     pub fn add_column(&mut self, name: KeyString, kind: TableKey, column: DbColumn) -> Result<(), StrictError> {
[INFO] [stdout]      |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_kind`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/db_structure.rs:2014:25
[INFO] [stdout]      |
[INFO] [stdout] 2014 |                     Err(e) => return Err(StrictError::WrongType),
[INFO] [stdout]      |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header_file`
[INFO] [stdout]    --> src/disk_utilities.rs:182:13
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut header_file = File::create(header_file_path)?;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_header_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/disk_utilities.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut header_file = File::create(header_file_path)?;
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/ezql.rs:665:25
[INFO] [stdout]     |
[INFO] [stdout] 665 |                     Err(e) => return Err(QueryError::InvalidQueryStructure),
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/ezql.rs:677:25
[INFO] [stdout]     |
[INFO] [stdout] 677 |                     Err(e) => return Err(QueryError::InvalidQueryStructure),
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/ezql.rs:695:13
[INFO] [stdout]     |
[INFO] [stdout] 695 |         Err(e) => return Err(QueryError::InvalidQueryStructure),
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keepers`
[INFO] [stdout]     --> src/ezql.rs:1078:9
[INFO] [stdout]      |
[INFO] [stdout] 1078 |     let keepers = filter_keepers(&query, &table)?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keepers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keepers`
[INFO] [stdout]     --> src/ezql.rs:1086:9
[INFO] [stdout]      |
[INFO] [stdout] 1086 |     let keepers = filter_keepers(&query, &table)?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keepers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keepers`
[INFO] [stdout]     --> src/ezql.rs:1094:9
[INFO] [stdout]      |
[INFO] [stdout] 1094 |     let keepers = filter_keepers(&query, &table)?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keepers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `requested_csv` is never read
[INFO] [stdout]   --> src/handlers.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut requested_csv = String::new();
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_time`
[INFO] [stdout]   --> src/handlers.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let current_time = get_current_time();
[INFO] [stdout]    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/networking_utilities.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |     for pos in (0..s.len()).step_by(2) {
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/networking_utilities.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 398 |     for i in 0..sep.len() {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Expect` is never used
[INFO] [stdout]    --> src/ezql.rs:521:6
[INFO] [stdout]     |
[INFO] [stdout] 521 | enum Expect {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_string` and `to_string` are never used
[INFO] [stdout]    --> src/ezql.rs:533:12
[INFO] [stdout]     |
[INFO] [stdout] 532 | impl Expect {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 533 |     pub fn from_string(s: &str) -> Result<Expect, QueryError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 547 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_inner_join_query` is never used
[INFO] [stdout]     --> src/ezql.rs:1075:4
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn execute_inner_join_query(query: Query, database: Arc<Database>) -> Result<Option<EZTable>, ServerError> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_right_join_query` is never used
[INFO] [stdout]     --> src/ezql.rs:1083:4
[INFO] [stdout]      |
[INFO] [stdout] 1083 | fn execute_right_join_query(query: Query, database: Arc<Database>) -> Result<Option<EZTable>, ServerError> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_full_join_query` is never used
[INFO] [stdout]     --> src/ezql.rs:1091:4
[INFO] [stdout]      |
[INFO] [stdout] 1091 | fn execute_full_join_query(query: Query, database: Arc<Database>) -> Result<Option<EZTable>, ServerError> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/ezql.rs:1008:25
[INFO] [stdout]      |
[INFO] [stdout] 1008 |                         execute_left_join_query(query, &left_table, &right_table);
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1008 |                         let _ = execute_left_join_query(query, &left_table, &right_table);
[INFO] [stdout]      |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 35 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.36s
[INFO] running `Command { std: "docker" "inspect" "e1c99d077c60bf86f13bf1ddf917ba46a949bb64dc24c2af47df67bf02c21d8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e1c99d077c60bf86f13bf1ddf917ba46a949bb64dc24c2af47df67bf02c21d8f", kill_on_drop: false }`
[INFO] [stdout] e1c99d077c60bf86f13bf1ddf917ba46a949bb64dc24c2af47df67bf02c21d8f
