[INFO] crate abc 0.2.3 is already in cache [INFO] checking abc-0.2.3 against try#85cc1486e1f000dce4bb8e1b3cfab2b654b102a8 for pr-73323 [INFO] extracting crate abc 0.2.3 into /workspace/builds/worker-6/source [INFO] validating manifest of crates.io crate abc 0.2.3 on toolchain 85cc1486e1f000dce4bb8e1b3cfab2b654b102a8 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+85cc1486e1f000dce4bb8e1b3cfab2b654b102a8" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking crates.io crate abc 0.2.3 [INFO] finished tweaking crates.io crate abc 0.2.3 [INFO] tweaked toml for crates.io crate abc 0.2.3 written to /workspace/builds/worker-6/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+85cc1486e1f000dce4bb8e1b3cfab2b654b102a8" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+85cc1486e1f000dce4bb8e1b3cfab2b654b102a8" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "MAP_USER_ID=0" "-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" "--network" "none" "rustops/crates-build-env@sha256:819119df93c0f5eca3f29186f14981ef29945a311854d7222af07488600a2584" "/opt/rustwide/cargo-home/bin/cargo" "+85cc1486e1f000dce4bb8e1b3cfab2b654b102a8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6994a449d62b4962548ec13c85f2082430d35b4d5502e932fad46611bd77314d [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "6994a449d62b4962548ec13c85f2082430d35b4d5502e932fad46611bd77314d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6994a449d62b4962548ec13c85f2082430d35b4d5502e932fad46611bd77314d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6994a449d62b4962548ec13c85f2082430d35b4d5502e932fad46611bd77314d", kill_on_drop: false }` [INFO] [stdout] 6994a449d62b4962548ec13c85f2082430d35b4d5502e932fad46611bd77314d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env@sha256:819119df93c0f5eca3f29186f14981ef29945a311854d7222af07488600a2584" "/opt/rustwide/cargo-home/bin/cargo" "+85cc1486e1f000dce4bb8e1b3cfab2b654b102a8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 16cfdcb661565e8671adda50c9d1abb9ca8c311e57be806533bfc0ea7562f7f7 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "16cfdcb661565e8671adda50c9d1abb9ca8c311e57be806533bfc0ea7562f7f7", kill_on_drop: false }` [INFO] [stderr] Checking crossbeam v0.2.12 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking num_cpus v0.2.13 [INFO] [stderr] Checking rand v0.3.23 [INFO] [stderr] Checking abc v0.2.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | try!(crossbeam::scope(|scope| { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | try!(candidates.lock()).push(candidate); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:137:30 [INFO] [stdout] | [INFO] [stdout] 137 | let mut candidates = try!(candidates.into_inner()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:179:30 [INFO] [stdout] | [INFO] [stdout] 179 | let read_guard = try!(candidate_mutex.read()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:198:30 [INFO] [stdout] | [INFO] [stdout] 198 | let mut best_guard = try!(self.best.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:203:36 [INFO] [stdout] | [INFO] [stdout] 203 | let sender_guard = try!(mutex.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:206:21 [INFO] [stdout] | [INFO] [stdout] 206 | try!(self.stop()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:217:31 [INFO] [stdout] | [INFO] [stdout] 217 | let mut write_guard = try!(self.working[n].write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:220:13 [INFO] [stdout] | [INFO] [stdout] 220 | try!(self.consider_improvement(&write_guard.candidate)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:226:46 [INFO] [stdout] | [INFO] [stdout] 226 | let mut scouting_guard = try!(self.scouting.write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | try!(self.consider_improvement(&candidate)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:234:43 [INFO] [stdout] | [INFO] [stdout] 234 | let mut write_guard = try!(self.working[n].write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:238:42 [INFO] [stdout] | [INFO] [stdout] 238 | let mut scouting_guard = try!(self.scouting.write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:252:34 [INFO] [stdout] | [INFO] [stdout] 252 | let scouting_guard = try!(self.scouting.read()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:282:31 [INFO] [stdout] | [INFO] [stdout] 282 | let current_working = try!(self.current_working()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:286:38 [INFO] [stdout] | [INFO] [stdout] 286 | let scouting_guard = try!(self.scouting.read()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:292:34 [INFO] [stdout] | [INFO] [stdout] 292 | Task::Observer(_) => try!(self.choose(¤t_working)), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:299:29 [INFO] [stdout] | [INFO] [stdout] 299 | let mut guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:310:45 [INFO] [stdout] | [INFO] [stdout] 310 | ... let mut guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:315:40 [INFO] [stdout] | [INFO] [stdout] 315 | ... Some(t) => try!(self.execute(&t)), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:342:9 [INFO] [stdout] | [INFO] [stdout] 342 | try!(self.run(tasks)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:359:31 [INFO] [stdout] | [INFO] [stdout] 359 | let mut tasks_guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:384:27 [INFO] [stdout] | [INFO] [stdout] 384 | let tasks_guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | try!(write!(f, "..{:?}..\n", working.candidate)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/result.rs:23:32 [INFO] [stdout] | [INFO] [stdout] 23 | fn cause(&self) -> Option<&error::Error> { [INFO] [stdout] | ^^^^^^^^^^^^ help: use `dyn`: `dyn error::Error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/scaling.rs:37:28 [INFO] [stdout] | [INFO] [stdout] 37 | pub type ScalingFunction = Fn(Vec) -> Vec + Send + Sync + 'static; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn(Vec) -> Vec + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | try!(crossbeam::scope(|scope| { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | try!(candidates.lock()).push(candidate); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:137:30 [INFO] [stdout] | [INFO] [stdout] 137 | let mut candidates = try!(candidates.into_inner()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:179:30 [INFO] [stdout] | [INFO] [stdout] 179 | let read_guard = try!(candidate_mutex.read()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:198:30 [INFO] [stdout] | [INFO] [stdout] 198 | let mut best_guard = try!(self.best.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:203:36 [INFO] [stdout] | [INFO] [stdout] 203 | let sender_guard = try!(mutex.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:206:21 [INFO] [stdout] | [INFO] [stdout] 206 | try!(self.stop()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:217:31 [INFO] [stdout] | [INFO] [stdout] 217 | let mut write_guard = try!(self.working[n].write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:220:13 [INFO] [stdout] | [INFO] [stdout] 220 | try!(self.consider_improvement(&write_guard.candidate)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:226:46 [INFO] [stdout] | [INFO] [stdout] 226 | let mut scouting_guard = try!(self.scouting.write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | try!(self.consider_improvement(&candidate)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:234:43 [INFO] [stdout] | [INFO] [stdout] 234 | let mut write_guard = try!(self.working[n].write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:238:42 [INFO] [stdout] | [INFO] [stdout] 238 | let mut scouting_guard = try!(self.scouting.write()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:252:34 [INFO] [stdout] | [INFO] [stdout] 252 | let scouting_guard = try!(self.scouting.read()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:282:31 [INFO] [stdout] | [INFO] [stdout] 282 | let current_working = try!(self.current_working()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:286:38 [INFO] [stdout] | [INFO] [stdout] 286 | let scouting_guard = try!(self.scouting.read()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:292:34 [INFO] [stdout] | [INFO] [stdout] 292 | Task::Observer(_) => try!(self.choose(¤t_working)), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:299:29 [INFO] [stdout] | [INFO] [stdout] 299 | let mut guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:310:45 [INFO] [stdout] | [INFO] [stdout] 310 | ... let mut guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:315:40 [INFO] [stdout] | [INFO] [stdout] 315 | ... Some(t) => try!(self.execute(&t)), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:342:9 [INFO] [stdout] | [INFO] [stdout] 342 | try!(self.run(tasks)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:359:31 [INFO] [stdout] | [INFO] [stdout] 359 | let mut tasks_guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:384:27 [INFO] [stdout] | [INFO] [stdout] 384 | let tasks_guard = try!(self.tasks.lock()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/hive.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | try!(write!(f, "..{:?}..\n", working.candidate)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/result.rs:23:32 [INFO] [stdout] | [INFO] [stdout] 23 | fn cause(&self) -> Option<&error::Error> { [INFO] [stdout] | ^^^^^^^^^^^^ help: use `dyn`: `dyn error::Error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/scaling.rs:37:28 [INFO] [stdout] | [INFO] [stdout] 37 | pub type ScalingFunction = Fn(Vec) -> Vec + Send + Sync + 'static; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn(Vec) -> Vec + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 26 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 26 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.57s [INFO] running `Command { std: "docker" "inspect" "16cfdcb661565e8671adda50c9d1abb9ca8c311e57be806533bfc0ea7562f7f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "16cfdcb661565e8671adda50c9d1abb9ca8c311e57be806533bfc0ea7562f7f7", kill_on_drop: false }` [INFO] [stdout] 16cfdcb661565e8671adda50c9d1abb9ca8c311e57be806533bfc0ea7562f7f7