[INFO] cloning repository https://github.com/plecong/mergerfs-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/plecong/mergerfs-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fplecong%2Fmergerfs-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fplecong%2Fmergerfs-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 948cb0f476bbcb77653ee85921619d36c5a3fe89
[INFO] checking plecong/mergerfs-rs against try#66388cc165a6c4ac98c074dc9f0281ff23528c55 for pr-150727
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fplecong%2Fmergerfs-rs" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/plecong/mergerfs-rs
[INFO] finished tweaking git repo https://github.com/plecong/mergerfs-rs
[INFO] tweaked toml for git repo https://github.com/plecong/mergerfs-rs written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/plecong/mergerfs-rs on toolchain 66388cc165a6c4ac98c074dc9f0281ff23528c55
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+66388cc165a6c4ac98c074dc9f0281ff23528c55" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/plecong/mergerfs-rs 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" "+66388cc165a6c4ac98c074dc9f0281ff23528c55" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+66388cc165a6c4ac98c074dc9f0281ff23528c55" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] bffe6937ecee8c185e8aef0fd0a30e4270b138e5e32bc4a169c8cb874ecd9bb5
[INFO] running `Command { std: "docker" "start" "-a" "bffe6937ecee8c185e8aef0fd0a30e4270b138e5e32bc4a169c8cb874ecd9bb5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bffe6937ecee8c185e8aef0fd0a30e4270b138e5e32bc4a169c8cb874ecd9bb5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bffe6937ecee8c185e8aef0fd0a30e4270b138e5e32bc4a169c8cb874ecd9bb5", kill_on_drop: false }`
[INFO] [stdout] bffe6937ecee8c185e8aef0fd0a30e4270b138e5e32bc4a169c8cb874ecd9bb5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+66388cc165a6c4ac98c074dc9f0281ff23528c55" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2a9499822ee4718eb2c1756a8c2b84207a3f1e27139e872abd2794528ccd56c4
[INFO] running `Command { std: "docker" "start" "-a" "2a9499822ee4718eb2c1756a8c2b84207a3f1e27139e872abd2794528ccd56c4", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling fuser v0.14.0
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling tracing-attributes v0.1.29
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking sdd v3.0.8
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking scc v2.3.4
[INFO] [stderr]     Checking time v0.3.41
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking page_size v0.6.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking xattr v1.5.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking filetime v0.2.25
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking mergerfs-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking serial_test v3.2.0
[INFO] [stdout] warning: unused import: `existing_path_all::ExistingPathAllActionPolicy`
[INFO] [stdout]  --> src/policy/action/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use existing_path_all::ExistingPathAllActionPolicy;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] 
[INFO] [stderr] thread 'rustc' (424) panicked at /rustc-dev/66388cc165a6c4ac98c074dc9f0281ff23528c55/compiler/rustc_ast/src/attr/mod.rs:302:36:
[INFO] [stderr] attribute is missing tokens: Attribute { kind: Normal(NormalAttr { item: AttrItem { unsafety: Default, path: Path { span: src/integration_tests.rs:11:5: 11:12 (#5399), segments: [PathSegment { ident: <test_trace>#5399, id: NodeId(4294967040), args: None }], tokens: None }, args: Unparsed(Empty), tokens: None }, tokens: None }), id: AttrId(1460), style: Outer, span: src/integration_tests.rs:11:5: 11:12 (#5399) }
[INFO] [stderr] stack backtrace:
[INFO] [stderr]    0:     0x77ba3402bfa3 - <<std[7d609349af90bec6]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[75ca2badb63c4514]::fmt::Display>::fmt
[INFO] [stderr]    1:     0x77ba3460fb48 - core[75ca2badb63c4514]::fmt::write
[INFO] [stderr]    2:     0x77ba34042226 - <std[7d609349af90bec6]::sys::stdio::unix::Stderr as std[7d609349af90bec6]::io::Write>::write_fmt
[INFO] [stderr]    3:     0x77ba34001b98 - std[7d609349af90bec6]::panicking::default_hook::{closure#0}
[INFO] [stderr]    4:     0x77ba3401f833 - std[7d609349af90bec6]::panicking::default_hook
[INFO] [stderr]    5:     0x77ba3300236a - std[7d609349af90bec6]::panicking::update_hook::<alloc[d7482eb0f1d19161]::boxed::Box<rustc_driver_impl[3f9d6dd912ac34bd]::install_ice_hook::{closure#1}>>::{closure#0}
[INFO] [stderr]    6:     0x77ba3401fb12 - std[7d609349af90bec6]::panicking::panic_with_hook
[INFO] [stderr]    7:     0x77ba34001c58 - std[7d609349af90bec6]::panicking::panic_handler::{closure#0}
[INFO] [stderr]    8:     0x77ba33ff89a9 - std[7d609349af90bec6]::sys::backtrace::__rust_end_short_backtrace::<std[7d609349af90bec6]::panicking::panic_handler::{closure#0}, !>
[INFO] [stderr]    9:     0x77ba3400372d - __rustc[69841a6cbc58d81d]::rust_begin_unwind
[INFO] [stderr]   10:     0x77ba30c38f9c - core[75ca2badb63c4514]::panicking::panic_fmt
[INFO] [stderr]   11:     0x77ba353e0110 - <rustc_ast[333fca09df5738a4]::ast::Attribute>::token_trees
[INFO] [stderr]   12:     0x77ba35c1c314 - <rustc_expand[a01ffc1bf52c2613]::expand::MacroExpander>::fully_expand_fragment
[INFO] [stderr]   13:     0x77ba35be65d2 - <rustc_expand[a01ffc1bf52c2613]::expand::MacroExpander>::expand_crate
[INFO] [stderr]   14:     0x77ba34cf0af3 - rustc_interface[903e43df8d6bd657]::passes::configure_and_expand
[INFO] [stderr]   15:     0x77ba35807658 - rustc_interface[903e43df8d6bd657]::passes::resolver_for_lowering_raw
[INFO] [stderr]   16:     0x77ba358073cd - rustc_query_impl[8c5349e00d64015e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8c5349e00d64015e]::query_impl::resolver_for_lowering_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[2342951a64deba5]::query::erase::Erased<[u8; 16usize]>>
[INFO] [stderr]   17:     0x77ba358073a7 - <rustc_query_impl[8c5349e00d64015e]::query_impl::resolver_for_lowering_raw::dynamic_query::{closure#2} as core[75ca2badb63c4514]::ops::function::FnOnce<(rustc_middle[2342951a64deba5]::ty::context::TyCtxt, ())>>::call_once
[INFO] [stderr]   18:     0x77ba357ecb5f - rustc_query_system[d45be4fb383a0235]::query::plumbing::try_execute_query::<rustc_query_impl[8c5349e00d64015e]::DynamicConfig<rustc_query_system[d45be4fb383a0235]::query::caches::SingleCache<rustc_middle[2342951a64deba5]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[8c5349e00d64015e]::plumbing::QueryCtxt, false>
[INFO] [stderr]   19:     0x77ba357ec6bc - rustc_query_impl[8c5349e00d64015e]::query_impl::resolver_for_lowering_raw::get_query_non_incr::__rust_end_short_backtrace
[INFO] [stderr]   20:     0x77ba3597127b - <rustc_interface[903e43df8d6bd657]::passes::create_and_enter_global_ctxt<core[75ca2badb63c4514]::option::Option<rustc_interface[903e43df8d6bd657]::queries::Linker>, rustc_driver_impl[3f9d6dd912ac34bd]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[75ca2badb63c4514]::ops::function::FnOnce<(&rustc_session[1e6875ba352dc1ba]::session::Session, rustc_middle[2342951a64deba5]::ty::context::CurrentGcx, alloc[d7482eb0f1d19161]::sync::Arc<rustc_data_structures[c82a87ce5cdbfc92]::jobserver::Proxy>, &std[7d609349af90bec6]::sync::once_lock::OnceLock<rustc_middle[2342951a64deba5]::ty::context::GlobalCtxt>, &rustc_data_structures[c82a87ce5cdbfc92]::sync::worker_local::WorkerLocal<rustc_middle[2342951a64deba5]::arena::Arena>, &rustc_data_structures[c82a87ce5cdbfc92]::sync::worker_local::WorkerLocal<rustc_hir[cc727ec2ba6ebdb5]::Arena>, rustc_driver_impl[3f9d6dd912ac34bd]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
[INFO] [stderr]   21:     0x77ba3585ac98 - rustc_interface[903e43df8d6bd657]::interface::run_compiler::<(), rustc_driver_impl[3f9d6dd912ac34bd]::run_compiler::{closure#0}>::{closure#1}
[INFO] [stderr]   22:     0x77ba356eac4e - std[7d609349af90bec6]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[903e43df8d6bd657]::util::run_in_thread_with_globals<rustc_interface[903e43df8d6bd657]::util::run_in_thread_pool_with_globals<rustc_interface[903e43df8d6bd657]::interface::run_compiler<(), rustc_driver_impl[3f9d6dd912ac34bd]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
[INFO] [stderr]   23:     0x77ba356eaa20 - <std[7d609349af90bec6]::thread::lifecycle::spawn_unchecked<rustc_interface[903e43df8d6bd657]::util::run_in_thread_with_globals<rustc_interface[903e43df8d6bd657]::util::run_in_thread_pool_with_globals<rustc_interface[903e43df8d6bd657]::interface::run_compiler<(), rustc_driver_impl[3f9d6dd912ac34bd]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[75ca2badb63c4514]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stderr]   24:     0x77ba356ed138 - <std[7d609349af90bec6]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stderr]   25:     0x77ba2f28aaa4 - <unknown>
[INFO] [stderr]   26:     0x77ba2f317a64 - clone
[INFO] [stderr]   27:                0x0 - <unknown>
[INFO] [stderr] 
[INFO] [stderr] error: the compiler unexpectedly panicked. this is a bug.
[INFO] [stderr] 
[INFO] [stderr] note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
[INFO] [stderr] 
[INFO] [stderr] note: please make sure that you have updated to the latest nightly
[INFO] [stderr] 
[INFO] [stderr] warning: the ICE couldn't be written to `/opt/rustwide/workdir/rustc-ice-2026-01-09T21_04_48-422.txt`: Read-only file system (os error 30)
[INFO] [stderr] 
[INFO] [stderr] note: rustc 1.94.0-nightly (66388cc16 2026-01-08) running on x86_64-unknown-linux-gnu
[INFO] [stderr] 
[INFO] [stderr] note: compiler flags: -C embed-bitcode=no -C debuginfo=2
[INFO] [stderr] 
[INFO] [stderr] note: some of the compiler flags provided by cargo are hidden
[INFO] [stderr] 
[INFO] [stderr] query stack during panic:
[INFO] [stderr] #0 [resolver_for_lowering_raw] getting the resolver for lowering
[INFO] [stderr] end of query stack
[INFO] [stderr] error: could not compile `mergerfs-rs` (bin "mergerfs-rs" test)
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/66388cc165a6c4ac98c074dc9f0281ff23528c55/bin/rustc --crate-name mergerfs_rs --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=36bf6c6bc856d3be -C extra-filename=-2b3663b4e9989354 --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern filetime=/opt/rustwide/target/debug/deps/libfiletime-4504fcded617bae0.rmeta --extern fuser=/opt/rustwide/target/debug/deps/libfuser-38298cc4470c5baf.rmeta --extern nix=/opt/rustwide/target/debug/deps/libnix-b7f848f2bb0e03d0.rmeta --extern parking_lot=/opt/rustwide/target/debug/deps/libparking_lot-dee24e1501ab638f.rmeta --extern rand=/opt/rustwide/target/debug/deps/librand-ebb417e512e6af98.rmeta --extern serial_test=/opt/rustwide/target/debug/deps/libserial_test-a75b9bf847d49312.rmeta --extern tempfile=/opt/rustwide/target/debug/deps/libtempfile-407953fd166ff650.rmeta --extern thiserror=/opt/rustwide/target/debug/deps/libthiserror-43b3b0b836f185c5.rmeta --extern time=/opt/rustwide/target/debug/deps/libtime-41c8205ddf0c3c8a.rmeta --extern tracing=/opt/rustwide/target/debug/deps/libtracing-462f2b6f1156b913.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/deps/libtracing_subscriber-21f43cdddbe31fd2.rmeta --extern xattr=/opt/rustwide/target/debug/deps/libxattr-4ee306a3f4a44e24.rmeta --cap-lints=forbid -L native=/usr/lib/x86_64-linux-gnu` (exit status: 101)
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/fuse_fs.rs:342:13
[INFO] [stdout]     |
[INFO] [stdout] 342 |         let path = {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_no_create` and `is_readonly_or_no_create` are never used
[INFO] [stdout]   --> src/branch.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Branch {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn is_no_create(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn is_readonly_or_no_create(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RelSymlink` and `AbsSymlink` are never constructed
[INFO] [stdout]   --> src/config.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub enum RenameEXDEV {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 35 |     Passthrough, // Return EXDEV error to caller
[INFO] [stdout] 36 |     RelSymlink,  // Create relative symlinks
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 37 |     AbsSymlink,  // Create absolute symlinks
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RenameEXDEV` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mountpoint`, `rename_exdev`, `direct_io_allow_mmap`, and `parallel_direct_writes` are never read
[INFO] [stdout]   --> src/config.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub mountpoint: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 82 |     pub ignore_path_preserving_on_rename: bool,
[INFO] [stdout] 83 |     pub rename_exdev: RenameEXDEV,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub direct_io_allow_mmap: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub parallel_direct_writes: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `should_enable_kernel_cache` is never used
[INFO] [stdout]    --> src/config.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | impl Config {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn should_enable_kernel_cache(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotSupported` is never constructed
[INFO] [stdout]   --> src/config_manager.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ConfigError {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     NotSupported,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `help` are never used
[INFO] [stdout]   --> src/config_manager.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait ConfigOption: Send + Sync + Any {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] 35 |     /// Get the option name (e.g., "moveonenospc")
[INFO] [stdout] 36 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     fn help(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `help` are never read
[INFO] [stdout]    --> src/config_manager.rs:333:5
[INFO] [stdout]     |
[INFO] [stdout] 332 | struct BooleanOption {
[INFO] [stdout]     |        ------------- fields in this struct
[INFO] [stdout] 333 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 334 |     value: Arc<RwLock<bool>>,
[INFO] [stdout] 335 |     help: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `help` are never read
[INFO] [stdout]    --> src/config_manager.rs:474:5
[INFO] [stdout]     |
[INFO] [stdout] 473 | struct ReadOnlyOption {
[INFO] [stdout]     |        -------------- fields in this struct
[INFO] [stdout] 474 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 475 |     value: String,
[INFO] [stdout] 476 |     help: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `execute` is never used
[INFO] [stdout]   --> src/policy/action/all.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AllActionPolicy {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn execute(
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExistingPathFirstFoundActionPolicy` is never constructed
[INFO] [stdout]  --> src/policy/action/existing_path_first_found.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ExistingPathFirstFoundActionPolicy;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/policy/action/existing_path_first_found.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl ExistingPathFirstFoundActionPolicy {
[INFO] [stdout]    | --------------------------------------- associated function in this implementation
[INFO] [stdout] 11 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllSearchPolicy` is never constructed
[INFO] [stdout]  --> src/policy/search/all.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct AllSearchPolicy;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/policy/search/all.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl AllSearchPolicy {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `search` is never used
[INFO] [stdout]   --> src/policy/search/first_found.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl FirstFoundSearchPolicy {
[INFO] [stdout]    | --------------------------- method in this implementation
[INFO] [stdout] 38 |     pub fn search(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewestSearchPolicy` is never constructed
[INFO] [stdout]  --> src/policy/search/newest.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct NewestSearchPolicy;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/policy/search/newest.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl NewestSearchPolicy {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 11 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_errno` is never used
[INFO] [stdout]   --> src/policy/error.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl PolicyError {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn from_errno(errno: i32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/policy/traits.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub trait ActionPolicy: Send + Sync {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 24 |     fn name(&self) -> &'static str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/policy/traits.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait SearchPolicy: Send + Sync {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 35 |     fn name(&self) -> &'static str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]  --> src/policy/utils.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct DiskSpace {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] 7 |     pub total: u64,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `DiskSpace` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `calculate_directory_size` is never used
[INFO] [stdout]   --> src/policy/utils.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl DiskSpace {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn calculate_directory_size(path: &Path) -> Result<u64, io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_metadata` and `get_metadata_single` are never used
[INFO] [stdout]    --> src/metadata_ops.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl MetadataManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_metadata(&self, path: &Path) -> Result<FileMetadata, PolicyError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn get_metadata_single(&self, path: &Path) -> Result<FileMetadata, PolicyError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMetadata` is never constructed
[INFO] [stdout]    --> src/metadata_ops.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct FileMetadata {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/file_ops.rs:99:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl FileManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn write_to_file(&self, path: &Path, offset: u64, data: &[u8]) -> Result<usize, PolicyError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn read_file(&self, path: &Path) -> Result<Vec<u8>, PolicyError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn file_exists(&self, path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn create_symlink(&self, link_path: &Path, target: &Path) -> Result<(), PolicyError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn directory_exists(&self, path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn get_metadata(&self, path: &Path) -> Option<std::fs::Metadata> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn file_exists_search(&self, path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ino`, `flags`, and `direct_io` are never read
[INFO] [stdout]   --> src/file_handle.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct FileHandle {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout]  8 |     pub ino: u64,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]  9 |     pub path: PathBuf,
[INFO] [stdout] 10 |     pub flags: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 11 |     pub branch_idx: Option<usize>,  // Which branch the file was opened from
[INFO] [stdout] 12 |     pub direct_io: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileHandle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_handle_count` and `update_branch` are never used
[INFO] [stdout]   --> src/file_handle.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl FileHandleManager {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_handle_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn update_branch(&self, fh: u64, new_branch_idx: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENODATA` is never used
[INFO] [stdout]   --> src/xattr/mod.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 33 |         const ENODATA: i32 = 61;  // No data available (alias for ENOATTR)
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `XattrOperations` is never used
[INFO] [stdout]  --> src/xattr/operations.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub trait XattrOperations {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MergerfsXattrHandler` is never constructed
[INFO] [stdout]  --> src/xattr/special_attrs.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MergerfsXattrHandler {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `handle_special_attr`, `get_basepath`, `get_relpath`, `get_fullpath`, and `get_allpaths` are never used
[INFO] [stdout]   --> src/xattr/special_attrs.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl MergerfsXattrHandler {
[INFO] [stdout]    | ------------------------- associated items in this implementation
[INFO] [stdout] 11 |     pub fn new(file_manager: Arc<FileManager>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn handle_special_attr(&self, path: &Path, name: &str) -> Option<Result<Vec<u8>, XattrError>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     fn get_basepath(&self, path: &Path) -> Result<Vec<u8>, XattrError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn get_relpath(&self, path: &Path) -> Result<Vec<u8>, XattrError> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn get_fullpath(&self, path: &Path) -> Result<Vec<u8>, XattrError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn get_allpaths(&self, path: &Path) -> Result<Vec<u8>, XattrError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EROFS` is never used
[INFO] [stdout]   --> src/fuse_fs.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const EROFS: i32 = 30;
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `next_inode` is never read
[INFO] [stdout]   --> src/fuse_fs.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct MergerFS {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 55 |     next_inode: std::sync::atomic::AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `allocate_inode` is never used
[INFO] [stdout]    --> src/fuse_fs.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl MergerFS {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn allocate_inode(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENODATA` is never used
[INFO] [stdout]     --> src/fuse_fs.rs:1947:7
[INFO] [stdout]      |
[INFO] [stdout] 1947 | const ENODATA: i32 = 61;
[INFO] [stdout]      |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENOTSUP` is never used
[INFO] [stdout]     --> src/fuse_fs.rs:1948:7
[INFO] [stdout]      |
[INFO] [stdout] 1948 | const ENOTSUP: i32 = 95;
[INFO] [stdout]      |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_errno` and `priority` are never used
[INFO] [stdout]   --> src/rename_ops.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl RenameError {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 45 |     pub fn to_errno(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn priority(&self) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `F_OK` is never used
[INFO] [stdout]  --> src/permissions.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const F_OK: i32 = 0;  // Test for existence
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `X_OK` is never used
[INFO] [stdout]  --> src/permissions.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const X_OK: i32 = 1;  // Test for execute permission
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W_OK` is never used
[INFO] [stdout]  --> src/permissions.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const W_OK: i32 = 2;  // Test for write permission
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `R_OK` is never used
[INFO] [stdout]  --> src/permissions.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const R_OK: i32 = 4;  // Test for read permission
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EACCES` is never used
[INFO] [stdout]   --> src/permissions.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const EACCES: i32 = 13;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccessError` is never constructed
[INFO] [stdout]   --> src/permissions.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct AccessError(pub i32);
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_errno` is never used
[INFO] [stdout]   --> src/permissions.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AccessError {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 18 |     pub fn to_errno(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_access` is never used
[INFO] [stdout]   --> src/permissions.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn check_access(uid: u32, gid: u32, metadata: &Metadata, mask: i32) -> Result<(), AccessError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `new_path` is never read
[INFO] [stdout]   --> src/moveonenospc.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MoveResult {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 33 |     pub new_branch_idx: usize,
[INFO] [stdout] 34 |     pub new_path: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_enabled` is never used
[INFO] [stdout]   --> src/moveonenospc.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl MoveOnENOSPCHandler {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `O_RDONLY` is never used
[INFO] [stdout]    --> src/moveonenospc.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             const O_RDONLY: i32 = 0;
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "2a9499822ee4718eb2c1756a8c2b84207a3f1e27139e872abd2794528ccd56c4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2a9499822ee4718eb2c1756a8c2b84207a3f1e27139e872abd2794528ccd56c4", kill_on_drop: false }`
[INFO] [stdout] 2a9499822ee4718eb2c1756a8c2b84207a3f1e27139e872abd2794528ccd56c4
