[INFO] updating cached repository https://github.com/laopo001/leetcode-rust [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"` [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b4c84a61da1a00c3aa167934161672410933a261 [INFO] checking laopo001/leetcode-rust against master#2748a9fd93dd1a00a4521f4f16de5befbf77f6cd for pr-62262-1 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flaopo001%2Fleetcode-rust" "/workspace/builds/worker-13/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-13/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/laopo001/leetcode-rust on toolchain 2748a9fd93dd1a00a4521f4f16de5befbf77f6cd [INFO] running `"/workspace/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/laopo001/leetcode-rust [INFO] finished tweaking git repo https://github.com/laopo001/leetcode-rust [INFO] tweaked toml for git repo https://github.com/laopo001/leetcode-rust written to /workspace/builds/worker-13/source/Cargo.toml [INFO] crate git repo https://github.com/laopo001/leetcode-rust already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/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" "/opt/rustwide/cargo-home/bin/cargo" "+2748a9fd93dd1a00a4521f4f16de5befbf77f6cd" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 6ec9c41a96914228a9935817bbee277ea8b72c3512c8839af95e62317b92f3dc [INFO] running `"docker" "start" "-a" "6ec9c41a96914228a9935817bbee277ea8b72c3512c8839af95e62317b92f3dc"` [INFO] [stderr] Checking leetcode v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused import: `HashSet` [INFO] [stderr] --> src/longest_arithmetic_sequence/mod.rs:5:35 [INFO] [stderr] | [INFO] [stderr] 5 | use std::collections::{HashMap, HashSet}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::base::Solution` [INFO] [stderr] --> src/maximum_length_of_repeated_subarray/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::base::Solution; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::max` [INFO] [stderr] --> src/number_of_longest_increasing_subsequence/mod.rs:5:7 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::max; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/powx_n/mod.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/find_pivot_index/mod.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `HashSet` [INFO] [stderr] --> src/longest_arithmetic_sequence/mod.rs:5:35 [INFO] [stderr] | [INFO] [stderr] 5 | use std::collections::{HashMap, HashSet}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::base::Solution` [INFO] [stderr] --> src/maximum_length_of_repeated_subarray/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::base::Solution; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::max` [INFO] [stderr] --> src/number_of_longest_increasing_subsequence/mod.rs:5:7 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::max; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/powx_n/mod.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/find_pivot_index/mod.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `JsArray` [INFO] [stderr] --> src/length_of_last_word/mod.rs:1:29 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::base::{Solution, JsArray}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `root` is never read [INFO] [stderr] --> src/increasing_order_search_tree/mod.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | let mut root: Option>> = None; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `first` [INFO] [stderr] --> src/number_of_longest_increasing_subsequence/mod.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | let mut first = false; [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_first` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/triangle/mod.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | let mut index = 0; [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `matrix` [INFO] [stderr] --> src/spiral_matrix_iii/mod.rs:6:7 [INFO] [stderr] | [INFO] [stderr] 6 | let matrix = vec![vec![0; c as usize]; r as usize]; [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_matrix` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `board` [INFO] [stderr] --> src/valid_sudoku/mod.rs:4:28 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn is_valid_sudoku(board: Vec>) -> bool { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_board` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/number_of_longest_increasing_subsequence/mod.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | let mut first = false; [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: variable does not need to be mutable [INFO] [stderr] --> src/triangle/mod.rs:7:13 [INFO] [stderr] | [INFO] [stderr] 7 | let mut index = 0; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/remove_duplicates_from_sorted_list/mod.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | let mut q = arr.pop().unwrap(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/most_common_word/mod.rs:21:7 [INFO] [stderr] | [INFO] [stderr] 21 | let mut arr: Vec<&str> = paragraph.split(" ").collect(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/reverse_vowels_of_a_string/mod.rs:20:8 [INFO] [stderr] | [INFO] [stderr] 20 | let mut res = s.as_bytes_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/find_pivot_index/mod.rs:11:6 [INFO] [stderr] | [INFO] [stderr] 11 | let mut res: i32; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/spiral_matrix/mod.rs:8:7 [INFO] [stderr] | [INFO] [stderr] 8 | let mut len_y = matrix.len(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/convert_a_number_to_hexadecimal/mod.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn to_hex(mut num: i32) -> String { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> src/remove_duplicates_from_sorted_list/mod.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | unsafe { [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_unsafe)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `JsArray` [INFO] [stderr] --> src/length_of_last_word/mod.rs:1:29 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::base::{Solution, JsArray}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Solution` [INFO] [stderr] --> src/longest_arithmetic_sequence/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | struct Solution; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `longest_arith_seq_length` [INFO] [stderr] --> src/longest_arithmetic_sequence/mod.rs:4:2 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn longest_arith_seq_length(a: Vec) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Solution` [INFO] [stderr] --> src/longest_palindromic/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | struct Solution; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `longest_palindromelongest_palindrome` [INFO] [stderr] --> src/longest_palindromic/mod.rs:6:2 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn longest_palindromelongest_palindrome(s: String) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sum_nums` [INFO] [stderr] --> src/find_pivot_index/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | fn sum_nums(l: usize, r: usize, nums: &Vec, map: &mut Vec>>) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `root` is never read [INFO] [stderr] --> src/increasing_order_search_tree/mod.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | let mut root: Option>> = None; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `first` [INFO] [stderr] --> src/number_of_longest_increasing_subsequence/mod.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | let mut first = false; [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_first` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/triangle/mod.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | let mut index = 0; [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `matrix` [INFO] [stderr] --> src/spiral_matrix_iii/mod.rs:6:7 [INFO] [stderr] | [INFO] [stderr] 6 | let matrix = vec![vec![0; c as usize]; r as usize]; [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_matrix` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `board` [INFO] [stderr] --> src/valid_sudoku/mod.rs:4:28 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn is_valid_sudoku(board: Vec>) -> bool { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_board` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/number_of_longest_increasing_subsequence/mod.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | let mut first = false; [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: variable does not need to be mutable [INFO] [stderr] --> src/triangle/mod.rs:7:13 [INFO] [stderr] | [INFO] [stderr] 7 | let mut index = 0; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/remove_duplicates_from_sorted_list/mod.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | let mut q = arr.pop().unwrap(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/most_common_word/mod.rs:21:7 [INFO] [stderr] | [INFO] [stderr] 21 | let mut arr: Vec<&str> = paragraph.split(" ").collect(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/reverse_vowels_of_a_string/mod.rs:20:8 [INFO] [stderr] | [INFO] [stderr] 20 | let mut res = s.as_bytes_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/find_pivot_index/mod.rs:11:6 [INFO] [stderr] | [INFO] [stderr] 11 | let mut res: i32; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/spiral_matrix/mod.rs:8:7 [INFO] [stderr] | [INFO] [stderr] 8 | let mut len_y = matrix.len(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/convert_a_number_to_hexadecimal/mod.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn to_hex(mut num: i32) -> String { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/main.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | fn dynamic_dispatch(t: &Bar) { [INFO] [stderr] | ^^^ help: use `dyn`: `dyn Bar` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> src/remove_duplicates_from_sorted_list/mod.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | unsafe { [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_unsafe)]` on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Solution` [INFO] [stderr] --> src/longest_arithmetic_sequence/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | struct Solution; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `longest_arith_seq_length` [INFO] [stderr] --> src/longest_arithmetic_sequence/mod.rs:4:2 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn longest_arith_seq_length(a: Vec) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Solution` [INFO] [stderr] --> src/longest_palindromic/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | struct Solution; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `longest_palindromelongest_palindrome` [INFO] [stderr] --> src/longest_palindromic/mod.rs:6:2 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn longest_palindromelongest_palindrome(s: String) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sum_nums` [INFO] [stderr] --> src/find_pivot_index/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | fn sum_nums(l: usize, r: usize, nums: &Vec, map: &mut Vec>>) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/main.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | fn dynamic_dispatch(t: &Bar) { [INFO] [stderr] | ^^^ help: use `dyn`: `dyn Bar` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.38s [INFO] running `"docker" "inspect" "6ec9c41a96914228a9935817bbee277ea8b72c3512c8839af95e62317b92f3dc"` [INFO] running `"docker" "rm" "-f" "6ec9c41a96914228a9935817bbee277ea8b72c3512c8839af95e62317b92f3dc"` [INFO] [stdout] 6ec9c41a96914228a9935817bbee277ea8b72c3512c8839af95e62317b92f3dc