update + CI

pmeunier
Jun 6, 2026, 10:44 PM
JK2V65XGO6ECFGVZ436IH2MVQYO7SKUPI57SZRGIRHARAZXQ6MVAC

Dependencies

  • [2] D4SBRY6K Initial patch
  • [3] X7GJK2QD Update
  • [4] LE34RHBB Fixing a CORS bug
  • [5] YJLEG4WR Basic CI infra (no runner yet)
  • [6] Y4NVVY56 Formatting
  • [7] HSHYU5QM Changelist: proper navigation + identicons
  • [8] JSRKEVVP Dependencies upgrade
  • [9] O527HBLR Correct redirect after unrecord
  • [10] YYJ76Q7V Initial attempt at CI/CD
  • [11] NRBML6UE Updating ssh + debug
  • [12] W4LOGDLD Removing locks when deploying
  • [13] FYTPHU7R unwrap in deployment (making logs clear)
  • [14] HRAWXWFE Forwarding the set-cookie header set for CSRF
  • [15] AYSCI4QT Don't cut the logs on blank lines
  • [16] 43PI2ASD split stderr/stdout into smaller chunks in websocket
  • [17] EAHHH3UT Jobs: reconnect websocket on close
  • [18] AAJTMEJA Keep cookie around for longer than a session
  • [19] NV5CPVRH Getting rid of AWS SES to send emails
  • [20] 4DSEIE3V Make the jobs feature optional
  • [21] 4LI4UD4D fixing a websocket issue on the jobs page
  • [22] V3VBGSPH Jobs websocket: send a heartbeat every 30 seconds
  • [23] BTSWJ4D6 Correctly updating remote_stdout/remote_stderr
  • [24] 5VX32NQS Debugging settings/repos
  • [25] A4L5LEXQ Permissions in admin: fixing updates
  • [26] RWLJ7RM2 Correct tabs for runes mode
  • [27] OA6YWBAY create log files
  • [28] Y66C6VM5 Import permissions from old nest: the format changed a little
  • [29] PVVHYYAN Avoiding mixing channel ids

Change contents

  • edit in ui/src/routes/[user]/[repo]/jobs/[job]/+page.svelte at line 19
    [10.4531][10.4531:4557]()
    console.log(event);
  • replacement in ui/src/routes/[user]/[repo]/jobs/[job]/+page.svelte at line 20
    [10.4597][10.4597:4845]()
    if ('Chunk' in m) {
    console.log(m);
    out[m.Chunk.channel].push(ansi_up.ansi_to_html(m.Chunk.content));
    } else if ('Status' in m) {
    console.log(m);
    ended = m.Status.ended;
    status = m.Status.status;
    [10.4597]
    [10.4845]
    if (typeof m == 'object') {
    if (m?.Chunk) {
    console.log(m);
    out[m.Chunk.channel].push(ansi_up.ansi_to_html(m.Chunk.content));
    if (m.Chunk.channel == 0 && out[1].reduce((a, b) => a + b.length, 0)) {
    document.getElementById('stdout-bottom')?.scrollIntoView();
    } else {
    document.getElementById('stderr-bottom')?.scrollIntoView();
    }
    } else if (m?.Status) {
    console.log(m);
    ended = m.Status.ended;
    status = m.Status.status;
    }
  • edit in ui/src/routes/[user]/[repo]/jobs/[job]/+page.svelte at line 37
    [10.4861][10.4861:4956](),[10.4956][17.57:65]()
    socket.onopen = () => {
    // socket.send('{ "State": { "stdout": 0, "stderr": 0 } }');
    };
  • edit in ui/src/routes/[user]/[repo]/jobs/[job]/+page.svelte at line 79
    [10.5622]
    [10.5622]
    <div id="stdout-bottom"></div>
  • edit in ui/src/routes/[user]/[repo]/jobs/[job]/+page.svelte at line 89
    [10.5864]
    [10.5864]
    <div id="stderr-bottom"></div>
  • edit in ui/src/routes/[user]/[repo]/jobs/+page.svelte at line 5
    [10.6503]
    [10.6503]
    import { server } from '../../../helpers';
    import { onMount } from 'svelte';
  • edit in ui/src/routes/[user]/[repo]/jobs/+page.svelte at line 9
    [10.6541]
    [10.6541]
    let jobs = $derived(data.jobs);
    let socket: WebSocket | undefined = undefined;
    function websocket() {
    socket = new WebSocket(`${server}/api/job/${params.user}/${params.repo}/ws`);
    socket.onmessage = (event) => {
    const j = JSON.parse(event.data);
    if (typeof j == 'object') {
    if (j?.jobs) {
    jobs = j.jobs;
    }
    }
    };
    socket.onclose = () => {
    socket = undefined;
    };
    }
    onMount(() => {
    setInterval(() => {
    if (!socket) websocket();
    }, 1000);
    });
  • replacement in ui/src/routes/[user]/[repo]/jobs/+page.svelte at line 52
    [10.6923][10.6923:7013]()
    <thead> <tr><td>Job</td><td>Started</td><td>Ended</td><td>Status</td> </tr></thead>
    [10.6923]
    [10.7013]
    <thead><tr><td>Job</td><td>Started</td><td>Ended</td><td>Status</td><td></td></tr></thead>
  • replacement in ui/src/routes/[user]/[repo]/jobs/+page.svelte at line 54
    [10.7027][10.7027:7069]()
    {#each data.jobs as job (job.id)}
    [10.7027]
    [10.7069]
    {#each jobs as job (job.id)}
  • edit in ui/src/routes/[user]/[repo]/jobs/+page.svelte at line 72
    [10.7499]
    [10.7499]
    </td>
    <td>
    <div class="flex flex-wrap gap-3">
    <form action="/api/job/{params.user}/{params.repo}/{job.id}/retry" method="post">
    <button class="btn btn-primary btn-sm" disabled={!job.ended}>Retry</button>
    </form>
    <form action="/api/job/{params.user}/{params.repo}/{job.id}/kill" method="post">
    <button class="btn btn-error btn-sm" disabled={job.ended}>Kill</button>
    </form>
    </div>
  • edit in ui/src/hooks.server.ts at line 23
    [14.58]
    [14.58]
    console.log('handle', event);
  • edit in ui/src/hooks.server.ts at line 30
    [14.242]
    [14.242]
    console.log('setCookie', setCookie);
  • replacement in replication/src/lib.rs at line 10
    [2.293308][2.293308:293348]()
    hash: libpijul::pristine::Hash,
    [2.293308]
    [2.293348]
    hash: pijul_core::pristine::Hash,
  • replacement in replication/src/lib.rs at line 17
    [2.293461][2.293461:293501]()
    hash: libpijul::pristine::Hash,
    [2.293461]
    [2.293501]
    hash: pijul_core::pristine::Hash,
  • replacement in replication/src/lib.rs at line 22
    [2.293574][2.293574:293614]()
    hash: libpijul::pristine::Hash,
    [2.293574]
    [2.293614]
    hash: pijul_core::pristine::Hash,
  • replacement in replication/src/lib.rs at line 69
    [2.294556][2.294556:294591]()
    p.push(libpijul::DOT_DIR);
    [2.294556]
    [2.294591]
    p.push(pijul_core::DOT_DIR);
  • replacement in replication/src/lib.rs at line 109
    [2.295452][2.295452:295482]()
    hash: libpijul::Hash,
    [2.295452]
    [2.295482]
    hash: pijul_core::Hash,
  • replacement in replication/src/lib.rs at line 117
    [2.295689][2.295689:295765]()
    libpijul::changestore::filesystem::push_filename(&mut path, &hash);
    [2.295689]
    [2.295765]
    pijul_core::changestore::filesystem::push_filename(&mut path, &hash);
  • replacement in replication/src/lib.rs at line 159
    [2.296635][2.296635:296698]()
    ChangeNotFound { repo: uuid::Uuid, hash: libpijul::Hash },
    [2.296635]
    [2.296698]
    ChangeNotFound { repo: uuid::Uuid, hash: pijul_core::Hash },
  • replacement in replication/Cargo.toml at line 9
    [2.296978][2.296978:296992](),[2.296992][3.6286:6409](),[3.6409][2.297115:297499](),[2.297115][2.297115:297499](),[2.297499][3.6410:6427](),[3.6427][2.297516:297557](),[2.297516][2.297516:297557](),[2.297557][3.6428:6443](),[3.6443][2.297572:297704](),[2.297572][2.297572:297704]()
    futures = "*"
    tokio = { version = "1.48", features = [ "net", "time", "rt-multi-thread", "macros", "io-util", "fs", "sync", "signal" ] }
    memmap = "*"
    log = "*"
    env_logger = "*"
    serde_derive = "*"
    serde = "*"
    rand = "0.9"
    uuid = { version = "*", features = [ "v4", "serde" ] }
    toml = "*"
    postgres-types = { version = "*", features = [ "derive" ] }
    tokio-postgres = { version = "*", features = [ "with-uuid-1", "with-chrono-0_4" ] }
    postgres-openssl = "*"
    libpijul = { version = "1.0.0-beta.10", features = [ "tarball" ] }
    clap = "~4.5.53"
    regex = "*"
    lazy_static = "*"
    libc = "*"
    bytes = "1.11"
    deadpool-postgres = "*"
    bincode = "*"
    thiserror = "*"
    webpki = "*"
    openssl = "*"
    tokio-openssl = "*"
    byteorder = "*"
    indexmap = "*"
    [2.296978]
    futures.workspace = true
    tokio.workspace = true
    serde_derive.workspace = true
    uuid.workspace = true
    pijul-core.workspace = true
    thiserror.workspace = true
    serde.workspace = true
  • file addition: 2026-06-06-183345-0000_jobs_state (d--r------)
    [2.297727]
  • file addition: up.sql (----------)
    [0.2559]
    ALTER TABLE jobs ADD COLUMN repo_state TEXT, ADD COLUMN channel TEXT NOT NULL DEFAULT 'main', ADD COLUMN script TEXT;
  • file addition: down.sql (----------)
    [0.2559]
    ALTER TABLE jobs DROP COLUMN repo_state, DROP COLUMN channel, DROP COLUMN script;
  • replacement in default.nix at line 12
    [8.58503][3.6667:6685](),[3.6667][3.6667:6685]()
    zstd xxHash
    [8.58503]
    [3.6685]
    zstd xxhash
  • replacement in default.nix at line 17
    [3.6740][8.58504:58518]()
    rustfmt
    [3.6740]
    [3.6740]
    # rustfmt
    dbus
    nodejs
    typescript-language-server
  • replacement in ci/src/main.rs at line 1
    [5.65][5.66:83]()
    use ci::Message;
    [5.65]
    [5.83]
    use axum::{
    Json, Router,
    extract::{Path, State},
    http::StatusCode,
    response::{IntoResponse, Response},
    routing::{get, post},
    };
    // use ci::Message;
    use clap::Parser;
  • replacement in ci/src/main.rs at line 11
    [5.104][5.104:276]()
    use std::io::Read;
    use std::net::{Ipv6Addr, SocketAddr, ToSocketAddrs};
    use std::path::{Path, PathBuf};
    use std::sync::{Arc, Mutex};
    use std::time::{Duration, SystemTime};
    [5.104]
    [5.276]
    // use std::io::Read;
    use axum_extra::TypedHeader;
    use axum_extra::headers::Range;
    use ci::*;
    use pijul_core::MutTxnT;
    use std::collections::HashMap;
    use std::net::{Ipv6Addr, ToSocketAddrs};
    use std::path::PathBuf;
    use std::process::Stdio;
    use std::sync::Arc;
    use tempfile;
    use thiserror::*;
    use tokio::fs::OpenOptions;
  • edit in ci/src/main.rs at line 29
    [5.420][5.420:442]()
    key_path: String,
  • replacement in ci/src/main.rs at line 30
    [5.457][5.457:740]()
    timeout_secs: usize,
    server_public_keys: Vec<String>,
    log_path: String,
    tarball_path: String,
    }
    #[derive(Serialize, Deserialize)]
    struct BuildResult {
    finished: chrono::DateTime<chrono::Utc>,
    status: Option<i32>,
    link: Option<PathBuf>,
    job: ci::Job,
    [5.457]
    [5.740]
    nest_url: String,
    repo_path: PathBuf,
    ci_path: PathBuf,
  • edit in ci/src/main.rs at line 34
    [5.742][5.742:756]()
    use clap::*;
  • edit in ci/src/main.rs at line 41
    [5.847]
    [5.847]
    #[derive(Clone)]
    pub struct Config {
    config: Arc<ConfigFile>,
    jobs: Arc<
    std::sync::Mutex<
    std::collections::HashMap<
    uuid::Uuid,
    (
    tokio::sync::oneshot::Sender<()>,
    tokio::sync::watch::Receiver<std::option::Option<i32>>,
    ),
    >,
    >,
    >,
    }
  • edit in ci/src/main.rs at line 66
    [5.1127]
    [5.1127]
    pijul_interaction::set_context(pijul_interaction::InteractiveContext::NotInteractive);
  • edit in ci/src/main.rs at line 70
    [5.1271][5.1271:1334]()
    let config = Arc::new(thrussh::client::Config::default());
  • replacement in ci/src/main.rs at line 72
    [5.1465][5.1465:2108]()
    let key = Arc::new(thrussh_keys::load_secret_key(&conf.key_path, None).unwrap());
    let (sender, mut receiver) = tokio::sync::mpsc::channel(1);
    let client = CiClient {
    process: Arc::new(Mutex::new(Process::default())),
    log_path: Path::new(&conf.log_path).to_path_buf(),
    tarball_path: Path::new(&conf.tarball_path).to_path_buf(),
    last_window_adjustment: SystemTime::now(),
    server_public_keys: Arc::new(
    conf.server_public_keys
    .iter()
    .map(|p| thrussh_keys::parse_public_key_base64(p).unwrap())
    .collect(),
    ),
    sender,
    [5.1465]
    [5.2108]
    let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
    let config = Config {
    config: Arc::new(conf),
    jobs: Arc::new(std::sync::Mutex::new(std::collections::HashMap::new())),
  • replacement in ci/src/main.rs at line 77
    [5.2115][5.2115:2403]()
    loop {
    if let Err(e) = client
    .protocol(&addr, config.clone(), key.clone(), &mut receiver)
    .await
    {
    error!("restarting because of error: {:?}", e)
    }
    tokio::time::sleep(std::time::Duration::from_secs(1)).await;
    }
    [5.2115]
    [5.2403]
    let app = Router::new()
    .route("/trigger", post(trigger))
    .route("/stdout/{job}", get(stdout))
    .route("/stderr/{job}", get(stderr))
    .route("/status/{job}", get(status))
    .with_state(config.clone());
    axum::serve(listener, app).await.unwrap();
  • replacement in ci/src/main.rs at line 86
    [5.2406][5.2406:2720]()
    #[derive(Clone, Debug)]
    pub struct CiClient {
    process: Arc<Mutex<Process>>,
    tarball_path: PathBuf,
    log_path: PathBuf,
    last_window_adjustment: SystemTime,
    server_public_keys: Arc<Vec<thrussh_keys::key::PublicKey>>,
    sender: tokio::sync::mpsc::Sender<(ci::Job, Option<i32>, Option<PathBuf>)>,
    [5.2406]
    [5.2720]
    async fn status(
    State(config): State<Config>,
    Path(job): Path<uuid::Uuid>,
    ) -> Result<Json<Status>, Error> {
    let s =
    tokio::fs::read_to_string(&config.config.ci_path.join(&format!("{}.status", job))).await?;
    Ok(Json(serde_json::from_str(&s)?))
  • replacement in ci/src/main.rs at line 95
    [5.2723][5.2723:2908](),[5.2908][5.2908:2910]()
    #[derive(Debug, Default)]
    struct Process {
    child: Option<tokio::task::JoinHandle<Result<(), anyhow::Error>>>,
    job: Option<ci::Job>,
    tarball: Option<(std::fs::File, usize)>,
    }
    [5.2723]
    [5.2910]
    use axum_range::KnownSize;
    use axum_range::Ranged;
  • replacement in ci/src/main.rs at line 98
    [5.2911][5.2911:3010]()
    impl Process {
    fn is_ready(&self) -> bool {
    self.child.is_none() && self.job.is_none()
    [5.2911]
    [5.3010]
    async fn stdout(
    State(config): State<Config>,
    Path(job): Path<uuid::Uuid>,
    range: Option<TypedHeader<Range>>,
    ) -> Response {
    debug!("stdout {:?} {:?}", job, range);
    let Ok(mut file) =
    tokio::fs::File::open(&config.config.ci_path.join(&format!("{}.stdout", job))).await
    else {
    return StatusCode::NOT_FOUND.into_response();
    };
    if let Some(TypedHeader(range)) = range {
    let body = KnownSize::file(file).await.unwrap();
    Ranged::new(Some(range), body).into_response()
    } else {
    use tokio::io::AsyncReadExt;
    let mut v = Vec::new();
    file.read_to_end(&mut v).await.unwrap();
    v.into_response()
  • replacement in ci/src/main.rs at line 120
    [5.3019][5.3019:5066]()
    impl CiClient {
    pub async fn protocol(
    &self,
    addr: &SocketAddr,
    config: Arc<thrussh::client::Config>,
    key: Arc<thrussh_keys::key::KeyPair>,
    receiver: &mut tokio::sync::mpsc::Receiver<(ci::Job, Option<i32>, Option<PathBuf>)>,
    ) -> Result<(), anyhow::Error> {
    let mut h = thrussh::client::connect(config, &addr, self.clone()).await?;
    debug!("Opening session");
    if !h.authenticate_publickey("ci", key).await? {
    return Ok(());
    }
    let mut channel = h.channel_open_session().await?;
    channel
    .data(
    &bincode::serialize(&Message::Handshake {
    version: ci::VERSION,
    id: 0,
    })
    .unwrap()[..],
    )
    .await?;
    debug!("handshake done");
    'outer: loop {
    if self.process.lock().unwrap().is_ready() {
    channel
    .data(&bincode::serialize(&Message::Ready).unwrap()[..])
    .await?;
    debug!("ready");
    }
    loop {
    tokio::select! {
    msg = channel.wait() => {
    debug!("msg = {:?}", msg);
    if !self.handle_msg(&mut channel, &self.sender, msg).await? {
    break 'outer
    }
    }
    msg = receiver.recv() => {
    debug!("message {:#?}", msg);
    if let Some(p) = self.process.lock().unwrap().child.take() {
    p.await??
    }
    if let Some((job, exit_status, path)) = msg {
    self.send_log(&mut channel, job, exit_status, path).await?
    }
    channel.data(&bincode::serialize(&Message::Ready).unwrap()[..]).await?;
    }
    }
    }
    }
    Ok(())
    [5.3019]
    [5.5066]
    async fn stderr(
    State(config): State<Config>,
    Path(job): Path<uuid::Uuid>,
    range: Option<TypedHeader<Range>>,
    ) -> Response {
    debug!("stderr {:?} {:?}", job, range);
    let Ok(mut file) =
    tokio::fs::File::open(&config.config.ci_path.join(&format!("{}.stderr", job))).await
    else {
    return StatusCode::NOT_FOUND.into_response();
    };
    if let Some(TypedHeader(range)) = range {
    let body = KnownSize::file(file).await.unwrap();
    Ranged::new(Some(range), body).into_response()
    } else {
    use tokio::io::AsyncReadExt;
    let mut v = Vec::new();
    file.read_to_end(&mut v).await.unwrap();
    v.into_response()
  • edit in ci/src/main.rs at line 140
    [5.5072]
    [5.5072]
    }
  • replacement in ci/src/main.rs at line 142
    [5.5073][5.5073:7442]()
    async fn handle_msg(
    &self,
    channel: &mut thrussh::client::Channel,
    sender: &tokio::sync::mpsc::Sender<(ci::Job, Option<i32>, Option<PathBuf>)>,
    msg: Option<thrussh::ChannelMsg>,
    ) -> Result<bool, anyhow::Error> {
    match msg {
    Some(thrussh::ChannelMsg::Data { data }) => {
    let mut proc = self.process.lock().unwrap();
    if let Some((mut f, mut len)) = proc.tarball.take() {
    debug!("len = {:?}", len);
    use std::io::Write;
    f.write_all(&data)?;
    len -= data.len();
    if len > 0 {
    proc.tarball = Some((f, len));
    }
    return Ok(true);
    }
    let msg = bincode::deserialize::<Message>(&data);
    debug!("msg = {:?}", msg);
    match msg {
    Ok(Message::Job(job)) => {
    self.handle_job(channel, sender.clone(), &mut proc, job)
    .await?
    }
    Ok(Message::Chunk { id, len, .. }) => {
    let p = self.tarball_path.join(&format!("{}.tar.gz.tmp", id));
    if len == 0 {
    let p2 = self.tarball_path.join(&format!("{}.tar.gz", id));
    std::fs::rename(&p, &p2)?;
    proc.tarball = None;
    let job = proc.job.take().unwrap();
    self.handle_job(channel, sender.clone(), &mut proc, job)
    .await?;
    return Ok(true);
    }
    let file = std::fs::OpenOptions::new()
    .write(true)
    .create(true)
    .append(true)
    .open(&p)
    .unwrap();
    proc.tarball = Some((file, len as usize));
    }
    Ok(msg) => {
    debug!("msg = {:?}", msg);
    }
    _ => return Ok(false),
    }
    }
    None => return Ok(false),
    msg => debug!("{:?}", msg),
    [5.5073]
    [5.7442]
    #[derive(Error, Debug)]
    pub enum Error {
    #[error("Lock")]
    Lock,
    #[error("Forbidden")]
    Forbidden,
    #[error("Not found")]
    NotFound,
    #[error(transparent)]
    Output(
    #[from]
    pijul_core::output::OutputError<
    <C as pijul_core::changestore::ChangeStore>::Error,
    pijul_core::pristine::sanakirja::MutTxn0,
    std::io::Error,
    >,
    ),
    #[error(transparent)]
    Reqwest(#[from] reqwest::Error),
    #[error(transparent)]
    Sanakirja(#[from] pijul_core::pristine::sanakirja::SanakirjaError),
    #[error(transparent)]
    IO(#[from] std::io::Error),
    #[error(transparent)]
    Json(#[from] serde_json::Error),
    }
    type C = pijul_core::changestore::filesystem::FileSystem;
    impl IntoResponse for Error {
    fn into_response(self) -> Response {
    debug!("response {:?}", self);
    match self {
    Error::Forbidden => (StatusCode::FORBIDDEN, "{}").into_response(),
    Error::NotFound => (StatusCode::NOT_FOUND, "{}").into_response(),
    _ => (StatusCode::INTERNAL_SERVER_ERROR, "{}").into_response(),
  • edit in ci/src/main.rs at line 179
    [5.7452][5.7452:7469]()
    Ok(true)
  • edit in ci/src/main.rs at line 180
    [5.7475]
    [5.7475]
    }
  • replacement in ci/src/main.rs at line 182
    [5.7476][5.7476:8399]()
    async fn handle_job(
    &self,
    channel: &mut thrussh::client::Channel,
    sender: tokio::sync::mpsc::Sender<(ci::Job, Option<i32>, Option<PathBuf>)>,
    process: &mut Process,
    job: ci::Job,
    ) -> Result<(), anyhow::Error> {
    let p = self.tarball_path.join(&format!("{}.tar.gz", job.id));
    debug!("p = {:?}", p);
    if std::fs::metadata(&p).is_err() {
    debug!("getting tarball");
    channel
    .data(&bincode::serialize(&Message::GetTarball { id: job.id }).unwrap()[..])
    .await?;
    process.job = Some(job);
    return Ok(());
    }
    debug!("tar = {:?}", p);
    let status = std::process::Command::new("tar")
    .args(&["-xf", p.to_str().unwrap()])
    .current_dir(&self.tarball_path)
    .status()
    .unwrap();
    debug!("nix: {:?}", status);
    [5.7476]
    [5.8399]
    // #[derive(Debug, Clone)]
    // struct RepoPath {
    // path: PathBuf,
    // remove_dir: bool,
    // remove_dot: bool,
    // }
  • replacement in ci/src/main.rs at line 189
    [5.8400][5.8400:8509]()
    let tarballp = self.tarball_path.join(job.id.to_string());
    let logp = self.log_path.clone();
    [5.8400]
    [5.8509]
    #[axum::debug_handler]
    pub async fn trigger(
    State(config): State<Config>,
    Json(t): Json<Trigger>,
    ) -> Result<StatusCode, Error> {
    tokio::spawn(async move {
    info!("trigger: {:?}", t);
    let t0 = std::time::Instant::now();
    let mut remote = pijul_remote::RemoteRepo::Http(pijul_remote::http::Http {
    url: format!("{}/{}/{}", config.config.nest_url, t.owner, t.repo)
    .parse()
    .unwrap(),
    channel: "main".to_string(),
    client: reqwest::ClientBuilder::new().build()?,
    headers: vec![],
    name: t.state.clone(),
    });
  • replacement in ci/src/main.rs at line 207
    [5.8510][5.8510:8924]()
    let result_path = logp.join(&format!("{}.result", job.id));
    if let Ok(mut f) = std::fs::File::open(&result_path) {
    if let Ok(build_result) = serde_json::from_reader::<_, BuildResult>(&mut f) {
    sender
    .send((build_result.job, build_result.status, build_result.link))
    .await?;
    return Ok(());
    }
    }
    [5.8510]
    [5.8924]
    let path = tempfile::tempdir().unwrap();
    let pijul_config = pijul_config::Config::load(None, Vec::new()).unwrap();
    let repo = tokio::sync::Mutex::new(
    pijul_repository::Repository::init(&pijul_config, Some(&path.path()), None, None)
    .unwrap(),
    );
    {
    let mut repo = repo.lock().await;
    let txn = repo.pristine.arc_txn_begin()?;
    let mut channel = txn.write().open_or_create_channel("main")?;
  • replacement in ci/src/main.rs at line 218
    [5.8925][5.8925:9357]()
    debug!("p = {:?}", tarballp);
    process.child = Some(tokio::task::spawn(async move {
    let mut process = tokio::process::Command::new("nix-build")
    .arg("default.nix")
    .current_dir(&tarballp)
    .stdin(std::process::Stdio::null())
    .stdout(std::process::Stdio::piped())
    .stderr(std::process::Stdio::piped())
    .spawn()
    [5.8925]
    [5.9357]
    let h = t.state.parse().unwrap();
    remote
    .clone_state(&mut repo, &txn, &mut channel, h)
    .await
  • edit in ci/src/main.rs at line 223
    [5.9384][5.9384:10059]()
    let stdout = process.stdout.as_mut().unwrap();
    let stderr = process.stderr.as_mut().unwrap();
    let mut fstdout =
    tokio::fs::File::create(logp.join(&format!("{}.stdout", job.id))).await?;
    let mut fstderr =
    tokio::fs::File::create(logp.join(&format!("{}.stderr", job.id))).await?;
    let (a, b) = futures::future::join(
    tokio::io::copy(stdout, &mut fstdout),
    tokio::io::copy(stderr, &mut fstderr),
    )
    .await;
    a?;
    b?;
    let status = process.wait().await?;
    debug!("status = {:?}", status);
  • replacement in ci/src/main.rs at line 224
    [5.10060][5.10060:10496]()
    let mut result_file = std::fs::File::create(&result_path)?;
    let link = std::fs::read_link(&tarballp.join("result")).ok();
    serde_json::to_writer(
    &mut result_file,
    &BuildResult {
    finished: chrono::Utc::now(),
    status: status.code(),
    job: job.clone(),
    link: link.clone(),
    },
    [5.10060]
    [5.10496]
    pijul_core::output::output_repository_no_pending(
    &repo.working_copy,
    &repo.changes,
    &txn,
    &channel,
    "",
    true,
    None,
    1, // std::thread::available_parallelism()?.get(),
    0,
  • replacement in ci/src/main.rs at line 236
    [5.10513][5.10513:10573]()
    sender.send((job, status.code(), link)).await?;
    [5.10513]
    [5.10573]
    remote.finish().await.unwrap();
    }
    info!("cloned in {:?}", t0.elapsed());
  • replacement in ci/src/main.rs at line 240
    [5.10574][5.10574:10729]()
    std::fs::remove_dir_all(&tarballp).unwrap_or(());
    std::fs::remove_file(&p)?;
    Ok(())
    }));
    Ok(())
    }
    [5.10574]
    [5.10729]
    std::fs::remove_dir_all(&path.path().join(".pijul"))?;
  • replacement in ci/src/main.rs at line 242
    [5.10730][5.10730:11040]()
    async fn send_log(
    &self,
    channel: &mut thrussh::client::Channel,
    job: ci::Job,
    exit_status: Option<i32>,
    path: Option<PathBuf>,
    ) -> Result<(), anyhow::Error> {
    let id = job.id;
    let msg = Message::Log {
    job,
    exit_status,
    [5.10730]
    [5.11040]
    let (status_tx, status_rx) = tokio::sync::watch::channel(None);
    let (kill_tx, kill_rx) = tokio::sync::oneshot::channel();
    if let Some((k, _)) = config
    .jobs
    .lock()
    .unwrap()
    .insert(t.id, (kill_tx, status_rx))
    {
    k.send(()).unwrap_or(());
    }
    let result = build(
    Some(&config.config.ci_path),
  • replacement in ci/src/main.rs at line 255
    [5.11058][5.11058:11138]()
    };
    channel.data(&bincode::serialize(&msg).unwrap()[..]).await?;
    [5.11058]
    [5.11138]
    t.id,
    &t.targets,
    kill_rx,
    status_tx,
    )
    .await;
    config.jobs.lock().unwrap().remove(&t.id);
  • replacement in ci/src/main.rs at line 263
    [5.11139][5.11139:13633]()
    let mut buf = Vec::with_capacity(4096);
    debug!(
    "stdout: {:?}",
    self.log_path.join(&format!("{}.stdout", id))
    );
    if let Ok(ref mut stdout) =
    std::fs::File::open(&self.log_path.join(&format!("{}.stdout", id)))
    {
    let len = channel.writable_packet_size().min(MAX_BUF_SIZE);
    buf.resize(len, 0);
    while let Ok(n) = stdout.read(&mut buf) {
    if n == 0 {
    channel
    .data(
    &bincode::serialize(&Message::Chunk {
    id,
    stderr: false,
    len: 0,
    })
    .unwrap()[..],
    )
    .await?;
    break;
    }
    channel
    .data(
    &bincode::serialize(&Message::Chunk {
    id,
    stderr: false,
    len: n as u32,
    })
    .unwrap()[..],
    )
    .await?;
    channel.data(&buf[..n]).await?
    }
    }
    if let Ok(ref mut stdout) =
    std::fs::File::open(&self.log_path.join(&format!("{}.stderr", id)))
    {
    let len = channel.writable_packet_size().min(MAX_BUF_SIZE);
    buf.resize(len, 0);
    while let Ok(n) = stdout.read(&mut buf) {
    if n == 0 {
    channel
    .data(
    &bincode::serialize(&Message::Chunk {
    id,
    stderr: true,
    len: 0,
    })
    .unwrap()[..],
    )
    .await?;
    break;
    }
    channel
    .data(
    &bincode::serialize(&Message::Chunk {
    id,
    stderr: true,
    len: n as u32,
    })
    .unwrap()[..],
    )
    .await?;
    channel.data(&buf[..n]).await?
    }
    }
    Ok(())
    }
    [5.11139]
    [5.13633]
    let (code, results) = result?;
    debug!("code = {:?} {:?}", code, results);
    tokio::fs::write(
    config.config.ci_path.join(&format!("{}.status", t.id)),
    serde_json::to_string(&Status {
    code,
    results,
    finished: chrono::Utc::now(),
    })
    .unwrap(),
    )
    .await?;
    Ok::<(), Error>(())
    });
    Ok(StatusCode::OK)
  • replacement in ci/src/main.rs at line 280
    [5.13636][5.13636:13673]()
    const MAX_BUF_SIZE: usize = 1 << 16;
    [5.13636]
    [5.13673]
    async fn build(
    ci: Option<&std::path::Path>,
    path: tempfile::TempDir,
    id: uuid::Uuid,
    targets: &HashMap<String, String>,
    mut kill_rx: tokio::sync::oneshot::Receiver<()>,
    mut status_tx: tokio::sync::watch::Sender<Option<i32>>,
    ) -> Result<(Option<i32>, HashMap<String, PathBuf>), Error> {
    let mut files = if let Some(ref ci_path) = ci {
    tokio::fs::create_dir_all(ci_path).await?;
    Some((
    OpenOptions::new()
    .append(true)
    .create(true)
    .open(&ci_path.join(&format!("{}.stdout", id)))
    .await
    .unwrap(),
    OpenOptions::new()
    .append(true)
    .create(true)
    .open(&ci_path.join(&format!("{}.stderr", id)))
    .await
    .unwrap(),
    ))
    } else {
    None
    };
  • replacement in ci/src/main.rs at line 308
    [5.13674][5.13674:13751]()
    impl thrussh::client::Handler for CiClient {
    type Error = anyhow::Error;
    [5.13674]
    [5.13751]
    let mut cmd = tokio::process::Command::new("nix");
  • replacement in ci/src/main.rs at line 310
    [5.13752][5.13752:14098]()
    fn check_server_key(
    self,
    server_public_key: &thrussh_keys::key::PublicKey,
    ) -> impl futures::Future<Output = Result<(Self, bool), Self::Error>> {
    let valid = self
    .server_public_keys
    .iter()
    .any(|p| p == server_public_key);
    futures::future::ready(Ok((self, valid)))
    [5.13752]
    [5.14098]
    cmd.arg("build").arg("-L").arg("--log-format").arg("raw");
    for (_, target) in targets {
    cmd.arg(target);
  • edit in ci/src/main.rs at line 314
    [5.14104]
    [5.14104]
    let cmd = cmd
    .current_dir(&path)
    .stderr(Stdio::piped())
    .stdout(Stdio::piped())
    .stdin(Stdio::null())
    .spawn()
    .unwrap();
    let code = dump_cmd(cmd, &mut files, &mut kill_rx, &mut status_tx).await?;
  • replacement in ci/src/main.rs at line 323
    [5.14105][5.14105:14568]()
    fn adjust_window(&mut self, _channel: thrussh::ChannelId, target: u32) -> u32 {
    let elapsed = self.last_window_adjustment.elapsed().unwrap();
    self.last_window_adjustment = SystemTime::now();
    if target >= 10_000_000 {
    return target;
    }
    if elapsed < Duration::from_secs(2) {
    target * 2
    } else if elapsed > Duration::from_secs(8) {
    target / 2
    } else {
    target
    [5.14105]
    [5.14568]
    if code == Some(0) {
    let mut cmd = tokio::process::Command::new("attic");
    cmd.arg("push").arg("coturnix");
    let mut result = HashMap::new();
    for (n, (t, _)) in targets.iter().enumerate() {
    if n == 0 {
    result.insert(
    t.clone(),
    tokio::fs::read_link(path.path().join("result"))
    .await
    .unwrap(),
    );
    cmd.arg("result");
    } else {
    result.insert(
    t.clone(),
    tokio::fs::read_link(path.path().join(format!("result-{n}")))
    .await
    .unwrap(),
    );
    cmd.arg(format!("result-{n}"));
    }
  • edit in ci/src/main.rs at line 346
    [5.14578]
    [5.14578]
    let cmd = cmd
    .current_dir(&path)
    .stderr(Stdio::piped())
    .stdout(Stdio::piped())
    .stdin(Stdio::null())
    .spawn()
    .unwrap();
    Ok((
    dump_cmd(cmd, &mut files, &mut kill_rx, &mut status_tx).await?,
    result,
    ))
    } else {
    Ok((code, HashMap::new()))
  • replacement in ci/src/lib.rs at line 1
    [5.14618][5.14619:14640]()
    use serde_derive::*;
    [5.14618]
    [5.14640]
    use serde::*;
    use std::collections::HashMap;
    use tokio::io::AsyncWriteExt;
    use tracing::*;
  • replacement in ci/src/lib.rs at line 6
    [5.14641][5.14641:14669]()
    pub const VERSION: u16 = 0;
    [5.14641]
    [5.14669]
    #[derive(Debug, Serialize, Deserialize)]
    pub struct Status {
    pub code: Option<i32>,
    pub finished: chrono::DateTime<chrono::Utc>,
    pub results: HashMap<String, std::path::PathBuf>,
    }
  • replacement in ci/src/lib.rs at line 13
    [5.14670][5.14670:14735]()
    #[derive(Debug, Clone, Serialize, Deserialize)]
    pub struct Job {
    [5.14670]
    [5.14735]
    #[derive(Debug, Serialize, Deserialize)]
    pub struct Trigger {
  • replacement in ci/src/lib.rs at line 16
    [5.14759][5.14759:14907]()
    pub repo: uuid::Uuid,
    pub channel: String,
    pub state: libpijul::pristine::Merkle,
    pub extra_patches: Vec<libpijul::pristine::Hash>,
    [5.14759]
    [5.14907]
    pub owner: String,
    pub repo: String,
    pub state: String,
    #[serde(default)]
    pub targets: HashMap<String, String>,
  • replacement in ci/src/lib.rs at line 23
    [5.14910][5.14910:15348]()
    #[derive(Debug, Serialize, Deserialize)]
    pub enum Message {
    Handshake {
    version: u16,
    id: i64,
    },
    Ready,
    Job(Job),
    GetTarball {
    id: uuid::Uuid,
    },
    InvalidInput {
    input: String,
    },
    Log {
    job: Job,
    exit_status: Option<i32>,
    path: Option<std::path::PathBuf>,
    },
    Chunk {
    id: uuid::Uuid,
    stderr: bool,
    len: u32,
    },
    [5.14910]
    [5.15348]
    pub async fn dump_cmd(
    mut cmd: tokio::process::Child,
    files: &mut Option<(tokio::fs::File, tokio::fs::File)>,
    mut kill_rx: &mut tokio::sync::oneshot::Receiver<()>,
    status_tx: &mut tokio::sync::watch::Sender<Option<i32>>,
    ) -> Result<Option<i32>, std::io::Error> {
    let mut stdout_ok = true;
    let mut stderr_ok = true;
    let mut buf_stdout = String::new();
    let mut last_stdout = std::time::UNIX_EPOCH;
    let mut buf_stderr = String::new();
    let mut last_stderr = std::time::UNIX_EPOCH;
    let bound = std::time::Duration::from_secs(1);
    use tokio::io::AsyncBufReadExt;
    let stdout = tokio::io::BufReader::new(cmd.stdout.take().unwrap());
    let mut stdout = stdout.lines();
    let stderr = tokio::io::BufReader::new(cmd.stderr.take().unwrap());
    let mut stderr = stderr.lines();
    while stdout_ok || stderr_ok {
    debug!(
    "stdout || stderr {:?} {:?}",
    buf_stdout.len(),
    buf_stderr.len()
    );
    tokio::select! {
    line = stdout.next_line(), if stdout_ok => {
    debug!("out {:?}", line);
    let n = if let Some(line) = line? {
    buf_stdout.push_str(&line);
    buf_stdout.push('\n');
    line.len() + 1
    } else {
    0
    };
    if last_stdout.elapsed().unwrap() >= bound || n == 0 {
    debug!("sending stdout to db {:?} {:?}", buf_stdout.len(), buf_stderr.len());
    if let Some((ref mut stdout, _)) = files {
    stdout.write_all(buf_stdout.as_bytes()).await?;
    stdout.flush().await?;
    }
    buf_stdout.clear();
    debug!("stdout/stderr {:?} {:?}", buf_stdout.len(), buf_stderr.len());
    last_stdout = std::time::SystemTime::now();
    }
    if n == 0 {
    stdout_ok = false
    }
    }
    line = stderr.next_line(), if stderr_ok => {
    debug!("err {:?}", line);
    let n = if let Some(line) = line? {
    buf_stderr.push_str(&line);
    buf_stderr.push('\n');
    line.len() + 1
    } else {
    0
    };
    if last_stderr.elapsed().unwrap() >= bound || n == 0 {
    debug!("sending stderr to db {:?}", buf_stderr.len());
    if let Some((_, ref mut stderr)) = files {
    stderr.write_all(buf_stderr.as_bytes()).await?;
    stderr.flush().await?;
    }
    buf_stderr.clear();
    last_stderr = std::time::SystemTime::now();
    }
    debug!("{:?}", buf_stderr.len());
    if n == 0 {
    stderr_ok = false
    }
    }
    _ = &mut kill_rx => {
    cmd.kill().await?;
    break
    }
    }
    }
    tokio::select! {
    s = cmd.wait() => {
    let code = s?.code();
    status_tx.send(code).unwrap();
    Ok(code)
    }
    _ = &mut kill_rx => {
    cmd.kill().await?;
    Ok(None)
    }
    }
  • replacement in ci/Cargo.toml at line 8
    [5.15513][5.15513:15780]()
    anyhow = "1.0.100"
    bincode = "1.0"
    chrono = "0.4.42"
    clap = { version = "4.5.53", features = ["derive"] }
    env_logger = "0.11.8"
    futures = "0.3.31"
    log = "0.4.28"
    serde = "1.0.228"
    serde_derive = "1.0.228"
    serde_json = "1.0.145"
    thrussh = "0.40"
    thrussh-keys = "0.23"
    [5.15513]
    [5.15780]
    anyhow.workspace = true
    bincode.workspace = true
    chrono.workspace = true
    clap.workspace = true
    env_logger.workspace = true
    futures.workspace = true
    log.workspace = true
    serde.workspace = true
    serde_derive.workspace = true
    serde_json.workspace = true
    thrussh.workspace = true
    thrussh-keys.workspace = true
  • replacement in ci/Cargo.toml at line 21
    [5.15781][5.15781:15846]()
    libpijul = { version = "1.0.0-beta.10", features = ["tarball"] }
    [5.15781]
    [5.15846]
    pijul-core.workspace = true
  • replacement in ci/Cargo.toml at line 23
    [5.15847][5.15847:16080]()
    tokio = { version = "1.48", features = [ "process", "fs" ] }
    toml = { version = "0.9.8" }
    uuid = { version = "1.21.0", features = ["serde" ] }
    tracing = "0.1.41"
    tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
    [5.15847]
    tokio.workspace = true
    toml.workspace = true
    uuid.workspace = true
    tracing.workspace = true
    tracing-subscriber.workspace = true
    axum.workspace = true
    thiserror.workspace = true
    pijul-remote.workspace = true
    reqwest.workspace = true
    pijul-repository.workspace = true
    pijul-config.workspace = true
    sanakirja.workspace = true
    pijul-interaction.workspace = true
    tempfile.workspace = true
    diesel.workspace = true
    diesel-async.workspace = true
    axum-range.workspace = true
    axum-extra = { workspace = true, features = ["typed-header"] }
  • replacement in api/src/ssh.rs at line 17
    [2.319923][2.319923:319946](),[2.319946][6.146:220]()
    use libpijul::TxnTExt;
    use libpijul::pristine::{Base32, ChannelTxnT, DepsTxnT, GraphTxnT, TxnT};
    [2.319849]
    [2.319946]
    use pijul_core::TxnTExt;
    use pijul_core::pristine::{Base32, ChannelTxnT, DepsTxnT, GraphTxnT, TxnT};
  • replacement in api/src/ssh.rs at line 121
    [2.323139][2.323139:323187]()
    pub applied: Vec<libpijul::pristine::Hash>,
    [2.323139]
    [2.323187]
    pub applied: Vec<pijul_core::pristine::Hash>,
  • replacement in api/src/ssh.rs at line 130
    [6.335][2.323350:323393](),[2.323350][2.323350:323393]()
    key: Option<libpijul::key::PublicKey>,
    [6.335]
    [2.323393]
    key: Option<pijul_core::key::PublicKey>,
  • replacement in api/src/ssh.rs at line 160
    [2.323965][2.323965:324005]()
    hash: libpijul::pristine::Hash,
    [2.323965]
    [2.324005]
    hash: pijul_core::pristine::Hash,
  • replacement in api/src/ssh.rs at line 167
    [2.324085][2.324085:324201]()
    impl From<libpijul::key::Algorithm> for Keyalgorithm_ {
    fn from(a: libpijul::key::Algorithm) -> Keyalgorithm_ {
    [2.324085]
    [2.324201]
    impl From<pijul_core::key::Algorithm> for Keyalgorithm_ {
    fn from(a: pijul_core::key::Algorithm) -> Keyalgorithm_ {
  • replacement in api/src/ssh.rs at line 170
    [2.324219][2.324219:324292]()
    libpijul::key::Algorithm::Ed25519 => Keyalgorithm_::Ed25519,
    [2.324219]
    [2.324292]
    pijul_core::key::Algorithm::Ed25519 => Keyalgorithm_::Ed25519,
  • replacement in api/src/ssh.rs at line 175
    [2.324311][2.324311:324427]()
    impl From<Keyalgorithm_> for libpijul::key::Algorithm {
    fn from(a: Keyalgorithm_) -> libpijul::key::Algorithm {
    [2.324311]
    [2.324427]
    impl From<Keyalgorithm_> for pijul_core::key::Algorithm {
    fn from(a: Keyalgorithm_) -> pijul_core::key::Algorithm {
  • replacement in api/src/ssh.rs at line 178
    [2.324445][2.324445:324518]()
    Keyalgorithm_::Ed25519 => libpijul::key::Algorithm::Ed25519,
    [2.324445]
    [2.324518]
    Keyalgorithm_::Ed25519 => pijul_core::key::Algorithm::Ed25519,
  • replacement in api/src/ssh.rs at line 574
    [2.338732][2.338732:338772]()
    hash: libpijul::pristine::Hash,
    [2.338732]
    [2.338772]
    hash: pijul_core::pristine::Hash,
  • replacement in api/src/ssh.rs at line 767
    [2.347102][2.347102:347200]()
    if let Ok(json) = serde_json::from_slice::<libpijul::key::PublicKey>(cap[1].as_bytes()) {
    [2.347102]
    [2.347200]
    if let Ok(json) = serde_json::from_slice::<pijul_core::key::PublicKey>(cap[1].as_bytes()) {
  • replacement in api/src/ssh.rs at line 872
    [2.351080][2.351080:351471]()
    ChannelSpec::CI(ref c_) => {
    if c_.len() + 3 == cap[1].len() {
    let (a, b) = cap[1].split_at(cap[1].len() - 3);
    if c_ == a && b == "/ci" {
    return Ok(ChannelList::Data(vec![b'\n']));
    }
    }
    }
    [2.351080]
    [2.351471]
  • replacement in api/src/ssh.rs at line 889
    [2.352172][2.352172:352226]()
    let h: libpijul::Hash = h.into();
    [2.352172]
    [2.352226]
    let h: pijul_core::Hash = h.into();
  • replacement in api/src/ssh.rs at line 896
    [2.352497][2.352497:352597]()
    libpijul::fs::iter_graph_descendants(&txn, txn.graph(&*channel.read()), p)?
    [2.352497]
    [2.352597]
    pijul_core::fs::iter_graph_descendants(&txn, txn.graph(&*channel.read()), p)?
  • replacement in api/src/ssh.rs at line 929
    [2.353855][2.353855:353965]()
    let h: libpijul::Hash = h.into();
    let m: libpijul::Merkle = m.into();
    [2.353855]
    [2.353965]
    let h: pijul_core::Hash = h.into();
    let m: pijul_core::Merkle = m.into();
  • replacement in api/src/ssh.rs at line 982
    [2.355958][2.355958:356018]()
    let m: libpijul::Merkle = m.into();
    [2.355958]
    [2.356018]
    let m: pijul_core::Merkle = m.into();
  • replacement in api/src/ssh.rs at line 989
    [2.356290][2.356290:356343]()
    libpijul::Merkle::zero()
    [2.356290]
    [2.356343]
    pijul_core::Merkle::zero()
  • replacement in api/src/ssh.rs at line 998
    [2.356687][2.356687:356743]()
    let m: libpijul::Merkle = m.into();
    [2.356687]
    [2.356743]
    let m: pijul_core::Merkle = m.into();
  • replacement in api/src/ssh.rs at line 1005
    [2.356991][2.356991:357040]()
    libpijul::Merkle::zero()
    [2.356991]
    [2.357040]
    pijul_core::Merkle::zero()
  • replacement in api/src/ssh.rs at line 1073
    [2.359758][2.359758:359856]()
    let hash = if let Some(h) = libpijul::pristine::Hash::from_base32((&cap[2]).as_bytes()) {
    [2.359758]
    [2.359856]
    let hash = if let Some(h) = pijul_core::pristine::Hash::from_base32((&cap[2]).as_bytes()) {
  • replacement in api/src/ssh.rs at line 1123
    [2.361252][2.361252:361350]()
    let hash = if let Some(h) = libpijul::pristine::Hash::from_base32((&cap[4]).as_bytes()) {
    [2.361252]
    [2.361350]
    let hash = if let Some(h) = pijul_core::pristine::Hash::from_base32((&cap[4]).as_bytes()) {
  • replacement in api/src/ssh.rs at line 1137
    [2.361662][2.361662:361735]()
    libpijul::changestore::filesystem::push_filename(&mut p, &hash);
    [2.361662]
    [2.361735]
    pijul_core::changestore::filesystem::push_filename(&mut p, &hash);
  • replacement in api/src/ssh.rs at line 1145
    [2.362039][2.362039:362103]()
    libpijul::change::Change::size_no_contents(&mut f)?
    [2.362039]
    [2.362103]
    pijul_core::change::Change::size_no_contents(&mut f)?
  • replacement in api/src/ssh.rs at line 1157
    [2.362366][2.362366:362406]()
    hash: libpijul::pristine::Hash,
    [2.362366]
    [2.362406]
    hash: pijul_core::pristine::Hash,
  • replacement in api/src/ssh.rs at line 1171
    [2.362849][2.362849:362923]()
    Some(ChannelSpec::CI(_)) | Some(ChannelSpec::Channel(_)) => {
    [2.362849]
    [2.362923]
    Some(ChannelSpec::Channel(_)) => {
  • edit in api/src/ssh.rs at line 1225
    [2.364998][2.364998:365073]()
    ChannelSpec::CI(c) => self.channel = Some(ChannelSpec::CI(c)),
  • replacement in api/src/ssh.rs at line 1237
    [2.365381][2.365381:365411]()
    hash: libpijul::Hash,
    [2.365381]
    [2.365411]
    hash: pijul_core::Hash,
  • replacement in api/src/ssh.rs at line 1239
    [2.365447][2.365447:365495]()
    use libpijul::changestore::ChangeStore;
    [2.365447]
    [2.365495]
    use pijul_core::changestore::ChangeStore;
  • replacement in api/src/ssh.rs at line 1317
    [2.368006][2.368006:368036]()
    hash: libpijul::Hash,
    [2.368006]
    [2.368036]
    hash: pijul_core::Hash,
  • replacement in api/src/ssh.rs at line 1337
    [2.368726][2.368726:368790]()
    use libpijul::changestore::ChangeStore;
    [2.368726]
    [2.368790]
    use pijul_core::changestore::ChangeStore;
  • replacement in api/src/ssh.rs at line 1425
    [2.372853][2.372853:372905]()
    use libpijul::changestore::ChangeStore;
    [2.372853]
    [2.372905]
    use pijul_core::changestore::ChangeStore;
  • replacement in api/src/ssh.rs at line 1466
    [2.374360][2.374360:374448]()
    hash: libpijul::pristine::Hash,
    header: libpijul::change::ChangeHeader,
    [2.374360]
    [2.374448]
    hash: pijul_core::pristine::Hash,
    header: pijul_core::change::ChangeHeader,
  • replacement in api/src/settings.rs at line 289
    [2.388403][2.388403:388460]()
    r::creation_ip.eq(addr.to_string()),
    [2.388403]
    [2.388460]
    // r::creation_ip.eq(addr.ip()),
  • replacement in api/src/repository/router.rs at line 10
    [2.391983][2.391983:391999]()
    use libpijul::{
    [2.391983]
    [10.17147]
    use pijul_core::{
  • edit in api/src/repository/router.rs at line 20
    [2.392220][2.392220:392249]()
    channel: Option<String>,
  • replacement in api/src/repository/router.rs at line 52
    [2.392877][2.392877:392922]()
    meta: libpijul::pristine::InodeMetadata,
    [2.392877]
    [2.392922]
    meta: pijul_core::pristine::InodeMetadata,
  • replacement in api/src/repository/router.rs at line 63
    [2.393128][2.393128:393154]()
    pos: Query<PosQuery>,
    [2.393128]
    [2.393154]
    Query(pos): Query<PosQuery>,
  • replacement in api/src/repository/router.rs at line 68
    [2.393333][2.393333:393431]()
    let (id, _) = super::repository_id(&mut db, &tree.owner, &tree.repo, uid, Perm::READ).await?;
    [2.393333]
    [2.393431]
    let (id, _, _) = super::repository_id(&mut db, &tree.owner, &tree.repo, uid, Perm::READ).await?;
  • replacement in api/src/repository/router.rs at line 82
    [2.394024][10.17188:17326]()
    } else if txn.channels("")?.is_empty()
    && (pos.channel.as_deref() == Some("main") || pos.channel.is_none())
    {
    [2.394024]
    [2.394142]
    } else if txn.channels("")?.is_empty() && channel_ == "main" {
  • replacement in api/src/repository/router.rs at line 121
    [2.395437][2.395437:395537]()
    for x in libpijul::fs::iter_graph_children(&txn, &repo_.changes, txn.graph(&*ch), pos)?
    [2.395437]
    [2.395537]
    for x in
    pijul_core::fs::iter_graph_children(&txn, &repo_.changes, txn.graph(&*ch), pos)?
  • replacement in api/src/repository/router.rs at line 139
    [2.396084][2.396084:396223]()
    let txn = libpijul::ArcTxn::new(txn);
    libpijul::output::output_file(&repo_.changes, &txn, &channel, pos, &mut out)
    [2.396084]
    [2.396223]
    let txn = pijul_core::ArcTxn::new(txn);
    pijul_core::output::output_file(&repo_.changes, &txn, &channel, pos, &mut out)
  • replacement in api/src/repository/router.rs at line 180
    [2.397235][2.397235:397280]()
    _: Option<(&T, &[&libpijul::Hash])>,
    [2.397235]
    [2.397280]
    _: Option<(&T, &[&pijul_core::Hash])>,
  • edit in api/src/repository/mod.rs at line 6
    [2.397622][2.397622:397655]()
    use libpijul::{Base32, MutTxnT};
  • edit in api/src/repository/mod.rs at line 7
    [2.397680]
    [2.397680]
    use pijul_core::{Base32, MutTxnT};
  • edit in api/src/repository/mod.rs at line 19
    [2.397901]
    [2.397901]
    pub mod dot_pijul;
  • replacement in api/src/repository/mod.rs at line 88
    [2.399295][2.399295:399362]()
    pub pristine: RwLock<libpijul::pristine::sanakirja::Pristine>,
    [2.399295]
    [2.399362]
    pub pristine: RwLock<pijul_core::pristine::sanakirja::Pristine>,
  • replacement in api/src/repository/mod.rs at line 168
    [2.401898][2.401898:401971]()
    ) -> Result<libpijul::pristine::sanakirja::Pristine, crate::Error> {
    [2.401898]
    [2.401971]
    ) -> Result<pijul_core::pristine::sanakirja::Pristine, crate::Error> {
  • replacement in api/src/repository/mod.rs at line 171
    [2.402045][2.402045:402140]()
    let repo = libpijul::pristine::sanakirja::Pristine::new_nolock(&path.join("db"))?;
    [2.402045]
    [2.402140]
    let repo = pijul_core::pristine::sanakirja::Pristine::new_nolock(&path.join("db"))?;
  • replacement in api/src/repository/mod.rs at line 175
    [2.402223][2.402223:402291]()
    Ok(libpijul::pristine::sanakirja::Pristine::new_nolock(
    [2.402223]
    [2.402291]
    Ok(pijul_core::pristine::sanakirja::Pristine::new_nolock(
  • replacement in api/src/repository/mod.rs at line 182
    [2.402360][2.402360:402377]()
    #[derive(Debug)]
    [2.402360]
    [2.402377]
    #[derive(Debug, PartialEq, Eq)]
  • edit in api/src/repository/mod.rs at line 185
    [2.402421][2.402421:402437]()
    CI(String),
  • edit in api/src/repository/mod.rs at line 190
    [2.402535][2.402535:402651]()
    if c.ends_with("/ci") {
    ChannelSpec::CI(c.split_at(c.len() - 3).0.to_string())
    } else {
  • edit in api/src/repository/mod.rs at line 191
    [2.402700][2.402700:402710]()
    }
  • replacement in api/src/repository/mod.rs at line 220
    [2.403410][2.403410:403452]()
    ) -> Result<(Uuid, Perm), crate::Error> {
    [2.403410]
    [2.403452]
    ) -> Result<(Uuid, Uuid, Perm), crate::Error> {
  • replacement in api/src/repository/mod.rs at line 223
    [2.403531][2.403531:403601]()
    if let Some((rid, perms, suspended, is_public)) = r::repositories
    [2.403531]
    [2.403601]
    if let Some((rid, perms, uid, suspended, is_public)) = r::repositories
  • edit in api/src/repository/mod.rs at line 232
    [2.403873]
    [2.403873]
    u::id,
  • replacement in api/src/repository/mod.rs at line 236
    [2.403935][2.403935:403992]()
    .get_result::<(uuid::Uuid, i64, bool, bool)>(db)
    [2.403935]
    [10.17475]
    .get_result::<(uuid::Uuid, i64, uuid::Uuid, bool, bool)>(db)
  • replacement in api/src/repository/mod.rs at line 249
    [2.404279][2.404279:404306]()
    Ok((rid, got))
    [2.404279]
    [2.404306]
    Ok((rid, uid, got))
  • replacement in api/src/repository/mod.rs at line 362
    [2.407453][2.407453:407481]()
    use libpijul::TxnT;
    [2.407453]
    [2.407481]
    use pijul_core::TxnT;
  • replacement in api/src/repository/mod.rs at line 424
    [2.409180][2.409180:409226]()
    pub public_key: libpijul::key::PublicKey,
    [2.409180]
    [2.409226]
    pub public_key: pijul_core::key::PublicKey,
  • replacement in api/src/repository/mod.rs at line 439
    [2.409655][2.409655:409704]()
    pub meta: libpijul::pristine::InodeMetadata,
    [2.409655]
    [2.409704]
    pub meta: pijul_core::pristine::InodeMetadata,
  • replacement in api/src/repository/mod.rs at line 443
    [2.409724][2.409724:409819]()
    T: libpijul::GraphTxnT + libpijul::ChannelTxnT,
    C: libpijul::changestore::ChangeStore,
    [2.409724]
    [2.409819]
    T: pijul_core::GraphTxnT + pijul_core::ChannelTxnT,
    C: pijul_core::changestore::ChangeStore,
  • replacement in api/src/repository/mod.rs at line 449
    [2.409878][2.409878:409937]()
    pos: libpijul::pristine::Position<libpijul::ChangeId>,
    [2.409878]
    [2.409937]
    pos: pijul_core::pristine::Position<pijul_core::ChangeId>,
  • replacement in api/src/repository/mod.rs at line 456
    [2.410141][2.410141:410238]()
    if let Some(x) = libpijul::fs::iter_basenames(txn, changes, txn.graph(channel), pos)
    [2.410141]
    [2.410238]
    if let Some(x) = pijul_core::fs::iter_basenames(txn, changes, txn.graph(channel), pos)
  • replacement in api/src/repository/changestore.rs at line 1
    [2.410821][2.410822:411028]()
    use libpijul::change::{Change, ChangeFile, ChangeHeader};
    use libpijul::changestore::filesystem::*;
    use libpijul::changestore::*;
    use libpijul::pristine::{Base32, ChangeId, Hash, Merkle, Position, Vertex};
    [2.410821]
    [2.411028]
    use pijul_core::change::{Change, ChangeFile, ChangeHeader};
    use pijul_core::changestore::filesystem::*;
    use pijul_core::changestore::*;
    use pijul_core::pristine::{Base32, ChangeId, Hash, Merkle, Position, Vertex};
  • replacement in api/src/repository/changestore.rs at line 27
    [2.411631][2.411631:411673]()
    Tag(#[from] libpijul::tag::TagError),
    [2.411631]
    [2.411673]
    Tag(#[from] pijul_core::tag::TagError),
  • replacement in api/src/repository/changestore.rs at line 31
    [2.411764][2.411764:411819]()
    ChangeFile(#[from] libpijul::change::ChangeError),
    [2.411764]
    [2.411819]
    ChangeFile(#[from] pijul_core::change::ChangeError),
  • replacement in api/src/repository/changestore.rs at line 69
    [2.412851][2.412851:412890]()
    libpijul::change::ChangeError,
    [2.412851]
    [2.412890]
    pijul_core::change::ChangeError,
  • replacement in api/src/repository/changestore.rs at line 81
    [2.413424][2.413424:413504]()
    let p = Arc::new(Mutex::new(libpijul::change::ChangeFile::open(
    [2.413424]
    [2.413504]
    let p = Arc::new(Mutex::new(pijul_core::change::ChangeFile::open(
  • replacement in api/src/repository/changestore.rs at line 97
    [2.413884][2.413884:413937]()
    ) -> Result<(), libpijul::change::ChangeError> {
    [2.413884]
    [2.413937]
    ) -> Result<(), pijul_core::change::ChangeError> {
  • replacement in api/src/repository/changestore.rs at line 107
    [2.414174][2.414174:414199]()
    use libpijul::change::*;
    [2.414174]
    [2.414199]
    use pijul_core::change::*;
  • replacement in api/src/repository/changestore.rs at line 114
    [2.414389][2.414389:414542]()
    ) -> Result<Hashed<Hunk<Option<Hash>, Local>, Author>, libpijul::change::ChangeError> {
    use libpijul::change::*;
    use libpijul::pristine::Hasher;
    [2.414389]
    [2.414542]
    ) -> Result<Hashed<Hunk<Option<Hash>, Local>, Author>, pijul_core::change::ChangeError> {
    use pijul_core::change::*;
    use pijul_core::pristine::Hasher;
  • replacement in api/src/repository/changestore.rs at line 237
    [2.418171][2.418171:418262]()
    if let Ok(p) = libpijul::change::ChangeFile::open(hash, &path.to_str().unwrap()) {
    [2.418171]
    [2.418262]
    if let Ok(p) = pijul_core::change::ChangeFile::open(hash, &path.to_str().unwrap()) {
  • replacement in api/src/repository/changestore.rs at line 251
    [2.418682][2.418682:418764]()
    let p = libpijul::change::ChangeFile::open(*h, &path.to_str().unwrap())?;
    [2.418682]
    [2.418764]
    let p = pijul_core::change::ChangeFile::open(*h, &path.to_str().unwrap())?;
  • replacement in api/src/repository/changestore.rs at line 259
    [2.419015][2.419015:419080]()
    let mut p = libpijul::tag::OpenTagFile::open(&path, h)?;
    [2.419015]
    [2.419080]
    let mut p = pijul_core::tag::OpenTagFile::open(&path, h)?;
  • replacement in api/src/repository/changestore.rs at line 302
    [2.420553][2.420553:420647]()
    let mut p = libpijul::change::ChangeFile::open(change, &path.to_str().unwrap())?;
    [2.420553]
    [2.420647]
    let mut p = pijul_core::change::ChangeFile::open(change, &path.to_str().unwrap())?;
  • replacement in api/src/repository/changestore.rs at line 335
    [2.421572][2.421572:421640]()
    E: From<Self::Error> + From<libpijul::change::ChangeError>,
    [2.421572]
    [2.421640]
    E: From<Self::Error> + From<pijul_core::change::ChangeError>,
  • replacement in api/src/repository/admin.rs at line 168
    [2.428843][2.428843:428895]()
    let (id, _) = crate::repository::repository_id(
    [2.428843]
    [2.428895]
    let (id, _, _) = crate::repository::repository_id(
  • replacement in api/src/repository/admin.rs at line 236
    [2.430867][2.430867:430919]()
    let (id, _) = crate::repository::repository_id(
    [2.430867]
    [2.430919]
    let (id, _, _) = crate::repository::repository_id(
  • replacement in api/src/replication.rs at line 5
    [10.18050][10.18050:18438]()
    use libpijul::changestore::ChangeStore;
    use libpijul::fs::FsErrorC;
    use libpijul::output::{FileError, OutputError};
    use libpijul::pristine::sanakirja::MutTxn0;
    use libpijul::pristine::sanakirja::SanakirjaError;
    use libpijul::pristine::{ForkError, TreeErr, TxnErr};
    use libpijul::{
    ApplyError, ArcTxn, ChannelMutTxnT, ChannelRef, MutTxnT, MutTxnTExt, TxnT, TxnTExt,
    UnrecordError,
    [10.18050]
    [10.18438]
    use pijul_core::changestore::ChangeStore;
    use pijul_core::fs::FsErrorC;
    use pijul_core::output::{FileError, OutputError};
    use pijul_core::pristine::sanakirja::MutTxn0;
    use pijul_core::pristine::sanakirja::SanakirjaError;
    use pijul_core::pristine::{ForkError, TreeErr, TxnErr};
    use pijul_core::{
    ApplyError, ArcTxn, Base32, ChannelMutTxnT, MutTxnT, MutTxnTExt, TxnT, TxnTExt, UnrecordError,
  • edit in api/src/replication.rs at line 16
    [2.432018]
    [2.432018]
    use std::process::Stdio;
  • edit in api/src/replication.rs at line 29
    [10.18646]
    [2.432140]
    client: reqwest::Client,
  • edit in api/src/replication.rs at line 46
    [10.18980]
    [10.18980]
    client: reqwest::Client::new(),
  • edit in api/src/replication.rs at line 79
    [10.19639]
    [2.433017]
    #[error(transparent)]
    Reqwest(#[from] reqwest::Error),
  • replacement in api/src/replication.rs at line 108
    [2.434118][2.434118:434275]()
    Err(libpijul::ApplyError::LocalChange(
    libpijul::LocalApplyError::ChangeAlreadyOnChannel { .. },
    [2.434118]
    [2.434275]
    Err(pijul_core::ApplyError::LocalChange(
    pijul_core::LocalApplyError::ChangeAlreadyOnChannel { .. },
  • replacement in api/src/replication.rs at line 117
    [2.434614][2.434614:434768]()
    Err(libpijul::ApplyError::LocalChange(
    libpijul::LocalApplyError::DependencyMissing { hash },
    [2.434614]
    [2.434768]
    Err(pijul_core::ApplyError::LocalChange(
    pijul_core::LocalApplyError::DependencyMissing { hash },
  • replacement in api/src/replication.rs at line 125
    [2.435061][2.435061:435227]()
    libpijul::ApplyError::LocalChange(
    libpijul::LocalApplyError::DependencyMissing { hash },
    [2.435061]
    [2.435227]
    pijul_core::ApplyError::LocalChange(
    pijul_core::LocalApplyError::DependencyMissing { hash },
  • replacement in api/src/replication.rs at line 155
    [20.48][20.48:749]()
    let repo_ = s.locks.get(&repo).await.unwrap();
    tokio::task::spawn_blocking(move || {
    if let Some((temp, depl)) = {
    let pri = repo_.pristine.blocking_write();
    let txn = pri.arc_txn_begin()?;
    let channel = format!("{}_{}", repo, channel);
    let channel_ = {
    let mut txn_ = txn.write();
    txn_.open_or_create_channel(&channel)?
    };
    let changes = repo_.changes.clone();
    [20.48]
    [12.532]
    if let Some((state, deployment)) =
    get_config_state(&s.locks, repo, channel).await?
    {
    debug!("{:?} {:?}", state, deployment);
    let mut db = s.db.get().await.unwrap();
    use crate::db::jobs::dsl as jobs;
    let id = diesel::insert_into(jobs::jobs)
    .values((
    jobs::repo.eq(repo),
    jobs::repo_state.eq(state.to_base32()),
    ))
    .returning(jobs::id)
    .get_result::<uuid::Uuid>(&mut db)
    .await
    .unwrap();
    use crate::db::repositories::dsl as repositories;
    use crate::db::users::dsl as users;
  • replacement in api/src/replication.rs at line 174
    [12.533][20.750:1400]()
    s.output_for_deployment(&txn, &channel_, &changes)?
    } {
    tokio::spawn(async move {
    use crate::db::jobs::dsl as jobs;
    let id = diesel::insert_into(jobs::jobs)
    .values((jobs::repo.eq(repo),))
    .returning(jobs::id)
    .get_result::<uuid::Uuid>(&mut s.db.get().await.unwrap())
    .await
    .unwrap();
    [12.533]
    [12.1143]
    let (owner, repo) = repositories::repositories
    .find(repo)
    .inner_join(users::users)
    .select((users::login, repositories::name))
    .get_result::<(String, String)>(&mut db)
    .await
    .unwrap();
    let mut targets = std::collections::HashMap::new();
    targets.insert(deployment.clone(), format!(".#{}", deployment));
    let body = serde_json::to_string(&ci::Trigger {
    id,
    owner,
    repo,
    state: state.to_base32(),
    targets,
    })
    .unwrap();
    debug!("{:?} {}", s.ci.url, body);
    for (n, ci) in s.ci.url.iter().enumerate() {
    let res = s
    .client
    .post(ci.clone() + "/trigger")
    .header("Content-Type", "application/json")
    .body(body.clone())
    .send()
    .await
    .unwrap();
    debug!("{:?}", res);
  • replacement in api/src/replication.rs at line 203
    [12.1144][20.1401:1787]()
    let permit = s.builders.acquire().await.unwrap();
    {
    s.deploy(id, temp, depl).await?;
    }
    std::mem::drop(permit);
    Ok::<_, Error>(())
    });
    [12.1144]
    [20.1787]
    if let reqwest::StatusCode::OK = res.status() {
    tokio::spawn(async move {
    sync_job(&mut db, s.client, &s.ci, n, id).await;
    });
    break;
    }
  • replacement in api/src/replication.rs at line 210
    [20.1817][20.1817:1892]()
    Ok::<_, Error>(())
    });
    [20.1817]
    [20.1892]
    }
  • replacement in api/src/replication.rs at line 230
    [10.21149][10.21149:21210]()
    &libpijul::working_copy::sink(),
    [10.21149]
    [10.21210]
    &pijul_core::working_copy::sink(),
  • replacement in api/src/replication.rs at line 233
    [2.436979][2.436979:437076]()
    Err(libpijul::UnrecordError::ChangeNotInChannel { .. }) | Ok(_) => {
    [2.436979]
    [2.437076]
    Err(pijul_core::UnrecordError::ChangeNotInChannel { .. }) | Ok(_) => {
  • replacement in api/src/replication.rs at line 257
    [2.438183][2.438183:438276]()
    libpijul::changestore::filesystem::push_filename(&mut p, &hash);
    [2.438183]
    [2.438276]
    pijul_core::changestore::filesystem::push_filename(&mut p, &hash);
  • replacement in api/src/replication.rs at line 332
    [10.21396][10.21396:21520]()
    txn: &ArcTxn<libpijul::pristine::sanakirja::MutTxn0>,
    channel: &ChannelRef<libpijul::pristine::sanakirja::MutTxn0>,
    [10.21396]
    [10.21520]
    txn: &ArcTxn<pijul_core::pristine::sanakirja::MutTxn0>,
    channel: &pijul_core::ChannelRef<pijul_core::pristine::sanakirja::MutTxn0>,
  • replacement in api/src/replication.rs at line 337
    [10.21590][10.21590:21727]()
    let txn_ = txn.read();
    let channel_ = channel.read();
    let (pos, is_dir) = txn_.follow_oldest_path(changes, &channel, path)?;
    [10.21590]
    [10.21727]
    let (pos, is_dir) = txn.read().follow_oldest_path(changes, channel, path)?;
  • replacement in api/src/replication.rs at line 343
    [10.21846][10.21846:21969]()
    use libpijul::ChannelTxnT;
    let mut graph = libpijul::alive::retrieve(&*txn_, txn_.graph(&*channel_), pos, false)?;
    [10.21846]
    [10.21969]
    use pijul_core::ChannelTxnT;
    let mut graph = {
    let txn = txn.read();
    pijul_core::alive::retrieve(&*txn, txn.graph(&*channel.read()), pos, false)?
    };
  • replacement in api/src/replication.rs at line 350
    [10.22004][10.22004:22155]()
    std::mem::drop(channel_);
    std::mem::drop(txn_);
    libpijul::alive::output_graph(changes, &txn, &channel, &mut out, &mut graph, &mut forward)
    [10.22004]
    [10.22155]
    pijul_core::alive::output_graph(changes, &txn, &channel, &mut out, &mut graph, &mut forward)
  • replacement in api/src/replication.rs at line 356
    [10.22264][10.22264:22273](),[10.22273][12.1529:1559](),[12.1559][10.22288:22566](),[10.22288][10.22288:22566](),[10.22566][12.1560:1622](),[12.1622][10.22621:22745](),[10.22621][10.22621:22745]()
    impl H {
    fn output_for_deployment<
    C: ChangeStore<Error = crate::repository::changestore::Error> + Clone + Send + Sync + 'static,
    >(
    &self,
    txn: &ArcTxn<libpijul::pristine::sanakirja::MutTxn0>,
    channel: &ChannelRef<libpijul::pristine::sanakirja::MutTxn0>,
    changes: &C,
    ) -> Result<Option<(tempfile::TempDir, String)>, Error> {
    if let Some(config) = get_file(txn, channel, changes, "pijul.toml")? {
    debug!("config = {:?}", config);
    [10.22264]
    [10.22745]
    pub async fn get_config_state(
    locks: &RepositoryLocks,
    repo: uuid::Uuid,
    channel: String,
    ) -> Result<Option<(pijul_core::Merkle, String)>, Error> {
    debug!("get_config_state");
    let repo_ = locks.get(&repo).await.unwrap();
    tokio::task::spawn_blocking(move || {
    let pri = repo_.pristine.blocking_write();
    let txn_ = pri.arc_txn_begin()?;
    let channel = format!("{}_{}", repo, channel);
    if let Some(channel) = txn_.read().load_channel(&channel)? {
    if let Some(config) = get_file(&txn_, &channel, &repo_.changes, "pijul.toml")? {
    debug!("config = {:?}", config);
  • replacement in api/src/replication.rs at line 371
    [10.22746][10.22746:22814](),[10.22814][11.401:441](),[11.441][10.22814:22870](),[10.22814][10.22814:22870](),[10.22916][10.22916:23061](),[10.23061][13.0:64](),[13.64][12.1679:1952](),[12.1679][12.1679:1952](),[12.1952][13.65:118](),[13.118][12.1976:2030](),[12.1976][12.1976:2030]()
    if let Ok(parsed) = toml::from_str::<Config>(&config) {
    debug!("{:?}", parsed);
    if let Some(depl) = parsed.deployment {
    let txn = txn.clone();
    let channel = channel.clone();
    let changes = changes.clone();
    let tmp_dir = tempfile::tempdir().unwrap();
    let wc =
    libpijul::working_copy::filesystem::FileSystem::from_root(tmp_dir.path());
    libpijul::output::output_repository_no_pending(
    &wc, &changes, &txn, &channel, "", true, None, 1, 0,
    )
    .unwrap();
    return Ok(Some((tmp_dir, depl)));
    [10.22746]
    [12.2030]
    if let Ok(parsed) = toml::from_str::<Config>(&config) {
    if let Some(dep) = parsed.deployment {
    if let Some(Ok((_, (_, state)))) =
    txn_.read().reverse_log(&channel.read(), None)?.next()
    {
    return Ok(Some((state.into(), dep)));
    }
    }
  • replacement in api/src/replication.rs at line 380
    [12.2048][12.2048:2062]()
    }
    [12.2048]
    [12.2062]
    };
  • replacement in api/src/replication.rs at line 383
    [12.2089][12.2089:2095](),[12.2095][10.23215:23216](),[10.23215][10.23215:23216](),[10.23216][12.2096:2494]()
    }
    async fn deploy(
    &self,
    id: uuid::Uuid,
    tmp_dir: tempfile::TempDir,
    depl: String,
    ) -> Result<(), Error> {
    use std::process::Stdio;
    let (status_tx, status_rx) = tokio::sync::watch::channel(None);
    let (kill_tx, kill_rx) = tokio::sync::oneshot::channel();
    let p = tmp_dir.path().join(depl);
    debug!("launching {:?}", p);
    [12.2089]
    [11.819]
    })
    .await
    .unwrap()
    }
  • replacement in api/src/replication.rs at line 388
    [11.820][12.2495:2717]()
    let mut cmd = tokio::process::Command::new(p)
    .current_dir(tmp_dir.path())
    .stderr(Stdio::piped())
    .stdout(Stdio::piped())
    .stdin(Stdio::null())
    .spawn()
    [11.820]
    [12.2717]
    pub async fn sync_job(
    db: &mut diesel_async::AsyncPgConnection,
    client: reqwest::Client,
    ci: &crate::config_file::CiConfig,
    ci_n: usize,
    job: uuid::Uuid,
    ) {
    let mut files = if let Some(ref f) = ci.filesystem {
    let stdout = OpenOptions::new()
    .append(true)
    .create(true)
    .open(&f.join(&format!("{}.stdout", job)))
    .await
    .unwrap();
    let stderr = OpenOptions::new()
    .append(true)
    .create(true)
    .open(&f.join(&format!("{}.stderr", job)))
    .await
  • edit in api/src/replication.rs at line 408
    [12.2740]
    [10.24870]
    Some((stdout, stderr))
    } else {
    None
    };
  • replacement in api/src/replication.rs at line 413
    [10.24871][12.2741:3049](),[12.3049][10.25275:25276](),[10.25275][10.25275:25276](),[10.25276][12.3050:3176](),[12.3176][10.25432:25433](),[10.25432][10.25432:25433](),[10.25433][12.3177:4015]()
    use tokio::io::AsyncBufReadExt;
    let stdout = tokio::io::BufReader::new(cmd.stdout.take().unwrap());
    let mut stdout = stdout.lines();
    let mut stdout_ok = true;
    let stderr = tokio::io::BufReader::new(cmd.stderr.take().unwrap());
    let mut stderr = stderr.lines();
    self.jobs
    .lock()
    .unwrap()
    .insert(id, (kill_tx, status_tx.clone(), status_rx));
    let mut stderr_ok = true;
    let mut buf_stdout = String::new();
    let mut last_stdout = std::time::UNIX_EPOCH;
    let mut buf_stderr = String::new();
    let mut last_stderr = std::time::UNIX_EPOCH;
    let bound = std::time::Duration::from_secs(1);
    let mut files = if let Some(ref path) = self.ci.filesystem {
    Some((
    OpenOptions::new()
    .append(true)
    .create(true)
    .open(&path.join(&format!("{}.stdout", id)))
    .await
    .unwrap(),
    OpenOptions::new()
    .append(true)
    .create(true)
    .open(&path.join(&format!("{}.stderr", id)))
    .await
    .unwrap(),
    ))
    [10.24871]
    [12.4015]
    loop {
    debug!("Querying status");
    let status = client
    .get(format!("{}/status/{}", ci.url[ci_n], job))
    .send()
    .await
    .unwrap();
    let status = if let reqwest::StatusCode::OK = status.status() {
    let status: ci::Status = status.json().await.unwrap();
    debug!("STATUS {:?}", status);
    use crate::db::jobs::dsl as jobs;
    diesel::update(jobs::jobs.find(job))
    .set((
    jobs::status.eq(status.code),
    jobs::ended.eq(status.finished),
    ))
    .execute(db)
    .await
    .unwrap();
    Some(status)
  • replacement in api/src/replication.rs at line 436
    [12.4060][12.4060:4232]()
    while stdout_ok || stderr_ok {
    debug!(
    "stdout || stderr {:?} {:?}",
    buf_stdout.len(),
    buf_stderr.len()
    [12.4060]
    [12.4232]
    if let Some((ref mut stdout, ref mut stderr)) = files {
    let stdout_len = stdout.metadata().await.unwrap().len();
    let stderr_len = stderr.metadata().await.unwrap().len();
    let (stdout_, stderr_) = tokio::join!(
    client
    .get(format!("{}/stdout/{}", ci.url[ci_n], job))
    .header("Range", format!("bytes={stdout_len}-*"))
    .send(),
    client
    .get(format!("{}/stderr/{}", ci.url[ci_n], job))
    .header("Range", format!("bytes={stderr_len}-*"))
    .send()
  • replacement in api/src/replication.rs at line 450
    [12.4247][12.4247:4492](),[12.4492][15.0:39](),[15.39][12.4527:4783](),[12.4527][12.4527:4783](),[12.4783][10.27608:27609](),[10.27608][10.27608:27609](),[10.27609][12.4784:4978](),[12.4978][10.29617:29643](),[10.29617][10.29617:29643](),[10.29643][12.4979:5383](),[12.5383][16.69:125](),[16.125][12.5439:5538](),[12.5439][12.5439:5538](),[12.5538][15.40:79](),[15.79][12.5573:6309](),[12.5573][12.5573:6309](),[12.6309][10.30743:30775](),[10.30743][10.30743:30775]()
    tokio::select! {
    line = stdout.next_line(), if stdout_ok => {
    let n = if let Some(line) = line? {
    buf_stdout.push_str(&line);
    buf_stdout.push('\n');
    line.len() + 1
    } else {
    0
    };
    if last_stdout.elapsed().unwrap() >= bound || n == 0 {
    debug!("sending stdout to db {:?} {:?}", buf_stdout.len(), buf_stderr.len());
    if let Some((ref mut stdout, _)) = files {
    stdout.write_all(buf_stdout.as_bytes()).await?;
    stdout.flush().await?;
    }
    buf_stdout.clear();
    debug!("stdout/stderr {:?} {:?}", buf_stdout.len(), buf_stderr.len());
    last_stdout = std::time::SystemTime::now();
    }
    if n == 0 {
    stdout_ok = false
    }
    }
    line = stderr.next_line(), if stderr_ok => {
    let n = if let Some(line) = line? {
    buf_stderr.push_str(&line);
    buf_stderr.push('\n');
    line.len() + 1
    } else {
    0
    };
    if last_stderr.elapsed().unwrap() >= bound || n == 0 {
    debug!("sending stderr to db {:?}", buf_stderr.len());
    if let Some((_, ref mut stderr)) = files {
    stderr.write_all(buf_stderr.as_bytes()).await?;
    stderr.flush().await?;
    }
    buf_stderr.clear();
    last_stderr = std::time::SystemTime::now();
    }
    debug!("{:?}", buf_stderr.len());
    if n == 0 {
    stderr_ok = false
    }
    }
    }
    [12.4247]
    [10.30829]
    let stdout_ = stdout_.unwrap();
    let stderr_ = stderr_.unwrap();
    debug!("{:?} {:?}", stdout_, stderr_);
    let bytes = stdout_.bytes().await.unwrap();
    stdout.write(&bytes).await.unwrap();
    let bytes = stderr_.bytes().await.unwrap();
    stderr.write(&bytes).await.unwrap();
  • replacement in api/src/replication.rs at line 459
    [12.6311][12.6311:6417]()
    let status = tokio::select! {
    status = cmd.wait() => {
    status?.code()
    [12.6311]
    [12.6417]
    if let Some(status) = status {
    let (mut status_tx, _status_rx) = tokio::sync::watch::channel(None);
    let (_kill_tx, mut kill_rx) = tokio::sync::oneshot::channel();
    for (script, s) in status.results.iter() {
    let mut cmd = tokio::process::Command::new("nix-store");
    cmd.arg("-r").arg(&s);
    let cmd = cmd
    .stderr(Stdio::piped())
    .stdout(Stdio::piped())
    .stdin(Stdio::null())
    .spawn()
    .unwrap();
    ci::dump_cmd(cmd, &mut files, &mut kill_rx, &mut status_tx)
    .await
    .unwrap();
  • replacement in api/src/replication.rs at line 475
    [12.6431][12.6431:6516]()
    _ = kill_rx => {
    cmd.kill().await?;
    None
    [12.6431]
    [12.6516]
    for (script, s) in status.results.iter() {
    debug!("launching {:?} {:?}", s, script);
    let cmd = tokio::process::Command::new(format!("{}/bin/{script}", s.display()))
    .stderr(Stdio::piped())
    .stdout(Stdio::piped())
    .stdin(Stdio::null())
    .spawn()
    .unwrap();
    ci::dump_cmd(cmd, &mut files, &mut kill_rx, &mut status_tx)
    .await
    .unwrap();
  • replacement in api/src/replication.rs at line 487
    [12.6530][12.6530:7070]()
    };
    debug!("process exited with {:?}", status);
    debug!("stderr {}", buf_stderr);
    debug!("stdout {}", buf_stdout);
    let now = chrono::Utc::now();
    use crate::db::jobs::dsl as jobs;
    diesel::update(jobs::jobs.find(id))
    .set((jobs::status.eq(status), jobs::ended.eq(&now)))
    .execute(&mut self.db.get().await.unwrap())
    .await?;
    status_tx.send(Some((now, status))).unwrap();
    self.jobs.lock().unwrap().remove(&id);
    Ok::<_, Error>(())
    [12.6530]
    [10.30854]
    break;
    }
    tokio::time::sleep(std::time::Duration::from_secs(1)).await
  • edit in api/src/main.rs at line 5
    [2.452258]
    [2.452258]
    http::uri::Uri,
  • replacement in api/src/main.rs at line 43
    [2.453023][2.453023:453034]()
    mod proxy;
    [2.453023]
    [2.453034]
    // mod proxy;
  • replacement in api/src/main.rs at line 103
    [2.454664][4.7264:7410]()
    .route("/static/{*wildcard}", any(proxy::node_proxy_cached))
    .route("/_app/immutable/{*wildcard}", any(proxy::node_proxy_cached))
    [2.454664]
    [2.454806]
    // .route("/static/{*wildcard}", any(proxy::node_proxy_cached))
    // .route("/_app/immutable/{*wildcard}", any(proxy::node_proxy_cached))
  • replacement in api/src/main.rs at line 120
    [4.7450][2.455407:455438](),[2.455407][2.455407:455438]()
    .route("/", any(root))
    [4.7450]
    [2.455438]
    // .route("/", any(root))
    .route(
    "/{owner}/{repo}/.pijul",
    any(repository::dot_pijul::dot_pijul),
    )
  • replacement in api/src/main.rs at line 132
    [2.455586][4.7451:7499]()
    .fallback(proxy::node_proxy_not_cached)
    [2.455586]
    [2.455628]
    // .fallback(proxy::node_proxy_not_cached)
  • edit in api/src/main.rs at line 180
    [4.7794]
    [4.7794]
    let listener = tokio::net::TcpListener::bind(http_addr).await.unwrap();
  • replacement in api/src/main.rs at line 187
    [4.8033][4.8033:8196]()
    redirect_http_to_https(
    config_file.http.http_port,
    config_file.http.https_port,
    app_,
    [4.8033]
    [4.8196]
    axum::serve(
    listener,
    Router::new()
    .route("/", get(redirect_http_to_https))
    .into_make_service_with_connect_info::<SocketAddr>(),
  • replacement in api/src/main.rs at line 193
    [4.8214][4.8214:8273]()
    .await;
    Ok::<_, Error>(())
    [4.8214]
    [4.8273]
    .await
  • replacement in api/src/main.rs at line 214
    [4.9037][4.9037:9097]()
    .await?;
    Ok::<_, Error>(())
    [4.9037]
    [4.9097]
    .await
  • edit in api/src/main.rs at line 253
    [2.458203]
    [2.458203]
    /*
  • edit in api/src/main.rs at line 266
    [2.458646]
    [2.458646]
    */
  • replacement in api/src/main.rs at line 268
    [2.458647][2.458647:460698]()
    pub async fn redirect_http_to_https(http: u16, https: u16, mut app: Router<()>) {
    fn make_https(
    host: String,
    uri: http::Uri,
    http: u16,
    https: u16,
    ) -> Result<http::Uri, axum::BoxError> {
    let mut parts = uri.into_parts();
    parts.scheme = Some(axum::http::uri::Scheme::HTTPS);
    if parts.path_and_query.is_none() {
    parts.path_and_query = Some("/".parse().unwrap());
    }
    let https_host = host.replace(&http.to_string(), &https.to_string());
    parts.authority = Some(https_host.parse()?);
    Ok(http::Uri::from_parts(parts)?)
    }
    use axum::extract::ConnectInfo;
    use axum::response::IntoResponse;
    use axum_extra::extract::Host;
    let redirect = move |Host(host): Host,
    uri: http::Uri,
    ConnectInfo(addr): ConnectInfo<SocketAddr>,
    r: http::Request<axum::body::Body>| async move {
    debug!("redirect {:?}", addr);
    if addr.ip().is_loopback() {
    debug!("is loopback");
    use tower_service::Service;
    Ok(app.call(r).await.into_response())
    } else {
    debug!("not loopback");
    match make_https(host, uri, http, https) {
    Ok(uri) => Ok(Redirect::permanent(&uri.to_string()).into_response()),
    Err(error) => {
    tracing::warn!(%error, "failed to convert URI to HTTPS");
    Err(StatusCode::BAD_REQUEST.into_response())
    }
    }
    }
    };
    let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0);
    let http_addr = SocketAddr::V6(SocketAddrV6::new(addr, http, 0, 0));
    let listener = tokio::net::TcpListener::bind(http_addr).await.unwrap();
    tracing::debug!("listening on {}", listener.local_addr().unwrap());
    use axum::handler::HandlerWithoutStateExt;
    axum::serve(
    listener,
    redirect.into_make_service_with_connect_info::<SocketAddr>(),
    )
    .await
    .unwrap();
    [2.458647]
    [2.460698]
    async fn redirect_http_to_https(uri: Uri) -> Redirect {
    let uri = format!("https://{}{}", uri.host().unwrap(), uri.path());
    Redirect::temporary(&uri)
  • replacement in api/src/main.rs at line 341
    [2.462536][2.462536:462662]()
    let perm = Perm::from_bits(perm).unwrap();
    let perm_all = Perm::from_bits(perm_all).unwrap();
    [2.462536]
    [2.462662]
    let perm = Perm::from_bits_truncate(perm);
    let perm_all = Perm::from_bits_truncate(perm_all);
  • replacement in api/src/main.rs at line 516
    [2.466871][2.466871:466911]()
    libpijul::output::ArchiveError<
    [2.466871]
    [2.466911]
    pijul_core::output::ArchiveError<
  • replacement in api/src/main.rs at line 518
    [2.466955][10.31644:31739]()
    libpijul::pristine::sanakirja::GenericTxn<sanakirja::MutTxn<Arc<sanakirja::Env>>>,
    [2.466955]
    [2.467054]
    pijul_core::pristine::sanakirja::GenericTxn<sanakirja::MutTxn<Arc<sanakirja::Env>>>,
  • replacement in api/src/main.rs at line 526
    [2.467153][2.467153:467183]()
    libpijul::ApplyError<
    [2.467153]
    [2.467183]
    pijul_core::ApplyError<
  • replacement in api/src/main.rs at line 528
    [2.467227][10.31769:31864]()
    libpijul::pristine::sanakirja::GenericTxn<sanakirja::MutTxn<Arc<sanakirja::Env>>>,
    [2.467227]
    [2.467326]
    pijul_core::pristine::sanakirja::GenericTxn<sanakirja::MutTxn<Arc<sanakirja::Env>>>,
  • replacement in api/src/main.rs at line 532
    [2.467370][2.467370:467426]()
    PijulChange(#[from] libpijul::change::ChangeError),
    [2.467370]
    [2.467426]
    PijulChange(#[from] pijul_core::change::ChangeError),
  • replacement in api/src/main.rs at line 553
    [2.468087][2.468087:468157]()
    Sanakirja(#[from] libpijul::pristine::sanakirja::SanakirjaError),
    [2.468087]
    [2.468157]
    Sanakirja(#[from] pijul_core::pristine::sanakirja::SanakirjaError),
  • replacement in api/src/main.rs at line 599
    [2.469625][2.469625:469667]()
    Key(#[from] libpijul::key::KeyError),
    [2.469625]
    [2.469667]
    Key(#[from] pijul_core::key::KeyError),
  • replacement in api/src/main.rs at line 610
    [2.469905][2.469905:470050]()
    impl<E: Into<Error> + std::error::Error> From<libpijul::pristine::TxnErr<E>> for Error {
    fn from(e: libpijul::pristine::TxnErr<E>) -> Self {
    [2.469905]
    [2.470050]
    impl<E: Into<Error> + std::error::Error> From<pijul_core::pristine::TxnErr<E>> for Error {
    fn from(e: pijul_core::pristine::TxnErr<E>) -> Self {
  • edit in api/src/jobs.rs at line 3
    [10.32164]
    [10.32164]
    use axum::response::IntoResponse;
  • replacement in api/src/jobs.rs at line 8
    [10.32270][10.32270:32319]()
    response::Response,
    routing::{any, get},
    [10.32270]
    [10.32319]
    response::{Redirect, Response},
    routing::{any, get, post},
  • edit in api/src/jobs.rs at line 19
    [10.32624]
    [10.32624]
    use pijul_core::Base32;
  • edit in api/src/jobs.rs at line 21
    [10.32645]
    [16.126]
    use std::collections::hash_map::Entry;
  • replacement in api/src/jobs.rs at line 29
    [10.32864][10.32864:32927]()
    .route("/{owner}/{repo}/{job_id}/ws", any(ws_handler))
    [10.32864]
    [10.32927]
    .route("/{owner}/{repo}/{job_id}/retry", post(retry))
    .route("/{owner}/{repo}/{job_id}/kill", post(kill))
    .route("/{owner}/{repo}/{job_id}/ws", any(job_ws_handler))
    .route("/{owner}/{repo}/ws", any(jobs_ws_handler))
  • replacement in api/src/jobs.rs at line 48
    [10.33137][10.33137:33205]()
    #[derive(Debug, Selectable, Queryable, QueryableByName, Serialize)]
    [10.33137]
    [10.33205]
    #[derive(Debug, Selectable, Queryable, QueryableByName, Serialize, Deserialize)]
  • edit in api/src/jobs.rs at line 144
    [10.35886]
    [10.35886]
    pub async fn retry(
    State(config): State<Config>,
    jar: SignedCookieJar,
    Path(path): Path<JobPath>,
    ) -> Result<Redirect, crate::Error> {
    let (uid, login) = if let Some((a, b)) = get_user_login(&jar, &config).await? {
    (Some(a), Some(b))
    } else {
    (None, None)
    };
    let mut db = config.db.get().await?;
    use crate::db::jobs::dsl as jobs;
    use crate::db::repositories::dsl as repos;
    use crate::db::users::dsl as users;
  • replacement in api/src/jobs.rs at line 161
    [10.35887][10.35887:35912]()
    pub async fn ws_handler(
    [10.35887]
    [10.35912]
    if let Some(repo) = repos::repositories
    .inner_join(jobs::jobs)
    .inner_join(users::users)
    .filter(users::login.eq(&path.owner))
    .filter(repos::name.eq(&path.repo))
    .filter(repos::owner.nullable().eq(uid).or(crate::has_permissions!(
    uid.unwrap_or(uuid::Uuid::nil()),
    repos::id,
    Perm::WRITE_JOBS.bits()
    )))
    .filter(jobs::id.eq(path.job_id))
    .select(repos::id)
    .get_result::<uuid::Uuid>(&mut db)
    .await
    .optional()?
    {
    let mut db = config.db.get().await.unwrap();
    use crate::db::jobs::dsl as jobs;
    let (Some(state), channel) = jobs::jobs
    .find(&path.job_id)
    .select((jobs::repo_state, jobs::channel))
    .get_result::<(Option<String>, String)>(&mut db)
    .await
    .unwrap()
    else {
    return Err(crate::Error::NotFound);
    };
    let id = diesel::insert_into(jobs::jobs)
    .values((jobs::repo.eq(repo), jobs::repo_state.eq(&state)))
    .returning(jobs::id)
    .get_result::<uuid::Uuid>(&mut db)
    .await
    .unwrap();
    use crate::db::repositories::dsl as repositories;
    use crate::db::users::dsl as users;
    if let Some((state, deployment)) =
    crate::replication::get_config_state(&config.repo_locks, repo, channel)
    .await
    .unwrap()
    {
    let (owner, repo) = repositories::repositories
    .find(repo)
    .inner_join(users::users)
    .select((users::login, repositories::name))
    .get_result::<(String, String)>(&mut db)
    .await
    .unwrap();
    let mut targets = std::collections::HashMap::new();
    targets.insert(deployment.clone(), format!(".#{}", deployment));
    let body = serde_json::to_string(&ci::Trigger {
    id,
    owner,
    repo,
    state: state.to_base32(),
    targets,
    })
    .unwrap();
    debug!("{:?} {}", config.ci.url, body);
    tokio::spawn(async move {
    let client = reqwest::Client::new();
    for (n, ci_url) in config.ci.url.iter().enumerate() {
    let res = client
    .post(ci_url.clone() + "/trigger")
    .header("Content-Type", "application/json")
    .body(body.clone())
    .send()
    .await
    .unwrap();
    if let reqwest::StatusCode::OK = res.status() {
    crate::replication::sync_job(&mut db, client, &config.ci, n, id).await;
    break;
    }
    }
    });
    }
    Ok(Redirect::to(&format!("/{}/{}/jobs", path.owner, path.repo)))
    } else {
    Err(crate::Error::NotFound)
    }
    }
    pub async fn kill(
    State(config): State<Config>,
    jar: SignedCookieJar,
    Path(path): Path<JobPath>,
    ) -> Result<Redirect, crate::Error> {
    let (uid, login) = if let Some((a, b)) = get_user_login(&jar, &config).await? {
    (Some(a), Some(b))
    } else {
    (None, None)
    };
    let mut db = config.db.get().await?;
    use crate::db::jobs::dsl as jobs;
    use crate::db::repositories::dsl as repos;
    use crate::db::users::dsl as users;
    if let Some(repo) = repos::repositories
    .inner_join(jobs::jobs)
    .inner_join(users::users)
    .filter(users::login.eq(&path.owner))
    .filter(repos::name.eq(&path.repo))
    .filter(repos::owner.nullable().eq(uid).or(crate::has_permissions!(
    uid.unwrap_or(uuid::Uuid::nil()),
    repos::id,
    Perm::WRITE_JOBS.bits()
    )))
    .filter(jobs::id.eq(path.job_id))
    .select(repos::id)
    .get_result::<uuid::Uuid>(&mut db)
    .await
    .optional()?
    {
    let client = reqwest::Client::new();
    for cl in config.ci.url.iter() {
    let res = client
    .post(format!("{}/kill/{}", cl, path.job_id))
    .header("Content-Type", "application/json")
    .send()
    .await
    .unwrap();
    }
    Ok(Redirect::to(&format!("/{}/{}/jobs", path.owner, path.repo)))
    } else {
    Err(crate::Error::NotFound)
    }
    }
    pub async fn job_ws_handler(
  • edit in api/src/jobs.rs at line 296
    [10.35977]
    [10.35977]
    jar: SignedCookieJar,
  • replacement in api/src/jobs.rs at line 299
    [10.36019][10.36019:36095]()
    ws.on_upgrade(move |socket| handle_socket(config, path.job_id, socket))
    [10.36019]
    [10.36095]
    use crate::db::repositories::dsl as repos;
    use crate::db::users::dsl as users;
    let (uid, login) = if let Ok(Some((a, b))) = get_user_login(&jar, &config).await {
    (Some(a), Some(b))
    } else {
    (None, None)
    };
    let mut db = config.db.get().await.unwrap();
    if repos::repositories
    .inner_join(users::users)
    .filter(users::login.eq(path.owner))
    .filter(repos::name.eq(path.repo))
    .filter(repos::owner.nullable().eq(uid).or(crate::has_permissions!(
    uid.unwrap_or(uuid::Uuid::nil()),
    repos::id,
    Perm::READ_JOBS.bits()
    )))
    .select(repos::id)
    .get_result::<uuid::Uuid>(&mut db)
    .await
    .optional()
    .unwrap()
    .is_none()
    {
    return crate::Error::NeedsAuth.into_response();
    }
    ws.on_upgrade(move |socket| job_handle_socket(config, path.job_id, socket))
    }
    pub async fn jobs_ws_handler(
    State(config): State<Config>,
    Path(path): Path<JobPath>,
    jar: SignedCookieJar,
    ws: WebSocketUpgrade,
    ) -> Response {
    use crate::db::repositories::dsl as repos;
    use crate::db::users::dsl as users;
    let (uid, login) = if let Some((a, b)) = get_user_login(&jar, &config).await.unwrap() {
    (Some(a), Some(b))
    } else {
    (None, None)
    };
    let mut db = config.db.get().await.unwrap();
    let Some(repo_id) = repos::repositories
    .inner_join(users::users)
    .filter(users::login.eq(path.owner))
    .filter(repos::name.eq(path.repo))
    .filter(repos::owner.nullable().eq(uid).or(crate::has_permissions!(
    uid.unwrap_or(uuid::Uuid::nil()),
    repos::id,
    Perm::READ_JOBS.bits()
    )))
    .select(repos::id)
    .get_result::<uuid::Uuid>(&mut db)
    .await
    .optional()
    .unwrap()
    else {
    return crate::Error::NeedsAuth.into_response();
    };
    ws.on_upgrade(move |socket| jobs_handle_socket(config, repo_id, socket))
  • replacement in api/src/jobs.rs at line 365
    [10.36139][10.36139:36154]()
    enum Msg<'a> {
    [10.36139]
    [10.36154]
    enum JobMsg<'a> {
  • replacement in api/src/jobs.rs at line 382
    [10.36407][10.36407:36487]()
    async fn handle_socket(config: Config, id: uuid::Uuid, mut socket: WebSocket) {
    [10.36407]
    [10.36487]
    async fn job_handle_socket(config: Config, id: uuid::Uuid, mut socket: WebSocket) {
  • edit in api/src/jobs.rs at line 403
    [10.36723][21.25:59](),[21.59][21.59:112](),[21.112][21.112:334]()
    socket
    .send(
    serde_json::to_string(&Msg::Status {
    ended: chrono::DateTime::UNIX_EPOCH,
    status: None,
    })
    .unwrap()
    .into(),
    )
    .await
    .unwrap_or(());
  • replacement in api/src/jobs.rs at line 432
    [22.137][22.137:242]()
    socket.send(serde_json::to_string(&Msg::Heartbeat).unwrap().into()).await.unwrap_or(());
    [22.137]
    [22.242]
    socket.send(serde_json::to_string(&JobMsg::Heartbeat).unwrap().into()).await.unwrap_or(());
  • replacement in api/src/jobs.rs at line 463
    [10.38790][10.38790:38859]()
    socket.send(serde_json::to_string(&Msg::Status {
    [10.38790]
    [10.38859]
    socket.send(serde_json::to_string(&JobMsg::Status {
  • replacement in api/src/jobs.rs at line 472
    [21.370][21.370:435]()
    socket.send(serde_json::to_string(&Msg::Status {
    [21.370]
    [21.435]
    socket.send(serde_json::to_string(&JobMsg::Status {
  • replacement in api/src/jobs.rs at line 504
    [16.493][16.493:567]()
    serde_json::to_string(&Msg::Status { ended, status })
    [16.493]
    [16.567]
    serde_json::to_string(&JobMsg::Status { ended, status })
  • replacement in api/src/jobs.rs at line 529
    [16.1237][16.1237:1297]()
    serde_json::to_string(&Msg::Chunk {
    [16.1237]
    [16.1297]
    serde_json::to_string(&JobMsg::Chunk {
  • replacement in api/src/jobs.rs at line 558
    [16.2166][16.2166:2226]()
    serde_json::to_string(&Msg::Chunk {
    [16.2166]
    [16.2226]
    serde_json::to_string(&JobMsg::Chunk {
  • replacement in api/src/jobs.rs at line 605
    [10.41709][10.41709:41757]()
    serde_json::to_string(&Msg::Chunk {
    [10.41709]
    [10.41757]
    serde_json::to_string(&JobMsg::Chunk {
  • replacement in api/src/jobs.rs at line 611
    [10.41884][10.41884:41932]()
    serde_json::to_string(&Msg::Chunk {
    [10.41884]
    [10.41932]
    serde_json::to_string(&JobMsg::Chunk {
  • edit in api/src/jobs.rs at line 620
    [10.42101]
    [10.42101]
    }
    }
    #[derive(Debug, Deserialize, Serialize)]
    enum JobsMsg {
    Jobs(Vec<Job>),
    Heartbeat,
    }
    // Update jobs page list.
    async fn jobs_handle_socket(config: Config, repo_id: uuid::Uuid, mut socket: WebSocket) {
    use crate::db::jobs::dsl as jobs;
    let mut latest = {
    let mut latest = config.jobs_latest.lock().await;
    match latest.entry(repo_id) {
    Entry::Vacant(e) => {
    let last = jobs::jobs
    .filter(jobs::repo.eq(repo_id))
    .select(jobs::id)
    .order_by(jobs::started.desc())
    .first::<uuid::Uuid>(&mut config.db.get().await.unwrap())
    .await
    .unwrap();
    let (sender, receiver) = tokio::sync::watch::channel(last);
    e.insert(sender);
    receiver
    }
    Entry::Occupied(e) => e.get().subscribe(),
    }
    };
    let mut interval = tokio::time::interval(std::time::Duration::from_secs(30));
    loop {
    debug!("waiting job");
    tokio::select! {
    _ = interval.tick() => {
    socket.send(serde_json::to_string(&JobsMsg::Heartbeat).unwrap().into()).await.unwrap_or(());
    }
    x = latest.changed() => {
    debug!("status {:?}", x);
    let mut db = config.db.get().await.unwrap();
    let latest = latest.borrow_and_update().clone();
    let jobs = jobs::jobs
    .filter(jobs::repo.eq(repo_id))
    .select(Job::as_select())
    .order_by(jobs::started.desc())
    .get_results::<Job>(&mut db)
    .await.unwrap();
    socket.send(serde_json::to_string(&JobsMsg::Jobs(jobs)).unwrap().into()).await.unwrap_or(());
    break
    }
    }
  • edit in api/src/identicon.rs at line 1
    [2.472889][2.472890:472914]()
    use crate::proxy::HSTS;
  • edit in api/src/identicon.rs at line 6
    [2.473071][2.473071:473093]()
    use hyper::header::*;
  • edit in api/src/identicon.rs at line 7
    [2.473116]
    [2.473116]
    use hyper::header::*;
  • edit in api/src/identicon.rs at line 16
    [2.473304]
    [2.473304]
    pub const HSTS: &str = "max-age=31536000; includeSubDomains";
  • replacement in api/src/identicon.rs at line 255
    [2.482057][2.482057:482319]()
    // colored signatures
    let h = rng.gen::<f64>();
    let color = Hsv::new(RgbHue::from(h * 360f64), 0.8, 1.);
    let rgb = Rgb::from(color);
    write!(s, "\" stroke=\"rgb({},{},{})\" stroke-width=\"2\" fill=\"transparent\"/></svg>",
    [2.482057]
    [2.482319]
    // colored signatures
    let h = rng.gen::<f64>();
    let color = Hsv::new(RgbHue::from(h * 360f64), 0.8, 1.);
    let rgb = Rgb::from(color);
    write!(s, "\" stroke=\"rgb({},{},{})\" stroke-width=\"2\" fill=\"transparent\"/></svg>",
  • replacement in api/src/discussions/mod.rs at line 23
    [2.488440][10.42350:42372](),[10.42372][2.488440:488480](),[2.488440][2.488440:488480]()
    use libpijul::Base32;
    use libpijul::changestore::ChangeStore;
    [2.488440]
    [2.488502]
    use pijul_core::Base32;
    use pijul_core::changestore::ChangeStore;
  • replacement in api/src/discussions/mod.rs at line 62
    [2.489561][2.489561:489579]()
    let (id, _) =
    [2.489561]
    [2.489579]
    let (id, _, _) =
  • replacement in api/src/discussions/mod.rs at line 282
    [2.495722][2.495722:495774]()
    let (id, _) = crate::repository::repository_id(
    [2.495722]
    [2.495774]
    let (id, _, _) = crate::repository::repository_id(
  • replacement in api/src/discussions/mod.rs at line 393
    [2.499754][2.499754:499774]()
    let (repo, _) =
    [2.499754]
    [2.499774]
    let (repo, _, _) =
  • replacement in api/src/discussions/mod.rs at line 520
    [2.503599][2.503599:503756]()
    .get_header(&libpijul::Hash::from_base32(hash.as_bytes()).unwrap())?;
    let hash_ = libpijul::Hash::from_base32(hash.as_bytes()).unwrap();
    [2.503599]
    [2.503756]
    .get_header(&pijul_core::Hash::from_base32(hash.as_bytes()).unwrap())?;
    let hash_ = pijul_core::Hash::from_base32(hash.as_bytes()).unwrap();
  • replacement in api/src/discussions/mod.rs at line 653
    [2.506962][2.506962:507006]()
    header: libpijul::change::ChangeHeader,
    [2.506962]
    [2.507006]
    header: pijul_core::change::ChangeHeader,
  • replacement in api/src/discussions/mod.rs at line 741
    [2.509566][2.509566:509648]()
    let hash = libpijul::Hash::from_base32(hash.as_bytes()).unwrap();
    [2.509566]
    [2.509648]
    let hash = pijul_core::Hash::from_base32(hash.as_bytes()).unwrap();
  • replacement in api/src/discussions/mod.rs at line 778
    [2.510903][2.510903:510929]()
    hash: libpijul::Hash,
    [2.510903]
    [2.510929]
    hash: pijul_core::Hash,
  • replacement in api/src/discussions/mod.rs at line 792
    [2.511508][2.511508:511580]()
    let o = libpijul::Hash::from_base32(o.as_bytes()).unwrap();
    [2.511508]
    [2.511580]
    let o = pijul_core::Hash::from_base32(o.as_bytes()).unwrap();
  • replacement in api/src/discussions/mod.rs at line 806
    [2.511855][2.511855:511881]()
    hash: libpijul::Hash,
    [2.511855]
    [2.511881]
    hash: pijul_core::Hash,
  • replacement in api/src/discussions/mod.rs at line 819
    [2.512400][2.512400:512476]()
    let o = libpijul::Hash::from_base32(o.as_bytes()).unwrap();
    [2.512400]
    [2.512476]
    let o = pijul_core::Hash::from_base32(o.as_bytes()).unwrap();
  • replacement in api/src/discussions/mod.rs at line 999
    [2.519091][2.519091:519143]()
    let mut m = libpijul::pristine::Merkle::zero();
    [2.519091]
    [2.519143]
    let mut m = pijul_core::pristine::Merkle::zero();
  • replacement in api/src/discussions/mod.rs at line 1001
    [2.519174][2.519174:519210]()
    use libpijul::pristine::Base32;
    [2.519174]
    [2.519210]
    use pijul_core::pristine::Base32;
  • replacement in api/src/discussions/mod.rs at line 1013
    [2.519538][2.519538:519617]()
    let hh = libpijul::pristine::Hash::from_base32(h.as_bytes()).unwrap();
    [2.519538]
    [2.519617]
    let hh = pijul_core::pristine::Hash::from_base32(h.as_bytes()).unwrap();
  • replacement in api/src/discussions/mod.rs at line 1029
    [2.519953][2.519953:520018]()
    ) -> Result<(usize, libpijul::pristine::Merkle), crate::Error> {
    [2.519953]
    [2.520018]
    ) -> Result<(usize, pijul_core::pristine::Merkle), crate::Error> {
  • replacement in api/src/discussions/mod.rs at line 1059
    [2.521286][2.521286:521374]()
    let mut m = libpijul::pristine::Merkle::zero();
    use libpijul::pristine::Base32;
    [2.521286]
    [2.521374]
    let mut m = pijul_core::pristine::Merkle::zero();
    use pijul_core::pristine::Base32;
  • replacement in api/src/discussions/mod.rs at line 1062
    [2.521392][2.521392:521471]()
    let hh = libpijul::pristine::Hash::from_base32(h.as_bytes()).unwrap();
    [2.521392]
    [2.521471]
    let hh = pijul_core::pristine::Hash::from_base32(h.as_bytes()).unwrap();
  • edit in api/src/db.rs at line 8
    [2.521723]
    [2.521723]
    ci_contracts (id) {
    id -> Uuid,
    repository -> Nullable<Uuid>,
    user_id -> Nullable<Uuid>,
    start_date -> Nullable<Timestamptz>,
    end_date -> Nullable<Timestamptz>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
    ci_jobs (id) {
    id -> Uuid,
    submitted -> Nullable<Timestamptz>,
    repository -> Nullable<Uuid>,
    channel -> Nullable<Text>,
    state -> Nullable<Text>,
    extra_patches -> Nullable<Array<Nullable<Text>>>,
    worker -> Nullable<Int8>,
    completed -> Nullable<Timestamptz>,
    path -> Nullable<Text>,
    status -> Nullable<Int4>,
    apply_if_success -> Nullable<Bool>,
    report_to -> Nullable<Uuid>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
  • edit in api/src/db.rs at line 174
    [10.42659]
    [2.524315]
    repo_state -> Nullable<Text>,
    channel -> Text,
    script -> Nullable<Text>,
  • replacement in api/src/db.rs at line 185
    [2.524437][2.524437:524487]()
    old_logins (login) {
    login -> Citext,
    [2.524437]
    [2.524487]
    mfa_challenges (id) {
    id -> Uuid,
    time -> Nullable<Timestamptz>,
  • replacement in api/src/db.rs at line 189
    [2.524522][2.524522:524564]()
    retired -> Nullable<Timestamptz>,
    [2.524522]
    [2.524564]
    challenge -> Nullable<Json>,
  • replacement in api/src/db.rs at line 242
    [2.525594][2.525594:525616]()
    bin -> Bytea,
    [2.525594]
    [2.525616]
    bin -> Nullable<Bytea>,
  • replacement in api/src/db.rs at line 255
    [2.525827][2.525827:525856]()
    creation_ip -> Text,
    [2.525827]
    [2.525856]
    creation_ip -> Nullable<Inet>,
  • edit in api/src/db.rs at line 288
    [2.526674]
    [2.526674]
    review_approvals (id) {
    id -> Uuid,
    review -> Nullable<Uuid>,
    date -> Nullable<Timestamptz>,
    channel -> Nullable<Text>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
    review_comments (id) {
    id -> Uuid,
    review -> Nullable<Uuid>,
    date -> Nullable<Timestamptz>,
    hunk -> Nullable<Int4>,
    sub -> Nullable<Int4>,
    l0 -> Nullable<Int4>,
    l1 -> Nullable<Int4>,
    contents -> Nullable<Text>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
    reviews (id) {
    id -> Uuid,
    hash -> Nullable<Text>,
    repository -> Nullable<Uuid>,
    author -> Nullable<Uuid>,
    public -> Nullable<Bool>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
    schema_migrations (version) {
    #[max_length = 255]
    version -> Varchar,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
  • edit in api/src/db.rs at line 350
    [2.526894]
    [2.526894]
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
    spam_exceptions (email) {
    email -> Text,
    date -> Nullable<Timestamptz>,
  • edit in api/src/db.rs at line 369
    [2.527016]
    [2.527016]
    stripe_invoice (invoice_id) {
    invoice_id -> Text,
    time -> Nullable<Timestamptz>,
    user_id -> Nullable<Uuid>,
    hosted -> Nullable<Text>,
    pdf -> Nullable<Text>,
    amount -> Nullable<Int4>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
    stripe_log (time) {
    time -> Timestamp,
    userid -> Nullable<Uuid>,
    op -> Nullable<Text>,
    val -> Nullable<Int4>,
    }
    }
    diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};
  • edit in api/src/db.rs at line 440
    [2.527979]
    [2.527979]
    diesel::joinable!(ci_contracts -> repositories (repository));
    diesel::joinable!(ci_jobs -> users (report_to));
  • edit in api/src/db.rs at line 458
    [10.42708]
    [2.528848]
    diesel::joinable!(mfa_challenges -> users (user_id));
  • edit in api/src/db.rs at line 466
    [2.529242]
    [2.529242]
    diesel::joinable!(review_approvals -> reviews (review));
    diesel::joinable!(review_comments -> reviews (review));
    diesel::joinable!(reviews -> repositories (repository));
    diesel::joinable!(reviews -> users (author));
  • edit in api/src/db.rs at line 471
    [2.529293]
    [2.529293]
    diesel::joinable!(stripe_invoice -> users (user_id));
    diesel::joinable!(stripe_log -> users (userid));
  • edit in api/src/db.rs at line 477
    [2.529444]
    [2.529444]
    ci_contracts,
    ci_jobs,
  • replacement in api/src/db.rs at line 488
    [10.42719][2.529594:529610](),[2.529594][2.529594:529610]()
    old_logins,
    [10.42719]
    [2.529610]
    mfa_challenges,
  • edit in api/src/db.rs at line 495
    [2.529728]
    [2.529728]
    review_approvals,
    review_comments,
    reviews,
    schema_migrations,
  • edit in api/src/db.rs at line 500
    [2.529745]
    [2.529745]
    spam_exceptions,
    stripe_invoice,
    stripe_log,
  • edit in api/src/config_file.rs at line 14
    [10.42864]
    [2.530361]
    pub url: Vec<String>,
  • replacement in api/src/config.rs at line 50
    [2.534471][2.534471:534590]()
    (uuid::Uuid, libpijul::ChangeId),
    Arc<std::sync::Mutex<libpijul::change::ChangeFile>>,
    [2.534471]
    [2.534590]
    (uuid::Uuid, pijul_core::ChangeId),
    Arc<std::sync::Mutex<pijul_core::change::ChangeFile>>,
  • replacement in api/src/config.rs at line 58
    [2.534707][2.534707:534822]()
    (uuid::Uuid, libpijul::Hash),
    Arc<std::sync::Mutex<libpijul::change::ChangeFile>>,
    [2.534707]
    [2.534822]
    (uuid::Uuid, pijul_core::Hash),
    Arc<std::sync::Mutex<pijul_core::change::ChangeFile>>,
  • edit in api/src/config.rs at line 79
    [10.43009]
    [2.535282]
    pub jobs_latest:
    Arc<tokio::sync::Mutex<HashMap<uuid::Uuid, tokio::sync::watch::Sender<uuid::Uuid>>>>,
  • replacement in api/src/config.rs at line 105
    [2.535485][2.535485:535513]()
    Change(libpijul::Hash),
    [2.535485]
    [2.535513]
    Change(pijul_core::Hash),
  • edit in api/src/config.rs at line 291
    [10.43532]
    [2.542456]
    jobs_latest: Arc::new(tokio::sync::Mutex::new(HashMap::new())),
  • replacement in api/src/channel.rs at line 47
    [2.545914][3.12794:12814]()
    let (repo, _) =
    [2.545914]
    [3.12814]
    let (repo, _, _) =
  • replacement in api/src/channel.rs at line 91
    [2.547208][2.547208:547228]()
    let (repo, _) =
    [2.547208]
    [2.547228]
    let (repo, _, _) =
  • replacement in api/src/channel.rs at line 131
    [2.548383][2.548383:548403]()
    let (repo, _) =
    [2.548383]
    [2.548403]
    let (repo, _, _) =
  • replacement in api/src/change/mod.rs at line 17
    [2.549325][2.549325:549361]()
    use libpijul;
    use libpijul::Base32;
    [2.549325]
    [2.549361]
    use pijul_core;
    use pijul_core::Base32;
  • replacement in api/src/change/mod.rs at line 36
    [2.549799][2.549799:549838]()
    author: &libpijul::change::Author,
    [2.549799]
    [2.549838]
    author: &pijul_core::change::Author,
  • replacement in api/src/change/mod.rs at line 85
    [2.551318][2.551318:551360]()
    authors: &[libpijul::change::Author],
    [2.551318]
    [2.551360]
    authors: &[pijul_core::change::Author],
  • replacement in api/src/change/mod.rs at line 105
    [2.551854][2.551854:551900]()
    authors: &mut [libpijul::change::Author],
    [2.551854]
    [2.551900]
    authors: &mut [pijul_core::change::Author],
  • replacement in api/src/change/mod.rs at line 153
    [2.553159][11.2483:2518]()
    // token.verify(&form.token)?;
    [2.553159]
    [2.553191]
    token.verify(&form.token)?;
  • replacement in api/src/change/mod.rs at line 156
    [2.553288][7.1353:1371]()
    let (id, _) =
    [2.553288]
    [7.1371]
    let (id, _, _) =
  • replacement in api/src/change/mod.rs at line 168
    [9.85][2.553672:553763](),[2.553672][2.553672:553763]()
    hash: if let Some(h) = libpijul::Hash::from_base32(form.hash.as_bytes()) {
    [9.85]
    [2.553763]
    hash: if let Some(h) = pijul_core::Hash::from_base32(form.hash.as_bytes()) {
  • replacement in api/src/change/list.rs at line 11
    [2.554409][2.554409:554425]()
    use libpijul::{
    [2.554409]
    [7.1538]
    use pijul_core::{
  • replacement in api/src/change/list.rs at line 45
    [2.555103][2.555103:555138]()
    hash_: Option<libpijul::Hash>,
    [2.555103]
    [2.555138]
    hash_: Option<pijul_core::Hash>,
  • replacement in api/src/change/list.rs at line 47
    [2.555157][2.555157:555169](),[2.555169][7.1626:1726]()
    header:
    Option<tokio::task::JoinHandle<libpijul::change::ChangeHeader_<libpijul::change::Author>>>,
    [2.555157]
    [2.555265]
    header: Option<
    tokio::task::JoinHandle<pijul_core::change::ChangeHeader_<pijul_core::change::Author>>,
    >,
  • replacement in api/src/change/list.rs at line 74
    [2.555877][2.555877:555895]()
    let (id, _) =
    [2.555877]
    [2.555895]
    let (id, _, _) =
  • replacement in api/src/change/list.rs at line 81
    [2.556105][2.556105:556159]()
    .unwrap_or_else(|| libpijul::DEFAULT_CHANNEL)
    [2.556105]
    [2.556159]
    .unwrap_or_else(|| pijul_core::DEFAULT_CHANNEL)
  • replacement in api/src/change/list.rs at line 158
    [2.558330][2.558330:558405]()
    } else if channel.is_empty() || channel == libpijul::DEFAULT_CHANNEL {
    [2.558330]
    [7.2080]
    } else if channel.is_empty() || channel == pijul_core::DEFAULT_CHANNEL {
  • replacement in api/src/change/list.rs at line 170
    [2.558793][2.558793:558875]()
    let h: libpijul::Hash = txn.get_external(&p.change)?.unwrap().into();
    [2.558793]
    [2.558875]
    let h: pijul_core::Hash = txn.get_external(&p.change)?.unwrap().into();
  • replacement in api/src/change/list.rs at line 182
    [2.559225][2.559225:559317]()
    libpijul::fs::iter_graph_descendants(&txn, txn.graph(&*channel.read()), p)?
    [2.559225]
    [2.559317]
    pijul_core::fs::iter_graph_descendants(&txn, txn.graph(&*channel.read()), p)?
  • replacement in api/src/change/list.rs at line 279
    [2.561623][2.561623:561723]()
    &libpijul::pristine::SerializedHash,
    &libpijul::pristine::SerializedMerkle,
    [2.561623]
    [2.561723]
    &pijul_core::pristine::SerializedHash,
    &pijul_core::pristine::SerializedMerkle,
  • replacement in api/src/change/list.rs at line 290
    [2.561985][2.561985:562071]()
    let h: libpijul::Hash = h.into();
    let m: libpijul::Merkle = m.into();
    [2.561985]
    [2.562071]
    let h: pijul_core::Hash = h.into();
    let m: pijul_core::Merkle = m.into();
  • edit in api/src/change/get.rs at line 1
    [2.563293][2.563294:563324]()
    use crate::permissions::Perm;
  • edit in api/src/change/get.rs at line 2
    [2.563343]
    [2.563343]
    use crate::permissions::Perm;
  • replacement in api/src/change/get.rs at line 4
    [2.563355][2.563355:563374]()
    debug_handler,
    [2.563355]
    [2.563374]
    Json, debug_handler,
  • edit in api/src/change/get.rs at line 7
    [2.563442][2.563442:563452]()
    Json,
  • replacement in api/src/change/get.rs at line 10
    [2.563534][2.563534:563621]()
    use libpijul::Hash;
    use libpijul::{changestore::ChangeStore, Base32, EdgeFlags, TxnT};
    [2.563534]
    [2.563621]
    use pijul_core::Hash;
    use pijul_core::{Base32, EdgeFlags, TxnT, changestore::ChangeStore};
  • replacement in api/src/change/get.rs at line 17
    [2.563717][2.563717:563775]()
    pub rec: &'a libpijul::change::Hunk<Option<Hash>, L>,
    [2.563717]
    [2.563775]
    pub rec: &'a pijul_core::change::Hunk<Option<Hash>, L>,
  • replacement in api/src/change/get.rs at line 19
    [2.563821][2.563821:563855]()
    pub hash: &'a libpijul::Hash,
    [2.563821]
    [2.563855]
    pub hash: &'a pijul_core::Hash,
  • replacement in api/src/change/get.rs at line 39
    [2.564386][2.564386:564404]()
    let (id, _) =
    [2.564386]
    [2.564404]
    let (id, _, _) =
  • replacement in api/src/change/get.rs at line 53
    [2.564828][2.564828:564896]()
    libpijul::Hash::from_base32(tree.hash.as_bytes()).unwrap(),
    [2.564828]
    [2.564896]
    pijul_core::Hash::from_base32(tree.hash.as_bytes()).unwrap(),
  • replacement in api/src/change/get.rs at line 68
    [2.565202][2.565202:565228]()
    hash: libpijul::Hash,
    [2.565202]
    [2.565228]
    hash: pijul_core::Hash,
  • replacement in api/src/change/get.rs at line 71
    [2.565290][2.565290:565334]()
    use libpijul::changestore::ChangeStore;
    [2.565290]
    [2.565334]
    use pijul_core::changestore::ChangeStore;
  • replacement in api/src/change/get.rs at line 81
    [2.565670][2.565670:565714]()
    hashes.insert(libpijul::Hash::None, 1);
    [2.565670]
    [2.565714]
    hashes.insert(pijul_core::Hash::None, 1);
  • replacement in api/src/change/get.rs at line 131
    [2.567052][2.567052:567101]()
    metadata: libpijul::pristine::InodeMetadata,
    [2.567052]
    [2.567101]
    metadata: pijul_core::pristine::InodeMetadata,
  • replacement in api/src/change/get.rs at line 134
    [2.567104][2.567104:567244]()
    impl<'a> From<libpijul::changestore::FileMetadata<'a>> for Metadata {
    fn from(f: libpijul::changestore::FileMetadata<'a>) -> Metadata {
    [2.567104]
    [2.567244]
    impl<'a> From<pijul_core::changestore::FileMetadata<'a>> for Metadata {
    fn from(f: pijul_core::changestore::FileMetadata<'a>) -> Metadata {
  • replacement in api/src/change/get.rs at line 149
    [2.567454][2.567454:567556]()
    type EdgeMap = libpijul::change::EdgeMap<usize>;
    type NewVertex = libpijul::change::NewVertex<usize>;
    [2.567454]
    [2.567556]
    type EdgeMap = pijul_core::change::EdgeMap<usize>;
    type NewVertex = pijul_core::change::NewVertex<usize>;
  • replacement in api/src/change/get.rs at line 159
    [2.567672][2.567672:567729]()
    pub type Position = libpijul::pristine::Position<usize>;
    [2.567672]
    [2.567729]
    pub type Position = pijul_core::pristine::Position<usize>;
  • replacement in api/src/change/get.rs at line 164
    [2.567794][2.567794:567841]()
    pub type Atom = libpijul::change::Atom<usize>;
    [2.567794]
    [2.567841]
    pub type Atom = pijul_core::change::Atom<usize>;
  • replacement in api/src/change/get.rs at line 249
    [2.569585][2.569585:569632]()
    impl<'a> Record<'a, libpijul::change::Local> {
    [2.569585]
    [2.569632]
    impl<'a> Record<'a, pijul_core::change::Local> {
  • replacement in api/src/change/get.rs at line 252
    [2.569717][2.569717:569831]()
    libpijul::change::Hunk::FileAdd {
    add_name: libpijul::change::Atom::NewVertex(ref n),
    [2.569717]
    [2.569831]
    pijul_core::change::Hunk::FileAdd {
    add_name: pijul_core::change::Atom::NewVertex(ref n),
  • replacement in api/src/change/get.rs at line 257
    [2.569937][2.569937:570119]()
    libpijul::change::Hunk::FileAdd { .. } => unreachable!(),
    libpijul::change::Hunk::FileMove {
    add: libpijul::change::Atom::NewVertex(ref add),
    [2.569937]
    [2.570119]
    pijul_core::change::Hunk::FileAdd { .. } => unreachable!(),
    pijul_core::change::Hunk::FileMove {
    add: pijul_core::change::Atom::NewVertex(ref add),
  • replacement in api/src/change/get.rs at line 263
    [2.570215][2.570215:570357]()
    libpijul::change::Hunk::FileMove { .. } => unreachable!(),
    libpijul::change::Hunk::FileDel { del, contents, .. } => {
    [2.570215]
    [2.570357]
    pijul_core::change::Hunk::FileMove { .. } => unreachable!(),
    pijul_core::change::Hunk::FileDel { del, contents, .. } => {
  • replacement in api/src/change/get.rs at line 267
    [2.570428][2.570428:570476]()
    libpijul::change::Hunk::FileUndel {
    [2.570428]
    [2.570476]
    pijul_core::change::Hunk::FileUndel {
  • replacement in api/src/change/get.rs at line 270
    [2.570575][2.570575:570647]()
    libpijul::change::Hunk::SolveNameConflict { name, .. } => {
    [2.570575]
    [2.570647]
    pijul_core::change::Hunk::SolveNameConflict { name, .. } => {
  • replacement in api/src/change/get.rs at line 273
    [2.570720][2.570720:570794]()
    libpijul::change::Hunk::UnsolveNameConflict { name, .. } => {
    [2.570720]
    [2.570794]
    pijul_core::change::Hunk::UnsolveNameConflict { name, .. } => {
  • replacement in api/src/change/get.rs at line 276
    [2.570869][2.570869:570937]()
    libpijul::change::Hunk::Edit { change, local, .. } => {
    [2.570869]
    [2.570937]
    pijul_core::change::Hunk::Edit { change, local, .. } => {
  • replacement in api/src/change/get.rs at line 279
    [2.571004][2.571004:571204]()
    libpijul::change::Hunk::Replacement {
    change: libpijul::change::Atom::EdgeMap(ref change),
    replacement: libpijul::change::Atom::NewVertex(ref replacement),
    [2.571004]
    [2.571204]
    pijul_core::change::Hunk::Replacement {
    change: pijul_core::change::Atom::EdgeMap(ref change),
    replacement: pijul_core::change::Atom::NewVertex(ref replacement),
  • replacement in api/src/change/get.rs at line 285
    [2.571321][2.571321:571473]()
    libpijul::change::Hunk::Replacement { .. } => unreachable!(),
    libpijul::change::Hunk::SolveOrderConflict { change, local } => {
    [2.571321]
    [2.571473]
    pijul_core::change::Hunk::Replacement { .. } => unreachable!(),
    pijul_core::change::Hunk::SolveOrderConflict { change, local } => {
  • replacement in api/src/change/get.rs at line 289
    [2.571556][2.571556:571636]()
    libpijul::change::Hunk::UnsolveOrderConflict { change, local } => {
    [2.571556]
    [2.571636]
    pijul_core::change::Hunk::UnsolveOrderConflict { change, local } => {
  • replacement in api/src/change/get.rs at line 292
    [2.571721][2.571721:571801]()
    libpijul::change::Hunk::ResurrectZombies { change, local, .. } => {
    [2.571721]
    [2.571801]
    pijul_core::change::Hunk::ResurrectZombies { change, local, .. } => {
  • replacement in api/src/change/get.rs at line 295
    [2.571881][2.571881:571946]()
    libpijul::change::Hunk::AddRoot { inode, name } => {
    [2.571881]
    [2.571946]
    pijul_core::change::Hunk::AddRoot { inode, name } => {
  • replacement in api/src/change/get.rs at line 298
    [2.572015][2.572015:572080]()
    libpijul::change::Hunk::DelRoot { inode, name } => {
    [2.572015]
    [2.572080]
    pijul_core::change::Hunk::DelRoot { inode, name } => {
  • replacement in api/src/change/get.rs at line 306
    [2.572196][2.572196:572292]()
    fn inode<T: TxnT>(&mut self, txn: &T, id: &libpijul::change::Atom<Option<Hash>>) -> Inode {
    [2.572196]
    [2.572292]
    fn inode<T: TxnT>(&mut self, txn: &T, id: &pijul_core::change::Atom<Option<Hash>>) -> Inode {
  • replacement in api/src/change/get.rs at line 313
    [2.572421][2.572421:572475]()
    id: &libpijul::change::EdgeMap<Option<Hash>>,
    [2.572421]
    [2.572475]
    id: &pijul_core::change::EdgeMap<Option<Hash>>,
  • replacement in api/src/change/get.rs at line 329
    [2.572824][2.572824:572968]()
    pos: &libpijul::pristine::Position<Option<Hash>>,
    ) -> libpijul::pristine::Position<usize> {
    libpijul::pristine::Position {
    [2.572824]
    [2.572968]
    pos: &pijul_core::pristine::Position<Option<Hash>>,
    ) -> pijul_core::pristine::Position<usize> {
    pijul_core::pristine::Position {
  • replacement in api/src/change/get.rs at line 337
    [2.573055][2.573055:573178]()
    fn map_vertex(&mut self, pos: &libpijul::Vertex<Option<Hash>>) -> libpijul::Vertex<usize> {
    libpijul::Vertex {
    [2.573055]
    [2.573178]
    fn map_vertex(&mut self, pos: &pijul_core::Vertex<Option<Hash>>) -> pijul_core::Vertex<usize> {
    pijul_core::Vertex {
  • replacement in api/src/change/get.rs at line 347
    [2.573327][2.573327:573457]()
    atom: &libpijul::change::Atom<Option<Hash>>,
    ) -> libpijul::change::Atom<usize> {
    use libpijul::change::Atom;
    [2.573327]
    [2.573457]
    atom: &pijul_core::change::Atom<Option<Hash>>,
    ) -> pijul_core::change::Atom<usize> {
    use pijul_core::change::Atom;
  • replacement in api/src/change/get.rs at line 358
    [2.573667][2.573667:573800]()
    e: &libpijul::change::EdgeMap<Option<Hash>>,
    ) -> libpijul::change::EdgeMap<usize> {
    libpijul::change::EdgeMap {
    [2.573667]
    [2.573800]
    e: &pijul_core::change::EdgeMap<Option<Hash>>,
    ) -> pijul_core::change::EdgeMap<usize> {
    pijul_core::change::EdgeMap {
  • replacement in api/src/change/get.rs at line 364
    [2.573868][2.573868:573921]()
    .map(|e| libpijul::change::NewEdge {
    [2.573868]
    [2.573921]
    .map(|e| pijul_core::change::NewEdge {
  • replacement in api/src/change/get.rs at line 378
    [2.574303][2.574303:574442]()
    v: &libpijul::change::NewVertex<Option<Hash>>,
    ) -> libpijul::change::NewVertex<usize> {
    libpijul::change::NewVertex {
    [2.574303]
    [2.574442]
    v: &pijul_core::change::NewVertex<Option<Hash>>,
    ) -> pijul_core::change::NewVertex<usize> {
    pijul_core::change::NewVertex {
  • replacement in api/src/change/get.rs at line 393
    [2.574800][2.574800:574844]()
    header: libpijul::change::ChangeHeader,
    [2.574800]
    [2.574844]
    header: pijul_core::change::ChangeHeader,
  • replacement in api/src/change/get.rs at line 411
    [2.575143][2.575143:575190]()
    impl<'a> Record<'a, libpijul::change::Local> {
    [2.575143]
    [2.575190]
    impl<'a> Record<'a, pijul_core::change::Local> {
  • replacement in api/src/change/get.rs at line 415
    [2.575255][2.575255:575305]()
    v: &libpijul::change::Atom<Option<Hash>>,
    [2.575255]
    [2.575305]
    v: &pijul_core::change::Atom<Option<Hash>>,
  • replacement in api/src/change/get.rs at line 420
    [2.575394][2.575394:575452]()
    libpijul::change::Atom::NewVertex(ref n) => {
    [2.575394]
    [2.575452]
    pijul_core::change::Atom::NewVertex(ref n) => {
  • replacement in api/src/change/get.rs at line 423
    [2.575532][2.575532:575588]()
    libpijul::change::Atom::EdgeMap(ref e) => {
    [2.575532]
    [2.575588]
    pijul_core::change::Atom::EdgeMap(ref e) => {
  • replacement in api/src/change/get.rs at line 432
    [2.575762][2.575762:575806]()
    v: &libpijul::change::NewVertex<H>,
    [2.575762]
    [2.575806]
    v: &pijul_core::change::NewVertex<H>,
  • replacement in api/src/change/get.rs at line 441
    [2.576081][2.576081:576126]()
    libpijul::pristine::Vertex {
    [2.576081]
    [2.576126]
    pijul_core::pristine::Vertex {
  • replacement in api/src/change/get.rs at line 461
    [2.576602][2.576602:576662]()
    contents: &libpijul::change::EdgeMap<Option<Hash>>,
    [2.576602]
    [2.576662]
    contents: &pijul_core::change::EdgeMap<Option<Hash>>,
  • replacement in api/src/change/get.rs at line 494
    [2.577600][2.577600:577760]()
    n: &libpijul::change::NewVertex<Option<libpijul::pristine::Hash>>,
    contents: &Option<libpijul::change::Atom<Option<libpijul::pristine::Hash>>>,
    [2.577600]
    [2.577760]
    n: &pijul_core::change::NewVertex<Option<pijul_core::pristine::Hash>>,
    contents: &Option<pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>>,
  • replacement in api/src/change/get.rs at line 503
    [2.577974][2.577974:578019]()
    libpijul::pristine::Vertex {
    [2.577974]
    [2.578019]
    pijul_core::pristine::Vertex {
  • replacement in api/src/change/get.rs at line 511
    [2.578215][2.578215:578300]()
    let meta: Metadata = libpijul::changestore::FileMetadata::read(&buf).into();
    [2.578215]
    [2.578300]
    let meta: Metadata = pijul_core::changestore::FileMetadata::read(&buf).into();
  • replacement in api/src/change/get.rs at line 541
    [2.579026][2.579026:579181]()
    add: &'a libpijul::change::NewVertex<Option<libpijul::pristine::Hash>>,
    del: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    [2.579026]
    [2.579181]
    add: &'a pijul_core::change::NewVertex<Option<pijul_core::pristine::Hash>>,
    del: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
  • replacement in api/src/change/get.rs at line 549
    [2.579406][2.579406:579451]()
    libpijul::pristine::Vertex {
    [2.579406]
    [2.579451]
    pijul_core::pristine::Vertex {
  • replacement in api/src/change/get.rs at line 557
    [2.579651][2.579651:579824]()
    let meta: Metadata = libpijul::changestore::FileMetadata::read(&buf).into();
    let (old, show_perms) = if let libpijul::change::Atom::EdgeMap(ref del) = del {
    [2.579651]
    [2.579824]
    let meta: Metadata = pijul_core::changestore::FileMetadata::read(&buf).into();
    let (old, show_perms) = if let pijul_core::change::Atom::EdgeMap(ref del) = del {
  • replacement in api/src/change/get.rs at line 576
    [2.580272][2.580272:580435]()
    del: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    contents: &'a Option<libpijul::change::Atom<Option<libpijul::pristine::Hash>>>,
    [2.580272]
    [2.580435]
    del: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    contents: &'a Option<pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>>,
  • replacement in api/src/change/get.rs at line 579
    [2.580451][2.580451:580540]()
    let (deleted_names, _) = if let libpijul::change::Atom::EdgeMap(ref del) = del {
    [2.580451]
    [2.580540]
    let (deleted_names, _) = if let pijul_core::change::Atom::EdgeMap(ref del) = del {
  • replacement in api/src/change/get.rs at line 587
    [2.580737][2.580737:580836]()
    content_edges: if let Some(libpijul::change::Atom::EdgeMap(ref contents)) = contents {
    [2.580737]
    [2.580836]
    content_edges: if let Some(pijul_core::change::Atom::EdgeMap(ref contents)) = contents {
  • replacement in api/src/change/get.rs at line 592
    [2.580939][2.580939:581032]()
    content: if let Some(libpijul::change::Atom::EdgeMap(ref contents)) = contents {
    [2.580939]
    [2.581032]
    content: if let Some(pijul_core::change::Atom::EdgeMap(ref contents)) = contents {
  • replacement in api/src/change/get.rs at line 612
    [2.581484][2.581484:581649]()
    undel: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    contents: &'a Option<libpijul::change::Atom<Option<libpijul::pristine::Hash>>>,
    [2.581484]
    [2.581649]
    undel: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    contents: &'a Option<pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>>,
  • replacement in api/src/change/get.rs at line 615
    [2.581665][2.581665:581756]()
    let (undel_names, _) = if let libpijul::change::Atom::EdgeMap(ref undel) = undel {
    [2.581665]
    [2.581756]
    let (undel_names, _) = if let pijul_core::change::Atom::EdgeMap(ref undel) = undel {
  • replacement in api/src/change/get.rs at line 624
    [2.581960][2.581960:582059]()
    content_edges: if let Some(libpijul::change::Atom::EdgeMap(ref contents)) = contents {
    [2.581960]
    [2.582059]
    content_edges: if let Some(pijul_core::change::Atom::EdgeMap(ref contents)) = contents {
  • replacement in api/src/change/get.rs at line 629
    [2.582162][2.582162:582255]()
    content: if let Some(libpijul::change::Atom::EdgeMap(ref contents)) = contents {
    [2.582162]
    [2.582255]
    content: if let Some(pijul_core::change::Atom::EdgeMap(ref contents)) = contents {
  • replacement in api/src/change/get.rs at line 649
    [2.582716][2.582716:582792]()
    name: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    [2.582716]
    [2.582792]
    name: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
  • replacement in api/src/change/get.rs at line 651
    [2.582808][2.582808:582889]()
    let (old, _) = if let libpijul::change::Atom::EdgeMap(ref name) = name {
    [2.582808]
    [2.582889]
    let (old, _) = if let pijul_core::change::Atom::EdgeMap(ref name) = name {
  • replacement in api/src/change/get.rs at line 665
    [2.583191][2.583191:583267]()
    name: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    [2.583191]
    [2.583267]
    name: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
  • replacement in api/src/change/get.rs at line 667
    [2.583283][2.583283:583364]()
    let (old, _) = if let libpijul::change::Atom::EdgeMap(ref name) = name {
    [2.583283]
    [2.583364]
    let (old, _) = if let pijul_core::change::Atom::EdgeMap(ref name) = name {
  • replacement in api/src/change/get.rs at line 681
    [2.583651][2.583651:583773]()
    change: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    local: &'a libpijul::change::Local,
    [2.583651]
    [2.583773]
    change: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    local: &'a pijul_core::change::Local,
  • replacement in api/src/change/get.rs at line 705
    [2.584315][2.584315:584528]()
    change: &'a libpijul::change::EdgeMap<Option<libpijul::pristine::Hash>>,
    replacement: &'a libpijul::change::NewVertex<Option<libpijul::pristine::Hash>>,
    local: &'a libpijul::change::Local,
    [2.584315]
    [2.584528]
    change: &'a pijul_core::change::EdgeMap<Option<pijul_core::pristine::Hash>>,
    replacement: &'a pijul_core::change::NewVertex<Option<pijul_core::pristine::Hash>>,
    local: &'a pijul_core::change::Local,
  • replacement in api/src/change/get.rs at line 741
    [2.585433][2.585433:585555]()
    change: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    local: &'a libpijul::change::Local,
    [2.585433]
    [2.585555]
    change: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    local: &'a pijul_core::change::Local,
  • replacement in api/src/change/get.rs at line 765
    [2.586121][2.586121:586243]()
    change: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    local: &'a libpijul::change::Local,
    [2.586121]
    [2.586243]
    change: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    local: &'a pijul_core::change::Local,
  • replacement in api/src/change/get.rs at line 789
    [2.586806][2.586806:586928]()
    change: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    local: &'a libpijul::change::Local,
    [2.586806]
    [2.586928]
    change: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    local: &'a pijul_core::change::Local,
  • replacement in api/src/change/get.rs at line 813
    [2.587477][2.587477:587631]()
    change: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    name: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    [2.587477]
    [2.587631]
    change: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    name: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
  • replacement in api/src/change/get.rs at line 826
    [2.587876][2.587876:588030]()
    change: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    name: &'a libpijul::change::Atom<Option<libpijul::pristine::Hash>>,
    [2.587876]
    [2.588030]
    change: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
    name: &'a pijul_core::change::Atom<Option<pijul_core::pristine::Hash>>,
  • replacement in api/src/change/get.rs at line 839
    [2.588274][2.588274:588386]()
    del: &libpijul::change::EdgeMap<Option<Hash>>,
    perm: Option<libpijul::pristine::InodeMetadata>,
    [2.588274]
    [2.588386]
    del: &pijul_core::change::EdgeMap<Option<Hash>>,
    perm: Option<pijul_core::pristine::InodeMetadata>,
  • replacement in api/src/change/get.rs at line 851
    [2.588757][2.588757:588850]()
    let meta: Metadata = libpijul::changestore::FileMetadata::read(&buf).into();
    [2.588757]
    [2.588850]
    let meta: Metadata = pijul_core::changestore::FileMetadata::read(&buf).into();
  • replacement in api/src/change/get.rs at line 867
    [2.589195][2.589195:589247]()
    c: &libpijul::pristine::Position<Option<Hash>>,
    [2.589195]
    [2.589247]
    c: &pijul_core::pristine::Position<Option<Hash>>,
  • replacement in api/src/change/get.rs at line 884
    [2.589564][2.589564:589624]()
    context: &[libpijul::pristine::Position<Option<Hash>>],
    [2.589564]
    [2.589624]
    context: &[pijul_core::pristine::Position<Option<Hash>>],
  • replacement in api/config.toml at line 60
    [11.2667][11.2667:2686]()
    filesystem = "logs"
    [11.2667]
    filesystem = "logs"
    url = [ "http://localhost:8003" ]
  • replacement in api/Cargo.toml at line 13
    [3.13419][3.13419:13438](),[3.13438][10.43858:43916](),[10.43916][3.13490:13584](),[3.13490][3.13490:13584]()
    anyhow = "1.0.100"
    axum = { version = "0.8.7", features = ["macros", "ws"] }
    axum-extra = { version = "0.12.2", features = [ "cookie-signed", "cookie", "typed-header" ] }
    [3.13419]
    [3.13584]
    anyhow.workspace = true
    axum.workspace = true
    axum-extra = { version = "0.12.6", features = [ "cookie-signed", "cookie", "typed-header" ] }
  • replacement in api/Cargo.toml at line 17
    [3.13606][2.602619:602641](),[2.602619][2.602619:602641]()
    axum-macros = "0.5.0"
    [3.13606]
    [3.13607]
    axum-macros = "0.5.1"
  • replacement in api/Cargo.toml at line 21
    [2.602755][3.13701:13737]()
    bincode = "1.0"
    bitflags = "2.10.0"
    [2.602755]
    [2.602792]
    bincode.workspace = true
    bitflags = "2.12.1"
  • replacement in api/Cargo.toml at line 25
    [2.602827][3.13738:13755](),[3.13755][19.2646:2700](),[19.2700][2.602862:602886](),[3.13773][2.602862:602886](),[2.602862][2.602862:602886](),[2.602886][3.13774:13827]()
    bytes = "1.11.0"
    chrono = { version = "0.4.42", features = ["serde"] }
    ci = { path = "../ci" }
    clap = { version = "4.5.53", features = ["derive"] }
    [2.602827]
    [18.145]
    bytes = "1.11.1"
    chrono.workspace = true
    ci.workspace = true
    clap = { version = "4.6.1", features = ["derive"] }
  • replacement in api/Cargo.toml at line 31
    [2.602955][3.13828:13852]()
    data-encoding = "2.9.0"
    [2.602955]
    [3.13852]
    data-encoding = "2.11.0"
  • replacement in api/Cargo.toml at line 33
    [3.13872][3.13872:14043](),[3.14043][2.603170:603257](),[2.603170][2.603170:603257]()
    diesel = { version = "2.3.3", features = [ "postgres_backend", "extras", "network-address" ] }
    diesel-async = { version = "0.7.4", features = [ "postgres", "deadpool" ] }
    diesel-derive-enum = { version = "2.1.0", features = ["postgres"] }
    futures = "0.3.31"
    [3.13872]
    [3.14044]
    diesel.workspace = true
    diesel-async.workspace = true
    diesel-derive-enum.workspace = true
    futures = "0.3.32"
  • replacement in api/Cargo.toml at line 40
    [3.14085][3.14085:14100]()
    http = "1.4.0"
    [3.14085]
    [3.14100]
    http = "1.4.1"
  • replacement in api/Cargo.toml at line 43
    [2.603375][3.14126:14164](),[3.14164][10.43917:43936]()
    hyper = "1.8.1"
    hyper-util = "0.1.18"
    inotify = "0.11.1"
    [2.603375]
    [2.603413]
    hyper = "1.10.1"
    hyper-util = "0.1.20"
    inotify = "0.11.2"
  • replacement in api/Cargo.toml at line 47
    [2.603432][10.43937:43953]()
    jiff = "0.2.16"
    [2.603432]
    [10.43953]
    jiff = "0.2.28"
  • replacement in api/Cargo.toml at line 51
    [19.2720][10.44015:44059](),[2.603454][10.44015:44059]()
    libc = "0.2.185"
    libpijul = "1.0.0-beta.11"
    [19.2720]
    [2.603481]
    libc = "0.2.186"
    pijul-core.workspace = true
  • replacement in api/Cargo.toml at line 56
    [3.14209][3.14209:14229]()
    openssl = "0.10.75"
    [3.14209]
    [3.14229]
    openssl = "0.10.80"
  • replacement in api/Cargo.toml at line 60
    [3.14276][3.14276:14317]()
    pulldown-cmark = "0.13.0"
    rand = "0.9.2"
    [3.14276]
    [2.603707]
    pulldown-cmark = "0.13.4"
    rand = "0.9.4"
  • replacement in api/Cargo.toml at line 63
    [2.603729][3.14318:14335]()
    regex = "1.12.2"
    [2.603729]
    [2.603746]
    regex = "1.12.3"
  • replacement in api/Cargo.toml at line 65
    [2.603788][3.14336:14356]()
    reqwest = "0.12.24"
    [2.603788]
    [10.44060]
    reqwest.workspace = true
  • replacement in api/Cargo.toml at line 69
    [3.14400][3.14400:14423]()
    serde_json = "1.0.145"
    [3.14400]
    [2.603968]
    serde_json = "1.0.150"
  • replacement in api/Cargo.toml at line 72
    [3.14442][3.14442:14483]()
    tempfile = "3.23.0"
    thiserror = "2.0.17"
    [3.14442]
    [11.2687]
    tempfile = "3.27.0"
    thiserror = "2.0.18"
  • replacement in api/Cargo.toml at line 76
    [3.14600][3.14600:14678](),[3.14678][2.604249:604273](),[2.604249][2.604249:604273](),[2.604273][3.14679:14842]()
    tokio = { version = "1.48.0", features = ["full"] }
    tokio-postgres = "0.7.15"
    tokio-stream = "0.1.17"
    toml = "0.9.8"
    tower-http = { version = "0.6.7", features = [ "trace", "cors", "compression-br", "compression-gzip", "compression-zstd", "compression-deflate" ] }
    [3.14600]
    [2.604437]
    tokio = { version = "1.52.3", features = ["full"] }
    tokio-postgres = "0.7.17"
    tokio-stream = "0.1.18"
    toml = "0.9.12"
    tower-http = { version = "0.6.11", features = [ "trace", "cors", "compression-br", "compression-gzip", "compression-zstd", "compression-deflate", "fs" ] }
  • replacement in api/Cargo.toml at line 82
    [2.604461][2.604461:604480](),[2.604480][3.14843:14966]()
    tracing = "0.1.41"
    tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
    url = "2.5.7"
    uuid = "1.18.1"
    webauthn-rs = "0.5.3"
    [2.604461]
    [2.604603]
    tracing = "0.1.44"
    tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
    url = "2.5.8"
    uuid = "1.23.2"
    webauthn-rs = "0.5.5"
  • edit in api/Cargo.toml at line 88
    [2.604628]
    tokio-util = "0.7.18"
  • replacement in Cargo.toml at line 2
    [2.604677][2.604677:604719]()
    members = ["api", "replication", "hooks"]
    [2.604677]
    [2.604719]
    members = ["api", "replication", "hooks", "ci"]
  • edit in Cargo.toml at line 4
    [2.604734]
    [workspace.dependencies]
    pijul-core = { version = "1.0.0-beta.14", features = ["tarball"] }
    pijul-remote = { version = "1.0.0-beta.14" }
    pijul-repository = { version = "1.0.0-beta.13" }
    pijul-config = { version = "1.0.0-beta.12" }
    pijul-interaction = { version = "1.0.0-beta.12" }
    ci = { path = "ci" }
    anyhow = "1.0.102"
    axum = { version = "0.8.9", features = [ "macros", "ws" ] }
    bincode = "1.3"
    chrono = { version = "0.4.44", features = ["serde"] }
    clap = { version = "4.6.1", features = ["derive"] }
    env_logger = "0.11.10"
    futures = "0.3.32"
    log = "0.4.31"
    serde = "1.0.228"
    serde_derive = "1.0.228"
    serde_json = "1.0.150"
    thrussh = "0.40"
    thrussh-keys = "0.23"
    tokio = { version = "1.52", features = [ "process", "fs" ] }
    toml = { version = "0.9.12" }
    uuid = { version = "1.23.2", features = ["serde" ] }
    tracing = "0.1.44"
    tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
    byteorder = "1.5.0"
    thiserror = "1.0"
    reqwest = { version = "0.11", features = ["stream", "json"] }
    sanakirja = "2.0.0-beta"
    tempfile = "3.27.0"
    diesel = { version = "2.3.9", features = [ "postgres_backend", "extras", "network-address" ] }
    diesel-async = { version = "0.7.4", features = [ "postgres", "deadpool" ] }
    diesel-derive-enum = { version = "2.1.0", features = ["postgres"] }
    axum-range = "1.0.0"
    axum-extra = "0.12.6"
  • replacement in Cargo.lock at line 23
    [2.605683][2.605683:605701]()
    "crypto-common",
    [2.605683]
    [2.605701]
    "crypto-common 0.1.6",
  • replacement in Cargo.lock at line 35
    [2.605953][2.605953:605969]()
    "cpufeatures",
    [2.605953]
    [2.605969]
    "cpufeatures 0.2.17",
  • replacement in Cargo.lock at line 48
    [2.606234][2.606234:606250]()
    "cpufeatures",
    [2.606234]
    [2.606250]
    "cpufeatures 0.2.17",
    ]
    [[package]]
    name = "aes"
    version = "0.9.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138"
    dependencies = [
    "cipher 0.5.2",
    "cpubits",
    "cpufeatures 0.3.0",
  • replacement in Cargo.lock at line 82
    [2.606744][3.15065:15086]()
    "getrandom 0.2.16",
    [2.606744]
    [2.606765]
    "getrandom 0.2.17",
  • replacement in Cargo.lock at line 154
    [2.608920][3.15460:15479]()
    version = "0.6.21"
    [2.608920]
    [2.608939]
    version = "1.0.0"
  • replacement in Cargo.lock at line 156
    [2.609004][3.15480:15558]()
    checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
    [2.609004]
    [2.609082]
    checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
  • replacement in Cargo.lock at line 169
    [2.609253][3.15559:15578]()
    version = "1.0.13"
    [2.609253]
    [2.609272]
    version = "1.0.14"
  • replacement in Cargo.lock at line 171
    [2.609337][3.15579:15657]()
    checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
    [2.609337]
    [2.609415]
    checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
  • replacement in Cargo.lock at line 175
    [2.609451][3.15658:15676]()
    version = "0.2.7"
    [2.609451]
    [2.609469]
    version = "1.0.0"
  • replacement in Cargo.lock at line 177
    [2.609534][3.15677:15755]()
    checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
    [2.609534]
    [2.609612]
    checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
  • replacement in Cargo.lock at line 204
    [2.610179][3.16024:16044]()
    version = "1.0.100"
    [2.610179]
    [2.610198]
    version = "1.0.102"
  • replacement in Cargo.lock at line 206
    [2.610263][3.16045:16123]()
    checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
    [2.610263]
    [2.610341]
    checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
  • replacement in Cargo.lock at line 210
    [2.610372][2.610372:610390]()
    version = "1.7.1"
    [2.610372]
    [2.610390]
    version = "1.9.1"
  • replacement in Cargo.lock at line 212
    [2.610455][2.610455:610533]()
    checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
    [2.610455]
    [2.610533]
    checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207"
    dependencies = [
    "rustversion",
    ]
  • replacement in Cargo.lock at line 253
    [2.611493][3.16139:16155]()
    "syn 2.0.111",
    [2.611493]
    [2.611508]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 265
    [2.611766][3.16156:16172]()
    "syn 2.0.111",
    [2.611766]
    [2.611781]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 270
    [2.611823][3.16173:16192]()
    version = "0.4.34"
    [2.611823]
    [2.611842]
    version = "0.4.42"
  • replacement in Cargo.lock at line 272
    [2.611907][3.16193:16271]()
    checksum = "0e86f6d3dc9dc4352edeea6b8e499e13e3f5dc3b964d7ca5fd411415a3498473"
    [2.611907]
    [2.611985]
    checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac"
  • edit in Cargo.lock at line 276
    [3.16316][2.612024:612041](),[2.612024][2.612024:612041]()
    "futures-core",
  • replacement in Cargo.lock at line 288
    [2.612347][3.16416:16432]()
    "syn 2.0.111",
    [2.612347]
    [2.612362]
    "syn 2.0.117",
    ]
    [[package]]
    name = "atomic"
    version = "0.6.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
    dependencies = [
    "bytemuck",
  • replacement in Cargo.lock at line 308
    [2.612590][3.16433:16451]()
    version = "1.5.0"
    [2.612590]
    [2.612608]
    version = "1.5.1"
  • replacement in Cargo.lock at line 310
    [2.612673][3.16452:16530]()
    checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
    [2.612673]
    [2.612751]
    checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
  • replacement in Cargo.lock at line 314
    [2.612783][3.16531:16550]()
    version = "1.15.1"
    [2.612783]
    [2.612802]
    version = "1.17.0"
  • replacement in Cargo.lock at line 316
    [2.612867][3.16551:16629]()
    checksum = "6b5ce75405893cd713f9ab8e297d8e438f624dde7d706108285f7e17a25a180f"
    [2.612867]
    [2.612945]
    checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00"
  • replacement in Cargo.lock at line 324
    [2.613034][3.16630:16649]()
    version = "0.34.0"
    [2.613034]
    [2.613053]
    version = "0.41.0"
  • replacement in Cargo.lock at line 326
    [2.613118][3.16650:16728]()
    checksum = "179c3777a8b5e70e90ea426114ffc565b2c1a9f82f6c4a0c5a34aa6ef5e781b6"
    [2.613118]
    [2.613196]
    checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4"
  • replacement in Cargo.lock at line 336
    [2.613304][3.16729:16747]()
    version = "0.8.7"
    [2.613304]
    [2.613322]
    version = "0.8.9"
  • replacement in Cargo.lock at line 338
    [2.613387][3.16748:16826]()
    checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425"
    [2.613387]
    [2.613465]
    checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90"
  • replacement in Cargo.lock at line 346
    [2.614184][19.12203:12226]()
    "http",
    "http-body",
    [2.614184]
    [2.614219]
    "http 1.4.1",
    "http-body 1.0.1",
  • replacement in Cargo.lock at line 349
    [2.614238][19.12227:12237]()
    "hyper",
    [2.614238]
    [2.614254]
    "hyper 1.10.1",
  • replacement in Cargo.lock at line 362
    [10.46107][2.614444:614461](),[2.614444][2.614444:614461]()
    "sync_wrapper",
    [10.46107]
    [2.614461]
    "sync_wrapper 1.0.2",
  • replacement in Cargo.lock at line 373
    [2.614985][3.16915:16933]()
    version = "0.5.5"
    [2.614985]
    [2.615003]
    version = "0.5.6"
  • replacement in Cargo.lock at line 375
    [2.615068][3.16934:17012]()
    checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22"
    [2.615068]
    [2.615146]
    checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
  • replacement in Cargo.lock at line 379
    [3.17030][19.12238:12261]()
    "http",
    "http-body",
    [3.17030]
    [2.615225]
    "http 1.4.1",
    "http-body 1.0.1",
  • replacement in Cargo.lock at line 384
    [2.615290][2.615290:615307]()
    "sync_wrapper",
    [2.615274]
    [2.615307]
    "sync_wrapper 1.0.2",
  • replacement in Cargo.lock at line 392
    [2.615388][3.17046:17065]()
    version = "0.12.2"
    [2.615388]
    [2.615407]
    version = "0.10.3"
  • replacement in Cargo.lock at line 394
    [2.615472][3.17066:17144]()
    checksum = "dbfe9f610fe4e99cf0cfcd03ccf8c63c28c616fe714d80475ef731f3b13dd21b"
    [2.615472]
    [2.615550]
    checksum = "9963ff19f40c6102c76756ef0a46004c0d58957d87259fc9208ff8441c12ab96"
    dependencies = [
    "axum",
    "axum-core",
    "bytes",
    "futures-util",
    "headers",
    "http 1.4.1",
    "http-body 1.0.1",
    "http-body-util",
    "mime",
    "pin-project-lite",
    "rustversion",
    "serde_core",
    "tower-layer",
    "tower-service",
    "tracing",
    ]
    [[package]]
    name = "axum-extra"
    version = "0.12.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "be44683b41ccb9ab2d23a5230015c9c3c55be97a25e4428366de8873103f7970"
  • replacement in Cargo.lock at line 426
    [2.615652][19.12262:12285]()
    "http",
    "http-body",
    [2.615652]
    [2.615687]
    "http 1.4.1",
    "http-body 1.0.1",
  • replacement in Cargo.lock at line 444
    [2.616041][19.12286:12295]()
    "http",
    [2.616041]
    [2.616056]
    "http 1.4.1",
  • replacement in Cargo.lock at line 453
    [2.616158][2.616158:616176]()
    version = "0.5.0"
    [2.616158]
    [2.616176]
    version = "0.5.1"
  • replacement in Cargo.lock at line 455
    [2.616241][2.616241:616319]()
    checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c"
    [2.616241]
    [2.616319]
    checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca"
  • replacement in Cargo.lock at line 459
    [2.616362][3.17351:17367]()
    "syn 2.0.111",
    [2.616362]
    [2.616377]
    "syn 2.0.117",
    ]
    [[package]]
    name = "axum-range"
    version = "1.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6a30717ba4cd96521a74b1b847660f2823bc47d8da41db49a024552849fe9f5b"
    dependencies = [
    "axum",
    "axum-extra 0.10.3",
    "bytes",
    "futures",
    "http-body 1.0.1",
    "pin-project",
    "tokio",
  • replacement in Cargo.lock at line 485
    [2.616625][19.12296:12305]()
    "http",
    [2.616625]
    [3.17491]
    "http 1.4.1",
  • replacement in Cargo.lock at line 500
    [3.17611][19.12306:12339]()
    "http",
    "http-body",
    "hyper",
    [3.17611]
    [2.617012]
    "http 1.4.1",
    "http-body 1.0.1",
    "hyper 1.10.1",
  • replacement in Cargo.lock at line 506
    [2.617059][2.617059:617078]()
    "rustls-pemfile",
    [2.617059]
    [2.617078]
    "rustls-pemfile 2.2.0",
  • replacement in Cargo.lock at line 524
    [2.617450][19.12340:12349](),[19.12349][2.617465:617480](),[3.17674][2.617465:617480](),[2.617465][2.617465:617480]()
    "http",
    "rand 0.8.5",
    [2.617450]
    [3.17675]
    "http 1.4.1",
    "rand 0.8.6",
  • replacement in Cargo.lock at line 527
    [3.17691][3.17691:17712]()
    "thiserror 2.0.17",
    [3.17691]
    [2.617517]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 564
    [2.618680][3.17955:17973]()
    version = "1.8.0"
    [2.618680]
    [2.618698]
    version = "1.8.3"
  • replacement in Cargo.lock at line 566
    [2.618763][3.17974:18052]()
    checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
    [2.618763]
    [2.618841]
    checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
  • replacement in Cargo.lock at line 570
    [2.618881][3.18053:18071]()
    version = "0.5.3"
    [2.618881]
    [2.618899]
    version = "0.5.5"
  • replacement in Cargo.lock at line 572
    [2.618964][3.18072:18150]()
    checksum = "215ee31f8a88f588c349ce2d20108b2ed96089b96b9c2b03775dc35dd72938e8"
    [2.618964]
    [2.619042]
    checksum = "b08e33815c87d8cadcddb1e74ac307368a3751fbe40c961538afa21a1899f21c"
  • replacement in Cargo.lock at line 592
    [2.619395][3.18180:18198]()
    version = "0.4.9"
    [2.619395]
    [2.619413]
    version = "0.4.10"
  • replacement in Cargo.lock at line 594
    [2.619478][3.18199:18277]()
    checksum = "560f42649de9fa436b73517378a147ec21f6c997a546581df4b4b31677828934"
    [2.619478]
    [2.619556]
    checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695"
  • edit in Cargo.lock at line 608
    [2.619833][3.18278:18498]()
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "bincode"
    version = "2.0.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740"
  • edit in Cargo.lock at line 609
    [2.619850][3.18499:18518]()
    "bincode_derive",
  • edit in Cargo.lock at line 610
    [2.619860][3.18519:18528]()
    "unty",
  • edit in Cargo.lock at line 613
    [2.619875][3.18529:18571](),[3.18571][2.619911:619976](),[2.619911][2.619911:619976](),[2.619976][3.18572:18650](),[3.18650][2.620054:620071](),[2.620054][2.620054:620071](),[2.620071][3.18651:18662](),[3.18662][2.620281:620296](),[2.620281][2.620281:620296]()
    name = "bincode_derive"
    version = "2.0.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09"
    dependencies = [
    "virtue",
    ]
    [[package]]
  • replacement in Cargo.lock at line 626
    [2.620697][3.18663:18682]()
    version = "2.10.0"
    [2.620697]
    [2.620715]
    version = "2.12.1"
  • replacement in Cargo.lock at line 628
    [2.620780][3.18683:18761]()
    checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
    [2.620780]
    [10.46131]
    checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a"
  • replacement in Cargo.lock at line 647
    [2.621133][3.18762:18780]()
    version = "1.8.2"
    [2.621133]
    [2.621151]
    version = "1.8.5"
  • replacement in Cargo.lock at line 649
    [2.621216][3.18781:18859]()
    checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0"
    [2.621216]
    [2.621294]
    checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce"
  • edit in Cargo.lock at line 656
    [2.621376]
    [2.621376]
    "cpufeatures 0.3.0",
  • edit in Cargo.lock at line 675
    [2.621843]
    [2.621843]
    ]
    [[package]]
    name = "block-buffer"
    version = "0.12.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be"
    dependencies = [
    "hybrid-array",
  • replacement in Cargo.lock at line 714
    [2.622562][3.18860:18878]()
    version = "8.0.2"
    [2.622562]
    [2.622580]
    version = "8.0.3"
  • replacement in Cargo.lock at line 716
    [2.622645][3.18879:18957]()
    checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
    [2.622645]
    [2.622723]
    checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610"
  • replacement in Cargo.lock at line 725
    [2.622845][3.18958:18976]()
    version = "5.0.0"
    [2.622845]
    [2.622863]
    version = "5.0.1"
  • replacement in Cargo.lock at line 727
    [2.622928][3.18977:19055]()
    checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
    [2.622928]
    [2.623006]
    checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924"
  • edit in Cargo.lock at line 788
    [2.624412]
    [2.624412]
    [[package]]
    name = "bytemuck"
    version = "1.25.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
  • replacement in Cargo.lock at line 803
    [2.624633][3.19292:19311]()
    version = "1.11.0"
    [2.624633]
    [2.624652]
    version = "1.11.1"
  • replacement in Cargo.lock at line 805
    [2.624717][3.19312:19390]()
    checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
    [2.624717]
    [2.624795]
    checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
  • replacement in Cargo.lock at line 818
    [2.625105][3.19530:19551]()
    "thiserror 2.0.17",
    [2.625105]
    [2.625126]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 831
    [2.625398][3.19672:19688]()
    "syn 2.0.111",
    [2.625398]
    [2.625413]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 857
    [2.625845][3.19917:19936]()
    version = "1.2.47"
    [2.625845]
    [2.625864]
    version = "1.2.63"
  • replacement in Cargo.lock at line 859
    [2.625929][3.19937:20015]()
    checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07"
    [2.625929]
    [2.626007]
    checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
  • edit in Cargo.lock at line 878
    [3.20269]
    [2.626465]
    [[package]]
    name = "chacha20"
    version = "0.10.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
    dependencies = [
    "cfg-if",
    "cpufeatures 0.3.0",
    "rand_core 0.10.1",
    ]
  • replacement in Cargo.lock at line 903
    [2.626745][3.20270:20289]()
    version = "0.4.42"
    [2.626745]
    [2.626764]
    version = "0.4.44"
  • replacement in Cargo.lock at line 905
    [2.626829][3.20290:20368]()
    checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
    [2.626829]
    [2.626907]
    checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
  • replacement in Cargo.lock at line 920
    [2.627108][4.10640:10658]()
    "bincode 1.3.3",
    [2.627108]
    [2.627120]
    "axum",
    "axum-extra 0.12.6",
    "axum-range",
    "bincode",
  • edit in Cargo.lock at line 926
    [2.627140]
    [2.627140]
    "diesel",
    "diesel-async",
  • edit in Cargo.lock at line 930
    [2.627167][2.627167:627180]()
    "libpijul",
  • edit in Cargo.lock at line 931
    [2.627188]
    [2.627188]
    "pijul-config",
    "pijul-core",
    "pijul-interaction",
    "pijul-remote",
    "pijul-repository",
    "reqwest",
    "sanakirja",
  • edit in Cargo.lock at line 941
    [2.627230]
    [2.627230]
    "tempfile",
    "thiserror 1.0.69",
  • replacement in Cargo.lock at line 946
    [2.627269][3.20406:20421]()
    "toml 0.9.8",
    [2.627269]
    [2.627285]
    "toml 0.9.12+spec-1.1.0",
  • replacement in Cargo.lock at line 967
    [2.627765][2.627765:627793]()
    "crypto-common",
    "inout",
    [2.627765]
    [2.627793]
    "crypto-common 0.1.6",
    "inout 0.1.4",
    ]
    [[package]]
    name = "cipher"
    version = "0.5.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c"
    dependencies = [
    "block-buffer 0.12.0",
    "crypto-common 0.2.2",
    "inout 0.2.2",
  • replacement in Cargo.lock at line 984
    [2.628067][3.20422:20441]()
    version = "4.5.53"
    [2.628067]
    [2.628086]
    version = "4.6.1"
  • replacement in Cargo.lock at line 986
    [2.628151][3.20442:20520]()
    checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"
    [2.628151]
    [2.628229]
    checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
  • replacement in Cargo.lock at line 994
    [2.628316][3.20521:20540]()
    version = "4.5.53"
    [2.628316]
    [2.628335]
    version = "4.6.0"
  • replacement in Cargo.lock at line 996
    [2.628400][3.20541:20619]()
    checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"
    [2.628400]
    [2.628478]
    checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
  • replacement in Cargo.lock at line 1006
    [2.628580][3.20620:20639]()
    version = "4.5.49"
    [2.628580]
    [2.628599]
    version = "4.6.1"
  • replacement in Cargo.lock at line 1008
    [2.628664][3.20640:20718]()
    checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
    [2.628664]
    [2.628742]
    checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
  • replacement in Cargo.lock at line 1013
    [2.628800][3.20719:20735]()
    "syn 2.0.111",
    [2.628800]
    [2.628815]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1018
    [2.628848][3.20736:20754]()
    version = "0.7.6"
    [2.628848]
    [2.628866]
    version = "1.1.0"
  • replacement in Cargo.lock at line 1020
    [2.628931][3.20755:20833]()
    checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
    [2.628931]
    [2.629009]
    checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
  • replacement in Cargo.lock at line 1024
    [2.629037][3.20834:20853]()
    version = "0.1.54"
    [2.629037]
    [2.629056]
    version = "0.1.58"
  • replacement in Cargo.lock at line 1026
    [2.629121][3.20854:20932]()
    checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0"
    [2.629121]
    [2.629199]
    checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
  • edit in Cargo.lock at line 1032
    [2.629238]
    [2.629238]
    name = "cmov"
    version = "0.5.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a"
    [[package]]
    name = "cobs"
    version = "0.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1"
    dependencies = [
    "thiserror 2.0.18",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1048
    [2.629259][3.20933:20951]()
    version = "1.0.4"
    [2.629259]
    [2.629277]
    version = "1.0.5"
  • replacement in Cargo.lock at line 1050
    [2.629342][3.20952:21030]()
    checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
    [2.629342]
    [2.629420]
    checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
  • replacement in Cargo.lock at line 1054
    [3.21052][3.21052:21070]()
    version = "0.9.0"
    [3.21052]
    [2.629472]
    version = "0.9.1"
  • replacement in Cargo.lock at line 1056
    [2.629537][3.21071:21149]()
    checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
    [2.629537]
    [2.629615]
    checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab"
  • replacement in Cargo.lock at line 1068
    [3.21272][3.21272:21291]()
    version = "0.4.33"
    [3.21272]
    [3.21291]
    version = "0.4.38"
  • replacement in Cargo.lock at line 1070
    [3.21356][3.21356:21434]()
    checksum = "302266479cb963552d11bd042013a58ef1adc56768016c8b82b4199488f2d4ad"
    [3.21356]
    [3.21434]
    checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf"
  • replacement in Cargo.lock at line 1082
    [3.21555][3.21555:21574]()
    version = "0.4.31"
    [3.21555]
    [3.21574]
    version = "0.4.32"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789"
    [[package]]
    name = "console"
    version = "0.15.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
    dependencies = [
    "encode_unicode",
    "libc",
    "once_cell",
    "unicode-width",
    "windows-sys 0.59.0",
    ]
    [[package]]
    name = "const-oid"
    version = "0.10.2"
  • replacement in Cargo.lock at line 1103
    [3.21639][3.21639:21717]()
    checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d"
    [3.21639]
    [3.21717]
    checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
  • replacement in Cargo.lock at line 1127
    [2.630289][2.630289:630307]()
    version = "0.3.1"
    [2.630289]
    [2.630307]
    version = "0.4.2"
  • replacement in Cargo.lock at line 1129
    [2.630372][2.630372:630450]()
    checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
    [2.630372]
    [2.630450]
    checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
  • replacement in Cargo.lock at line 1150
    [2.630965][2.630965:630980]()
    "rand 0.8.5",
    [2.630965]
    [3.21731]
    "rand 0.8.6",
  • edit in Cargo.lock at line 1162
    [2.631235]
    [2.631235]
    dependencies = [
    "core-foundation-sys",
    "libc",
    ]
    [[package]]
    name = "core-foundation"
    version = "0.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
  • edit in Cargo.lock at line 1190
    [3.21941]
    [2.631503]
    name = "cpubits"
    version = "0.1.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae"
    [[package]]
  • edit in Cargo.lock at line 1205
    [2.631727]
    [2.631727]
    name = "cpufeatures"
    version = "0.3.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
    dependencies = [
    "libc",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1255
    [2.632670][3.22232:22250]()
    version = "0.1.7"
    [2.632670]
    [2.632688]
    version = "0.1.6"
  • replacement in Cargo.lock at line 1257
    [2.632753][3.22251:22329]()
    checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
    [2.632753]
    [2.632831]
    checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
  • edit in Cargo.lock at line 1262
    [2.632898]
    [2.632898]
    ]
    [[package]]
    name = "crypto-common"
    version = "0.2.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
    dependencies = [
    "hybrid-array",
  • replacement in Cargo.lock at line 1335
    [2.634120][3.22737:22753]()
    "syn 2.0.111",
    [2.634120]
    [2.634135]
    "syn 2.0.117",
  • edit in Cargo.lock at line 1357
    [2.634596]
    [2.634596]
    name = "ctr"
    version = "0.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "baaca1c4b237092596f64d571e9db6ce4109c4ef9742e27590f1709594461f21"
    dependencies = [
    "cipher 0.5.2",
    ]
    [[package]]
    name = "ctutils"
    version = "0.4.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e"
    dependencies = [
    "cmov",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1418
    [10.46419][10.46419:46435]()
    "cpufeatures",
    [10.46419]
    [10.46435]
    "cpufeatures 0.2.17",
  • replacement in Cargo.lock at line 1435
    [10.46735][10.46735:46751]()
    "syn 2.0.111",
    [10.46735]
    [10.46751]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1469
    [2.635947][3.23266:23282]()
    "syn 2.0.111",
    [2.635947]
    [3.23282]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1483
    [3.23558][3.23558:23574]()
    "syn 2.0.111",
    [3.23558]
    [2.635962]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1494
    [3.23790][3.23790:23806]()
    "syn 2.0.111",
    [3.23790]
    [3.23806]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1505
    [2.636207][3.23968:23984]()
    "syn 2.0.111",
    [2.636207]
    [2.636222]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1523
    [2.636557][3.24014:24032]()
    version = "2.9.0"
    [2.636557]
    [2.636575]
    version = "2.11.0"
  • replacement in Cargo.lock at line 1525
    [2.636640][3.24033:24111]()
    checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
    [2.636640]
    [2.636718]
    checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
  • edit in Cargo.lock at line 1534
    [2.636939]
    [2.636939]
    ]
    [[package]]
    name = "dbus"
    version = "0.9.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73"
    dependencies = [
    "libc",
    "libdbus-sys",
    "windows-sys 0.61.2",
  • edit in Cargo.lock at line 1548
    [2.636954]
    [2.636954]
    name = "dbus-secret-service"
    version = "4.1.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6"
    dependencies = [
    "dbus",
    "zeroize",
    ]
    [[package]]
  • edit in Cargo.lock at line 1566
    [2.637185][2.637185:637445](),[2.637445][3.24228:24249]()
    "tokio",
    ]
    [[package]]
    name = "deadpool-postgres"
    version = "0.14.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3d697d376cbfa018c23eb4caab1fd1883dd9c906a8c034e8d9a3cb06a7e0bef9"
    dependencies = [
    "async-trait",
    "deadpool",
    "getrandom 0.2.16",
  • edit in Cargo.lock at line 1567
    [2.637476][2.637476:637507]()
    "tokio-postgres",
    "tracing",
  • edit in Cargo.lock at line 1574
    [2.637709][2.637709:637738]()
    dependencies = [
    "tokio",
    ]
  • replacement in Cargo.lock at line 1591
    [2.638068][3.24265:24283]()
    version = "0.5.5"
    [2.638068]
    [2.638087]
    version = "0.5.8"
  • replacement in Cargo.lock at line 1593
    [2.638152][3.24284:24362]()
    checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
    [2.638152]
    [2.638230]
    checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
  • edit in Cargo.lock at line 1599
    [2.638275]
    [2.638275]
    name = "dialoguer"
    version = "0.10.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87"
    dependencies = [
    "console",
    "fuzzy-matcher",
    "shell-words",
    "tempfile",
    "zeroize",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1613
    [2.638291][3.24363:24381]()
    version = "2.3.3"
    [2.638291]
    [2.638309]
    version = "2.3.9"
  • replacement in Cargo.lock at line 1615
    [2.638374][3.24382:24460]()
    checksum = "5e7624a3bb9fffd82fff016be9a7f163d20e5a89eb8d28f9daaa6b30fff37500"
    [2.638374]
    [2.638452]
    checksum = "9940fb8467a0a06312218ed384185cb8536aa10d8ec017d0ce7fad2c1bd882d5"
  • replacement in Cargo.lock at line 1618
    [2.638484][3.24461:24481]()
    "bitflags 2.10.0",
    [2.638484]
    [2.638503]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 1659
    [2.639256][3.24629:24645]()
    "syn 2.0.111",
    [2.639256]
    [2.639271]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1664
    [2.639310][3.24646:24664]()
    version = "2.3.4"
    [2.639310]
    [2.639328]
    version = "2.3.9"
  • replacement in Cargo.lock at line 1666
    [2.639393][3.24665:24743]()
    checksum = "9daac6489a36e42570da165a10c424f3edcefdff70c5fd55e1847c23f3dd7562"
    [2.639393]
    [2.639471]
    checksum = "d1817b7f4279b947fc4cafddec12b0e5f8727141706561ce3ac94a60bddd1cf5"
  • replacement in Cargo.lock at line 1672
    [2.639562][3.24744:24760]()
    "syn 2.0.111",
    [2.639562]
    [2.639577]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1681
    [2.639805][3.24859:24875]()
    "syn 2.0.111",
    [2.639805]
    [2.639820]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1706
    [2.640470][2.640470:640488]()
    "crypto-common",
    [2.640470]
    [2.640488]
    "crypto-common 0.1.6",
  • edit in Cargo.lock at line 1708
    [2.640499]
    [2.640499]
    ]
    [[package]]
    name = "digest"
    version = "0.11.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
    dependencies = [
    "block-buffer 0.12.0",
    "const-oid",
    "crypto-common 0.2.2",
    "ctutils",
  • edit in Cargo.lock at line 1732
    [2.640975]
    [2.640975]
    name = "dirs-next"
    version = "2.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
    dependencies = [
    "cfg-if",
    "dirs-sys-next",
    ]
    [[package]]
  • edit in Cargo.lock at line 1746
    [2.641154]
    [2.641406]
    dependencies = [
    "libc",
    "redox_users",
    "winapi",
    ]
    [[package]]
    name = "dirs-sys-next"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
  • replacement in Cargo.lock at line 1765
    [2.641494][2.641494:641512]()
    version = "0.2.5"
    [2.641494]
    [2.641512]
    version = "0.2.6"
  • replacement in Cargo.lock at line 1767
    [2.641577][2.641577:641655]()
    checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
    [2.641577]
    [2.641655]
    checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
  • replacement in Cargo.lock at line 1771
    [2.641698][3.24876:24892]()
    "syn 2.0.111",
    [2.641698]
    [2.641713]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1797
    [2.641993][3.25405:25421]()
    "syn 2.0.111",
    [2.641993]
    [2.642008]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 1802
    [2.642037][3.25422:25441]()
    version = "1.0.10"
    [2.642037]
    [2.642055]
    version = "1.0.11"
  • replacement in Cargo.lock at line 1804
    [2.642120][3.25442:25520]()
    checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04"
    [2.642120]
    [2.642198]
    checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590"
  • edit in Cargo.lock at line 1822
    [2.642622]
    [2.642622]
    name = "duplicate"
    version = "2.0.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24"
    dependencies = [
    "heck 0.5.0",
    "proc-macro2",
    "proc-macro2-diagnostics",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1859
    [2.643189][3.25521:25540]()
    version = "1.15.0"
    [2.643189]
    [2.643208]
    version = "1.16.0"
  • replacement in Cargo.lock at line 1861
    [2.643273][3.25541:25619]()
    checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
    [2.643273]
    [2.643351]
    checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
  • edit in Cargo.lock at line 1878
    [19.12780]
    [19.12780]
    [[package]]
    name = "embedded-io"
    version = "0.4.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
    [[package]]
    name = "embedded-io"
    version = "0.6.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
  • edit in Cargo.lock at line 1892
    [19.12793]
    [2.643364]
    name = "encode_unicode"
    version = "1.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
    [[package]]
  • replacement in Cargo.lock at line 1908
    [2.643610][3.25620:25638]()
    version = "0.1.4"
    [2.643610]
    [2.643628]
    version = "1.0.1"
  • replacement in Cargo.lock at line 1910
    [2.643693][3.25639:25717]()
    checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2"
    [2.643693]
    [2.643771]
    checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef"
  • replacement in Cargo.lock at line 1918
    [2.643841][3.25718:25737]()
    version = "0.11.8"
    [2.643841]
    [2.643860]
    version = "0.11.10"
  • replacement in Cargo.lock at line 1920
    [2.643925][3.25738:25816]()
    checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f"
    [2.643925]
    [2.644003]
    checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a"
  • replacement in Cargo.lock at line 1953
    [2.644751][2.644751:644769]()
    version = "2.3.0"
    [2.644751]
    [2.644769]
    version = "2.4.1"
  • replacement in Cargo.lock at line 1955
    [2.644834][2.644834:644912]()
    checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
    [2.644834]
    [10.46795]
    checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
  • edit in Cargo.lock at line 1964
    [2.644925]
    [2.644925]
    name = "figment"
    version = "0.10.19"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3"
    dependencies = [
    "atomic",
    "serde",
    "toml 0.8.23",
    "uncased",
    "version_check",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1978
    [2.644943][3.26048:26067]()
    version = "0.2.26"
    [2.644943]
    [2.644962]
    version = "0.2.29"
  • replacement in Cargo.lock at line 1980
    [2.645027][3.26068:26146]()
    checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
    [2.645027]
    [2.645105]
    checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759"
  • edit in Cargo.lock at line 1984
    [2.645142][2.645142:645155](),[2.645155][3.26147:26170]()
    "libredox",
    "windows-sys 0.60.2",
  • replacement in Cargo.lock at line 1988
    [3.26196][3.26196:26214]()
    version = "0.1.5"
    [3.26196]
    [3.26214]
    version = "0.1.9"
  • replacement in Cargo.lock at line 1990
    [3.26279][3.26279:26357]()
    checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
    [3.26279]
    [3.26357]
    checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
  • replacement in Cargo.lock at line 1994
    [2.645209][3.26371:26389]()
    version = "1.1.5"
    [2.645209]
    [2.645228]
    version = "1.1.9"
  • replacement in Cargo.lock at line 1996
    [2.645293][3.26390:26468]()
    checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
    [2.645293]
    [2.645371]
    checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
  • replacement in Cargo.lock at line 2040
    [3.26776][3.26776:26794]()
    version = "3.2.0"
    [3.26776]
    [3.26794]
    version = "3.3.0"
  • replacement in Cargo.lock at line 2042
    [3.26859][3.26859:26937]()
    checksum = "62d91fd049c123429b018c47887d3f75a265540dd3c30ba9cb7bae9197edb03a"
    [3.26859]
    [3.26937]
    checksum = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0"
  • replacement in Cargo.lock at line 2082
    [2.647169][2.647169:647188]()
    version = "0.3.31"
    [2.647169]
    [2.647188]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2084
    [2.647253][2.647253:647331]()
    checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
    [2.647253]
    [2.647331]
    checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
  • replacement in Cargo.lock at line 2097
    [2.647512][2.647512:647531]()
    version = "0.3.31"
    [2.647512]
    [2.647531]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2099
    [2.647596][2.647596:647674]()
    checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
    [2.647596]
    [2.647674]
    checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
  • replacement in Cargo.lock at line 2107
    [2.647762][2.647762:647781]()
    version = "0.3.31"
    [2.647762]
    [2.647781]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2109
    [2.647846][2.647846:647924]()
    checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
    [2.647846]
    [2.647924]
    checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
  • replacement in Cargo.lock at line 2113
    [2.647963][2.647963:647982]()
    version = "0.3.31"
    [2.647963]
    [2.647982]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2115
    [2.648047][2.648047:648125]()
    checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
    [2.648047]
    [2.648125]
    checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
  • replacement in Cargo.lock at line 2124
    [2.648228][2.648228:648247]()
    version = "0.3.31"
    [2.648228]
    [2.648247]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2126
    [2.648312][2.648312:648390]()
    checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
    [2.648312]
    [2.648390]
    checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
  • replacement in Cargo.lock at line 2130
    [2.648426][2.648426:648445]()
    version = "0.3.31"
    [2.648426]
    [2.648445]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2132
    [2.648510][2.648510:648588]()
    checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
    [2.648510]
    [2.648588]
    checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
  • replacement in Cargo.lock at line 2136
    [2.648631][3.26992:27008]()
    "syn 2.0.111",
    [2.648631]
    [2.648646]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 2141
    [2.648683][2.648683:648702]()
    version = "0.3.31"
    [2.648683]
    [2.648702]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2143
    [2.648767][2.648767:648845]()
    checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
    [2.648767]
    [2.648845]
    checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
  • replacement in Cargo.lock at line 2147
    [2.648880][2.648880:648899]()
    version = "0.3.31"
    [2.648880]
    [2.648899]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2149
    [2.648964][2.648964:649042]()
    checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
    [2.648964]
    [2.649042]
    checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
  • replacement in Cargo.lock at line 2153
    [2.649077][2.649077:649096]()
    version = "0.3.31"
    [2.649077]
    [2.649096]
    version = "0.3.32"
  • replacement in Cargo.lock at line 2155
    [2.649161][2.649161:649239]()
    checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
    [2.649161]
    [2.649239]
    checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
  • edit in Cargo.lock at line 2165
    [2.649392][2.649392:649406]()
    "pin-utils",
  • edit in Cargo.lock at line 2169
    [2.649430]
    [2.649430]
    name = "fuzzy-matcher"
    version = "0.3.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"
    dependencies = [
    "thread_local",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2179
    [2.649453][2.649453:649472]()
    version = "0.14.7"
    [2.649453]
    [2.649472]
    version = "0.14.9"
  • replacement in Cargo.lock at line 2181
    [2.649537][2.649537:649615]()
    checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
    [2.649537]
    [2.649615]
    checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
  • replacement in Cargo.lock at line 2209
    [2.650196][3.27108:27127]()
    version = "0.2.16"
    [2.650196]
    [2.650215]
    version = "0.2.17"
  • replacement in Cargo.lock at line 2211
    [2.650280][3.27128:27206]()
    checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
    [2.650280]
    [2.650358]
    checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
  • replacement in Cargo.lock at line 2228
    [2.650694][3.27345:27355]()
    "r-efi",
    [2.650694]
    [3.27355]
    "r-efi 5.3.0",
  • replacement in Cargo.lock at line 2234
    [4.10678][4.10678:10696]()
    version = "0.4.1"
    [4.10678]
    [4.10696]
    version = "0.4.2"
  • replacement in Cargo.lock at line 2236
    [4.10761][4.10761:10839]()
    checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
    [4.10761]
    [4.10839]
    checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
  • replacement in Cargo.lock at line 2240
    [4.10876][4.10876:10886]()
    "r-efi",
    [4.10876]
    [4.10886]
    "r-efi 6.0.0",
    "rand_core 0.10.1",
  • replacement in Cargo.lock at line 2271
    [2.652032][3.27620:27639]()
    version = "0.4.12"
    [2.652032]
    [2.652050]
    version = "0.3.27"
  • replacement in Cargo.lock at line 2273
    [2.652115][3.27640:27718]()
    checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
    [2.652115]
    [2.652193]
    checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
    dependencies = [
    "bytes",
    "fnv",
    "futures-core",
    "futures-sink",
    "futures-util",
    "http 0.2.12",
    "indexmap",
    "slab",
    "tokio",
    "tokio-util",
    "tracing",
    ]
    [[package]]
    name = "h2"
    version = "0.4.14"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733"
  • replacement in Cargo.lock at line 2299
    [2.652279][19.12794:12803]()
    "http",
    [2.652279]
    [2.652294]
    "http 1.4.1",
  • edit in Cargo.lock at line 2352
    [3.28251]
    [2.653457]
    [[package]]
    name = "hashbrown"
    version = "0.17.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
  • replacement in Cargo.lock at line 2368
    [2.653710][19.12804:12813]()
    "http",
    [2.653710]
    [2.653725]
    "http 1.4.1",
  • replacement in Cargo.lock at line 2380
    [2.653971][19.12814:12823]()
    "http",
    [2.653971]
    [2.653986]
    "http 1.4.1",
  • edit in Cargo.lock at line 2439
    [2.655626]
    [2.655626]
    ]
    [[package]]
    name = "hmac"
    version = "0.13.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f"
    dependencies = [
    "digest 0.11.3",
  • replacement in Cargo.lock at line 2488
    [2.656708][3.28736:28754]()
    version = "1.4.0"
    [2.656473]
    [2.656726]
    version = "0.2.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
    dependencies = [
    "bytes",
    "fnv",
    "itoa",
    ]
    [[package]]
    name = "http"
    version = "1.4.1"
  • replacement in Cargo.lock at line 2501
    [2.656791][3.28755:28833]()
    checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
    [2.656791]
    [2.656869]
    checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0"
  • edit in Cargo.lock at line 2505
    [2.656913]
    [2.657172]
    ]
    [[package]]
    name = "http-body"
    version = "0.4.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
    dependencies = [
    "bytes",
    "http 0.2.12",
    "pin-project-lite",
  • replacement in Cargo.lock at line 2525
    [2.657394][19.13073:13082]()
    "http",
    [2.657394]
    [2.657409]
    "http 1.4.1",
  • replacement in Cargo.lock at line 2536
    [3.28965][19.13083:13106]()
    "http",
    "http-body",
    [3.28965]
    [2.657688]
    "http 1.4.1",
    "http-body 1.0.1",
  • edit in Cargo.lock at line 2540
    [2.657711]
    [2.657711]
    [[package]]
    name = "http-range-header"
    version = "0.4.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
  • edit in Cargo.lock at line 2560
    [2.658743]
    [2.658743]
    name = "hybrid-array"
    version = "0.4.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da"
    dependencies = [
    "typenum",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2570
    [2.658758][3.29115:29133]()
    version = "1.8.1"
    [2.658758]
    [2.658776]
    version = "0.14.32"
  • replacement in Cargo.lock at line 2572
    [2.658841][3.29134:29212]()
    checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
    [2.658841]
    [2.658919]
    checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
  • edit in Cargo.lock at line 2574
    [2.658936][3.29213:29230]()
    "atomic-waker",
  • replacement in Cargo.lock at line 2577
    [3.29248][19.13107:13137]()
    "h2",
    "http",
    "http-body",
    [3.29248]
    [2.659031]
    "futures-util",
    "h2 0.3.27",
    "http 0.2.12",
    "http-body 0.4.6",
  • replacement in Cargo.lock at line 2585
    [2.659087][3.29278:29292](),[3.29292][2.659087:659100](),[2.659087][2.659087:659100]()
    "pin-utils",
    "smallvec",
    [2.659087]
    [2.659100]
    "socket2 0.5.10",
  • edit in Cargo.lock at line 2587
    [2.659110]
    [2.659110]
    "tower-service",
    "tracing",
  • replacement in Cargo.lock at line 2593
    [2.659134][2.659134:659156](),[2.659156][3.29293:29312]()
    name = "hyper-rustls"
    version = "0.27.7"
    [2.659134]
    [2.659175]
    name = "hyper"
    version = "1.10.1"
  • replacement in Cargo.lock at line 2596
    [2.659240][3.29313:29391]()
    checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
    [2.659240]
    [2.659318]
    checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
  • replacement in Cargo.lock at line 2598
    [2.659335][19.13138:13157](),[19.13157][2.659383:659430](),[3.29423][2.659383:659430](),[2.659383][2.659383:659430]()
    "http",
    "hyper",
    "hyper-util",
    "rustls",
    "rustls-pki-types",
    [2.659335]
    [2.659430]
    "atomic-waker",
    "bytes",
    "futures-channel",
    "futures-core",
    "h2 0.4.14",
    "http 1.4.1",
    "http-body 1.0.1",
    "httparse",
    "httpdate",
    "itoa",
    "pin-project-lite",
    "smallvec",
  • replacement in Cargo.lock at line 2615
    [2.659795][2.659795:659813]()
    version = "0.6.0"
    [2.659795]
    [2.659813]
    version = "0.5.0"
  • replacement in Cargo.lock at line 2617
    [2.659878][2.659878:659956]()
    checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
    [2.659878]
    [2.659956]
    checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
  • replacement in Cargo.lock at line 2620
    [2.659983][2.659983:660002](),[2.660002][19.13158:13168](),[19.13168][2.660018:660033](),[3.29440][2.660018:660033](),[2.660018][2.660018:660033]()
    "http-body-util",
    "hyper",
    "hyper-util",
    [2.659983]
    [2.660033]
    "hyper 0.14.32",
  • edit in Cargo.lock at line 2624
    [2.660079][2.660079:660097]()
    "tower-service",
  • replacement in Cargo.lock at line 2628
    [2.660132][3.29441:29460]()
    version = "0.1.18"
    [2.660132]
    [2.660151]
    version = "0.1.20"
  • replacement in Cargo.lock at line 2630
    [2.660216][3.29461:29539]()
    checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56"
    [2.660216]
    [2.660294]
    checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
  • edit in Cargo.lock at line 2632
    [2.660311][3.29540:29558]()
    "base64 0.22.1",
  • replacement in Cargo.lock at line 2633
    [2.660321][2.660321:660341](),[2.660341][3.29559:29576](),[3.29576][2.660341:660358](),[2.660341][2.660341:660358](),[2.660358][19.13169:13202](),[19.13202][3.29609:29649](),[3.29609][3.29609:29649]()
    "futures-channel",
    "futures-core",
    "futures-util",
    "http",
    "http-body",
    "hyper",
    "ipnet",
    "libc",
    "percent-encoding",
    [2.660321]
    [2.660409]
    "http 1.4.1",
    "http-body 1.0.1",
    "hyper 1.10.1",
  • edit in Cargo.lock at line 2637
    [2.660430][19.13203:13215](),[19.13215][3.29668:29693](),[3.29668][3.29668:29693]()
    "socket2",
    "system-configuration",
  • edit in Cargo.lock at line 2639
    [2.660470][2.660470:660482](),[2.660482][3.29694:29715]()
    "tracing",
    "windows-registry",
  • replacement in Cargo.lock at line 2643
    [2.660521][3.29716:29735]()
    version = "0.1.64"
    [2.660521]
    [2.660540]
    version = "0.1.65"
  • replacement in Cargo.lock at line 2645
    [2.660605][3.29736:29814]()
    checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
    [2.660605]
    [2.660683]
    checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
  • replacement in Cargo.lock at line 2667
    [2.661094][3.29824:29842]()
    version = "2.1.1"
    [2.661094]
    [2.661112]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2669
    [2.661177][3.29843:29921]()
    checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
    [2.661177]
    [2.661255]
    checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
  • edit in Cargo.lock at line 2673
    [3.29940]
    [2.661287]
    "utf8_iter",
  • replacement in Cargo.lock at line 2681
    [3.29966][3.29966:29984]()
    version = "2.1.1"
    [3.29966]
    [2.661373]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2683
    [2.661438][3.29985:30063]()
    checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
    [2.661438]
    [2.661516]
    checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
  • replacement in Cargo.lock at line 2694
    [2.662166][3.30064:30082]()
    version = "2.1.1"
    [2.662166]
    [2.662184]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2696
    [2.662249][3.30083:30161]()
    checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
    [2.662249]
    [2.662327]
    checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
  • replacement in Cargo.lock at line 2708
    [2.662549][3.30162:30180]()
    version = "2.1.1"
    [2.662549]
    [2.662567]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2710
    [2.662632][3.30181:30259]()
    checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
    [2.662632]
    [2.662710]
    checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
  • replacement in Cargo.lock at line 2714
    [2.662747][3.30260:30278]()
    version = "2.1.1"
    [2.662747]
    [2.662765]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2716
    [2.662830][3.30279:30357]()
    checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
    [2.662830]
    [2.662908]
    checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
  • replacement in Cargo.lock at line 2728
    [2.663093][3.30393:30411]()
    version = "2.1.1"
    [2.663093]
    [2.663111]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2730
    [2.663176][3.30412:30490]()
    checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
    [2.663176]
    [2.663254]
    checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
  • replacement in Cargo.lock at line 2734
    [2.663289][3.30491:30509]()
    version = "2.1.1"
    [2.663289]
    [2.663307]
    version = "2.2.0"
  • replacement in Cargo.lock at line 2736
    [2.663372][3.30510:30588]()
    checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
    [2.663372]
    [2.663450]
    checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
  • replacement in Cargo.lock at line 2772
    [2.664348][3.30722:30740]()
    version = "1.2.1"
    [2.664348]
    [2.664366]
    version = "1.2.2"
  • replacement in Cargo.lock at line 2774
    [2.664431][3.30741:30819]()
    checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
    [2.664431]
    [2.664509]
    checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
  • replacement in Cargo.lock at line 2807
    [2.664925][3.30939:30958]()
    version = "2.12.1"
    [2.664925]
    [2.664943]
    version = "2.14.0"
  • replacement in Cargo.lock at line 2809
    [2.665008][3.30959:31037]()
    checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
    [2.665008]
    [2.665086]
    checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
  • replacement in Cargo.lock at line 2812
    [2.665118][3.31038:31059]()
    "hashbrown 0.16.1",
    [2.665118]
    [2.665139]
    "hashbrown 0.17.1",
  • edit in Cargo.lock at line 2818
    [10.47395]
    [10.47395]
    name = "indicatif"
    version = "0.17.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
    dependencies = [
    "console",
    "number_prefix",
    "portable-atomic",
    "unicode-segmentation",
    "unicode-width",
    "web-time",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2833
    [10.47412][10.47412:47431]()
    version = "0.11.1"
    [10.47412]
    [10.47431]
    version = "0.11.2"
  • replacement in Cargo.lock at line 2835
    [10.47496][10.47496:47574]()
    checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199"
    [10.47496]
    [10.47574]
    checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1"
  • replacement in Cargo.lock at line 2837
    [10.47591][10.47591:47628]()
    "bitflags 2.10.0",
    "futures-core",
    [10.47591]
    [10.47628]
    "bitflags 2.12.1",
    "futures-util",
  • edit in Cargo.lock at line 2863
    [2.665390]
    [2.665390]
    name = "inout"
    version = "0.2.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7"
    dependencies = [
    "hybrid-array",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2882
    [2.665627][2.665627:665646]()
    version = "2.11.0"
    [2.665627]
    [2.665646]
    version = "2.12.0"
  • replacement in Cargo.lock at line 2884
    [2.665711][2.665711:665789]()
    checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
    [2.665711]
    [2.665789]
    checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
  • edit in Cargo.lock at line 2893
    [3.31349][3.31349:31387](),[3.31387][2.665840:665905](),[2.665840][2.665840:665905](),[2.665905][3.31388:31466](),[3.31466][2.665983:666000](),[2.665983][2.665983:666000](),[2.666000][3.31467:31478](),[3.31478][2.666000:666025](),[2.666000][2.666000:666025]()
    name = "iri-string"
    version = "0.7.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
    dependencies = [
    "memchr",
    "serde",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2918
    [2.666886][3.31677:31696]()
    version = "1.0.15"
    [2.666886]
    [3.31696]
    version = "1.0.18"
  • replacement in Cargo.lock at line 2920
    [3.31761][3.31761:31839]()
    checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
    [3.31761]
    [3.31839]
    checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
  • replacement in Cargo.lock at line 2924
    [3.31866][3.31866:31885]()
    version = "0.2.16"
    [3.31866]
    [3.31885]
    version = "0.2.28"
  • replacement in Cargo.lock at line 2926
    [3.31950][3.31950:32028]()
    checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35"
    [3.31950]
    [3.32028]
    checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102"
  • replacement in Cargo.lock at line 2934
    [3.32129][10.47912:47935]()
    "windows-sys 0.61.2",
    [3.32129]
    [3.32129]
    "windows-link",
  • replacement in Cargo.lock at line 2949
    [3.32165][3.32165:32184]()
    version = "0.2.16"
    [3.32165]
    [2.666905]
    version = "0.2.28"
  • replacement in Cargo.lock at line 2951
    [2.666970][3.32185:32263]()
    checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69"
    [2.666970]
    [3.32263]
    checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47"
  • replacement in Cargo.lock at line 2955
    [3.32306][3.32306:32322]()
    "syn 2.0.111",
    [3.32306]
    [10.48171]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 2985
    [2.667299][3.32445:32464]()
    version = "0.3.82"
    [2.667299]
    [2.667318]
    version = "0.3.99"
  • replacement in Cargo.lock at line 2987
    [2.667383][3.32465:32543]()
    checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
    [2.667383]
    [2.667461]
    checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11"
  • edit in Cargo.lock at line 2989
    [2.667478]
    [2.667478]
    "cfg-if",
    "futures-util",
  • replacement in Cargo.lock at line 2997
    [3.32570][3.32570:32588]()
    version = "3.0.1"
    [3.32570]
    [3.32588]
    version = "3.0.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "35e770254dd7802184595b1d30da2a15cb72569e2aca2b177aef8d22eac8a693"
    [[package]]
    name = "keyring"
    version = "3.6.3"
  • replacement in Cargo.lock at line 3005
    [3.32653][3.32653:32731]()
    checksum = "a3c2a6c0b4b5637c41719973ef40c6a1cf564f9db6958350de6193fbee9c23f5"
    [3.32653]
    [3.32731]
    checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c"
    dependencies = [
    "byteorder",
    "dbus-secret-service",
    "linux-keyutils",
    "log",
    "security-framework 2.11.1",
    "security-framework 3.7.0",
    "windows-sys 0.60.2",
    "zeroize",
    ]
  • replacement in Cargo.lock at line 3048
    [19.13612][19.13612:13624]()
    "socket2",
    [19.13612]
    [19.13624]
    "socket2 0.6.4",
  • replacement in Cargo.lock at line 3055
    [2.667925][10.48600:48620]()
    version = "0.2.185"
    [2.667925]
    [2.667945]
    version = "0.2.186"
  • replacement in Cargo.lock at line 3057
    [2.668010][10.48621:48699]()
    checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f"
    [2.668010]
    [2.668332]
    checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
  • replacement in Cargo.lock at line 3060
    [2.668345][2.668345:668359](),[2.668359][3.32845:32864]()
    name = "libm"
    version = "0.2.15"
    [2.668345]
    [2.668378]
    name = "libdbus-sys"
    version = "0.2.7"
  • replacement in Cargo.lock at line 3063
    [2.668443][3.32865:32943]()
    checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
    [2.668443]
    [2.668521]
    checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043"
    dependencies = [
    "pkg-config",
    ]
  • replacement in Cargo.lock at line 3069
    [2.668534][2.668534:668552](),[2.668552][10.48700:48726]()
    name = "libpijul"
    version = "1.0.0-beta.11"
    [2.668534]
    [2.668578]
    name = "libm"
    version = "0.2.16"
  • replacement in Cargo.lock at line 3072
    [2.668643][10.48727:48805](),[10.48805][2.668721:668764](),[2.668721][2.668721:668764](),[2.668764][3.32944:32962](),[3.32962][10.48806:48826](),[10.48826][2.668795:668854](),[2.668795][2.668795:668854](),[2.668865][2.668865:668879](),[2.668890][2.668890:668910](),[2.668910][10.48827:48854](),[10.48854][2.668931:669022](),[2.668931][2.668931:669022](),[2.669022][3.32963:32984](),[3.32984][2.669043:669070](),[2.669043][2.669043:669070](),[2.669070][10.48855:48879](),[10.48879][2.669086:669108](),[2.669086][2.669086:669108](),[2.669119][3.32985:32999](),[3.32999][10.48880:48903](),[10.48903][2.669150:669199](),[2.669150][2.669150:669199](),[2.669199][10.48904:48919](),[10.48919][2.669214:669316](),[2.669214][2.669214:669316](),[2.669316][10.48920:48957](),[10.48957][2.669353:669387](),[2.669353][2.669353:669387]()
    checksum = "f625e90234ef1fd164dfe7980ffb04a3036a08e31e051cc29e6273a0c9a7a7e7"
    dependencies = [
    "adler32",
    "aes 0.7.5",
    "bincode 1.3.3",
    "bitflags 2.10.0",
    "blake3",
    "bs58 0.4.0",
    "byteorder",
    "canonical-path",
    "chardetng",
    "crossbeam-deque",
    "curve25519-dalek 4.1.3",
    "data-encoding",
    "diffs",
    "ed25519-dalek",
    "encoding_rs",
    "flate2",
    "generic-array",
    "getrandom 0.2.16",
    "hmac 0.11.0",
    "ignore",
    "imara-diff",
    "jiff",
    "log",
    "lru-cache",
    "nom 7.1.3",
    "parking_lot 0.12.5",
    "path-slash",
    "pbkdf2 0.9.0",
    "pijul-macros",
    "rand 0.9.2",
    "regex",
    "sanakirja",
    "serde",
    "serde_derive",
    "serde_json",
    "sha2 0.9.9",
    "tar",
    "tempfile",
    "thiserror 2.0.17",
    "toml 0.8.23",
    "twox-hash",
    "zstd-seekable",
    ]
    [2.668643]
    [2.669387]
    checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
  • replacement in Cargo.lock at line 3076
    [2.669418][3.33000:33019]()
    version = "0.1.10"
    [2.669418]
    [2.669436]
    version = "0.1.17"
  • replacement in Cargo.lock at line 3078
    [2.669501][3.33020:33098]()
    checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
    [2.669501]
    [2.669579]
    checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3"
  • replacement in Cargo.lock at line 3080
    [2.669596][3.33099:33119]()
    "bitflags 2.10.0",
    [2.669596]
    [2.669615]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3082
    [2.669624][3.33120:33145]()
    "redox_syscall 0.5.18",
    [2.669624]
    [2.669648]
    "plain",
    "redox_syscall 0.8.1",
  • replacement in Cargo.lock at line 3100
    [2.669944][3.33146:33173]()
    version = "1.0.0-alpha.68"
    [2.669944]
    [2.669971]
    version = "1.0.0-alpha.71"
  • replacement in Cargo.lock at line 3102
    [2.670036][3.33174:33252]()
    checksum = "b407ca668368d1d5a86cea58ac82d9f9f9ca4bac1e9dce6f16f875f0f081a911"
    [2.670036]
    [2.670114]
    checksum = "cb6314c2f0590ac93c86099b98bb7ba8abcf759bfd89604ffca906472bb54937"
  • replacement in Cargo.lock at line 3105
    [3.33270][3.33270:33290]()
    "bitflags 2.10.0",
    [3.33270]
    [2.670167]
    "bitflags 2.12.1",
  • edit in Cargo.lock at line 3145
    [2.670942]
    [2.670942]
    name = "linux-keyutils"
    version = "0.2.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "83270a18e9f90d0707c41e9f35efada77b64c0e6f3f1810e71c8368a864d5590"
    dependencies = [
    "bitflags 2.12.1",
    "libc",
    ]
    [[package]]
  • replacement in Cargo.lock at line 3162
    [10.49156][3.33365:33384](),[2.670965][3.33365:33384]()
    version = "0.11.0"
    [10.49156]
    [2.670984]
    version = "0.12.1"
  • replacement in Cargo.lock at line 3164
    [2.671049][3.33385:33463]()
    checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
    [2.671049]
    [2.671127]
    checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
  • replacement in Cargo.lock at line 3168
    [2.671157][3.33464:33482]()
    version = "0.8.1"
    [2.671157]
    [2.671175]
    version = "0.8.2"
  • replacement in Cargo.lock at line 3170
    [2.671240][3.33483:33561]()
    checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
    [2.671240]
    [2.671318]
    checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
  • replacement in Cargo.lock at line 3183
    [2.671583][3.33661:33680]()
    version = "0.4.28"
    [2.671583]
    [2.671602]
    version = "0.4.31"
  • replacement in Cargo.lock at line 3185
    [2.671667][3.33681:33759]()
    checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
    [2.671667]
    [2.671745]
    checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f"
  • replacement in Cargo.lock at line 3241
    [3.34114][3.34114:34130]()
    "syn 2.0.111",
    [3.34114]
    [2.672982]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 3275
    [2.674056][3.34363:34384]()
    "thiserror 2.0.17",
    [2.674056]
    [2.674320]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 3280
    [2.674349][2.674349:674368]()
    version = "0.10.6"
    [2.674349]
    [2.674368]
    version = "0.11.0"
  • replacement in Cargo.lock at line 3282
    [2.674433][2.674433:674511]()
    checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
    [2.674433]
    [2.674511]
    checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98"
  • replacement in Cargo.lock at line 3285
    [2.674539][2.674539:674557]()
    "digest 0.10.7",
    [2.674539]
    [2.674557]
    "digest 0.11.3",
  • replacement in Cargo.lock at line 3296
    [2.674775][3.34385:34403]()
    version = "2.7.6"
    [2.674775]
    [2.674793]
    version = "2.8.1"
  • replacement in Cargo.lock at line 3298
    [2.674858][3.34404:34482]()
    checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
    [2.674858]
    [2.674936]
    checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
  • edit in Cargo.lock at line 3301
    [2.674949][2.674949:675178]()
    name = "memmap"
    version = "0.7.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
    dependencies = [
    "libc",
    "winapi",
    ]
    [[package]]
  • replacement in Cargo.lock at line 3302
    [2.675195][3.34483:34501]()
    version = "0.9.9"
    [2.675195]
    [2.675213]
    version = "0.9.10"
  • replacement in Cargo.lock at line 3304
    [2.675278][3.34502:34580]()
    checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490"
    [2.675278]
    [2.675356]
    checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
  • edit in Cargo.lock at line 3316
    [2.675810]
    [2.675810]
    name = "mime_guess"
    version = "2.0.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
    dependencies = [
    "mime",
    "unicase",
    ]
    [[package]]
  • replacement in Cargo.lock at line 3377
    [2.677182][3.35080:35098]()
    version = "1.1.0"
    [2.677182]
    [2.677200]
    version = "1.2.1"
  • replacement in Cargo.lock at line 3379
    [2.677265][3.35099:35177]()
    checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
    [2.677265]
    [2.677343]
    checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
  • replacement in Cargo.lock at line 3388
    [2.677466][3.35241:35260]()
    version = "0.2.14"
    [2.677466]
    [2.677485]
    version = "0.2.18"
  • replacement in Cargo.lock at line 3390
    [2.677550][3.35261:35339]()
    checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
    [2.677550]
    [2.677628]
    checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
  • replacement in Cargo.lock at line 3398
    [2.677721][2.677721:677744]()
    "security-framework",
    [2.677721]
    [2.677744]
    "security-framework 3.7.0",
  • replacement in Cargo.lock at line 3410
    [3.35349][2.677886:677901](),[2.677886][2.677886:677901]()
    "axum-extra",
    [3.35349]
    [2.677901]
    "axum-extra 0.12.6",
  • replacement in Cargo.lock at line 3416
    [2.677987][3.35350:35388]()
    "bincode 1.3.3",
    "bitflags 2.10.0",
    [2.677987]
    [2.678018]
    "bincode",
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3435
    [2.678229][19.13658:13667]()
    "http",
    [2.678229]
    [2.678244]
    "http 1.4.1",
  • replacement in Cargo.lock at line 3438
    [2.678276][19.13668:13678]()
    "hyper",
    [2.678276]
    [2.678292]
    "hyper 1.10.1",
  • edit in Cargo.lock at line 3447
    [10.49205][2.678344:678357](),[2.678344][2.678344:678357]()
    "libpijul",
  • edit in Cargo.lock at line 3452
    [2.678434]
    [2.678434]
    "pijul-core",
  • replacement in Cargo.lock at line 3456
    [2.678482][3.35437:35452]()
    "rand 0.9.2",
    [2.678482]
    [2.678497]
    "rand 0.9.4",
  • replacement in Cargo.lock at line 3468
    [2.678712][3.35453:35474]()
    "thiserror 2.0.17",
    [2.678712]
    [2.678733]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 3474
    [2.678808][3.35475:35490]()
    "toml 0.9.8",
    [2.678808]
    [2.678824]
    "tokio-util",
    "toml 0.9.12+spec-1.1.0",
  • replacement in Cargo.lock at line 3498
    [2.679355][3.35590:35610]()
    "bitflags 2.10.0",
    [2.679355]
    [2.679374]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3550
    [2.680176][2.680176:680194]()
    version = "0.1.0"
    [2.680176]
    [2.680194]
    version = "0.2.2"
  • replacement in Cargo.lock at line 3552
    [2.680259][2.680259:680337]()
    checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
    [2.680259]
    [2.680337]
    checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
  • edit in Cargo.lock at line 3580
    [2.681027]
    [2.681027]
    ]
    [[package]]
    name = "number_prefix"
    version = "0.4.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
    [[package]]
    name = "objc2-core-foundation"
    version = "0.3.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
    dependencies = [
    "bitflags 2.12.1",
    ]
    [[package]]
    name = "objc2-system-configuration"
    version = "0.3.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7216bd11cbda54ccabcab84d523dc93b858ec75ecfb3a7d89513fa22464da396"
    dependencies = [
    "objc2-core-foundation",
  • replacement in Cargo.lock at line 3617
    [2.681509][3.36258:36277]()
    version = "1.21.3"
    [2.681509]
    [3.36277]
    version = "1.21.4"
  • replacement in Cargo.lock at line 3619
    [3.36342][3.36342:36420]()
    checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
    [3.36342]
    [3.36420]
    checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
  • replacement in Cargo.lock at line 3629
    [2.681698][3.36560:36578]()
    version = "6.5.1"
    [2.681698]
    [2.681716]
    version = "6.5.3"
  • replacement in Cargo.lock at line 3631
    [2.681781][3.36579:36657]()
    checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0"
    [2.681781]
    [2.681859]
    checksum = "0cc3cbf698f9438986c11a880c90a6d04b9de27575afd28bbf45b154b6c709e2"
  • replacement in Cargo.lock at line 3633
    [2.681876][3.36658:36678]()
    "bitflags 2.10.0",
    [2.681876]
    [2.681895]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3641
    [2.681964][3.36679:36698]()
    version = "69.9.1"
    [2.681964]
    [2.681983]
    version = "69.9.3"
  • replacement in Cargo.lock at line 3643
    [2.682048][3.36699:36777]()
    checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc"
    [2.682048]
    [2.682126]
    checksum = "1e68317604e77e53b85896388e1a803c1d21b74c899ec9e5e1112db90735edd7"
  • replacement in Cargo.lock at line 3657
    [2.682393][3.36778:36798]()
    version = "0.10.75"
    [2.682393]
    [2.682413]
    version = "0.10.80"
  • replacement in Cargo.lock at line 3659
    [2.682478][3.36799:36877]()
    checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
    [2.682478]
    [2.682556]
    checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967"
  • replacement in Cargo.lock at line 3661
    [2.682573][3.36878:36898]()
    "bitflags 2.10.0",
    [2.682573]
    [2.682592]
    "bitflags 2.12.1",
  • edit in Cargo.lock at line 3665
    [2.682630][2.682630:682644]()
    "once_cell",
  • replacement in Cargo.lock at line 3677
    [2.682922][3.36899:36915]()
    "syn 2.0.111",
    [2.682922]
    [2.682937]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 3682
    [2.682975][2.682975:682993]()
    version = "0.1.6"
    [2.682975]
    [2.682993]
    version = "0.2.1"
  • replacement in Cargo.lock at line 3684
    [2.683058][2.683058:683136]()
    checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
    [2.683058]
    [2.683136]
    checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
  • replacement in Cargo.lock at line 3688
    [2.683170][3.36916:36936]()
    version = "0.9.111"
    [2.683170]
    [2.683190]
    version = "0.9.116"
  • replacement in Cargo.lock at line 3690
    [2.683255][3.36937:37015]()
    checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
    [2.683255]
    [2.683333]
    checksum = "f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4"
  • replacement in Cargo.lock at line 3712
    [3.37239][3.37239:37257]()
    version = "4.2.3"
    [3.37239]
    [3.37257]
    version = "4.3.0"
  • replacement in Cargo.lock at line 3714
    [3.37322][3.37322:37400]()
    checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52"
    [3.37322]
    [3.37400]
    checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d"
  • replacement in Cargo.lock at line 3718
    [3.37439][3.37439:37457]()
    version = "2.1.3"
    [3.37439]
    [3.37457]
    version = "2.3.1"
  • replacement in Cargo.lock at line 3720
    [3.37522][3.37522:37600]()
    checksum = "f978be538ca5e2a64326d24b7991dc658cc8495132833ae387212ab3b8abd70a"
    [3.37522]
    [3.37600]
    checksum = "abb7a1163a5501f935f8722d839b576491b749c695e7a066aa0b8df988b806df"
  • edit in Cargo.lock at line 3722
    [3.37617][3.37617:37635]()
    "bincode 2.0.1",
  • replacement in Cargo.lock at line 3723
    [3.37646][3.37646:37660]()
    "nom 8.0.0",
    [3.37646]
    [3.37660]
    "postcard",
  • replacement in Cargo.lock at line 3727
    [3.37700][3.37700:37730]()
    "thiserror 2.0.17",
    "time",
    [3.37700]
    [3.37730]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 3732
    [3.37765][3.37765:37783]()
    version = "2.6.0"
    [3.37765]
    [3.37783]
    version = "2.7.1"
  • replacement in Cargo.lock at line 3734
    [3.37848][3.37848:37926]()
    checksum = "f02105a875f3751a0b44b4c822b01177728dd9049ae6fb419e9b04887d730ed1"
    [3.37848]
    [3.37926]
    checksum = "4356a61f2ed4c9b3610245215fbf48970eb277126919f87db9d0efa93a74245c"
  • replacement in Cargo.lock at line 3740
    [3.38004][3.38004:38025]()
    "thiserror 2.0.17",
    [3.38004]
    [3.38025]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 3747
    [3.38098][3.38098:38116]()
    version = "2.6.0"
    [3.38098]
    [3.38116]
    version = "2.7.1"
  • replacement in Cargo.lock at line 3749
    [3.38181][3.38181:38259]()
    checksum = "003b4612827f6501183873fb0735da92157e3c7daa71c40921c7d2758fec2229"
    [3.38181]
    [3.38259]
    checksum = "b237422b014f8f8fff75bb9379e697d13f8d57551a22c88bebb39f073c1bf696"
  • replacement in Cargo.lock at line 3753
    [3.38302][3.38302:38318]()
    "syn 2.0.111",
    [3.38302]
    [3.38318]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 3775
    [3.38837][3.38837:38857]()
    "bitflags 2.10.0",
    [3.38837]
    [3.38857]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3795
    [3.39267][3.39267:39283]()
    "syn 2.0.111",
    [3.39267]
    [3.39283]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 3816
    [3.39773][3.39773:39793]()
    "bitflags 2.10.0",
    [3.39773]
    [3.39793]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3940
    [3.42506][3.42506:42526]()
    "bitflags 2.10.0",
    [3.42506]
    [3.42526]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3963
    [3.42984][3.42984:43004]()
    "bitflags 2.10.0",
    [3.42984]
    [3.43004]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 3996
    [3.43585][3.43585:43603]()
    version = "6.0.1"
    [3.43585]
    [3.43603]
    version = "6.1.1"
  • replacement in Cargo.lock at line 3998
    [3.43668][3.43668:43746]()
    checksum = "36801dbbd025f2fa133367494e38eef75a53d334ae6746ba0c889fc4e76fa3a3"
    [3.43668]
    [3.43746]
    checksum = "6d378eb8bad20e89d66276aebab51f6a5408571092cac94abdd3eabb773713d6"
  • replacement in Cargo.lock at line 4026
    [3.44355][3.44355:44375]()
    "bitflags 2.10.0",
    [3.44355]
    [3.44375]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 4064
    [2.683993][3.45049:45069]()
    "bitflags 2.10.0",
    [2.683993]
    [3.45069]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 4259
    [2.688843][2.688843:688858]()
    "rand 0.8.5",
    [2.688843]
    [2.688858]
    "rand 0.8.6",
  • replacement in Cargo.lock at line 4269
    [2.689097][2.689097:689112]()
    "rand 0.8.5",
    [2.689097]
    [2.689112]
    "rand 0.8.6",
  • replacement in Cargo.lock at line 4292
    [2.689399][3.46151:46167]()
    "syn 2.0.111",
    [2.689399]
    [3.46167]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 4305
    [3.46454][3.46454:46470]()
    "syn 2.0.111",
    [3.46454]
    [2.689414]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 4323
    [2.689863][2.689863:689883]()
    "siphasher 1.0.1",
    [2.689863]
    [2.689883]
    "siphasher 1.0.3",
  • replacement in Cargo.lock at line 4332
    [3.46670][3.46670:46690]()
    "siphasher 1.0.1",
    [3.46670]
    [3.46690]
    "siphasher 1.0.3",
    ]
    [[package]]
    name = "pijul-config"
    version = "1.0.0-beta.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7920c9e7135f08f267de8539865c6a384a93613a64039afef51d7c6baa3fae72"
    dependencies = [
    "anyhow",
    "dialoguer",
    "dirs-next",
    "figment",
    "log",
    "pijul-core",
    "serde",
    "serde_derive",
    "toml 0.8.23",
    "whoami 1.6.1",
    ]
    [[package]]
    name = "pijul-core"
    version = "1.0.0-beta.14"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9e70164a087ed87f9ebda06a590afbe2443d5402c32fe66c0fe9e396de25a026"
    dependencies = [
    "adler32",
    "aes 0.9.1",
    "bincode",
    "bitflags 2.12.1",
    "blake3",
    "bs58 0.4.0",
    "byteorder",
    "canonical-path",
    "chardetng",
    "crossbeam-deque",
    "ctr 0.10.1",
    "curve25519-dalek 4.1.3",
    "data-encoding",
    "diffs",
    "ed25519-dalek",
    "encoding_rs",
    "flate2",
    "generic-array",
    "getrandom 0.2.17",
    "hmac 0.11.0",
    "ignore",
    "imara-diff",
    "jiff",
    "log",
    "lru-cache",
    "nom 7.1.3",
    "parking_lot 0.12.5",
    "path-slash",
    "pbkdf2 0.9.0",
    "pijul-macros",
    "rand 0.10.1",
    "regex",
    "sanakirja",
    "serde",
    "serde_derive",
    "serde_json",
    "sha2 0.9.9",
    "tar",
    "tempfile",
    "thiserror 2.0.18",
    "toml 0.8.23",
    "twox-hash",
    "zstd-seekable",
  • edit in Cargo.lock at line 4410
    [2.689981]
    [2.689981]
    ]
    [[package]]
    name = "pijul-identity"
    version = "1.0.0-beta.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f1fc424f2842866a9c434fedc515b92bdf0fe50c2b2ce39c27fa527975612717"
    dependencies = [
    "anyhow",
    "dirs-next",
    "jiff",
    "keyring",
    "log",
    "pijul-config",
    "pijul-core",
    "pijul-interaction",
    "serde",
    "serde_derive",
    "serde_json",
    "thiserror 2.0.18",
    "thrussh-keys",
    "toml 0.8.23",
    "validator",
    "whoami 1.6.1",
  • edit in Cargo.lock at line 4437
    [2.689996]
    [2.689996]
    name = "pijul-interaction"
    version = "1.0.0-beta.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "4787fd3e8d03df9f8e159690460d166a9a0578f5196b48cf5d81cc9b6253abcf"
    dependencies = [
    "dialoguer",
    "duplicate",
    "indicatif",
    "log",
    "pijul-config",
    "thiserror 2.0.18",
    ]
    [[package]]
  • replacement in Cargo.lock at line 4452
    [2.690018][10.49304:49330]()
    version = "1.0.0-beta.11"
    [2.690018]
    [2.690036]
    version = "1.0.0-beta.13"
  • replacement in Cargo.lock at line 4454
    [2.690101][10.49331:49409]()
    checksum = "a794a27eb67b7ae7f940c4b94e186a58a525f87d11de1c1a0e317c9b7aafb163"
    [2.690101]
    [2.690179]
    checksum = "97375a282175b20c2f2bd2ae73c106a3c9ffc3d36e81c56e08ee8c87e204a588"
  • replacement in Cargo.lock at line 4458
    [2.690222][10.49410:49426]()
    "syn 2.0.111",
    [2.690222]
    [2.690248]
    "syn 2.0.117",
    ]
    [[package]]
    name = "pijul-remote"
    version = "1.0.0-beta.14"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1161f7ea30608aa03ba7b3db3eaa91e810e33679dfa9b7dd74599b37d02e4b03"
    dependencies = [
    "anyhow",
    "byteorder",
    "bytes",
    "dirs-next",
    "futures",
    "futures-util",
    "keyring",
    "log",
    "pijul-config",
    "pijul-core",
    "pijul-identity",
    "pijul-interaction",
    "pijul-repository",
    "regex",
    "reqwest",
    "sanakirja",
    "serde",
    "serde_derive",
    "serde_json",
    "thrussh",
    "thrussh-config",
    "thrussh-keys",
    "tokio",
    "url",
    ]
    [[package]]
    name = "pijul-repository"
    version = "1.0.0-beta.13"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "74d10e411ec5dc5255614df7f569068a5f9056c439beffd3c790041ed95451af"
    dependencies = [
    "anyhow",
    "log",
    "pijul-config",
    "pijul-core",
    "rlimit",
    "toml 0.8.23",
  • replacement in Cargo.lock at line 4509
    [2.690284][3.46706:46725]()
    version = "1.1.10"
    [2.690284]
    [2.690302]
    version = "1.1.13"
  • replacement in Cargo.lock at line 4511
    [2.690367][3.46726:46804]()
    checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
    [2.690367]
    [2.690445]
    checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924"
  • replacement in Cargo.lock at line 4518
    [2.690532][3.46805:46824]()
    version = "1.1.10"
    [2.690532]
    [2.690550]
    version = "1.1.13"
  • replacement in Cargo.lock at line 4520
    [2.690615][3.46825:46903]()
    checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
    [2.690615]
    [2.690693]
    checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b"
  • replacement in Cargo.lock at line 4524
    [2.690736][3.46904:46920]()
    "syn 2.0.111",
    [2.690736]
    [2.690751]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 4529
    [2.690792][2.690792:690811]()
    version = "0.2.16"
    [2.690792]
    [2.690811]
    version = "0.2.17"
  • replacement in Cargo.lock at line 4531
    [2.690876][2.690876:690954]()
    checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
    [2.690876]
    [2.690954]
    checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
  • replacement in Cargo.lock at line 4534
    [2.690967][2.690967:691004]()
    name = "pin-utils"
    version = "0.1.0"
    [2.690967]
    [2.691004]
    name = "pkg-config"
    version = "0.3.33"
  • replacement in Cargo.lock at line 4537
    [2.691069][2.691069:691147]()
    checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
    [2.691069]
    [2.691147]
    checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
  • replacement in Cargo.lock at line 4540
    [2.691160][2.691160:691180](),[2.691180][3.46921:46940]()
    name = "pkg-config"
    version = "0.3.32"
    [2.691160]
    [2.691199]
    name = "plain"
    version = "0.2.3"
  • replacement in Cargo.lock at line 4543
    [2.691264][3.46941:47019]()
    checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
    [2.691264]
    [2.691342]
    checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
  • replacement in Cargo.lock at line 4547
    [2.691370][3.47020:47038]()
    version = "1.8.0"
    [2.691370]
    [2.691388]
    version = "1.9.0"
  • replacement in Cargo.lock at line 4549
    [2.691453][3.47039:47117]()
    checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
    [2.691453]
    [2.691531]
    checksum = "092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1"
  • replacement in Cargo.lock at line 4565
    [2.691833][2.691833:691849]()
    "cpufeatures",
    [2.691833]
    [2.691849]
    "cpufeatures 0.2.17",
  • replacement in Cargo.lock at line 4572
    [3.47158][3.47158:47177]()
    version = "1.11.1"
    [3.47158]
    [3.47177]
    version = "1.13.1"
  • replacement in Cargo.lock at line 4574
    [3.47242][3.47242:47320]()
    checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
    [3.47242]
    [3.47320]
    checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
  • replacement in Cargo.lock at line 4578
    [3.47363][3.47363:47381]()
    version = "0.2.4"
    [3.47363]
    [3.47381]
    version = "0.2.7"
  • replacement in Cargo.lock at line 4580
    [3.47446][3.47446:47524]()
    checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
    [3.47446]
    [3.47524]
    checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
  • replacement in Cargo.lock at line 4586
    [2.691900][2.691900:691925](),[2.691925][3.47562:47580]()
    name = "postgres-derive"
    version = "0.4.7"
    [2.691900]
    [2.691943]
    name = "postcard"
    version = "1.1.3"
  • replacement in Cargo.lock at line 4589
    [2.692008][3.47581:47659]()
    checksum = "56df96f5394370d1b20e49de146f9e6c25aa9ae750f449c9d665eafecb3ccae6"
    [2.692008]
    [2.692086]
    checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24"
  • replacement in Cargo.lock at line 4591
    [2.692103][2.692103:692144](),[2.692144][3.47660:47676]()
    "heck 0.5.0",
    "proc-macro2",
    "quote",
    "syn 2.0.111",
    [2.692103]
    [2.692159]
    "cobs",
    "embedded-io 0.4.0",
    "embedded-io 0.6.1",
    "serde",
  • edit in Cargo.lock at line 4598
    [2.692174][2.692174:692200](),[2.692200][3.47677:47695](),[3.47695][2.692218:692283](),[2.692218][2.692218:692283](),[2.692283][3.47696:47774](),[3.47774][2.692361:692452](),[2.692361][2.692361:692452]()
    name = "postgres-openssl"
    version = "0.5.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "8f86f073ad570f76e9e278ce6f05775fc723eed7daa6b4f9c2aa078080a564a0"
    dependencies = [
    "openssl",
    "tokio",
    "tokio-openssl",
    "tokio-postgres",
    ]
    [[package]]
  • replacement in Cargo.lock at line 4599
    [2.692479][3.47775:47793]()
    version = "0.6.9"
    [2.692479]
    [2.692497]
    version = "0.6.11"
  • replacement in Cargo.lock at line 4601
    [2.692562][3.47794:47872]()
    checksum = "fbef655056b916eb868048276cfd5d6a7dea4f81560dfd047f97c8c6fe3fcfd4"
    [2.692562]
    [2.692640]
    checksum = "56201207dac53e2f38e848e31b4b91616a6bb6e0c7205b77718994a7f49e70fc"
  • replacement in Cargo.lock at line 4607
    [2.692721][2.692721:692737]()
    "hmac 0.12.1",
    [2.692721]
    [19.13691]
    "hmac 0.13.0",
  • replacement in Cargo.lock at line 4610
    [2.692764][3.47873:47904]()
    "rand 0.9.2",
    "sha2 0.10.9",
    [2.692764]
    [2.692795]
    "rand 0.10.1",
    "sha2 0.11.0",
  • replacement in Cargo.lock at line 4617
    [2.692849][3.47905:47924]()
    version = "0.2.11"
    [2.692849]
    [2.692867]
    version = "0.2.13"
  • replacement in Cargo.lock at line 4619
    [2.692932][3.47925:48003]()
    checksum = "ef4605b7c057056dd35baeb6ac0c0338e4975b1f2bef0f65da953285eb007095"
    [2.692932]
    [2.693010]
    checksum = "8dc729a129e682e8d24170cd30ae1aa01b336b096cbb56df6d534ffec133d186"
  • edit in Cargo.lock at line 4622
    [2.693037][2.693037:693048]()
    "chrono",
  • edit in Cargo.lock at line 4623
    [2.693070][2.693070:693090]()
    "postgres-derive",
  • edit in Cargo.lock at line 4624
    [2.693112][2.693112:693121]()
    "uuid",
  • replacement in Cargo.lock at line 4628
    [3.48027][3.48027:48045]()
    version = "0.1.4"
    [3.48027]
    [3.48045]
    version = "0.1.5"
  • replacement in Cargo.lock at line 4630
    [3.48110][3.48110:48188]()
    checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
    [3.48110]
    [3.48188]
    checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
  • replacement in Cargo.lock at line 4663
    [4.11528][4.11528:11544]()
    "syn 2.0.111",
    [4.11528]
    [4.11544]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 4678
    [2.694258][3.48444:48464]()
    version = "1.0.103"
    [2.694258]
    [2.694277]
    version = "1.0.106"
  • replacement in Cargo.lock at line 4680
    [2.694342][3.48465:48543]()
    checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
    [2.694342]
    [2.694420]
    checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
  • edit in Cargo.lock at line 4686
    [2.694470]
    [2.694470]
    name = "proc-macro2-diagnostics"
    version = "0.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn 2.0.117",
    "version_check",
    ]
    [[package]]
  • replacement in Cargo.lock at line 4719
    [2.694985][3.48544:48563]()
    version = "0.13.0"
    [2.694985]
    [2.695004]
    version = "0.13.4"
  • replacement in Cargo.lock at line 4721
    [2.695069][3.48564:48642]()
    checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0"
    [2.695069]
    [2.695147]
    checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e"
  • replacement in Cargo.lock at line 4723
    [2.695164][3.48643:48663]()
    "bitflags 2.10.0",
    [2.695164]
    [2.695183]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 4738
    [2.695484][3.48664:48683]()
    version = "0.38.4"
    [2.695484]
    [2.695503]
    version = "0.39.4"
  • replacement in Cargo.lock at line 4740
    [2.695568][3.48684:48762]()
    checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
    [2.695568]
    [2.695646]
    checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e"
  • replacement in Cargo.lock at line 4747
    [2.695704][3.48763:48782]()
    version = "1.0.42"
    [2.695704]
    [2.695723]
    version = "1.0.45"
  • replacement in Cargo.lock at line 4749
    [2.695788][3.48783:48861]()
    checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
    [2.695788]
    [2.695866]
    checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
  • edit in Cargo.lock at line 4767
    [3.49051]
    [2.695914]
    name = "r-efi"
    version = "6.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
    [[package]]
  • replacement in Cargo.lock at line 4804
    [2.696674][2.696674:696692]()
    version = "0.8.5"
    [2.696674]
    [2.696692]
    version = "0.8.6"
  • replacement in Cargo.lock at line 4806
    [2.696757][2.696757:696835]()
    checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
    [2.696757]
    [2.696835]
    checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
  • replacement in Cargo.lock at line 4815
    [2.696932][3.49076:49094]()
    version = "0.9.2"
    [2.696932]
    [2.696950]
    version = "0.9.4"
  • replacement in Cargo.lock at line 4817
    [2.697015][3.49095:49173]()
    checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
    [2.697015]
    [2.697093]
    checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
  • replacement in Cargo.lock at line 4820
    [2.697132][3.49174:49194]()
    "rand_core 0.9.3",
    [2.697132]
    [2.697172]
    "rand_core 0.9.5",
    ]
    [[package]]
    name = "rand"
    version = "0.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
    dependencies = [
    "chacha20",
    "getrandom 0.4.2",
    "rand_core 0.10.1",
  • replacement in Cargo.lock at line 4861
    [2.697899][3.49195:49215]()
    "rand_core 0.9.3",
    [2.697899]
    [2.697919]
    "rand_core 0.9.5",
  • replacement in Cargo.lock at line 4879
    [2.698364][3.49216:49237]()
    "getrandom 0.2.16",
    [2.698364]
    [2.698385]
    "getrandom 0.2.17",
  • replacement in Cargo.lock at line 4884
    [2.698419][3.49238:49256]()
    version = "0.9.3"
    [2.698419]
    [2.698437]
    version = "0.9.5"
  • replacement in Cargo.lock at line 4886
    [2.698502][3.49257:49335]()
    checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
    [2.698502]
    [2.698580]
    checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
  • edit in Cargo.lock at line 4890
    [2.698639]
    [2.698639]
    [[package]]
    name = "rand_core"
    version = "0.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
  • replacement in Cargo.lock at line 4908
    [2.698897][3.49357:49376]()
    version = "1.11.0"
    [2.698897]
    [2.698916]
    version = "1.12.0"
  • replacement in Cargo.lock at line 4910
    [2.698981][3.49377:49455]()
    checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
    [2.698981]
    [2.699059]
    checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
  • replacement in Cargo.lock at line 4941
    [2.699808][3.49654:49674]()
    "bitflags 2.10.0",
    [2.699808]
    [2.699827]
    "bitflags 2.12.1",
    ]
    [[package]]
    name = "redox_syscall"
    version = "0.8.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7"
    dependencies = [
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 4959
    [2.700041][3.49675:49696]()
    "getrandom 0.2.16",
    [2.700041]
    [2.700062]
    "getrandom 0.2.17",
  • replacement in Cargo.lock at line 4966
    [2.700126][3.49697:49716]()
    version = "1.12.2"
    [2.700126]
    [2.700145]
    version = "1.12.3"
  • replacement in Cargo.lock at line 4968
    [2.700210][3.49717:49795]()
    checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
    [2.700210]
    [2.700288]
    checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
  • replacement in Cargo.lock at line 4978
    [2.700426][3.49851:49870]()
    version = "0.4.13"
    [2.700426]
    [2.700445]
    version = "0.4.14"
  • replacement in Cargo.lock at line 4980
    [2.700510][3.49871:49949]()
    checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
    [2.700510]
    [2.700588]
    checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
  • replacement in Cargo.lock at line 4989
    [2.700940][3.49986:50004]()
    version = "0.8.8"
    [2.700940]
    [2.700959]
    version = "0.8.10"
  • replacement in Cargo.lock at line 4991
    [2.701024][3.50005:50083]()
    checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
    [2.701024]
    [2.701102]
    checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
  • edit in Cargo.lock at line 5006
    [2.701588][3.50084:50102](),[3.50102][2.701600:701670](),[2.701600][2.701600:701670]()
    "bincode 2.0.1",
    "byteorder",
    "bytes",
    "clap",
    "deadpool-postgres",
    "env_logger",
  • replacement in Cargo.lock at line 5007
    [2.701682][2.701682:701804](),[2.701804][3.50103:50118](),[3.50118][2.701819:701829](),[2.701819][2.701819:701829]()
    "indexmap",
    "lazy_static",
    "libc",
    "libpijul",
    "log",
    "memmap",
    "openssl",
    "postgres-openssl",
    "postgres-types",
    "rand 0.9.2",
    "regex",
    [2.701682]
    [2.701829]
    "pijul-core",
  • replacement in Cargo.lock at line 5010
    [2.701856][3.50119:50140]()
    "thiserror 2.0.17",
    [2.701856]
    [2.701877]
    "thiserror 1.0.69",
  • edit in Cargo.lock at line 5012
    [2.701887][2.701887:701924](),[2.701924][3.50141:50156]()
    "tokio-openssl",
    "tokio-postgres",
    "toml 0.9.8",
  • edit in Cargo.lock at line 5013
    [2.701949][2.701949:701960]()
    "webpki",
  • replacement in Cargo.lock at line 5017
    [2.701992][3.50157:50177]()
    version = "0.12.24"
    [2.701992]
    [2.702012]
    version = "0.11.27"
  • replacement in Cargo.lock at line 5019
    [2.702077][3.50178:50256]()
    checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
    [2.702077]
    [2.702155]
    checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
  • replacement in Cargo.lock at line 5021
    [2.702172][2.702172:702190]()
    "base64 0.22.1",
    [2.702172]
    [2.702190]
    "base64 0.21.7",
  • replacement in Cargo.lock at line 5025
    [2.702233][19.13902:13932](),[19.13932][2.702298:702317](),[2.702298][2.702298:702317](),[2.702317][19.13933:13943](),[19.13943][2.702333:702350](),[3.50303][2.702333:702350](),[2.702333][2.702333:702350]()
    "h2",
    "http",
    "http-body",
    "http-body-util",
    "hyper",
    "hyper-rustls",
    [2.702233]
    [19.13944]
    "futures-util",
    "h2 0.3.27",
    "http 0.2.12",
    "http-body 0.4.6",
    "hyper 0.14.32",
  • replacement in Cargo.lock at line 5031
    [19.13958][2.702370:702385](),[2.702370][2.702370:702385]()
    "hyper-util",
    [19.13958]
    [2.702395]
    "ipnet",
  • edit in Cargo.lock at line 5036
    [2.702438]
    [2.702452]
    "once_cell",
  • replacement in Cargo.lock at line 5039
    [2.702494][3.50304:50325]()
    "rustls-pki-types",
    [2.702494]
    [2.702513]
    "rustls-pemfile 1.0.4",
  • replacement in Cargo.lock at line 5043
    [2.702559][2.702559:702576]()
    "sync_wrapper",
    [2.702559]
    [2.702601]
    "sync_wrapper 0.1.2",
    "system-configuration",
  • replacement in Cargo.lock at line 5047
    [2.702632][3.50326:50351]()
    "tower",
    "tower-http",
    [2.702632]
    [2.702648]
    "tokio-util",
  • edit in Cargo.lock at line 5052
    [2.702716]
    [2.702716]
    "wasm-streams",
  • edit in Cargo.lock at line 5054
    [2.702728]
    [2.702749]
    "winreg",
  • replacement in Cargo.lock at line 5065
    [2.702975][3.50452:50473]()
    "getrandom 0.2.16",
    [2.702975]
    [2.702996]
    "getrandom 0.2.17",
  • replacement in Cargo.lock at line 5073
    [2.703080][2.703080:703099]()
    version = "0.7.45"
    [2.703080]
    [2.703099]
    version = "0.7.46"
  • replacement in Cargo.lock at line 5075
    [2.703164][2.703164:703242]()
    checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b"
    [2.703164]
    [2.703242]
    checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1"
  • replacement in Cargo.lock at line 5091
    [2.703422][2.703422:703441]()
    version = "0.7.45"
    [2.703422]
    [2.703441]
    version = "0.7.46"
  • replacement in Cargo.lock at line 5093
    [2.703506][2.703506:703584]()
    checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0"
    [2.703506]
    [2.703584]
    checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5"
  • edit in Cargo.lock at line 5098
    [2.703643]
    [2.705248]
    ]
    [[package]]
    name = "rlimit"
    version = "0.10.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7043b63bd0cd1aaa628e476b80e6d4023a3b50eb32789f2728908107bd0c793a"
    dependencies = [
    "libc",
  • replacement in Cargo.lock at line 5111
    [2.705676][2.705676:705694]()
    version = "2.1.1"
    [2.705482]
    [2.705694]
    version = "2.1.2"
  • replacement in Cargo.lock at line 5113
    [2.705759][2.705759:705837]()
    checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
    [2.705759]
    [2.705837]
    checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
  • replacement in Cargo.lock at line 5139
    [10.49607][10.49607:49627]()
    "bitflags 2.10.0",
    [10.49607]
    [10.49627]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 5143
    [10.49671][10.49671:49694]()
    "windows-sys 0.52.0",
    [10.49671]
    [10.49694]
    "windows-sys 0.59.0",
  • replacement in Cargo.lock at line 5148
    [10.49725][3.50489:50507](),[2.706320][3.50489:50507]()
    version = "1.1.2"
    [10.49725]
    [2.706340]
    version = "1.1.4"
  • replacement in Cargo.lock at line 5150
    [2.706405][3.50508:50586]()
    checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
    [2.706405]
    [2.706483]
    checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
  • replacement in Cargo.lock at line 5152
    [2.706500][3.50587:50607]()
    "bitflags 2.10.0",
    [2.706500]
    [2.706519]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 5155
    [2.706538][10.49726:49751]()
    "linux-raw-sys 0.11.0",
    [2.706538]
    [3.50608]
    "linux-raw-sys 0.12.1",
  • replacement in Cargo.lock at line 5161
    [2.706610][3.50632:50652]()
    version = "0.23.35"
    [2.706610]
    [2.706630]
    version = "0.23.40"
  • replacement in Cargo.lock at line 5163
    [2.706695][3.50653:50731]()
    checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
    [2.706695]
    [2.706773]
    checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b"
  • edit in Cargo.lock at line 5171
    [2.706880]
    [2.706880]
    ]
    [[package]]
    name = "rustls-pemfile"
    version = "1.0.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
    dependencies = [
    "base64 0.21.7",
  • replacement in Cargo.lock at line 5193
    [2.707159][3.50732:50751]()
    version = "1.13.0"
    [2.707159]
    [2.707178]
    version = "1.14.1"
  • replacement in Cargo.lock at line 5195
    [2.707243][3.50752:50830]()
    checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
    [2.707243]
    [3.50830]
    checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9"
  • replacement in Cargo.lock at line 5202
    [2.707357][3.50862:50882]()
    version = "0.103.8"
    [2.707357]
    [2.707377]
    version = "0.103.13"
  • replacement in Cargo.lock at line 5204
    [2.707442][3.50883:50961]()
    checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
    [2.707442]
    [2.707520]
    checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
  • replacement in Cargo.lock at line 5220
    [2.707819][3.51061:51080]()
    version = "1.0.20"
    [2.707819]
    [2.707838]
    version = "1.0.23"
  • replacement in Cargo.lock at line 5222
    [2.707903][3.51081:51159]()
    checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
    [2.707903]
    [2.707981]
    checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
  • replacement in Cargo.lock at line 5262
    [2.708814][3.51160:51179]()
    version = "0.1.28"
    [2.708814]
    [2.708833]
    version = "0.1.29"
  • replacement in Cargo.lock at line 5264
    [2.708898][3.51180:51258]()
    checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
    [2.708898]
    [2.708976]
    checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
  • replacement in Cargo.lock at line 5305
    [2.710108][3.51307:51327](),[3.51327][2.710127:710147](),[2.710127][2.710127:710147]()
    "bitflags 2.10.0",
    "core-foundation",
    [2.710108]
    [2.710147]
    "bitflags 2.12.1",
    "core-foundation 0.9.4",
    "core-foundation-sys",
    "libc",
    "security-framework-sys",
    ]
    [[package]]
    name = "security-framework"
    version = "3.7.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
    dependencies = [
    "bitflags 2.12.1",
    "core-foundation 0.10.1",
  • replacement in Cargo.lock at line 5327
    [2.710254][3.51328:51347]()
    version = "2.15.0"
    [2.710254]
    [2.710273]
    version = "2.17.0"
  • replacement in Cargo.lock at line 5329
    [2.710338][3.51348:51426]()
    checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
    [2.710338]
    [2.710416]
    checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
  • replacement in Cargo.lock at line 5337
    [3.51459][3.51459:51477]()
    version = "1.2.1"
    [3.51459]
    [3.51477]
    version = "1.2.2"
  • replacement in Cargo.lock at line 5339
    [3.51542][3.51542:51620]()
    checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33"
    [3.51542]
    [2.710468]
    checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"
  • replacement in Cargo.lock at line 5343
    [2.710497][3.51621:51640]()
    version = "1.0.27"
    [2.710497]
    [3.51640]
    version = "1.0.28"
  • replacement in Cargo.lock at line 5345
    [3.51705][3.51705:51783]()
    checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
    [3.51705]
    [3.51783]
    checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
  • replacement in Cargo.lock at line 5409
    [2.711592][3.52804:52820]()
    "syn 2.0.111",
    [2.711592]
    [2.711607]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 5414
    [2.711642][3.52821:52841]()
    version = "1.0.145"
    [2.711642]
    [2.711662]
    version = "1.0.150"
  • replacement in Cargo.lock at line 5416
    [2.711727][3.52842:52920]()
    checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
    [2.711727]
    [2.711805]
    checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
  • edit in Cargo.lock at line 5420
    [2.711842][2.711842:711850]()
    "ryu",
  • edit in Cargo.lock at line 5422
    [3.52936]
    [2.711860]
    "zmij",
  • replacement in Cargo.lock at line 5447
    [2.712140][3.53052:53070]()
    version = "1.0.3"
    [2.712140]
    [2.712158]
    version = "1.1.1"
  • replacement in Cargo.lock at line 5449
    [2.712223][3.53071:53149]()
    checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
    [2.712223]
    [2.712301]
    checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
  • replacement in Cargo.lock at line 5473
    [2.712813][2.712813:712829]()
    "cpufeatures",
    [2.712813]
    [2.712829]
    "cpufeatures 0.2.17",
  • replacement in Cargo.lock at line 5485
    [2.713088][2.713088:713104]()
    "cpufeatures",
    [2.713088]
    [2.713104]
    "cpufeatures 0.2.17",
  • replacement in Cargo.lock at line 5497
    [2.713357][2.713357:713373]()
    "cpufeatures",
    [2.713357]
    [2.713373]
    "cpufeatures 0.2.17",
  • edit in Cargo.lock at line 5502
    [2.713406]
    [2.713406]
    name = "sha2"
    version = "0.11.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
    dependencies = [
    "cfg-if",
    "cpufeatures 0.3.0",
    "digest 0.11.3",
    ]
    [[package]]
  • edit in Cargo.lock at line 5522
    [2.713637]
    [2.713637]
    name = "shell-words"
    version = "1.1.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77"
    [[package]]
  • replacement in Cargo.lock at line 5529
    [2.713652][2.713652:713670]()
    version = "1.3.0"
    [2.713652]
    [2.713670]
    version = "2.0.1"
  • replacement in Cargo.lock at line 5531
    [2.713735][2.713735:713813]()
    checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
    [2.713735]
    [2.713813]
    checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
  • replacement in Cargo.lock at line 5535
    [2.713856][3.53265:53283]()
    version = "1.4.7"
    [2.713856]
    [2.713874]
    version = "1.4.8"
  • replacement in Cargo.lock at line 5537
    [2.713939][3.53284:53362]()
    checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad"
    [2.713939]
    [2.714017]
    checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
  • edit in Cargo.lock at line 5539
    [2.714034]
    [2.714034]
    "errno",
  • replacement in Cargo.lock at line 5560
    [3.53416][3.53416:53434]()
    version = "0.3.7"
    [3.53416]
    [3.53434]
    version = "0.3.9"
  • replacement in Cargo.lock at line 5562
    [3.53499][3.53499:53577]()
    checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
    [3.53499]
    [2.714468]
    checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
  • replacement in Cargo.lock at line 5578
    [2.714886][2.714886:714904]()
    version = "1.0.1"
    [2.714886]
    [2.714904]
    version = "1.0.3"
  • replacement in Cargo.lock at line 5580
    [2.714969][2.714969:715047]()
    checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
    [2.714969]
    [2.715047]
    checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
  • replacement in Cargo.lock at line 5584
    [2.715074][3.53578:53597]()
    version = "0.4.11"
    [2.715074]
    [2.715092]
    version = "0.4.12"
  • replacement in Cargo.lock at line 5586
    [2.715157][3.53598:53676]()
    checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
    [2.715157]
    [2.715266]
    checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
  • replacement in Cargo.lock at line 5602
    [3.54081][3.54081:54099]()
    version = "0.6.1"
    [2.715489]
    [3.54099]
    version = "0.5.10"
  • replacement in Cargo.lock at line 5604
    [3.54164][3.54164:54242]()
    checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
    [3.54164]
    [3.54242]
    checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
  • replacement in Cargo.lock at line 5607
    [3.54268][3.54268:54291]()
    "windows-sys 0.60.2",
    [3.54268]
    [3.54291]
    "windows-sys 0.52.0",
    ]
    [[package]]
    name = "socket2"
    version = "0.6.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
    dependencies = [
    "libc",
    "windows-sys 0.61.2",
  • replacement in Cargo.lock at line 5706
    [2.717843][3.54832:54852]()
    version = "2.0.111"
    [2.717843]
    [2.717862]
    version = "2.0.117"
  • replacement in Cargo.lock at line 5708
    [2.717927][3.54853:54931]()
    checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
    [2.717927]
    [2.718005]
    checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
  • edit in Cargo.lock at line 5714
    [2.718068]
    [2.718068]
    [[package]]
    name = "sync_wrapper"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
  • edit in Cargo.lock at line 5726
    [2.718264][2.718264:718300]()
    dependencies = [
    "futures-core",
    ]
  • replacement in Cargo.lock at line 5735
    [2.718540][3.55031:55047]()
    "syn 2.0.111",
    [2.718540]
    [2.718555]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 5744
    [2.718765][3.55146:55164]()
    "bincode 1.3.3",
    [2.718765]
    [2.718796]
    "bincode",
  • replacement in Cargo.lock at line 5754
    [2.718913][3.55183:55204]()
    "thiserror 2.0.17",
    [2.718913]
    [2.718934]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 5761
    [2.719005][2.719005:719023]()
    version = "0.6.1"
    [2.719005]
    [2.719023]
    version = "0.5.1"
  • replacement in Cargo.lock at line 5763
    [2.719088][2.719088:719166]()
    checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
    [2.719088]
    [2.719166]
    checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
  • replacement in Cargo.lock at line 5765
    [2.719183][3.55205:55225](),[3.55225][2.719202:719222](),[2.719202][2.719202:719222]()
    "bitflags 2.10.0",
    "core-foundation",
    [2.719183]
    [2.719222]
    "bitflags 1.3.2",
    "core-foundation 0.9.4",
  • replacement in Cargo.lock at line 5772
    [2.719300][2.719300:719318]()
    version = "0.6.0"
    [2.719300]
    [2.719318]
    version = "0.5.0"
  • replacement in Cargo.lock at line 5774
    [2.719383][2.719383:719461]()
    checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
    [2.719383]
    [2.719461]
    checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
  • replacement in Cargo.lock at line 5788
    [2.719726][3.55226:55245]()
    version = "0.4.44"
    [2.719726]
    [2.719745]
    version = "0.4.46"
  • replacement in Cargo.lock at line 5790
    [2.719810][3.55246:55324]()
    checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a"
    [2.719810]
    [2.719888]
    checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840"
  • replacement in Cargo.lock at line 5799
    [2.719970][3.55325:55344]()
    version = "3.23.0"
    [2.719970]
    [2.719989]
    version = "3.27.0"
  • replacement in Cargo.lock at line 5801
    [2.720054][3.55345:55423]()
    checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
    [2.720054]
    [2.720132]
    checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
  • replacement in Cargo.lock at line 5804
    [2.720173][3.55424:55444]()
    "getrandom 0.3.4",
    [2.720173]
    [2.720193]
    "getrandom 0.4.2",
  • replacement in Cargo.lock at line 5806
    [2.720207][10.50204:50221]()
    "rustix 1.1.2",
    [2.720207]
    [3.55445]
    "rustix 1.1.4",
  • replacement in Cargo.lock at line 5843
    [2.720751][3.55732:55751]()
    version = "2.0.17"
    [2.720751]
    [2.720770]
    version = "2.0.18"
  • replacement in Cargo.lock at line 5845
    [2.720835][3.55752:55830]()
    checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
    [2.720835]
    [2.720913]
    checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
  • replacement in Cargo.lock at line 5847
    [2.720930][3.55831:55857]()
    "thiserror-impl 2.0.17",
    [2.720930]
    [2.720956]
    "thiserror-impl 2.0.18",
  • replacement in Cargo.lock at line 5858
    [2.721200][3.55858:55874]()
    "syn 2.0.111",
    [2.721200]
    [2.721215]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 5863
    [2.721254][3.55875:55894]()
    version = "2.0.17"
    [2.721254]
    [2.721273]
    version = "2.0.18"
  • replacement in Cargo.lock at line 5865
    [2.721338][3.55895:55973]()
    checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
    [2.721338]
    [2.721416]
    checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
  • replacement in Cargo.lock at line 5869
    [2.721459][3.55974:55990]()
    "syn 2.0.111",
    [2.721459]
    [2.721474]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 5905
    [2.722276][3.56188:56203]()
    "rand 0.9.2",
    [2.722276]
    [2.722291]
    "rand 0.9.4",
  • edit in Cargo.lock at line 5910
    [2.722344]
    [2.722366]
    "tokio",
    ]
    [[package]]
    name = "thrussh-config"
    version = "0.6.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "fa974aab89a724928e2fb4e526f6e9a5fa4fb9d544e824fc38bd177c48ca6622"
    dependencies = [
    "dirs-next",
    "futures",
    "log",
    "thiserror 1.0.69",
  • edit in Cargo.lock at line 5924
    [2.722376]
    [2.722376]
    "whoami 1.6.1",
  • replacement in Cargo.lock at line 5949
    [2.722810][2.722810:722825]()
    "rand 0.8.5",
    [2.722810]
    [2.722825]
    "rand 0.8.6",
  • replacement in Cargo.lock at line 5975
    [2.723264][3.56420:56439]()
    version = "0.3.44"
    [2.723264]
    [2.723283]
    version = "0.3.47"
  • replacement in Cargo.lock at line 5977
    [2.723348][3.56440:56518]()
    checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
    [2.723348]
    [2.723426]
    checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
  • replacement in Cargo.lock at line 5983
    [2.723491][2.723491:723501]()
    "serde",
    [2.723491]
    [2.723501]
    "serde_core",
  • replacement in Cargo.lock at line 5990
    [2.723565][3.56519:56537]()
    version = "0.1.6"
    [2.723565]
    [2.723583]
    version = "0.1.8"
  • replacement in Cargo.lock at line 5992
    [2.723648][3.56538:56616]()
    checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
    [2.723648]
    [2.723726]
    checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
  • replacement in Cargo.lock at line 5996
    [2.723760][3.56617:56636]()
    version = "0.2.24"
    [2.723760]
    [2.723779]
    version = "0.2.27"
  • replacement in Cargo.lock at line 5998
    [2.723844][3.56637:56715]()
    checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
    [2.723844]
    [2.723922]
    checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
  • replacement in Cargo.lock at line 6006
    [2.723998][3.56716:56734]()
    version = "0.8.2"
    [2.723998]
    [2.724016]
    version = "0.8.3"
  • replacement in Cargo.lock at line 6008
    [2.724081][3.56735:56813]()
    checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
    [2.724081]
    [2.724159]
    checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
  • replacement in Cargo.lock at line 6016
    [2.724235][3.56814:56833]()
    version = "1.10.0"
    [2.724235]
    [2.724253]
    version = "1.11.0"
  • replacement in Cargo.lock at line 6018
    [2.724318][3.56834:56912]()
    checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
    [2.724318]
    [2.724396]
    checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
  • replacement in Cargo.lock at line 6031
    [2.724660][3.56913:56932]()
    version = "1.48.0"
    [2.724660]
    [2.724679]
    version = "1.52.3"
  • replacement in Cargo.lock at line 6033
    [2.724744][3.56933:57011]()
    checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
    [2.724744]
    [2.724822]
    checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
  • replacement in Cargo.lock at line 6041
    [2.724949][19.13959:13971]()
    "socket2",
    [2.724949]
    [2.724961]
    "socket2 0.6.4",
  • replacement in Cargo.lock at line 6048
    [2.725038][3.57079:57097]()
    version = "2.6.0"
    [2.725038]
    [2.725056]
    version = "2.7.0"
  • replacement in Cargo.lock at line 6050
    [2.725121][3.57098:57176]()
    checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
    [2.725121]
    [2.725199]
    checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
  • replacement in Cargo.lock at line 6054
    [2.725242][3.57177:57193]()
    "syn 2.0.111",
    [2.725242]
    [2.725257]
    "syn 2.0.117",
  • edit in Cargo.lock at line 6064
    [2.725491][2.725491:725745]()
    "tokio",
    ]
    [[package]]
    name = "tokio-openssl"
    version = "0.6.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "59df6849caa43bb7567f9a36f863c447d95a11d5903c9cc334ba32576a27eadd"
    dependencies = [
    "openssl",
    "openssl-sys",
  • replacement in Cargo.lock at line 6069
    [2.725794][3.57194:57213]()
    version = "0.7.15"
    [2.725794]
    [2.725813]
    version = "0.7.17"
  • replacement in Cargo.lock at line 6071
    [2.725878][3.57214:57292]()
    checksum = "2b40d66d9b2cfe04b628173409368e58247e8eddbbd3b0e6c6ba1d09f20f6c9e"
    [2.725878]
    [2.725956]
    checksum = "4dd8df5ef180f6364759a6f00f7aadda4fbbac86cdee37480826a6ff9f3574ce"
  • replacement in Cargo.lock at line 6086
    [2.726201][3.57333:57348](),[3.57348][19.13972:13984]()
    "rand 0.9.2",
    "socket2",
    [2.726201]
    [2.726228]
    "rand 0.10.1",
    "socket2 0.6.4",
  • replacement in Cargo.lock at line 6090
    [2.726253][2.726253:726264]()
    "whoami",
    [2.726253]
    [2.726264]
    "whoami 2.1.2",
  • replacement in Cargo.lock at line 6105
    [2.726538][2.726538:726557]()
    version = "0.1.17"
    [2.726538]
    [2.726557]
    version = "0.1.18"
  • replacement in Cargo.lock at line 6107
    [2.726622][2.726622:726700]()
    checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
    [2.726622]
    [2.726700]
    checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
  • replacement in Cargo.lock at line 6116
    [10.50249][10.50249:50268]()
    version = "0.28.0"
    [10.50249]
    [10.50268]
    version = "0.29.0"
  • replacement in Cargo.lock at line 6118
    [10.50333][10.50333:50411]()
    checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
    [10.50333]
    [10.50411]
    checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c"
  • replacement in Cargo.lock at line 6128
    [2.726800][3.57466:57485]()
    version = "0.7.17"
    [2.726800]
    [2.726819]
    version = "0.7.18"
  • replacement in Cargo.lock at line 6130
    [2.726884][3.57486:57564]()
    checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
    [2.726884]
    [2.726962]
    checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
  • replacement in Cargo.lock at line 6154
    [2.727301][3.57565:57583]()
    version = "0.9.8"
    [2.727301]
    [2.727320]
    version = "0.9.12+spec-1.1.0"
  • replacement in Cargo.lock at line 6156
    [2.727385][3.57584:57662]()
    checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
    [2.727385]
    [2.727463]
    checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863"
  • replacement in Cargo.lock at line 6160
    [3.57691][10.50672:50720]()
    "serde_spanned 1.0.3",
    "toml_datetime 0.7.3",
    [3.57691]
    [3.57692]
    "serde_spanned 1.1.1",
    "toml_datetime 0.7.5+spec-1.1.0",
  • replacement in Cargo.lock at line 6164
    [3.57724][3.57724:57735]()
    "winnow",
    [3.57724]
    [2.727540]
    "winnow 0.7.15",
  • replacement in Cargo.lock at line 6178
    [10.50948][3.57736:57754](),[2.727578][3.57736:57754]()
    version = "0.7.3"
    [10.50948]
    [2.727596]
    version = "0.7.5+spec-1.1.0"
  • replacement in Cargo.lock at line 6180
    [2.727661][3.57755:57833]()
    checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
    [2.727661]
    [2.727739]
    checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
  • replacement in Cargo.lock at line 6196
    [10.51235][10.51235:51246]()
    "winnow",
    [10.51235]
    [10.51246]
    "winnow 0.7.15",
  • replacement in Cargo.lock at line 6201
    [3.57871][3.57871:57889]()
    version = "1.0.4"
    [3.57871]
    [2.727820]
    version = "1.1.2+spec-1.1.0"
  • replacement in Cargo.lock at line 6203
    [2.727885][3.57890:57968]()
    checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
    [2.727885]
    [2.727963]
    checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
  • replacement in Cargo.lock at line 6205
    [2.728039][2.728039:728050]()
    "winnow",
    [2.727980]
    [2.728050]
    "winnow 1.0.3",
  • replacement in Cargo.lock at line 6216
    [3.57990][3.57990:58008]()
    version = "1.0.4"
    [3.57990]
    [2.728099]
    version = "1.1.1+spec-1.1.0"
  • replacement in Cargo.lock at line 6218
    [2.728164][3.58009:58087]()
    checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
    [2.728164]
    [2.728378]
    checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
  • replacement in Cargo.lock at line 6222
    [2.728406][2.728406:728424]()
    version = "0.5.2"
    [2.728406]
    [2.728424]
    version = "0.5.3"
  • replacement in Cargo.lock at line 6224
    [2.728489][2.728489:728567]()
    checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
    [2.728489]
    [2.728567]
    checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
  • replacement in Cargo.lock at line 6229
    [2.728639][2.728639:728656]()
    "sync_wrapper",
    [2.728639]
    [2.728656]
    "sync_wrapper 1.0.2",
  • replacement in Cargo.lock at line 6238
    [2.728747][3.58088:58106]()
    version = "0.6.7"
    [2.728747]
    [2.728765]
    version = "0.6.11"
  • replacement in Cargo.lock at line 6240
    [2.728830][3.58107:58185]()
    checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456"
    [2.728830]
    [2.728908]
    checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
  • replacement in Cargo.lock at line 6243
    [2.728947][3.58186:58206]()
    "bitflags 2.10.0",
    [2.728947]
    [2.728966]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 6247
    [3.58224][19.13985:14008](),[19.14008][3.58240:58255](),[2.729028][3.58240:58255]()
    "http",
    "http-body",
    "iri-string",
    [3.58224]
    [2.729028]
    "http 1.4.1",
    "http-body 1.0.1",
    "http-body-util",
    "http-range-header",
    "httpdate",
    "mime",
    "mime_guess",
    "percent-encoding",
  • edit in Cargo.lock at line 6258
    [2.729074][3.58256:58266]()
    "tower",
  • replacement in Cargo.lock at line 6277
    [2.729544][2.729544:729563]()
    version = "0.1.41"
    [2.729544]
    [2.729563]
    version = "0.1.44"
  • replacement in Cargo.lock at line 6279
    [2.729628][2.729628:729706]()
    checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
    [2.729628]
    [2.729706]
    checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
  • replacement in Cargo.lock at line 6289
    [2.729835][3.58267:58286]()
    version = "0.1.30"
    [2.729835]
    [2.729854]
    version = "0.1.31"
  • replacement in Cargo.lock at line 6291
    [2.729919][3.58287:58365]()
    checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
    [2.729919]
    [2.729997]
    checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
  • replacement in Cargo.lock at line 6295
    [2.730040][3.58366:58382]()
    "syn 2.0.111",
    [2.730040]
    [2.730055]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 6300
    [2.730092][3.58383:58402]()
    version = "0.1.34"
    [2.730092]
    [2.730111]
    version = "0.1.36"
  • replacement in Cargo.lock at line 6302
    [2.730176][3.58403:58481]()
    checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
    [2.730176]
    [2.730254]
    checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
  • replacement in Cargo.lock at line 6331
    [2.730840][3.58482:58501]()
    version = "0.3.20"
    [2.730840]
    [2.730859]
    version = "0.3.23"
  • replacement in Cargo.lock at line 6333
    [2.730924][3.58502:58580]()
    checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
    [2.730924]
    [2.731002]
    checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
  • replacement in Cargo.lock at line 6355
    [10.51491][10.51491:51510]()
    version = "0.28.0"
    [10.51491]
    [10.51510]
    version = "0.29.0"
  • replacement in Cargo.lock at line 6357
    [10.51575][10.51575:51653]()
    checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
    [10.51575]
    [10.51653]
    checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8"
  • replacement in Cargo.lock at line 6361
    [10.51698][19.14009:14018]()
    "http",
    [10.51698]
    [10.51713]
    "http 1.4.1",
  • replacement in Cargo.lock at line 6364
    [10.51734][10.51734:51749]()
    "rand 0.9.2",
    [10.51734]
    [10.51749]
    "rand 0.9.4",
  • replacement in Cargo.lock at line 6366
    [10.51758][10.51758:51789]()
    "thiserror 2.0.17",
    "utf-8",
    [10.51758]
    [10.51789]
    "thiserror 2.0.18",
  • replacement in Cargo.lock at line 6376
    [2.731580][2.731580:731595]()
    "rand 0.8.5",
    [2.731580]
    [2.731595]
    "rand 0.8.6",
  • replacement in Cargo.lock at line 6382
    [2.731649][3.58601:58620]()
    version = "1.19.0"
    [2.731649]
    [2.731668]
    version = "1.20.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
    [[package]]
    name = "uncased"
    version = "0.9.10"
  • replacement in Cargo.lock at line 6390
    [2.731733][3.58621:58699]()
    checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
    [2.731733]
    [2.731811]
    checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697"
    dependencies = [
    "version_check",
    ]
  • replacement in Cargo.lock at line 6397
    [2.731841][2.731841:731859]()
    version = "2.8.1"
    [2.731841]
    [2.731859]
    version = "2.9.0"
  • replacement in Cargo.lock at line 6399
    [2.731924][2.731924:732002]()
    checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
    [2.731924]
    [2.732002]
    checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
  • replacement in Cargo.lock at line 6415
    [2.732235][3.58901:58920]()
    version = "1.0.22"
    [2.732235]
    [3.58920]
    version = "1.0.24"
  • replacement in Cargo.lock at line 6417
    [3.58985][3.58985:59063]()
    checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
    [3.58985]
    [3.59063]
    checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
  • replacement in Cargo.lock at line 6442
    [2.732879][2.732879:732898]()
    version = "1.12.0"
    [2.732879]
    [2.732898]
    version = "1.13.3"
  • replacement in Cargo.lock at line 6444
    [2.732963][2.732963:733041]()
    checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
    [2.732963]
    [2.733041]
    checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
  • replacement in Cargo.lock at line 6464
    [2.733454][2.733454:733472]()
    "crypto-common",
    [2.733454]
    [2.733472]
    "crypto-common 0.1.6",
  • edit in Cargo.lock at line 6473
    [2.733678][3.59496:59509](),[3.59509][3.59509:59684]()
    [[package]]
    name = "unty"
    version = "0.0.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae"
  • replacement in Cargo.lock at line 6476
    [2.733704][3.59685:59703]()
    version = "2.5.7"
    [2.733704]
    [2.733722]
    version = "2.5.8"
  • replacement in Cargo.lock at line 6478
    [2.733787][3.59704:59782]()
    checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
    [2.733787]
    [2.733865]
    checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
  • edit in Cargo.lock at line 6484
    [2.733942]
    [2.733942]
    "serde_derive",
  • replacement in Cargo.lock at line 6507
    [2.734740][4.11756:11775]()
    version = "1.21.0"
    [2.734740]
    [2.734759]
    version = "1.23.2"
  • replacement in Cargo.lock at line 6509
    [2.734824][4.11776:11854]()
    checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
    [2.734824]
    [2.734902]
    checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7"
  • replacement in Cargo.lock at line 6511
    [2.734919][4.11855:11875]()
    "getrandom 0.4.1",
    [2.734919]
    [3.59902]
    "getrandom 0.4.2",
  • edit in Cargo.lock at line 6524
    [2.735161]
    [2.735161]
    name = "validator"
    version = "0.20.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "43fb22e1a008ece370ce08a3e9e4447a910e92621bb49b85d6e48a45397e7cfa"
    dependencies = [
    "idna",
    "once_cell",
    "regex",
    "serde",
    "serde_derive",
    "serde_json",
    "url",
    ]
    [[package]]
  • edit in Cargo.lock at line 6557
    [3.59945][3.59945:60123](),[3.60123][2.735727:735740](),[2.735727][2.735727:735740]()
    name = "virtue"
    version = "0.0.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1"
    [[package]]
  • edit in Cargo.lock at line 6598
    [3.60435]
    [2.736797]
    [[package]]
    name = "wasi"
    version = "0.14.7+wasi-0.2.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c"
    dependencies = [
    "wasip2",
    ]
  • replacement in Cargo.lock at line 6610
    [3.60452][3.60452:60481]()
    version = "1.0.1+wasi-0.2.4"
    [3.60452]
    [2.736854]
    version = "1.0.3+wasi-0.2.9"
  • replacement in Cargo.lock at line 6612
    [2.736919][3.60482:60560]()
    checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
    [2.736919]
    [2.736997]
    checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
  • replacement in Cargo.lock at line 6614
    [2.737014][4.11892:11915]()
    "wit-bindgen 0.46.0",
    [2.737014]
    [4.11915]
    "wit-bindgen 0.57.1",
  • edit in Cargo.lock at line 6633
    [2.737238]
    [2.737238]
    name = "wasite"
    version = "1.0.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "66fe902b4a6b8028a753d5424909b764ccf79b7a209eac9bf97e59cda9f71a42"
    dependencies = [
    "wasi 0.14.7+wasi-0.2.4",
    ]
    [[package]]
  • replacement in Cargo.lock at line 6643
    [2.737260][3.60578:60598]()
    version = "0.2.105"
    [2.737260]
    [2.737280]
    version = "0.2.122"
  • replacement in Cargo.lock at line 6645
    [2.737345][3.60599:60677]()
    checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
    [2.737345]
    [2.737423]
    checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409"
  • replacement in Cargo.lock at line 6656
    [2.737859][3.60678:60697]()
    version = "0.4.55"
    [2.737859]
    [2.737878]
    version = "0.4.72"
  • replacement in Cargo.lock at line 6658
    [2.737943][3.60698:60776]()
    checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
    [2.737943]
    [2.738021]
    checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f"
  • edit in Cargo.lock at line 6660
    [2.738038][2.738038:738049]()
    "cfg-if",
  • edit in Cargo.lock at line 6661
    [2.738060][2.738060:738074]()
    "once_cell",
  • edit in Cargo.lock at line 6662
    [2.738091][2.738091:738103]()
    "web-sys",
  • replacement in Cargo.lock at line 6666
    [2.738146][3.60777:60797]()
    version = "0.2.105"
    [2.738146]
    [2.738166]
    version = "0.2.122"
  • replacement in Cargo.lock at line 6668
    [2.738231][3.60798:60876]()
    checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
    [2.738231]
    [2.738309]
    checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6"
  • replacement in Cargo.lock at line 6676
    [2.738418][3.60877:60897]()
    version = "0.2.105"
    [2.738418]
    [2.738438]
    version = "0.2.122"
  • replacement in Cargo.lock at line 6678
    [2.738503][3.60898:60976]()
    checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
    [2.738503]
    [2.738581]
    checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e"
  • replacement in Cargo.lock at line 6683
    [2.738624][3.60990:61006]()
    "syn 2.0.111",
    [2.738624]
    [2.738664]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 6689
    [2.738732][3.61007:61027]()
    version = "0.2.105"
    [2.738732]
    [2.738752]
    version = "0.2.122"
  • replacement in Cargo.lock at line 6691
    [2.738817][3.61028:61106]()
    checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
    [2.738817]
    [2.738895]
    checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437"
  • edit in Cargo.lock at line 6719
    [4.12708]
    [4.12708]
    name = "wasm-streams"
    version = "0.4.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
    dependencies = [
    "futures-util",
    "js-sys",
    "wasm-bindgen",
    "wasm-bindgen-futures",
    "web-sys",
    ]
    [[package]]
  • replacement in Cargo.lock at line 6737
    [4.12908][4.12908:12928]()
    "bitflags 2.10.0",
    [4.12908]
    [4.12928]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 6745
    [2.738962][3.61107:61126]()
    version = "0.3.82"
    [2.738962]
    [2.738981]
    version = "0.3.99"
  • replacement in Cargo.lock at line 6747
    [2.739046][3.61127:61205]()
    checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
    [2.739046]
    [2.739124]
    checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436"
  • replacement in Cargo.lock at line 6777
    [2.739456][3.61499:61517]()
    version = "0.5.3"
    [2.739456]
    [2.739474]
    version = "0.5.5"
  • replacement in Cargo.lock at line 6779
    [2.739539][3.61518:61596]()
    checksum = "f77a2892ec44032e6c48dad9aad1b05fada09c346ada11d8d32db119b4b4f205"
    [2.739539]
    [2.739617]
    checksum = "6475c0bbd1a3f04afaa3e98880408c5be61680c5e6bd3c6f8c250990d5d3e18e"
  • replacement in Cargo.lock at line 6791
    [2.739735][3.61614:61632]()
    version = "0.5.3"
    [2.739735]
    [2.739753]
    version = "0.5.5"
  • replacement in Cargo.lock at line 6793
    [2.739818][3.61633:61711]()
    checksum = "eb7c3a2f9c8bddd524e47bbd427bcf3a28aa074de55d74470b42a91a41937b8e"
    [2.739818]
    [2.739896]
    checksum = "6c548915e0e92ee946bbf2aecf01ea21bef53d974b0793cc6732ba81a03fc422"
  • replacement in Cargo.lock at line 6805
    [2.740036][3.61712:61730]()
    version = "0.5.3"
    [2.740036]
    [2.740054]
    version = "0.5.5"
  • replacement in Cargo.lock at line 6807
    [2.740119][3.61731:61809]()
    checksum = "19f1d80f3146382529fe70a3ab5d0feb2413a015204ed7843f9377cd39357fc4"
    [2.740119]
    [2.740197]
    checksum = "296d2d501feb715d80b8e186fb88bab1073bca17f460303a1013d17b673bea6a"
  • replacement in Cargo.lock at line 6816
    [3.61841][2.740313:740350](),[2.740313][2.740313:740350]()
    "rand 0.8.5",
    "rand_chacha 0.3.1",
    [3.61841]
    [2.740350]
    "rand 0.9.4",
    "rand_chacha 0.9.0",
  • replacement in Cargo.lock at line 6832
    [2.740550][3.61842:61860]()
    version = "0.5.3"
    [2.740550]
    [2.740568]
    version = "0.5.5"
  • replacement in Cargo.lock at line 6834
    [2.740633][3.61861:61939]()
    checksum = "9e786894f89facb9aaf1c5f6559670236723c98382e045521c76f3d5ca5047bd"
    [2.740633]
    [2.740711]
    checksum = "c37393beac9c1ed1ca6dbb30b1e01783fb316ab3a45d90ecd48c99052dd7ef1e"
  • replacement in Cargo.lock at line 6844
    [2.740816][2.740816:740851]()
    name = "webpki"
    version = "0.22.4"
    [2.740816]
    [2.740851]
    name = "whoami"
    version = "1.6.1"
  • replacement in Cargo.lock at line 6847
    [2.740916][2.740916:740994]()
    checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
    [2.740916]
    [2.740994]
    checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d"
  • replacement in Cargo.lock at line 6849
    [2.741011][2.741011:741034]()
    "ring",
    "untrusted",
    [2.741011]
    [2.741034]
    "libredox",
    "wasite 0.1.0",
    "web-sys",
  • replacement in Cargo.lock at line 6856
    [2.741318][3.61940:61958]()
    version = "1.6.1"
    [2.741318]
    [2.741336]
    version = "2.1.2"
  • replacement in Cargo.lock at line 6858
    [2.741401][3.61959:62037]()
    checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d"
    [2.741401]
    [2.741479]
    checksum = "998767ef88740d1f5b0682a9c53c24431453923962269c2db68ee43788c5a40d"
  • edit in Cargo.lock at line 6860
    [2.741496]
    [3.62038]
    "libc",
  • replacement in Cargo.lock at line 6862
    [3.62051][2.741520:741531](),[2.741520][2.741520:741531]()
    "wasite",
    [3.62051]
    [2.741531]
    "objc2-system-configuration",
    "wasite 1.0.2",
  • replacement in Cargo.lock at line 6919
    [3.62621][3.62621:62637]()
    "syn 2.0.111",
    [3.62621]
    [2.742711]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 6930
    [3.62883][3.62883:62899]()
    "syn 2.0.111",
    [3.62883]
    [3.62899]
    "syn 2.0.117",
  • edit in Cargo.lock at line 6938
    [3.63097][2.742713:742752](),[2.742713][2.742713:742752](),[2.742752][3.63098:63116](),[3.63116][2.742770:742835](),[2.742770][2.742770:742835](),[2.742835][3.63117:63195](),[3.63195][2.742913:742930](),[2.742913][2.742913:742930](),[2.742930][3.63196:63213](),[3.63213][2.742930:742969](),[2.742930][2.742930:742969](),[2.742989][2.742989:742991]()
    [[package]]
    name = "windows-registry"
    version = "0.6.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
    dependencies = [
    "windows-link",
    "windows-result",
    "windows-strings",
    ]
  • edit in Cargo.lock at line 6971
    [2.743681]
    [2.743681]
    dependencies = [
    "windows-targets 0.52.6",
    ]
    [[package]]
    name = "windows-sys"
    version = "0.59.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
  • replacement in Cargo.lock at line 7190
    [3.66154][3.66154:66173]()
    version = "0.7.13"
    [3.66154]
    [2.746280]
    version = "0.7.15"
  • replacement in Cargo.lock at line 7192
    [2.746345][3.66174:66252]()
    checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
    [2.746345]
    [10.53911]
    checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
  • replacement in Cargo.lock at line 7198
    [2.746474][3.66253:66293]()
    name = "wit-bindgen"
    version = "0.46.0"
    [2.746474]
    [2.746509]
    name = "winnow"
    version = "1.0.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
    [[package]]
    name = "winreg"
    version = "0.50.0"
  • replacement in Cargo.lock at line 7207
    [2.746574][3.66294:66372]()
    checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
    [2.746574]
    [4.12974]
    checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
    dependencies = [
    "cfg-if",
    "windows-sys 0.48.0",
    ]
  • edit in Cargo.lock at line 7223
    [4.13229]
    [4.13229]
    name = "wit-bindgen"
    version = "0.57.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
    [[package]]
  • replacement in Cargo.lock at line 7249
    [4.13751][4.13751:13767]()
    "syn 2.0.111",
    [4.13751]
    [4.13767]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 7265
    [4.14104][4.14104:14120]()
    "syn 2.0.111",
    [4.14104]
    [4.14120]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 7277
    [4.14391][4.14391:14411]()
    "bitflags 2.10.0",
    [4.14391]
    [4.14411]
    "bitflags 2.12.1",
  • replacement in Cargo.lock at line 7309
    [2.746684][3.66373:66391]()
    version = "0.6.2"
    [2.746684]
    [2.746702]
    version = "0.6.3"
  • replacement in Cargo.lock at line 7311
    [2.746767][3.66392:66470]()
    checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
    [2.746767]
    [2.746845]
    checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
  • replacement in Cargo.lock at line 7346
    [2.747626][10.53942:53959]()
    "rustix 1.1.2",
    [2.747626]
    [2.747655]
    "rustix 1.1.4",
  • replacement in Cargo.lock at line 7370
    [2.748342][3.66683:66701]()
    version = "0.8.1"
    [2.748342]
    [2.748360]
    version = "0.8.2"
  • replacement in Cargo.lock at line 7372
    [2.748425][3.66702:66780]()
    checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
    [2.748425]
    [2.748503]
    checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"
  • replacement in Cargo.lock at line 7381
    [2.748618][3.66781:66799]()
    version = "0.8.1"
    [2.748618]
    [2.748636]
    version = "0.8.2"
  • replacement in Cargo.lock at line 7383
    [2.748701][3.66800:66878]()
    checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
    [2.748701]
    [2.748779]
    checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
  • replacement in Cargo.lock at line 7387
    [2.748822][3.66879:66895]()
    "syn 2.0.111",
    [2.748822]
    [2.748837]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 7393
    [2.748887][3.66896:66915]()
    version = "0.8.30"
    [2.748887]
    [2.748906]
    version = "0.8.50"
  • replacement in Cargo.lock at line 7395
    [2.748971][3.66916:66994]()
    checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c"
    [2.748971]
    [2.749049]
    checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
  • replacement in Cargo.lock at line 7402
    [2.749386][3.67016:67035]()
    version = "0.8.30"
    [2.749386]
    [2.749665]
    version = "0.8.50"
  • replacement in Cargo.lock at line 7404
    [2.749730][3.67036:67114]()
    checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5"
    [2.749730]
    [2.749808]
    checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
  • replacement in Cargo.lock at line 7408
    [2.749851][3.67115:67131]()
    "syn 2.0.111",
    [2.749851]
    [2.749866]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 7413
    [2.749899][3.67132:67150]()
    version = "0.1.6"
    [2.749899]
    [2.749917]
    version = "0.1.8"
  • replacement in Cargo.lock at line 7415
    [2.749982][3.67151:67229]()
    checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
    [2.749982]
    [2.750060]
    checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
  • replacement in Cargo.lock at line 7422
    [2.750137][3.67230:67248]()
    version = "0.1.6"
    [2.750137]
    [2.750155]
    version = "0.1.7"
  • replacement in Cargo.lock at line 7424
    [2.750220][3.67249:67327]()
    checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
    [2.750220]
    [2.750298]
    checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
  • replacement in Cargo.lock at line 7428
    [2.750341][3.67328:67344]()
    "syn 2.0.111",
    [2.750341]
    [2.750356]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 7443
    [2.750641][2.750641:750659]()
    version = "1.4.2"
    [2.750641]
    [2.750659]
    version = "1.4.3"
  • replacement in Cargo.lock at line 7445
    [2.750724][2.750724:750802]()
    checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
    [2.750724]
    [2.750802]
    checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e"
  • replacement in Cargo.lock at line 7449
    [2.750845][3.67443:67459]()
    "syn 2.0.111",
    [2.750845]
    [3.67459]
    "syn 2.0.117",
  • replacement in Cargo.lock at line 7454
    [3.67492][3.67492:67510]()
    version = "0.2.3"
    [3.67492]
    [3.67510]
    version = "0.2.4"
  • replacement in Cargo.lock at line 7456
    [3.67575][3.67575:67653]()
    checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
    [3.67575]
    [3.67653]
    checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
  • replacement in Cargo.lock at line 7465
    [2.750892][3.67708:67727]()
    version = "0.11.5"
    [2.750892]
    [2.750911]
    version = "0.11.6"
  • replacement in Cargo.lock at line 7467
    [2.750976][3.67728:67806]()
    checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
    [2.750976]
    [2.751054]
    checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
  • replacement in Cargo.lock at line 7476
    [2.751151][3.67807:67826]()
    version = "0.11.2"
    [2.751151]
    [2.751170]
    version = "0.11.3"
  • replacement in Cargo.lock at line 7478
    [2.751235][3.67827:67905]()
    checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
    [2.751235]
    [2.751313]
    checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
  • replacement in Cargo.lock at line 7482
    [2.751356][3.67906:67922]()
    "syn 2.0.111",
    [2.751356]
    [2.751371]
    "syn 2.0.117",
  • edit in Cargo.lock at line 7484
    [2.751373]
    [2.751373]
    [[package]]
    name = "zmij"
    version = "1.0.21"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
  • replacement in Cargo.lock at line 7515
    [2.752035][3.68120:68138]()
    "bincode 1.3.3",
    [2.752035]
    [2.752047]
    "bincode",
  • edit in Cargo.lock at line 7534
    [2.659440][2.659440:659475]()
    "tokio-rustls",
    "tower-service",
  • resolve order conflict in Cargo.lock at line 7534
    [2.752388]