[INFO] cloning repository https://github.com/apestel/hardwire
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/apestel/hardwire" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fapestel%2Fhardwire", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fapestel%2Fhardwire'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1f5aaa23b3702eb25179e0273b07e26ac8f53253
[INFO] checking apestel/hardwire against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fapestel%2Fhardwire" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/apestel/hardwire
[INFO] finished tweaking git repo https://github.com/apestel/hardwire
[INFO] tweaked toml for git repo https://github.com/apestel/hardwire written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/apestel/hardwire on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/apestel/hardwire 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tracing-opentelemetry-instrumentation-sdk v0.24.0
[INFO] [stderr]   Downloaded paste v1.0.8
[INFO] [stderr]   Downloaded cpufeatures v0.2.4
[INFO] [stderr]   Downloaded indextree-macros v0.1.2
[INFO] [stderr]   Downloaded axum-tracing-opentelemetry v0.25.0
[INFO] [stderr]   Downloaded init-tracing-opentelemetry v0.25.1
[INFO] [stderr]   Downloaded askama v0.12.0
[INFO] [stderr]   Downloaded opentelemetry-http v0.27.0
[INFO] [stderr]   Downloaded askama_derive v0.12.1
[INFO] [stderr]   Downloaded prost-types v0.13.1
[INFO] [stderr]   Downloaded opentelemetry-semantic-conventions v0.27.0
[INFO] [stderr]   Downloaded async-compression v0.4.7
[INFO] [stderr]   Downloaded console-subscriber v0.4.1
[INFO] [stderr]   Downloaded sqlx-postgres v0.8.2
[INFO] [stderr]   Downloaded iri-string v0.7.0
[INFO] [stderr]   Downloaded sqlx v0.8.2
[INFO] [stderr]   Downloaded sqlx-mysql v0.8.2
[INFO] [stderr]   Downloaded nt-time v0.8.1
[INFO] [stderr]   Downloaded sqlx-core v0.8.2
[INFO] [stderr]   Downloaded tokio-tungstenite v0.26.1
[INFO] [stderr]   Downloaded console-api v0.8.1
[INFO] [stderr]   Downloaded indextree v4.7.3
[INFO] [stderr]   Downloaded prost v0.13.1
[INFO] [stderr]   Downloaded sqlx-macros-core v0.8.2
[INFO] [stderr]   Downloaded sqlx-sqlite v0.8.2
[INFO] [stderr]   Downloaded prost-derive v0.13.1
[INFO] [stderr]   Downloaded filetime_creation v0.2.0
[INFO] [stderr]   Downloaded lzma-rust v0.1.7
[INFO] [stderr]   Downloaded matchit v0.7.1
[INFO] [stderr]   Downloaded sqlx-macros v0.8.2
[INFO] [stderr]   Downloaded sevenz-rust v0.6.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1e19146d36dc95b612391eceb07cd4ba704640f79fccbafed93dae2ae3ad2249
[INFO] running `Command { std: "docker" "start" "-a" "1e19146d36dc95b612391eceb07cd4ba704640f79fccbafed93dae2ae3ad2249", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e19146d36dc95b612391eceb07cd4ba704640f79fccbafed93dae2ae3ad2249", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1e19146d36dc95b612391eceb07cd4ba704640f79fccbafed93dae2ae3ad2249", kill_on_drop: false }`
[INFO] [stdout] 1e19146d36dc95b612391eceb07cd4ba704640f79fccbafed93dae2ae3ad2249
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a76547cc428cf7133d17e7cb03fdb772b2e765c7b7d7c687275427d4f5cb6639
[INFO] running `Command { std: "docker" "start" "-a" "a76547cc428cf7133d17e7cb03fdb772b2e765c7b7d7c687275427d4f5cb6639", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.167
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]    Compiling lock_api v0.4.8
[INFO] [stderr]    Compiling serde v1.0.217
[INFO] [stderr]     Checking bytes v1.9.0
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling futures-util v0.3.28
[INFO] [stderr]     Checking futures-io v0.3.28
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling rustversion v1.0.9
[INFO] [stderr]     Checking want v0.3.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling serde_json v1.0.105
[INFO] [stderr]     Checking http v1.1.0
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]     Checking sync_wrapper v1.0.1
[INFO] [stderr]    Compiling async-trait v0.1.72
[INFO] [stderr]    Compiling syn v2.0.90
[INFO] [stderr]     Checking block-buffer v0.10.2
[INFO] [stderr]     Checking cpufeatures v0.2.4
[INFO] [stderr]     Checking tinyvec v1.6.0
[INFO] [stderr]     Checking indexmap v2.0.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling unicase v2.6.0
[INFO] [stderr]    Compiling syn v1.0.99
[INFO] [stderr]     Checking http-body v1.0.0
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]     Checking http-body-util v0.1.1
[INFO] [stderr]    Compiling typenum v1.15.0
[INFO] [stderr]    Compiling jobserver v0.1.31
[INFO] [stderr]    Compiling indexmap v1.9.1
[INFO] [stderr]    Compiling crossbeam-queue v0.3.6
[INFO] [stderr]    Compiling crossbeam-utils v0.8.11
[INFO] [stderr]    Compiling scopeguard v1.1.0
[INFO] [stderr]    Compiling cc v1.2.2
[INFO] [stderr]     Checking unicode-normalization v0.1.23
[INFO] [stderr]     Checking parking_lot_core v0.9.3
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking signal-hook-registry v1.4.0
[INFO] [stderr]     Checking socket2 v0.5.7
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling generic-array v0.14.6
[INFO] [stderr]     Checking idna v0.5.0
[INFO] [stderr]    Compiling axum-core v0.4.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking aho-corasick v0.7.18
[INFO] [stderr]    Compiling futures-sink v0.3.28
[INFO] [stderr]    Compiling tinyvec_macros v0.1.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling nom v7.1.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking regex v1.6.0
[INFO] [stderr]    Compiling axum v0.7.5
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]     Checking sync_wrapper v0.1.1
[INFO] [stderr]    Compiling rustls v0.23.19
[INFO] [stderr]    Compiling ring v0.17.8
[INFO] [stderr]    Compiling openssl-sys v0.9.104
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling zstd-sys v2.0.10+zstd.1.5.6
[INFO] [stderr]    Compiling openssl v0.10.68
[INFO] [stderr]    Compiling native-tls v0.2.12
[INFO] [stderr]    Compiling rustix v0.38.41
[INFO] [stderr]     Checking regex-automata v0.1.10
[INFO] [stderr]    Compiling futures-task v0.3.28
[INFO] [stderr]    Compiling slab v0.4.7
[INFO] [stderr]    Compiling thiserror v2.0.9
[INFO] [stderr]    Compiling futures-channel v0.3.28
[INFO] [stderr]     Checking matchit v0.7.1
[INFO] [stderr]    Compiling paste v1.0.8
[INFO] [stderr]    Compiling unicode-bidi v0.3.15
[INFO] [stderr]     Checking matchers v0.1.0
[INFO] [stderr]    Compiling pin-project-internal v1.0.12
[INFO] [stderr]    Compiling tokio v1.41.1
[INFO] [stderr]     Checking pin-project v1.0.12
[INFO] [stderr]     Checking sharded-slab v0.1.4
[INFO] [stderr]    Compiling serde_derive v1.0.217
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling tokio-macros v2.4.0
[INFO] [stderr]    Compiling futures-macro v0.3.28
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking opentelemetry v0.27.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]    Compiling async-stream-impl v0.3.5
[INFO] [stderr]     Checking futures-executor v0.3.28
[INFO] [stderr]     Checking tokio-util v0.7.10
[INFO] [stderr]     Checking tokio-stream v0.1.16
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking h2 v0.4.5
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking async-stream v0.3.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.9
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking url v2.5.0
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]    Compiling either v1.13.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]     Checking opentelemetry_sdk v0.27.1
[INFO] [stderr]    Compiling itertools v0.10.3
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.4
[INFO] [stderr]    Compiling itoa v1.0.9
[INFO] [stderr]    Compiling io-lifetimes v1.0.3
[INFO] [stderr]    Compiling ryu v1.0.11
[INFO] [stderr]    Compiling sha2 v0.10.7
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling prost-derive v0.13.1
[INFO] [stderr]    Compiling time-macros v0.2.19
[INFO] [stderr]    Compiling event-listener v5.3.1
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling sqlformat v0.2.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking tokio-rustls v0.26.0
[INFO] [stderr]     Checking hyper v1.5.2
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking prost v0.13.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]     Checking sha1 v0.10.5
[INFO] [stderr]     Checking block-padding v0.3.3
[INFO] [stderr]    Compiling rustix v0.36.4
[INFO] [stderr]    Compiling zstd-safe v7.1.0
[INFO] [stderr]     Checking inout v0.1.3
[INFO] [stderr]     Checking time v0.3.37
[INFO] [stderr]     Checking tungstenite v0.26.1
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]     Checking hyper-util v0.1.10
[INFO] [stderr]     Checking flate2 v1.0.28
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking hyper-timeout v0.5.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]    Compiling sqlx-core v0.8.2
[INFO] [stderr]     Checking tonic v0.12.3
[INFO] [stderr]     Checking hyper-rustls v0.27.3
[INFO] [stderr]     Checking serde_path_to_error v0.1.8
[INFO] [stderr]    Compiling mime_guess v2.0.4
[INFO] [stderr]    Compiling num-bigint v0.4.3
[INFO] [stderr]    Compiling libm v0.2.7
[INFO] [stderr]     Checking linux-raw-sys v0.1.3
[INFO] [stderr]    Compiling tempfile v3.14.0
[INFO] [stderr]     Checking anstyle-parse v0.2.4
[INFO] [stderr]     Checking reqwest v0.12.12
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tokio-tungstenite v0.26.1
[INFO] [stderr]     Checking num-integer v0.1.45
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking tracing-opentelemetry v0.28.0
[INFO] [stderr]     Checking axum-core v0.5.0
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.2
[INFO] [stderr]     Checking colorchoice v1.0.1
[INFO] [stderr]     Checking anstyle-query v1.1.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.0
[INFO] [stderr]     Checking anstyle v1.0.7
[INFO] [stderr]     Checking axum v0.8.1
[INFO] [stderr]     Checking anstream v0.6.14
[INFO] [stderr]     Checking is-terminal v0.4.1
[INFO] [stderr]     Checking opentelemetry-http v0.27.0
[INFO] [stderr]     Checking brotli v3.3.4
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]     Checking opentelemetry-proto v0.27.0
[INFO] [stderr]     Checking zstd v0.13.1
[INFO] [stderr]     Checking prost-types v0.13.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.2
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling basic-toml v0.1.4
[INFO] [stderr]     Checking filetime v0.2.23
[INFO] [stderr]     Checking bit-vec v0.7.0
[INFO] [stderr]     Checking termcolor v1.1.3
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking linux-raw-sys v0.4.14
[INFO] [stderr]     Checking clap_lex v0.7.1
[INFO] [stderr]     Checking iana-time-zone v0.1.47
[INFO] [stderr]     Checking reqwest v0.11.23
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]    Compiling sqlx-macros v0.8.2
[INFO] [stderr]     Checking clap_builder v4.5.6
[INFO] [stderr]     Checking async-compression v0.4.7
[INFO] [stderr]     Checking env_logger v0.10.0
[INFO] [stderr]     Checking bit-set v0.6.0
[INFO] [stderr]    Compiling askama_derive v0.12.1
[INFO] [stderr]     Checking filetime_creation v0.2.0
[INFO] [stderr]     Checking console-api v0.8.1
[INFO] [stderr]     Checking opentelemetry-otlp v0.27.0
[INFO] [stderr]     Checking simple_asn1 v0.6.2
[INFO] [stderr]     Checking humansize v2.1.3
[INFO] [stderr]    Compiling indextree-macros v0.1.2
[INFO] [stderr]     Checking tracing-opentelemetry-instrumentation-sdk v0.24.0
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking cbc v0.1.2
[INFO] [stderr]     Checking nt-time v0.8.1
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]     Checking uuid v1.8.0
[INFO] [stderr]    Compiling clap_derive v4.5.5
[INFO] [stderr]     Checking crossbeam-channel v0.5.6
[INFO] [stderr]     Checking lzma-rust v0.1.7
[INFO] [stderr]    Compiling hardwire v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking iri-string v0.7.0
[INFO] [stderr]     Checking opentelemetry-semantic-conventions v0.27.0
[INFO] [stderr]     Checking init-tracing-opentelemetry v0.25.1
[INFO] [stderr]     Checking oauth2 v4.4.2
[INFO] [stderr]     Checking console-subscriber v0.4.1
[INFO] [stderr]     Checking jsonwebtoken v9.3.0
[INFO] [stderr]     Checking indextree v4.7.3
[INFO] [stderr]     Checking sevenz-rust v0.6.1
[INFO] [stderr]     Checking axum-tracing-opentelemetry v0.25.0
[INFO] [stderr]     Checking sqlx v0.8.2
[INFO] [stderr]     Checking axum-extra v0.10.0
[INFO] [stderr]     Checking pretty_env_logger v0.5.0
[INFO] [stderr]     Checking futures v0.3.28
[INFO] [stderr]     Checking nanoid v0.4.0
[INFO] [stderr]     Checking clap v4.5.6
[INFO] [stderr]     Checking tower-http v0.6.2
[INFO] [stderr]     Checking askama v0.12.0
[INFO] [stderr] [Lit("", "<!DOCTYPE html>\n<html class=\"dark\" lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta property=\"og:type\" content=\"website\">\n    <meta property=\"og:url\" content=\"", ""), Expr(Ws(None, None), Var("hardwire_host")), Lit("", "/s/", ""), Expr(Ws(None, None), Var("share_id")), Lit("", "\">\n    <meta property=\"og:title\" content=\"HardWire:", " "), Expr(Ws(None, None), Var("first_filename")), Lit("", "\">\n    <meta property=\"og:description\" content=\"HardWire - Secure file sharing made simple\">\n    <meta property=\"og:image\" content=\"https://linkfork.co/images/poster.png\">\n    <title>HardWire:", " "), Expr(Ws(None, None), Var("first_filename")), Lit("", "</title>\n    <link rel=\"stylesheet\" href=\"/assets/css/output.css\">\n    <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n</head>\n\n<body\n    class=\"font-['Inter'] transition bg-[rgba(255,255,255,0.97)] text-slate-800 dark:bg-[rgba(15,23,42,0.97)] dark:text-white\">\n    <div class=\"min-h-screen flex flex-col justify-between\">\n        <!-- Theme Toggle Button -->\n        <div class=\"fixed top-4 right-4 cursor-pointer rounded-full p-2 flex items-center justify-center bg-[rgba(0,0,0,0.1)] transition hover:bg-[rgba(0,0,0,0.2)] dark:bg-[rgba(255,255,255,0.1)] dark:hover:bg-[rgba(255,255,255,0.2)]\"\n            id=\"themeToggle\" title=\"Toggle dark/light mode\">\n            <!-- Sun icon (shown in dark mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-yellow-300 dark:hidden block\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\" />\n            </svg>\n            <!-- Moon icon (shown in light mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-700 dark:block hidden\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\" />\n            </svg>\n        </div>\n\n        <div class=\"max-w-[800px] w-full mx-auto px-4\">\n            <!-- Header -->\n            <header\n                class=\"flex items-center justify-center py-6 border-b border-[rgba(0,0,0,0.1)] dark:border-[rgba(255,255,255,0.1)]\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-6 text-indigo-500\" fill=\"none\" viewBox=\"0 0 24 24\"\n                    stroke=\"currentColor\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                        d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" />\n                </svg>\n                <h1 class=\"text-indigo-500 ml-2 text-xl font-semibold\">HardWire</h1>\n            </header>\n\n            <div class=\"text-center py-2 text-sm\">\n                <p>Secure file sharing made simple</p>\n            </div>\n\n            <!-- Files Section -->\n            <section class=\"py-6\">\n                <div class=\"flex items-center mb-2\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\"\n                        stroke=\"currentColor\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                            d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n                    </svg>\n                    <h2 class=\"font-semibold text-xl ml-2\">Shared Files</h2>\n                </div>\n                <p class=\"text-sm text-gray-400 mb-4\">Click on a file to download</p>\n\n                <div>", "\n                    "), Loop(Loop { ws1: Ws(None, None), var: Name("file"), iter: Var("files"), cond: None, body: [Lit("\n                    ", "<div\n                        class=\"bg-[rgba(0,0,0,0.05)] rounded-lg mb-2 transition duration-200 hover:bg-[rgba(0,0,0,0.1)] dark:bg-[rgba(255,255,255,0.05)] dark:hover:bg-[rgba(255,255,255,0.1)]\">\n                        <a href=\"", ""), Expr(Ws(None, None), Var("hardwire_host")), Lit("", "/s/", ""), Expr(Ws(None, None), Var("share_id")), Lit("", "/", ""), Expr(Ws(None, None), Attr(Var("file"), "link")), Lit("", "\"\n                            download=\"", ""), Expr(Ws(None, None), Attr(Var("file"), "short_filename")), Lit("", "\"\n                            class=\"flex items-center py-3 px-4 text-slate-800 dark:text-white no-underline\">\n                            <span>", ""), Expr(Ws(None, None), Attr(Var("file"), "short_filename")), Lit("", "</span>\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 ml-auto\" fill=\"none\"\n                                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                                    d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n                            </svg>\n                        </a>\n                    </div>", "\n                    ")], ws2: Ws(None, None), else_block: [], ws3: Ws(None, None) }), Lit("\n                ", "</div>\n            </section>\n        </div>\n\n        <!-- Footer -->\n        <footer\n            class=\"text-center py-4 text-[rgba(0,0,0,0.5)] text-sm border-t border-[rgba(0,0,0,0.1)] dark:text-[rgba(255,255,255,0.5)] dark:border-[rgba(255,255,255,0.1)]\">\n            <p>© 2025 HardWire. All rights reserved.</p>\n        </footer>\n    </div>\n\n    <script>\n        // Function to toggle between dark and light mode\n        function toggleTheme() {\n            const html = document.documentElement;\n\n            if (html.classList.contains('dark')) {\n                html.classList.remove('dark');\n                html.classList.add('light');\n                localStorage.setItem('theme', 'light');\n            } else {\n                html.classList.remove('light');\n                html.classList.add('dark');\n                localStorage.setItem('theme', 'dark');\n            }\n        }\n\n        // Set the initial theme based on user preference or system preference\n        function setInitialTheme() {\n            const html = document.documentElement;\n            const savedTheme = localStorage.getItem('theme');\n\n            if (savedTheme) {\n                html.classList.remove('dark', 'light');\n                html.classList.add(savedTheme);\n            } else {\n                // Check system preference\n                const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n                html.classList.remove('dark', 'light');\n                html.classList.add(prefersDark ? 'dark' : 'light');\n                localStorage.setItem('theme', prefersDark ? 'dark' : 'light');\n            }\n        }\n\n        // Add event listener to the theme toggle button\n        document.addEventListener('DOMContentLoaded', function () {\n            const themeToggle = document.getElementById('themeToggle');\n            themeToggle.addEventListener('click', toggleTheme);\n\n            // Set initial theme\n            setInitialTheme();\n        });\n    </script>\n</body>\n\n</html>", "")]
[INFO] [stderr] impl ::askama::Template for DownloadFilesTemplate {
[INFO] [stderr]     fn render_into(&self, writer: &mut (impl ::std::fmt::Write + ?Sized)) -> ::askama::Result<()> {
[INFO] [stderr]         include_bytes! ("/opt/rustwide/workdir/templates/list_files.html");
[INFO] [stderr]         ::std::write!(
[INFO] [stderr]             writer,
[INFO] [stderr]             "<!DOCTYPE html>\n<html class=\"dark\" lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta property=\"og:type\" content=\"website\">\n    <meta property=\"og:url\" content=\"{expr0}/s/{expr1}\">\n    <meta property=\"og:title\" content=\"HardWire: {expr2}\">\n    <meta property=\"og:description\" content=\"HardWire - Secure file sharing made simple\">\n    <meta property=\"og:image\" content=\"https://linkfork.co/images/poster.png\">\n    <title>HardWire: {expr2}</title>\n    <link rel=\"stylesheet\" href=\"/assets/css/output.css\">\n    <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n</head>\n\n<body\n    class=\"font-['Inter'] transition bg-[rgba(255,255,255,0.97)] text-slate-800 dark:bg-[rgba(15,23,42,0.97)] dark:text-white\">\n    <div class=\"min-h-screen flex flex-col justify-between\">\n        <!-- Theme Toggle Button -->\n        <div class=\"fixed top-4 right-4 cursor-pointer rounded-full p-2 flex items-center justify-center bg-[rgba(0,0,0,0.1)] transition hover:bg-[rgba(0,0,0,0.2)] dark:bg-[rgba(255,255,255,0.1)] dark:hover:bg-[rgba(255,255,255,0.2)]\"\n            id=\"themeToggle\" title=\"Toggle dark/light mode\">\n            <!-- Sun icon (shown in dark mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-yellow-300 dark:hidden block\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\" />\n            </svg>\n            <!-- Moon icon (shown in light mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-700 dark:block hidden\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\" />\n            </svg>\n        </div>\n\n        <div class=\"max-w-[800px] w-full mx-auto px-4\">\n            <!-- Header -->\n            <header\n                class=\"flex items-center justify-center py-6 border-b border-[rgba(0,0,0,0.1)] dark:border-[rgba(255,255,255,0.1)]\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-6 text-indigo-500\" fill=\"none\" viewBox=\"0 0 24 24\"\n                    stroke=\"currentColor\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                        d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" />\n                </svg>\n                <h1 class=\"text-indigo-500 ml-2 text-xl font-semibold\">HardWire</h1>\n            </header>\n\n            <div class=\"text-center py-2 text-sm\">\n                <p>Secure file sharing made simple</p>\n            </div>\n\n            <!-- Files Section -->\n            <section class=\"py-6\">\n                <div class=\"flex items-center mb-2\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\"\n                        stroke=\"currentColor\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                            d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n                    </svg>\n                    <h2 class=\"font-semibold text-xl ml-2\">Shared Files</h2>\n                </div>\n                <p class=\"text-sm text-gray-400 mb-4\">Click on a file to download</p>\n\n                <div>\n                    ",
[INFO] [stderr]             expr0 = &::askama::MarkupDisplay::new_unsafe(&(self.hardwire_host), ::askama::Html),
[INFO] [stderr]             expr1 = &::askama::MarkupDisplay::new_unsafe(&(self.share_id), ::askama::Html),
[INFO] [stderr]             expr2 = &::askama::MarkupDisplay::new_unsafe(&(self.first_filename), ::askama::Html),
[INFO] [stderr]         )?;
[INFO] [stderr]         {
[INFO] [stderr]             let mut _did_loop = false;
[INFO] [stderr]             let _iter = (&self.files).into_iter();
[INFO] [stderr]             for (file, _loop_item) in ::askama::helpers::TemplateLoop::new(_iter) {
[INFO] [stderr]                 _did_loop = true;
[INFO] [stderr]                 ::std::write!(
[INFO] [stderr]                     writer,
[INFO] [stderr]                     "\n                    <div\n                        class=\"bg-[rgba(0,0,0,0.05)] rounded-lg mb-2 transition duration-200 hover:bg-[rgba(0,0,0,0.1)] dark:bg-[rgba(255,255,255,0.05)] dark:hover:bg-[rgba(255,255,255,0.1)]\">\n                        <a href=\"{expr3}/s/{expr4}/{expr5}\"\n                            download=\"{expr6}\"\n                            class=\"flex items-center py-3 px-4 text-slate-800 dark:text-white no-underline\">\n                            <span>{expr6}</span>\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 ml-auto\" fill=\"none\"\n                                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                                    d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n                            </svg>\n                        </a>\n                    </div>\n                    ",
[INFO] [stderr]                     expr3 = &::askama::MarkupDisplay::new_unsafe(&(self.hardwire_host), ::askama::Html),
[INFO] [stderr]                     expr4 = &::askama::MarkupDisplay::new_unsafe(&(self.share_id), ::askama::Html),
[INFO] [stderr]                     expr5 = &::askama::MarkupDisplay::new_unsafe(&(file.link), ::askama::Html),
[INFO] [stderr]                     expr6 = &::askama::MarkupDisplay::new_unsafe(&(file.short_filename), ::askama::Html),
[INFO] [stderr]                 )?;
[INFO] [stderr]             }
[INFO] [stderr]             if !_did_loop {
[INFO] [stderr]             }
[INFO] [stderr]         }
[INFO] [stderr]         writer.write_str("\n                </div>\n            </section>\n        </div>\n\n        <!-- Footer -->\n        <footer\n            class=\"text-center py-4 text-[rgba(0,0,0,0.5)] text-sm border-t border-[rgba(0,0,0,0.1)] dark:text-[rgba(255,255,255,0.5)] dark:border-[rgba(255,255,255,0.1)]\">\n            <p>© 2025 HardWire. All rights reserved.</p>\n        </footer>\n    </div>\n\n    <script>\n        // Function to toggle between dark and light mode\n        function toggleTheme() {\n            const html = document.documentElement;\n\n            if (html.classList.contains('dark')) {\n                html.classList.remove('dark');\n                html.classList.add('light');\n                localStorage.setItem('theme', 'light');\n            } else {\n                html.classList.remove('light');\n                html.classList.add('dark');\n                localStorage.setItem('theme', 'dark');\n            }\n        }\n\n        // Set the initial theme based on user preference or system preference\n        function setInitialTheme() {\n            const html = document.documentElement;\n            const savedTheme = localStorage.getItem('theme');\n\n            if (savedTheme) {\n                html.classList.remove('dark', 'light');\n                html.classList.add(savedTheme);\n            } else {\n                // Check system preference\n                const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n                html.classList.remove('dark', 'light');\n                html.classList.add(prefersDark ? 'dark' : 'light');\n                localStorage.setItem('theme', prefersDark ? 'dark' : 'light');\n            }\n        }\n\n        // Add event listener to the theme toggle button\n        document.addEventListener('DOMContentLoaded', function () {\n            const themeToggle = document.getElementById('themeToggle');\n            themeToggle.addEventListener('click', toggleTheme);\n\n            // Set initial theme\n            setInitialTheme();\n        });\n    </script>\n</body>\n\n</html>")?;
[INFO] [stderr]         ::askama::Result::Ok(())
[INFO] [stderr]     }
[INFO] [stderr]     const EXTENSION: ::std::option::Option<&'static ::std::primitive::str> = 
[INFO] [stderr]     Some("html")
[INFO] [stderr]     ;
[INFO] [stderr]     const SIZE_HINT: ::std::primitive::usize = 
[INFO] [stderr]     7330
[INFO] [stderr]     ;
[INFO] [stderr]     const MIME_TYPE: &'static ::std::primitive::str = 
[INFO] [stderr]     "text/html; charset=utf-8"
[INFO] [stderr]     ;
[INFO] [stderr] }
[INFO] [stderr] impl ::std::fmt::Display for DownloadFilesTemplate {
[INFO] [stderr]     #[inline]
[INFO] [stderr]     fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
[INFO] [stderr]         ::askama::Template::render_into(self, f).map_err(|_| ::std::fmt::Error {})
[INFO] [stderr]     }
[INFO] [stderr] }
[INFO] [stderr] 
[INFO] [stderr] [Lit("", "<!DOCTYPE html>\n<html class=\"dark\" lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta property=\"og:type\" content=\"website\">\n    <meta property=\"og:url\" content=\"", ""), Expr(Ws(None, None), Var("hardwire_host")), Lit("", "/s/", ""), Expr(Ws(None, None), Var("share_id")), Lit("", "\">\n    <meta property=\"og:title\" content=\"HardWire:", " "), Expr(Ws(None, None), Var("first_filename")), Lit("", "\">\n    <meta property=\"og:description\" content=\"HardWire - Secure file sharing made simple\">\n    <meta property=\"og:image\" content=\"https://linkfork.co/images/poster.png\">\n    <title>HardWire:", " "), Expr(Ws(None, None), Var("first_filename")), Lit("", "</title>\n    <link rel=\"stylesheet\" href=\"/assets/css/output.css\">\n    <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n</head>\n\n<body\n    class=\"font-['Inter'] transition bg-[rgba(255,255,255,0.97)] text-slate-800 dark:bg-[rgba(15,23,42,0.97)] dark:text-white\">\n    <div class=\"min-h-screen flex flex-col justify-between\">\n        <!-- Theme Toggle Button -->\n        <div class=\"fixed top-4 right-4 cursor-pointer rounded-full p-2 flex items-center justify-center bg-[rgba(0,0,0,0.1)] transition hover:bg-[rgba(0,0,0,0.2)] dark:bg-[rgba(255,255,255,0.1)] dark:hover:bg-[rgba(255,255,255,0.2)]\"\n            id=\"themeToggle\" title=\"Toggle dark/light mode\">\n            <!-- Sun icon (shown in dark mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-yellow-300 dark:hidden block\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\" />\n            </svg>\n            <!-- Moon icon (shown in light mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-700 dark:block hidden\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\" />\n            </svg>\n        </div>\n\n        <div class=\"max-w-[800px] w-full mx-auto px-4\">\n            <!-- Header -->\n            <header\n                class=\"flex items-center justify-center py-6 border-b border-[rgba(0,0,0,0.1)] dark:border-[rgba(255,255,255,0.1)]\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-6 text-indigo-500\" fill=\"none\" viewBox=\"0 0 24 24\"\n                    stroke=\"currentColor\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                        d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" />\n                </svg>\n                <h1 class=\"text-indigo-500 ml-2 text-xl font-semibold\">HardWire</h1>\n            </header>\n\n            <div class=\"text-center py-2 text-sm\">\n                <p>Secure file sharing made simple</p>\n            </div>\n\n            <!-- Files Section -->\n            <section class=\"py-6\">\n                <div class=\"flex items-center mb-2\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\"\n                        stroke=\"currentColor\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                            d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n                    </svg>\n                    <h2 class=\"font-semibold text-xl ml-2\">Shared Files</h2>\n                </div>\n                <p class=\"text-sm text-gray-400 mb-4\">Click on a file to download</p>\n\n                <div>", "\n                    "), Loop(Loop { ws1: Ws(None, None), var: Name("file"), iter: Var("files"), cond: None, body: [Lit("\n                    ", "<div\n                        class=\"bg-[rgba(0,0,0,0.05)] rounded-lg mb-2 transition duration-200 hover:bg-[rgba(0,0,0,0.1)] dark:bg-[rgba(255,255,255,0.05)] dark:hover:bg-[rgba(255,255,255,0.1)]\">\n                        <a href=\"", ""), Expr(Ws(None, None), Var("hardwire_host")), Lit("", "/s/", ""), Expr(Ws(None, None), Var("share_id")), Lit("", "/", ""), Expr(Ws(None, None), Attr(Var("file"), "link")), Lit("", "\"\n                            download=\"", ""), Expr(Ws(None, None), Attr(Var("file"), "short_filename")), Lit("", "\"\n                            class=\"flex items-center py-3 px-4 text-slate-800 dark:text-white no-underline\">\n                            <span>", ""), Expr(Ws(None, None), Attr(Var("file"), "short_filename")), Lit("", "</span>\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 ml-auto\" fill=\"none\"\n                                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                                    d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n                            </svg>\n                        </a>\n                    </div>", "\n                    ")], ws2: Ws(None, None), else_block: [], ws3: Ws(None, None) }), Lit("\n                ", "</div>\n            </section>\n        </div>\n\n        <!-- Footer -->\n        <footer\n            class=\"text-center py-4 text-[rgba(0,0,0,0.5)] text-sm border-t border-[rgba(0,0,0,0.1)] dark:text-[rgba(255,255,255,0.5)] dark:border-[rgba(255,255,255,0.1)]\">\n            <p>© 2025 HardWire. All rights reserved.</p>\n        </footer>\n    </div>\n\n    <script>\n        // Function to toggle between dark and light mode\n        function toggleTheme() {\n            const html = document.documentElement;\n\n            if (html.classList.contains('dark')) {\n                html.classList.remove('dark');\n                html.classList.add('light');\n                localStorage.setItem('theme', 'light');\n            } else {\n                html.classList.remove('light');\n                html.classList.add('dark');\n                localStorage.setItem('theme', 'dark');\n            }\n        }\n\n        // Set the initial theme based on user preference or system preference\n        function setInitialTheme() {\n            const html = document.documentElement;\n            const savedTheme = localStorage.getItem('theme');\n\n            if (savedTheme) {\n                html.classList.remove('dark', 'light');\n                html.classList.add(savedTheme);\n            } else {\n                // Check system preference\n                const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n                html.classList.remove('dark', 'light');\n                html.classList.add(prefersDark ? 'dark' : 'light');\n                localStorage.setItem('theme', prefersDark ? 'dark' : 'light');\n            }\n        }\n\n        // Add event listener to the theme toggle button\n        document.addEventListener('DOMContentLoaded', function () {\n            const themeToggle = document.getElementById('themeToggle');\n            themeToggle.addEventListener('click', toggleTheme);\n\n            // Set initial theme\n            setInitialTheme();\n        });\n    </script>\n</body>\n\n</html>", "")]
[INFO] [stderr] impl ::askama::Template for DownloadFilesTemplate {
[INFO] [stderr]     fn render_into(&self, writer: &mut (impl ::std::fmt::Write + ?Sized)) -> ::askama::Result<()> {
[INFO] [stderr]         include_bytes! ("/opt/rustwide/workdir/templates/list_files.html");
[INFO] [stderr]         ::std::write!(
[INFO] [stderr]             writer,
[INFO] [stderr]             "<!DOCTYPE html>\n<html class=\"dark\" lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta property=\"og:type\" content=\"website\">\n    <meta property=\"og:url\" content=\"{expr0}/s/{expr1}\">\n    <meta property=\"og:title\" content=\"HardWire: {expr2}\">\n    <meta property=\"og:description\" content=\"HardWire - Secure file sharing made simple\">\n    <meta property=\"og:image\" content=\"https://linkfork.co/images/poster.png\">\n    <title>HardWire: {expr2}</title>\n    <link rel=\"stylesheet\" href=\"/assets/css/output.css\">\n    <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n</head>\n\n<body\n    class=\"font-['Inter'] transition bg-[rgba(255,255,255,0.97)] text-slate-800 dark:bg-[rgba(15,23,42,0.97)] dark:text-white\">\n    <div class=\"min-h-screen flex flex-col justify-between\">\n        <!-- Theme Toggle Button -->\n        <div class=\"fixed top-4 right-4 cursor-pointer rounded-full p-2 flex items-center justify-center bg-[rgba(0,0,0,0.1)] transition hover:bg-[rgba(0,0,0,0.2)] dark:bg-[rgba(255,255,255,0.1)] dark:hover:bg-[rgba(255,255,255,0.2)]\"\n            id=\"themeToggle\" title=\"Toggle dark/light mode\">\n            <!-- Sun icon (shown in dark mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-yellow-300 dark:hidden block\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\" />\n            </svg>\n            <!-- Moon icon (shown in light mode) -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-700 dark:block hidden\" fill=\"none\"\n                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\" />\n            </svg>\n        </div>\n\n        <div class=\"max-w-[800px] w-full mx-auto px-4\">\n            <!-- Header -->\n            <header\n                class=\"flex items-center justify-center py-6 border-b border-[rgba(0,0,0,0.1)] dark:border-[rgba(255,255,255,0.1)]\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-6 text-indigo-500\" fill=\"none\" viewBox=\"0 0 24 24\"\n                    stroke=\"currentColor\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                        d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" />\n                </svg>\n                <h1 class=\"text-indigo-500 ml-2 text-xl font-semibold\">HardWire</h1>\n            </header>\n\n            <div class=\"text-center py-2 text-sm\">\n                <p>Secure file sharing made simple</p>\n            </div>\n\n            <!-- Files Section -->\n            <section class=\"py-6\">\n                <div class=\"flex items-center mb-2\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\"\n                        stroke=\"currentColor\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                            d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n                    </svg>\n                    <h2 class=\"font-semibold text-xl ml-2\">Shared Files</h2>\n                </div>\n                <p class=\"text-sm text-gray-400 mb-4\">Click on a file to download</p>\n\n                <div>\n                    ",
[INFO] [stderr]             expr0 = &::askama::MarkupDisplay::new_unsafe(&(self.hardwire_host), ::askama::Html),
[INFO] [stderr]             expr1 = &::askama::MarkupDisplay::new_unsafe(&(self.share_id), ::askama::Html),
[INFO] [stderr]             expr2 = &::askama::MarkupDisplay::new_unsafe(&(self.first_filename), ::askama::Html),
[INFO] [stderr]         )?;
[INFO] [stderr]         {
[INFO] [stderr]             let mut _did_loop = false;
[INFO] [stderr]             let _iter = (&self.files).into_iter();
[INFO] [stderr]             for (file, _loop_item) in ::askama::helpers::TemplateLoop::new(_iter) {
[INFO] [stderr]                 _did_loop = true;
[INFO] [stderr]                 ::std::write!(
[INFO] [stderr]                     writer,
[INFO] [stderr]                     "\n                    <div\n                        class=\"bg-[rgba(0,0,0,0.05)] rounded-lg mb-2 transition duration-200 hover:bg-[rgba(0,0,0,0.1)] dark:bg-[rgba(255,255,255,0.05)] dark:hover:bg-[rgba(255,255,255,0.1)]\">\n                        <a href=\"{expr3}/s/{expr4}/{expr5}\"\n                            download=\"{expr6}\"\n                            class=\"flex items-center py-3 px-4 text-slate-800 dark:text-white no-underline\">\n                            <span>{expr6}</span>\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-5 ml-auto\" fill=\"none\"\n                                viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                                    d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n                            </svg>\n                        </a>\n                    </div>\n                    ",
[INFO] [stderr]                     expr3 = &::askama::MarkupDisplay::new_unsafe(&(self.hardwire_host), ::askama::Html),
[INFO] [stderr]                     expr4 = &::askama::MarkupDisplay::new_unsafe(&(self.share_id), ::askama::Html),
[INFO] [stderr]                     expr5 = &::askama::MarkupDisplay::new_unsafe(&(file.link), ::askama::Html),
[INFO] [stderr]                     expr6 = &::askama::MarkupDisplay::new_unsafe(&(file.short_filename), ::askama::Html),
[INFO] [stderr]                 )?;
[INFO] [stderr]             }
[INFO] [stderr]             if !_did_loop {
[INFO] [stderr]             }
[INFO] [stderr]         }
[INFO] [stderr]         writer.write_str("\n                </div>\n            </section>\n        </div>\n\n        <!-- Footer -->\n        <footer\n            class=\"text-center py-4 text-[rgba(0,0,0,0.5)] text-sm border-t border-[rgba(0,0,0,0.1)] dark:text-[rgba(255,255,255,0.5)] dark:border-[rgba(255,255,255,0.1)]\">\n            <p>© 2025 HardWire. All rights reserved.</p>\n        </footer>\n    </div>\n\n    <script>\n        // Function to toggle between dark and light mode\n        function toggleTheme() {\n            const html = document.documentElement;\n\n            if (html.classList.contains('dark')) {\n                html.classList.remove('dark');\n                html.classList.add('light');\n                localStorage.setItem('theme', 'light');\n            } else {\n                html.classList.remove('light');\n                html.classList.add('dark');\n                localStorage.setItem('theme', 'dark');\n            }\n        }\n\n        // Set the initial theme based on user preference or system preference\n        function setInitialTheme() {\n            const html = document.documentElement;\n            const savedTheme = localStorage.getItem('theme');\n\n            if (savedTheme) {\n                html.classList.remove('dark', 'light');\n                html.classList.add(savedTheme);\n            } else {\n                // Check system preference\n                const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n                html.classList.remove('dark', 'light');\n                html.classList.add(prefersDark ? 'dark' : 'light');\n                localStorage.setItem('theme', prefersDark ? 'dark' : 'light');\n            }\n        }\n\n        // Add event listener to the theme toggle button\n        document.addEventListener('DOMContentLoaded', function () {\n            const themeToggle = document.getElementById('themeToggle');\n            themeToggle.addEventListener('click', toggleTheme);\n\n            // Set initial theme\n            setInitialTheme();\n        });\n    </script>\n</body>\n\n</html>")?;
[INFO] [stderr]         ::askama::Result::Ok(())
[INFO] [stderr]     }
[INFO] [stderr]     const EXTENSION: ::std::option::Option<&'static ::std::primitive::str> = 
[INFO] [stderr]     Some("html")
[INFO] [stderr]     ;
[INFO] [stderr]     const SIZE_HINT: ::std::primitive::usize = 
[INFO] [stderr]     7330
[INFO] [stderr]     ;
[INFO] [stderr]     const MIME_TYPE: &'static ::std::primitive::str = 
[INFO] [stderr]     "text/html; charset=utf-8"
[INFO] [stderr]     ;
[INFO] [stderr] }
[INFO] [stderr] impl ::std::fmt::Display for DownloadFilesTemplate {
[INFO] [stderr]     #[inline]
[INFO] [stderr]     fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
[INFO] [stderr]         ::askama::Template::render_into(self, f).map_err(|_| ::std::fmt::Error {})
[INFO] [stderr]     }
[INFO] [stderr] }
[INFO] [stderr] 
[INFO] [stdout] warning: type `AuthCallbackParams` is more private than the item `google_callback`
[INFO] [stdout]    --> src/admin.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / pub async fn google_callback(
[INFO] [stdout] 143 | |     State(app): State<App>,
[INFO] [stdout] 144 | |     axum::extract::Query(params): axum::extract::Query<AuthCallbackParams>,
[INFO] [stdout] 145 | | ) -> Result<impl IntoResponse, Response> {
[INFO] [stdout]     | |________________________________________^ function `google_callback` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AuthCallbackParams` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/admin.rs:136:1
[INFO] [stdout]     |
[INFO] [stdout] 136 | struct AuthCallbackParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppError` is never constructed
[INFO] [stdout]   --> src/main.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | struct AppError(anyhow::Error);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]   --> src/admin.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct AdminAuthMiddleware {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 48 |     pub user: AdminUser,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]    --> src/admin.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 136 | struct AuthCallbackParams {
[INFO] [stdout]     |        ------------------ field in this struct
[INFO] [stdout] 137 |     code: String,
[INFO] [stdout] 138 |     state: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AuthCallbackParams` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ws_handler` is never used
[INFO] [stdout]    --> src/admin.rs:692:10
[INFO] [stdout]     |
[INFO] [stdout] 692 | async fn ws_handler(
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_socket` is never used
[INFO] [stdout]    --> src/admin.rs:702:10
[INFO] [stdout]     |
[INFO] [stdout] 702 | async fn handle_socket(mut socket: WebSocket, who: SocketAddr, app_state: App) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_7z_archive` is never used
[INFO] [stdout]    --> src/worker/tasks.rs:277:14
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub async fn create_7z_archive<P: AsRef<Path>>(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_7z_from_directory` is never used
[INFO] [stdout]    --> src/worker/tasks.rs:291:14
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub async fn create_7z_from_directory<P: AsRef<Path>>(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_7z_from_files` is never used
[INFO] [stdout]    --> src/worker/tasks.rs:305:14
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub async fn create_7z_from_files<P: AsRef<Path>>(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AuthCallbackParams` is more private than the item `google_callback`
[INFO] [stdout]    --> src/admin.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / pub async fn google_callback(
[INFO] [stdout] 143 | |     State(app): State<App>,
[INFO] [stdout] 144 | |     axum::extract::Query(params): axum::extract::Query<AuthCallbackParams>,
[INFO] [stdout] 145 | | ) -> Result<impl IntoResponse, Response> {
[INFO] [stdout]     | |________________________________________^ function `google_callback` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AuthCallbackParams` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/admin.rs:136:1
[INFO] [stdout]     |
[INFO] [stdout] 136 | struct AuthCallbackParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppError` is never constructed
[INFO] [stdout]   --> src/main.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | struct AppError(anyhow::Error);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]   --> src/admin.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct AdminAuthMiddleware {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 48 |     pub user: AdminUser,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]    --> src/admin.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 136 | struct AuthCallbackParams {
[INFO] [stdout]     |        ------------------ field in this struct
[INFO] [stdout] 137 |     code: String,
[INFO] [stdout] 138 |     state: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AuthCallbackParams` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ws_handler` is never used
[INFO] [stdout]    --> src/admin.rs:692:10
[INFO] [stdout]     |
[INFO] [stdout] 692 | async fn ws_handler(
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_socket` is never used
[INFO] [stdout]    --> src/admin.rs:702:10
[INFO] [stdout]     |
[INFO] [stdout] 702 | async fn handle_socket(mut socket: WebSocket, who: SocketAddr, app_state: App) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 16s
[INFO] running `Command { std: "docker" "inspect" "a76547cc428cf7133d17e7cb03fdb772b2e765c7b7d7c687275427d4f5cb6639", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a76547cc428cf7133d17e7cb03fdb772b2e765c7b7d7c687275427d4f5cb6639", kill_on_drop: false }`
[INFO] [stdout] a76547cc428cf7133d17e7cb03fdb772b2e765c7b7d7c687275427d4f5cb6639
