[INFO] fetching crate nettu_scheduler_domain 0.6.0...
[INFO] testing nettu_scheduler_domain-0.6.0 against nightly-2024-10-28+rustflags=-Zrandomize-layout for randomize-layout
[INFO] extracting crate nettu_scheduler_domain 0.6.0 into /workspace/builds/worker-1-tc2/source
[INFO] validating manifest of crates.io crate nettu_scheduler_domain 0.6.0 on toolchain nightly-2024-10-28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly-2024-10-28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate nettu_scheduler_domain 0.6.0
[INFO] finished tweaking crates.io crate nettu_scheduler_domain 0.6.0
[INFO] tweaked toml for crates.io crate nettu_scheduler_domain 0.6.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly-2024-10-28" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]      Locking 87 packages to latest compatible versions
[INFO] [stderr]       Adding chrono-tz v0.5.3 (available: v0.10.0)
[INFO] [stderr]       Adding itertools v0.10.5 (available: v0.13.0)
[INFO] [stderr]       Adding jsonwebtoken v7.2.0 (available: v9.3.0)
[INFO] [stderr]       Adding rrule v0.5.9 (available: v0.13.0)
[INFO] [stderr]       Adding uuid v0.8.2 (available: v1.11.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly-2024-10-28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2024-10-28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 146dba583b106c54e1c155fc52fb81fd233404507d097f95f7ec84b2b1b7c02c
[INFO] running `Command { std: "docker" "start" "-a" "146dba583b106c54e1c155fc52fb81fd233404507d097f95f7ec84b2b1b7c02c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "146dba583b106c54e1c155fc52fb81fd233404507d097f95f7ec84b2b1b7c02c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "146dba583b106c54e1c155fc52fb81fd233404507d097f95f7ec84b2b1b7c02c", kill_on_drop: false }`
[INFO] [stdout] 146dba583b106c54e1c155fc52fb81fd233404507d097f95f7ec84b2b1b7c02c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Zrandomize-layout" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2024-10-28" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 809baeed95e233df32f0d129a66c5bf342aa874f3e4b1b628f48ea4859d86215
[INFO] running `Command { std: "docker" "start" "-a" "809baeed95e233df32f0d129a66c5bf342aa874f3e4b1b628f48ea4859d86215", kill_on_drop: false }`
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]    Compiling anyhow v1.0.92
[INFO] [stderr]    Compiling unicode-bidi v0.3.17
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling thiserror v1.0.66
[INFO] [stderr]    Compiling base64 v0.12.3
[INFO] [stderr]    Compiling either v1.13.0
[INFO] [stderr]    Compiling getrandom v0.2.15
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.1
[INFO] [stderr]    Compiling pem v0.8.3
[INFO] [stderr]    Compiling serde_json v1.0.132
[INFO] [stderr]    Compiling tinyvec v1.8.0
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling uuid v0.8.2
[INFO] [stderr]    Compiling chrono-tz v0.5.3
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling zerocopy v0.7.35
[INFO] [stderr]    Compiling chrono v0.4.38
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling idna v0.5.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.20
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling url v2.5.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling simple_asn1 v0.4.1
[INFO] [stderr]    Compiling nettu_scheduler_utils v0.6.0
[INFO] [stderr]    Compiling jsonwebtoken v7.2.0
[INFO] [stderr]    Compiling rrule v0.5.9
[INFO] [stderr]    Compiling nettu_scheduler_domain v0.6.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated struct `chrono::Date`: Use `NaiveDate` or `DateTime<Tz>` instead
[INFO] [stdout]    --> src/schedule.rs:295:38
[INFO] [stdout]     |
[INFO] [stdout] 295 |     pub fn date(&self, tzid: &Tz) -> Date<Tz> {
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/booking_slots.rs:76:29
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let first_date = tz.timestamp_millis(slots[0].start);
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/booking_slots.rs:81:48
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let current_date = format_date(&tz.timestamp_millis(current_date.start));
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/booking_slots.rs:213:25
[INFO] [stdout]     |
[INFO] [stdout] 213 |     let start_date = tz.ymd(
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/booking_slots.rs:218:31
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let start_ts = start_date.and_hms(0, 0, 0).timestamp_millis();
[INFO] [stdout]     |                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/booking_slots.rs:219:23
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let end_date = tz.ymd(parsed_end_date.0, parsed_end_date.1, parsed_end_date.2);
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/booking_slots.rs:220:27
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let end_ts = end_date.and_hms(0, 0, 0).timestamp_millis() + 1000 * 60 * 60 * 24;
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/event.rs:120:35
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 let exdate = tzid.timestamp_millis(*exdate);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::datetime_from_str`: use `DateTime::parse_from_str` or `NaiveDateTime::parse_from_str` with `and_utc()` or `and_local_timezone()` instead
[INFO] [stdout]   --> src/providers/outlook.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 26 |             .datetime_from_str(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/providers/outlook.rs:35:37
[INFO] [stdout]    |
[INFO] [stdout] 35 |             .unwrap_or_else(|_| UTC.timestamp(0, 0))
[INFO] [stdout]    |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]   --> src/schedule.rs:47:38
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let min_date = self.timezone.ymd(now.year(), now.month(), now.day()) - Duration::days(2);
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]   --> src/schedule.rs:48:38
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let max_date = self.timezone.ymd(min_date.year() + 5, 1, 1);
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:131:25
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let date = tzid.ymd(day.year, day.month, day.day);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 |         tzid.ymd(self.year, self.month, self.day)
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/schedule.rs:324:35
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let start = self.timezone.timestamp_millis(timespan.start());
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/schedule.rs:325:33
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let end = self.timezone.timestamp_millis(timespan.end());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/shared/recurrence.rs:84:50
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let until = self.until.map(|ts| timezone.timestamp(ts as i64 / 1000, 0));
[INFO] [stdout]    |                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/shared/recurrence.rs:86:32
[INFO] [stdout]    |
[INFO] [stdout] 86 |         let dtstart = timezone.timestamp(start_ts / 1000, 0);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/timespan.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |         tz.timestamp_millis(timestamp_millis)
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/account.rs:64:29
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 if let Some(mut webhook_settings) = self.webhook.as_mut() {
[INFO] [stdout]    |                             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.08s
[INFO] running `Command { std: "docker" "inspect" "809baeed95e233df32f0d129a66c5bf342aa874f3e4b1b628f48ea4859d86215", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "809baeed95e233df32f0d129a66c5bf342aa874f3e4b1b628f48ea4859d86215", kill_on_drop: false }`
[INFO] [stdout] 809baeed95e233df32f0d129a66c5bf342aa874f3e4b1b628f48ea4859d86215
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Zrandomize-layout" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2024-10-28" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2f119ac360d6b4af802fabf34933aab648b6c374c5f7221d410529ef0723f123
[INFO] running `Command { std: "docker" "start" "-a" "2f119ac360d6b4af802fabf34933aab648b6c374c5f7221d410529ef0723f123", kill_on_drop: false }`
[INFO] [stdout] warning: use of deprecated struct `chrono::Date`: Use `NaiveDate` or `DateTime<Tz>` instead
[INFO] [stdout]    --> src/schedule.rs:295:38
[INFO] [stdout]     |
[INFO] [stdout] 295 |     pub fn date(&self, tzid: &Tz) -> Date<Tz> {
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/booking_slots.rs:76:29
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let first_date = tz.timestamp_millis(slots[0].start);
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/booking_slots.rs:81:48
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let current_date = format_date(&tz.timestamp_millis(current_date.start));
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/booking_slots.rs:213:25
[INFO] [stdout]     |
[INFO] [stdout] 213 |     let start_date = tz.ymd(
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/booking_slots.rs:218:31
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let start_ts = start_date.and_hms(0, 0, 0).timestamp_millis();
[INFO] [stdout]     |                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/booking_slots.rs:219:23
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let end_date = tz.ymd(parsed_end_date.0, parsed_end_date.1, parsed_end_date.2);
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/booking_slots.rs:220:27
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let end_ts = end_date.and_hms(0, 0, 0).timestamp_millis() + 1000 * 60 * 60 * 24;
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/event.rs:120:35
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 let exdate = tzid.timestamp_millis(*exdate);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::datetime_from_str`: use `DateTime::parse_from_str` or `NaiveDateTime::parse_from_str` with `and_utc()` or `and_local_timezone()` instead
[INFO] [stdout]   --> src/providers/outlook.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 26 |             .datetime_from_str(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/providers/outlook.rs:35:37
[INFO] [stdout]    |
[INFO] [stdout] 35 |             .unwrap_or_else(|_| UTC.timestamp(0, 0))
[INFO] [stdout]    |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]   --> src/schedule.rs:47:38
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let min_date = self.timezone.ymd(now.year(), now.month(), now.day()) - Duration::days(2);
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]   --> src/schedule.rs:48:38
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let max_date = self.timezone.ymd(min_date.year() + 5, 1, 1);
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:131:25
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let date = tzid.ymd(day.year, day.month, day.day);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 |         tzid.ymd(self.year, self.month, self.day)
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/schedule.rs:324:35
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let start = self.timezone.timestamp_millis(timespan.start());
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/schedule.rs:325:33
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let end = self.timezone.timestamp_millis(timespan.end());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/shared/recurrence.rs:84:50
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let until = self.until.map(|ts| timezone.timestamp(ts as i64 / 1000, 0));
[INFO] [stdout]    |                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/shared/recurrence.rs:86:32
[INFO] [stdout]    |
[INFO] [stdout] 86 |         let dtstart = timezone.timestamp(start_ts / 1000, 0);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/timespan.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |         tz.timestamp_millis(timestamp_millis)
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/account.rs:64:29
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 if let Some(mut webhook_settings) = self.webhook.as_mut() {
[INFO] [stdout]    |                             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling nettu_scheduler_domain v0.6.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated struct `chrono::Date`: Use `NaiveDate` or `DateTime<Tz>` instead
[INFO] [stdout]    --> src/schedule.rs:295:38
[INFO] [stdout]     |
[INFO] [stdout] 295 |     pub fn date(&self, tzid: &Tz) -> Date<Tz> {
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/booking_slots.rs:76:29
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let first_date = tz.timestamp_millis(slots[0].start);
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/booking_slots.rs:81:48
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let current_date = format_date(&tz.timestamp_millis(current_date.start));
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/booking_slots.rs:213:25
[INFO] [stdout]     |
[INFO] [stdout] 213 |     let start_date = tz.ymd(
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/booking_slots.rs:218:31
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let start_ts = start_date.and_hms(0, 0, 0).timestamp_millis();
[INFO] [stdout]     |                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/booking_slots.rs:219:23
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let end_date = tz.ymd(parsed_end_date.0, parsed_end_date.1, parsed_end_date.2);
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/booking_slots.rs:220:27
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let end_ts = end_date.and_hms(0, 0, 0).timestamp_millis() + 1000 * 60 * 60 * 24;
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/event.rs:120:35
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 let exdate = tzid.timestamp_millis(*exdate);
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/event.rs:249:29
[INFO] [stdout]     |
[INFO] [stdout] 249 |             until: Some(Utc.ymd(2150, 1, 1).and_hms(0, 0, 0).timestamp_millis() as isize), // too big until
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/event.rs:249:45
[INFO] [stdout]     |
[INFO] [stdout] 249 |             until: Some(Utc.ymd(2150, 1, 1).and_hms(0, 0, 0).timestamp_millis() as isize), // too big until
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::datetime_from_str`: use `DateTime::parse_from_str` or `NaiveDateTime::parse_from_str` with `and_utc()` or `and_local_timezone()` instead
[INFO] [stdout]   --> src/providers/outlook.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 26 |             .datetime_from_str(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/providers/outlook.rs:35:37
[INFO] [stdout]    |
[INFO] [stdout] 35 |             .unwrap_or_else(|_| UTC.timestamp(0, 0))
[INFO] [stdout]    |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]   --> src/schedule.rs:47:38
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let min_date = self.timezone.ymd(now.year(), now.month(), now.day()) - Duration::days(2);
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]   --> src/schedule.rs:48:38
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let max_date = self.timezone.ymd(min_date.year() + 5, 1, 1);
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:131:25
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let date = tzid.ymd(day.year, day.month, day.day);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:296:14
[INFO] [stdout]     |
[INFO] [stdout] 296 |         tzid.ymd(self.year, self.month, self.day)
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/schedule.rs:324:35
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let start = self.timezone.timestamp_millis(timespan.start());
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]    --> src/schedule.rs:325:33
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let end = self.timezone.timestamp_millis(timespan.end());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/schedule.rs:644:28
[INFO] [stdout]     |
[INFO] [stdout] 644 |         let noon_utc = Utc.ymd(2021, 4, 1).and_hms(0, 0, 0).timestamp_millis();
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/schedule.rs:644:44
[INFO] [stdout]     |
[INFO] [stdout] 644 |         let noon_utc = Utc.ymd(2021, 4, 1).and_hms(0, 0, 0).timestamp_millis();
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/shared/recurrence.rs:84:50
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let until = self.until.map(|ts| timezone.timestamp(ts as i64 / 1000, 0));
[INFO] [stdout]    |                                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> src/shared/recurrence.rs:86:32
[INFO] [stdout]    |
[INFO] [stdout] 86 |         let dtstart = timezone.timestamp(start_ts / 1000, 0);
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stdout]   --> src/timespan.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |         tz.timestamp_millis(timestamp_millis)
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/account.rs:64:29
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 if let Some(mut webhook_settings) = self.webhook.as_mut() {
[INFO] [stdout]    |                             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.50s
[INFO] running `Command { std: "docker" "inspect" "2f119ac360d6b4af802fabf34933aab648b6c374c5f7221d410529ef0723f123", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f119ac360d6b4af802fabf34933aab648b6c374c5f7221d410529ef0723f123", kill_on_drop: false }`
[INFO] [stdout] 2f119ac360d6b4af802fabf34933aab648b6c374c5f7221d410529ef0723f123
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Zrandomize-layout" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2024-10-28" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 26f2a3faeb94903aff99897efb4ffdf259d6fa50cbb8bfd8543dfd69a3471a37
[INFO] running `Command { std: "docker" "start" "-a" "26f2a3faeb94903aff99897efb4ffdf259d6fa50cbb8bfd8543dfd69a3471a37", kill_on_drop: false }`
[INFO] [stderr] warning: use of deprecated struct `chrono::Date`: Use `NaiveDate` or `DateTime<Tz>` instead
[INFO] [stderr]    --> src/schedule.rs:295:38
[INFO] [stderr]     |
[INFO] [stderr] 295 |     pub fn date(&self, tzid: &Tz) -> Date<Tz> {
[INFO] [stderr]     |                                      ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stderr]   --> src/booking_slots.rs:76:29
[INFO] [stderr]    |
[INFO] [stderr] 76 |         let first_date = tz.timestamp_millis(slots[0].start);
[INFO] [stderr]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stderr]   --> src/booking_slots.rs:81:48
[INFO] [stderr]    |
[INFO] [stderr] 81 |             let current_date = format_date(&tz.timestamp_millis(current_date.start));
[INFO] [stderr]    |                                                ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]    --> src/booking_slots.rs:213:25
[INFO] [stderr]     |
[INFO] [stderr] 213 |     let start_date = tz.ymd(
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stderr]    --> src/booking_slots.rs:218:31
[INFO] [stderr]     |
[INFO] [stderr] 218 |     let start_ts = start_date.and_hms(0, 0, 0).timestamp_millis();
[INFO] [stderr]     |                               ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]    --> src/booking_slots.rs:219:23
[INFO] [stderr]     |
[INFO] [stderr] 219 |     let end_date = tz.ymd(parsed_end_date.0, parsed_end_date.1, parsed_end_date.2);
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stderr]    --> src/booking_slots.rs:220:27
[INFO] [stderr]     |
[INFO] [stderr] 220 |     let end_ts = end_date.and_hms(0, 0, 0).timestamp_millis() + 1000 * 60 * 60 * 24;
[INFO] [stderr]     |                           ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stderr]    --> src/event.rs:120:35
[INFO] [stderr]     |
[INFO] [stderr] 120 |                 let exdate = tzid.timestamp_millis(*exdate);
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::datetime_from_str`: use `DateTime::parse_from_str` or `NaiveDateTime::parse_from_str` with `and_utc()` or `and_local_timezone()` instead
[INFO] [stderr]   --> src/providers/outlook.rs:26:14
[INFO] [stderr]    |
[INFO] [stderr] 26 |             .datetime_from_str(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stderr]   --> src/providers/outlook.rs:35:37
[INFO] [stderr]    |
[INFO] [stderr] 35 |             .unwrap_or_else(|_| UTC.timestamp(0, 0))
[INFO] [stderr]    |                                     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]   --> src/schedule.rs:47:38
[INFO] [stderr]    |
[INFO] [stderr] 47 |         let min_date = self.timezone.ymd(now.year(), now.month(), now.day()) - Duration::days(2);
[INFO] [stderr]    |                                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]   --> src/schedule.rs:48:38
[INFO] [stderr]    |
[INFO] [stderr] 48 |         let max_date = self.timezone.ymd(min_date.year() + 5, 1, 1);
[INFO] [stderr]    |                                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]    --> src/schedule.rs:131:25
[INFO] [stderr]     |
[INFO] [stderr] 131 |         let date = tzid.ymd(day.year, day.month, day.day);
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]    --> src/schedule.rs:296:14
[INFO] [stderr]     |
[INFO] [stderr] 296 |         tzid.ymd(self.year, self.month, self.day)
[INFO] [stderr]     |              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stderr]    --> src/schedule.rs:324:35
[INFO] [stderr]     |
[INFO] [stderr] 324 |         let start = self.timezone.timestamp_millis(timespan.start());
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stderr]    --> src/schedule.rs:325:33
[INFO] [stderr]     |
[INFO] [stderr] 325 |         let end = self.timezone.timestamp_millis(timespan.end());
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stderr]   --> src/shared/recurrence.rs:84:50
[INFO] [stderr]    |
[INFO] [stderr] 84 |         let until = self.until.map(|ts| timezone.timestamp(ts as i64 / 1000, 0));
[INFO] [stderr]    |                                                  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stderr]   --> src/shared/recurrence.rs:86:32
[INFO] [stderr]    |
[INFO] [stderr] 86 |         let dtstart = timezone.timestamp(start_ts / 1000, 0);
[INFO] [stderr]    |                                ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp_millis`: use `timestamp_millis_opt()` instead
[INFO] [stderr]   --> src/timespan.rs:31:12
[INFO] [stderr]    |
[INFO] [stderr] 31 |         tz.timestamp_millis(timestamp_millis)
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/account.rs:64:29
[INFO] [stderr]    |
[INFO] [stderr] 64 |                 if let Some(mut webhook_settings) = self.webhook.as_mut() {
[INFO] [stderr]    |                             ----^^^^^^^^^^^^^^^^
[INFO] [stderr]    |                             |
[INFO] [stderr]    |                             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]    --> src/event.rs:249:29
[INFO] [stderr]     |
[INFO] [stderr] 249 |             until: Some(Utc.ymd(2150, 1, 1).and_hms(0, 0, 0).timestamp_millis() as isize), // too big until
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stderr]    --> src/event.rs:249:45
[INFO] [stderr]     |
[INFO] [stderr] 249 |             until: Some(Utc.ymd(2150, 1, 1).and_hms(0, 0, 0).timestamp_millis() as isize), // too big until
[INFO] [stderr]     |                                             ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stderr]    --> src/schedule.rs:644:28
[INFO] [stderr]     |
[INFO] [stderr] 644 |         let noon_utc = Utc.ymd(2021, 4, 1).and_hms(0, 0, 0).timestamp_millis();
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stderr]    --> src/schedule.rs:644:44
[INFO] [stderr]     |
[INFO] [stderr] 644 |         let noon_utc = Utc.ymd(2021, 4, 1).and_hms(0, 0, 0).timestamp_millis();
[INFO] [stderr]     |                                            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `nettu_scheduler_domain` (lib) generated 20 warnings (run `cargo fix --lib -p nettu_scheduler_domain` to apply 1 suggestion)
[INFO] [stderr] warning: `nettu_scheduler_domain` (lib test) generated 24 warnings (20 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/nettu_scheduler_domain-1e45ac74f5b0d8d4)
[INFO] [stdout] 
[INFO] [stdout] running 55 tests
[INFO] [stdout] test account::test::it_creates_account ... ok
[INFO] [stdout] test booking_slots::test::generate_service_bookingslots_with_one_user_in_service ... ok
[INFO] [stdout] test booking_slots::test::get_booking_slots_empty ... ok
[INFO] [stdout] test booking_slots::test::get_booking_slots_from_many_events ... ok
[INFO] [stdout] test booking_slots::test::generate_service_bookingslots_with_two_users_in_service ... ok
[INFO] [stdout] test booking_slots::test::get_booking_slots_from_one_event_1 ... ok
[INFO] [stdout] test booking_slots::test::get_booking_slots_from_one_event_2 ... ok
[INFO] [stdout] test booking_slots::test::get_booking_slots_from_one_event_3 ... ok
[INFO] [stdout] test booking_slots::test::get_booking_slots_from_two_events ... ok
[INFO] [stdout] test booking_slots::test::slot_that_crosses_end ... ok
[INFO] [stdout] test booking_slots::test::slot_that_crosses_start ... ok
[INFO] [stdout] test booking_slots::test::slot_that_fits_right_at_end ... ok
[INFO] [stdout] test date::test::it_accepts_valid_dates ... ok
[INFO] [stdout] test event::test::calendar_event_without_recurrence ... ok
[INFO] [stdout] test event::test::daily_calendar_event ... ok
[INFO] [stdout] test event::test::rejects_event_with_invalid_recurrence ... ok
[INFO] [stdout] test event_instance::test::combining_events::remove_busy_from_free_complete_partial_split_in_2 ... ok
[INFO] [stdout] test event_instance::test::combining_events::remove_busy_from_free_no_overlap ... ok
[INFO] [stdout] test event_instance::test::combining_events::overlap_with_extending ... ok
[INFO] [stdout] test event_instance::test::combining_events::no_overlap ... ok
[INFO] [stdout] test event_instance::test::combining_events::remove_busy_from_free_complete_overlap ... ok
[INFO] [stdout] test event_instance::test::compatible_events_test_1 ... ok
[INFO] [stdout] test event_instance::test::compatible_events_test_3 ... ok
[INFO] [stdout] test event_instance::test::another_free_busy ... ok
[INFO] [stdout] test event_instance::test::compatible_events_test_4 ... ok
[INFO] [stdout] test event_instance::test::compatible_events_test_5 ... ok
[INFO] [stdout] test event_instance::test::compatible_events_test_6 ... ok
[INFO] [stdout] test event_instance::test::no_free_event ... ok
[INFO] [stdout] test event_instance::test::compatible_events_test_2 ... ok
[INFO] [stdout] test event_instance::test::combining_events::overlap_without_extending ... ok
[INFO] [stdout] test event_instance::test::simple_freebusy ... ok
[INFO] [stdout] test event_instance::test::single_event ... ok
[INFO] [stdout] test event_instance::test::remove_busy_from_free_test_1 ... ok
[INFO] [stdout] test schedule::test::day_sanity_tests ... ok
[INFO] [stdout] test schedule::test::it_parses_intervals_for_rule ... ok
[INFO] [stdout] test event_instance::test::remove_busy_from_free_test_2 ... ok
[INFO] [stdout] test schedule::test::it_computes_freebusy_for_schedule ... ok
[INFO] [stdout] test event_instance::test::combining_events::remove_busy_from_free_complete_partial_split_in_1 ... ok
[INFO] [stdout] test event_instance::test::removes_all_after ... ok
[INFO] [stdout] test event_instance::test::removes_all_before ... ok
[INFO] [stdout] test schedule::test::schedule_freebusy ... ok
[INFO] [stdout] test schedule::test::schedule_freebusy_2 ... ok
[INFO] [stdout] test scheduling::round_robin::tests::round_robin_availability_assignment_without_members ... ok
[INFO] [stdout] test scheduling::round_robin::tests::round_robin_availability_assignment ... ok
[INFO] [stdout] test scheduling::round_robin::tests::round_robin_availability_assignment_2 ... ok
[INFO] [stdout] test scheduling::round_robin::tests::round_robin_eq_distribution_assignment_without_members ... ok
[INFO] [stdout] test event::test::allows_event_with_valid_recurrence ... ok
[INFO] [stdout] test shared::recurrence::test::serializes_weekday ... ok
[INFO] [stdout] test shared::recurrence::test::parses_invalid_weekday_str_correctly ... ok
[INFO] [stdout] test shared::recurrence::test::parses_valid_weekday_str_correctly ... ok
[INFO] [stdout] test scheduling::round_robin::tests::round_robin_eq_distribution_assignment ... ok
[INFO] [stdout] test booking_slots::test::groups_bookingslots_by_date ... ok
[INFO] [stdout] test account::test::it_accepts_valid_public_key ... FAILED
[INFO] [stdout] test date::test::it_rejects_invalid_dates ... ok
[INFO] [stdout] test account::test::it_rejects_invalid_public_key ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- account::test::it_accepts_valid_public_key stdout ----
[INFO] [stdout] thread 'account::test::it_accepts_valid_public_key' panicked at src/account.rs:140:78:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6461204fcafa - std::backtrace_rs::backtrace::libunwind::trace::h207520d6e9873551
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
[INFO] [stdout]    1:     0x6461204fcafa - std::backtrace_rs::backtrace::trace_unsynchronized::h2ed7433f370e3eca
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x6461204fcafa - std::sys::backtrace::_print_fmt::h916fac51166b18d7
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x6461204fcafa - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::ha0a4c9b8ce3802e6
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x646120523db3 - core::fmt::rt::Argument::fmt::h4cfc8587d52b3eb5
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/fmt/rt.rs:177:76
[INFO] [stdout]    5:     0x646120523db3 - core::fmt::write::h522cc39e5b36ae9f
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/fmt/mod.rs:1190:21
[INFO] [stdout]    6:     0x6461204f9593 - std::io::Write::write_fmt::h7d3c26752da97734
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/io/mod.rs:1839:15
[INFO] [stdout]    7:     0x6461204fc942 - std::sys::backtrace::BacktraceLock::print::h4b9e00b29e9c0942
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    8:     0x6461204fdf8a - std::panicking::default_hook::{{closure}}::hb59b88280d0324d9
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:268:22
[INFO] [stdout]    9:     0x6461204fdd94 - std::panicking::default_hook::he1dd496665be4a29
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:292:9
[INFO] [stdout]   10:     0x646120195f69 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h4ff71de18744e1dc
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/alloc/src/boxed.rs:2468:9
[INFO] [stdout]   11:     0x646120195f69 - test::test_main::{{closure}}::hcf7c055ce117aa81
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/test/src/lib.rs:133:21
[INFO] [stdout]   12:     0x6461204fe688 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h1d66c6bbd60c9692
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/alloc/src/boxed.rs:2468:9
[INFO] [stdout]   13:     0x6461204fe688 - std::panicking::rust_panic_with_hook::h2ff17fe8f26dfcf8
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:809:13
[INFO] [stdout]   14:     0x6461204fe44a - std::panicking::begin_panic_handler::{{closure}}::h4fad77951c07e101
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:674:13
[INFO] [stdout]   15:     0x6461204fcfd9 - std::sys::backtrace::__rust_end_short_backtrace::hb1a25b3da5d0ea08
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/sys/backtrace.rs:170:18
[INFO] [stdout]   16:     0x6461204fe0dc - rust_begin_unwind
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:665:5
[INFO] [stdout]   17:     0x6461205223e0 - core::panicking::panic_fmt::ha9db07b529f9b256
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/panicking.rs:75:14
[INFO] [stdout]   18:     0x646120522866 - core::result::unwrap_failed::h5e8218e4d4338b8a
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/result.rs:1698:5
[INFO] [stdout]   19:     0x646120124736 - core::result::Result<T,E>::unwrap::h205a709926bf7563
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/result.rs:1103:23
[INFO] [stdout]   20:     0x646120124736 - nettu_scheduler_domain::account::test::it_accepts_valid_public_key::h135b65d1cb765872
[INFO] [stdout]                                at /opt/rustwide/workdir/src/account.rs:140:23
[INFO] [stdout]   21:     0x6461201246a7 - nettu_scheduler_domain::account::test::it_accepts_valid_public_key::{{closure}}::hfdc45d6a68af0f39
[INFO] [stdout]                                at /opt/rustwide/workdir/src/account.rs:139:37
[INFO] [stdout]   22:     0x64612011ea66 - core::ops::function::FnOnce::call_once::h08873565ffa971b0
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x64612019a83b - core::ops::function::FnOnce::call_once::h22c3ba5715e93f05
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x64612019a83b - test::__rust_begin_short_backtrace::h8e82d8113d0da17f
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/test/src/lib.rs:621:18
[INFO] [stdout]   25:     0x64612019a1b7 - test::run_test_in_process::{{closure}}::h33235f4f20b7b7c7
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/test/src/lib.rs:644:60
[INFO] [stdout]   26:     0x64612019a1b7 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hb5043206310c586f
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   27:     0x64612019a1b7 - std::panicking::try::do_call::h9ad4731a60ab23e2
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:557:40
[INFO] [stdout]   28:     0x64612019a1b7 - std::panicking::try::h3824d23db772a716
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:520:19
[INFO] [stdout]   29:     0x64612019a1b7 - std::panic::catch_unwind::h5afd514605fde46b
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panic.rs:358:14
[INFO] [stdout]   30:     0x64612019a1b7 - test::run_test_in_process::h0d5cbfa7067d1720
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/test/src/lib.rs:644:27
[INFO] [stdout]   31:     0x64612019a1b7 - test::run_test::{{closure}}::h708eb8872708115d
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/test/src/lib.rs:565:43
[INFO] [stdout]   32:     0x64612015d8d4 - test::run_test::{{closure}}::h392c51cee94713ab
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/test/src/lib.rs:595:41
[INFO] [stdout]   33:     0x64612015d8d4 - std::sys::backtrace::__rust_begin_short_backtrace::h2f40290710935a8b
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/sys/backtrace.rs:154:18
[INFO] [stdout]   34:     0x64612016107e - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h3fd968d89053a903
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/thread/mod.rs:541:17
[INFO] [stdout]   35:     0x64612016107e - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h743f637ba4229880
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   36:     0x64612016107e - std::panicking::try::do_call::h07440897322525a6
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:557:40
[INFO] [stdout]   37:     0x64612016107e - std::panicking::try::he5a2e00188156637
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panicking.rs:520:19
[INFO] [stdout]   38:     0x64612016107e - std::panic::catch_unwind::hbaf3cae49b3c6433
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/panic.rs:358:14
[INFO] [stdout]   39:     0x64612016107e - std::thread::Builder::spawn_unchecked_::{{closure}}::h8e141ea224820bce
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/thread/mod.rs:540:30
[INFO] [stdout]   40:     0x64612016107e - core::ops::function::FnOnce::call_once{{vtable.shim}}::h90d312fedd7b8ea8
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x64612050247b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h69aa08ddb6adb8b6
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/alloc/src/boxed.rs:2454:9
[INFO] [stdout]   42:     0x64612050247b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h5aa36efdb79c806f
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/alloc/src/boxed.rs:2454:9
[INFO] [stdout]   43:     0x64612050247b - std::sys::pal::unix::thread::Thread::new::thread_start::h6cd80a1b4be5158d
[INFO] [stdout]                                at /rustc/df4ca44d3fbc9301ee17f30f4d474e6ae4b05252/library/std/src/sys/pal/unix/thread.rs:105:17
[INFO] [stdout]   44:     0x757555f8aac3 - <unknown>
[INFO] [stdout]   45:     0x75755601ba04 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     account::test::it_accepts_valid_public_key
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 54 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "26f2a3faeb94903aff99897efb4ffdf259d6fa50cbb8bfd8543dfd69a3471a37", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "26f2a3faeb94903aff99897efb4ffdf259d6fa50cbb8bfd8543dfd69a3471a37", kill_on_drop: false }`
[INFO] [stdout] 26f2a3faeb94903aff99897efb4ffdf259d6fa50cbb8bfd8543dfd69a3471a37
