✓ Run #124 passed
main at a09dc29bf4f0 · pushed by andymccall · 2 min 12 s · pipeline b8d803bf2ab2 · .flow/pipeline.kdl · all runs
✓ fmt passed · exit 0 · 1.5 s · on earth-1 · signed receipt by earth-1 (OxygenFlow runner)
0.0sfetching andymccall/oxygen for state 0554aaa7ddef+0912a0337a95+0955469ac0e1+0f93f49ce059+11c958021e1a+206c76cad4bf+2517abe64654+4161262eeb29+4d6c9c1b358c+57eaac9107df+5e4e2ef26abb+60a1223c894f+7df9007b163c+8349c327fe83+89a1d0243544+99e3e0af08df+ab4d4e31b38d+adec9a0796b8+b288cd254343+b4fa2bc1ca6a+bdd894b548e4+be451356e3ef+d443639bcf35+d77e1702d770+dfe165877345+eaf3e9068180+fe7a964b3c88 0.4sbooting a microVM: 1 vCPU, 1024 MiB, rootfs 9d76e1aef3ab
✓ build passed · exit 0 · 1 min 1 s · on earth-1 · signed receipt by earth-1 (OxygenFlow runner) · 1 artifact
- oxy /src/target/release/oxy · 16.1 MiB · blob
14330a17edbe
0.0sfetching andymccall/oxygen for state 0554aaa7ddef+0912a0337a95+0955469ac0e1+0f93f49ce059+11c958021e1a+206c76cad4bf+2517abe64654+4161262eeb29+4d6c9c1b358c+57eaac9107df+5e4e2ef26abb+60a1223c894f+7df9007b163c+8349c327fe83+89a1d0243544+99e3e0af08df+ab4d4e31b38d+adec9a0796b8+b288cd254343+b4fa2bc1ca6a+bdd894b548e4+be451356e3ef+d443639bcf35+d77e1702d770+dfe165877345+eaf3e9068180+fe7a964b3c88 0.2sbooting a microVM: 4 vCPU, 8192 MiB, rootfs 9d76e1aef3ab 4.5sflow: prebuilt dependencies copied in 4 s 5.2s Compiling oxy-core v0.1.0 (/src/crates/oxy-core) 5.2s Compiling oxy v0.1.0 (/src) 12.7s Compiling oxy-server v0.1.0 (/src/crates/oxy-server) 49.5s Finished `release` profile [optimized] target(s) in 44.94s 61.3sartifact oxy: 16857264 bytes, blob 14330a17edbe
✓ clippy passed · exit 0 · 14.1 s · on earth-1 · signed receipt by earth-1 (OxygenFlow runner)
0.0sfetching andymccall/oxygen for state 0554aaa7ddef+0912a0337a95+0955469ac0e1+0f93f49ce059+11c958021e1a+206c76cad4bf+2517abe64654+4161262eeb29+4d6c9c1b358c+57eaac9107df+5e4e2ef26abb+60a1223c894f+7df9007b163c+8349c327fe83+89a1d0243544+99e3e0af08df+ab4d4e31b38d+adec9a0796b8+b288cd254343+b4fa2bc1ca6a+bdd894b548e4+be451356e3ef+d443639bcf35+d77e1702d770+dfe165877345+eaf3e9068180+fe7a964b3c88 0.2sbooting a microVM: 4 vCPU, 8192 MiB, rootfs 9d76e1aef3ab 4.4sflow: prebuilt dependencies copied in 4 s 5.1s Checking oxy-core v0.1.0 (/src/crates/oxy-core) 5.1s Compiling oxy v0.1.0 (/src) 10.3s Checking oxy-server v0.1.0 (/src/crates/oxy-server) 12.9s Finished `dev` profile [unoptimized] target(s) in 8.41s
✓ test passed · exit 0 · 50.9 s · on earth-1 · signed receipt by earth-1 (OxygenFlow runner)
0.0sfetching andymccall/oxygen for state 0554aaa7ddef+0912a0337a95+0955469ac0e1+0f93f49ce059+11c958021e1a+206c76cad4bf+2517abe64654+4161262eeb29+4d6c9c1b358c+57eaac9107df+5e4e2ef26abb+60a1223c894f+7df9007b163c+8349c327fe83+89a1d0243544+99e3e0af08df+ab4d4e31b38d+adec9a0796b8+b288cd254343+b4fa2bc1ca6a+bdd894b548e4+be451356e3ef+d443639bcf35+d77e1702d770+dfe165877345+eaf3e9068180+fe7a964b3c88 0.2sbooting a microVM: 4 vCPU, 8192 MiB, rootfs 9d76e1aef3ab 4.3sflow: prebuilt dependencies copied in 4 s 5.0s Compiling oxy-core v0.1.0 (/src/crates/oxy-core) 5.0s Compiling oxy v0.1.0 (/src) 11.7s Compiling oxy-server v0.1.0 (/src/crates/oxy-server) 22.3s Finished `test` profile [unoptimized] target(s) in 17.96s 22.3s Running unittests src/main.rs (target/debug/deps/oxy-9a18b1e672027074) 22.3s 22.3srunning 3 tests 22.3stest cli::ui::tests::relative_times ... ok 22.3stest cli::help_tests::every_command_and_argument_has_help ... ok 22.3stest cli::format::tests::dates ... ok 22.3s 22.3stest result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s 22.3s 22.3s 22.3srunning 2 tests 22.3s Running tests/cli_docs.rs (target/debug/deps/cli_docs-121f5309701e607d) 22.4stest man_pages_for_every_command ... ok 22.4stest completions_for_each_shell ... ok 22.4s 22.4stest result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s 22.4s 22.4s Running tests/cli_json.rs (target/debug/deps/cli_json-c7416b71de2e1ca0) 22.4s 22.4srunning 7 tests 22.5stest a_clean_status_needs_no_history_and_misses_no_change ... ok 22.6stest commit_from_a_file_and_describe_for_builds ... ok 22.6stest a_bookmark_at_one_head_of_several_is_refused_unless_asked_for ... ok 22.7stest the_history_of_a_function ... ok 22.7stest pull_names_its_bookmark_and_the_others_left_behind ... ok 22.8stest receipts_verify_import_list_show_and_export ... ok 23.4stest machine_interface_round_trips ... ok 23.4s 23.4stest result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.02s 23.4s 23.4s Running unittests src/lib.rs (target/debug/deps/oxy_core-022dc7bbadabc959) 23.4s 23.4srunning 197 tests 23.4stest attributes::tests::eol_conversions ... ok 23.4stest attest::tests::rejects_bad_seals ... ok 23.4stest cbor::tests::huge_length_does_not_allocate ... ok 23.4stest attest::tests::round_trips ... ok 23.4stest cbor::tests::integers_use_shortest_form ... ok 23.4stest cbor::tests::maps_are_sorted_and_unique ... ok 23.4stest cbor::tests::rejects_non_shortest_integers ... ok 23.4stest cbor::tests::rejects_unsupported_items ... ok 23.5stest cbor::tests::strings_arrays_and_trailing ... ok 23.5stest cbor::tests::random_values_round_trip ... ok 23.5stest chunk::tests::adversarial_constant_input_hits_bounds ... ok 23.5stest cbor::tests::random_and_mutated_input_never_panics ... ok 23.5stest chunk::tests::masks_and_gear_are_pinned ... ok 23.5stest chunk::tests::small_inputs_are_one_chunk ... ok 23.5stest diff::tests::edits_for_typical_changes ... ok 23.5stest attributes::tests::parsing_and_precedence ... ok 23.5stest diff::tests::ranges_coalesce ... ok 23.5stest diff::tests::split_keeps_terminators ... ok 23.5stest durable::tests::a_failed_write_names_the_file_and_keeps_its_kind ... ok 23.5stest fasthash::tests::distinct_keys_spread_and_equal_keys_agree ... ok 23.5stest fasthash::tests::maps_work ... ok 23.5stest graph::tests::application_order_is_irrelevant ... ok 23.5stest graph::tests::concurrent_deletes_of_the_same_line_agree ... ok 23.5stest graph::tests::concurrent_inserts_at_different_anchors_do_not_conflict ... ok 23.5stest graph::tests::concurrent_inserts_at_same_anchor_conflict ... ok 23.5stest graph::tests::delete_insert_conflict_is_a_zombie ... ok 23.5stest graph::tests::empty_and_unterminated_files ... ok 23.5stest graph::tests::insert_after_a_line_deleted_by_a_dependency_is_not_a_conflict ... ok 23.5stest graph::tests::resolution_collapses_a_conflict ... ok 23.5stest graph::tests::sequential_inserts_and_deletes ... ok 23.5stest graph::tests::serialization_round_trip ... ok 23.5stest graph::tests::the_chain_shortcut_agrees_with_the_general_order ... ok 23.5stest hash::tests::header_matches_spec ... ok 23.5stest hash::tests::hex_round_trip ... ok 23.5stest hash::tests::types_are_domain_separated ... ok 23.6stest chunk::tests::insertion_only_disturbs_local_chunks ... ok 23.6stest chunk::tests::bounds_and_reassembly ... ok 23.7stest diff::tests::edits_replay_to_the_new_text_on_repetitive_files ... ok 23.7stest identity::tests::identity_round_trip_and_sizes ... ok 23.7stest identity::tests::secret_key_round_trip ... ok 23.7stest ids::tests::random_ids_differ_and_round_trip ... ok 23.7stest lanes::tests::a_diamond_takes_two_lanes_and_rejoins ... ok 23.7stest lanes::tests::linear_history_is_one_lane ... ok 23.7stest lines::tests::lines_split_index_and_join_as_the_line_rule_says ... ok 23.7stest objects::tests::a_skeleton_leaves_every_insert_out_and_says_where_its_lines_are ... ok 23.7stest objects::tests::blob_round_trip ... ok 23.7stest objects::tests::change_round_trips_and_hash_is_stable ... ok 23.7stest objects::tests::decode_rejects_bad_changes ... ok 23.7stest objects::tests::large_inserts_are_stored_as_text_blobs ... ok 23.7stest objects::tests::metadata_reads_without_the_operations ... ok 23.7stest objects::tests::mode_and_kind_tags ... ok 23.7stest objects::tests::names_are_validated ... ok 23.7stest objects::tests::self_references_resolve ... ok 23.7stest objects::tests::state_object_round_trip ... ok 23.7stest objects::tests::text_blobs_are_checked ... ok 23.7stest objects::tests::version_1_changes_keep_their_inline_inserts_and_hashes ... ok 23.7stest oplog::tests::op_round_trip ... ok 23.7stest identity::challenge_tests::a_challenge_signature_binds_key_and_bytes ... ok 23.7stest policy::tests::globs ... ok 23.8stest policy::tests::round_trip_and_rules ... ok 23.8stest portable::tests::collisions_and_names ... ok 23.8stest identity::tests::sign_and_verify ... ok 23.9stest identity::tests::stripping_or_forging_either_half_fails ... ok 23.9stest receipt::tests::receipts_round_trip_and_hash_as_receipt_objects ... ok 23.9stest protocol::tests::wire_round_trips ... ok 24.0stest receipt::tests::a_signed_receipt_verifies_and_tampering_does_not ... ok 24.2stest repo::hosted::tests::a_host_edit_by_a_key_that_is_not_a_delegate_is_refused ... ok 24.2stest policy::tests::signatures_need_root_threshold ... ok 24.2stest repo::prompt::tests::placeholders_and_glyphs ... ok 24.3stest repo::tests::a_binary_file_reverted_to_an_earlier_blob_keeps_it ... ok 24.3stest repo::tests::a_changed_attributes_file_disables_skipping_unchanged_files ... ok 24.3stest repo::tests::a_commit_leaves_a_manifest_the_next_status_trusts ... ok 24.4stest repo::tests::a_new_repository_is_healthy_before_its_first_commit ... ok 24.4stest repo::tests::a_parent_switch_with_carry_leaves_a_subrepo_ahead_of_its_pin_alone ... ok 24.5stest repo::tests::a_racy_manifest_entry_is_checked_by_hash ... ok 24.5stest repo::tests::a_raw_bundle_without_a_changes_text_is_refused ... ok 24.5stest repo::hosted::tests::a_host_edit_signed_by_a_delegate_lands ... ok 24.7stest repo::hosted::tests::a_host_edit_that_removes_markers_resolves_the_conflict ... ok 24.8stest repo::tests::attributes_binary_eol_nocompress_lockable ... ok 24.8stest repo::tests::bench_one_gibibyte_file ... ignored 24.9stest repo::hosted::tests::under_a_policy_a_delegate_may_update_the_reference_and_a_stranger_may_not ... ok 25.0stest repo::tests::blame_attributes_lines_to_introducing_changes_across_renames ... ok 25.0stest repo::tests::bisect_finds_the_first_bad_change ... ok 25.1stest repo::tests::bookmarks_switch_merge_and_push ... ok 25.2stest repo::tests::a_snapshot_during_a_switch_never_records_the_switch_as_edits ... ok 25.3stest repo::tests::checkout_moves_the_working_copy ... ok 25.3stest repo::tests::amend_into_older_change_and_split ... ok 25.4stest repo::tests::checkpoints_accelerate_loading_and_stay_correct ... ok 25.5stest repo::tests::bookmarks_are_deleted_on_a_remote ... ok 25.5stest repo::tests::checkpoints_keep_large_graphs_as_blobs_of_their_own ... ok 25.6stest repo::tests::bookmarks_with_slashes_push_and_checkpoint ... ok 25.6stest repo::tests::commits_and_diffs_leave_unchanged_files_alone ... ok 25.8stest repo::tests::concurrent_edits_conflict_and_can_be_resolved ... ok 25.9stest repo::tests::concurrent_commits_in_two_workspaces_lose_nothing ... ok 26.0stest repo::tests::deleting_a_line_after_an_insertion_below_it_is_not_a_conflict ... ok 26.4stest repo::tests::clone_push_pull_with_seals_and_attestations ... ok 26.5stest repo::tests::doctor_names_problems_and_what_to_do ... ok 26.5stest repo::tests::failed_requests_come_with_a_next_step ... ok 26.5stest repo::tests::format1_repositories_are_migrated_on_open ... ok 26.5stest repo::tests::fsck_names_a_missing_text_blob ... ok 26.8stest repo::tests::checkout_touches_only_what_differs_and_renders_in_batches ... ok 26.8stest repo::tests::describe_amend_abandon_heads ... ok 27.1stest repo::tests::git_export_mirrors_history ... ok 27.1stest repo::tests::gc_packs_objects_and_history_still_works ... ok 27.2stest repo::tests::git_import_brings_a_directory_back_rather_than_making_a_second ... ok 27.3stest repo::tests::fsck_passes_a_sound_repository_and_names_each_fault ... ok 27.3stest repo::tests::git_import_merge_leaves_no_orphan_behind ... ok 27.5stest repo::tests::git_import_merge_retires_a_placement_under_a_removed_directory ... ok 27.6stest repo::tests::git_import_resolves_a_binary_merged_in_git_and_verifies ... ok 27.7stest repo::tests::git_fetch_and_push_round_trip ... ok 27.7stest repo::tests::history_and_blame_of_a_loaded_state_match_the_full_walk ... ok 27.8stest repo::tests::git_import_reproduces_trees ... ok 27.8stest repo::tests::history_only_states_read_text_only_for_the_graphs_they_build ... ok 27.9stest repo::tests::hooks_can_veto_observe_and_add_dependencies ... ok 27.9stest repo::tests::git_submodules_import_and_export_as_gitlinks ... ok 28.0stest repo::tests::identity_is_found_in_the_key_directory_for_a_new_repository ... ok 28.0stest repo::tests::ignore_rules_do_not_untrack_files ... ok 28.1stest repo::tests::independent_changes_commute_and_make_multiple_heads ... ok 28.1stest repo::tests::init_snapshot_commit_log_undo ... ok 28.2stest repo::tests::large_files_are_chunked_and_read_back ... ok 28.2stest repo::tests::identities_and_signed_commits ... ok 28.2stest repo::tests::lazy_blobs_are_fetched_on_first_read ... ok 28.3stest repo::tests::line_ranges_have_exact_histories ... ok 28.4stest repo::tests::merges_move_clean_working_copies_and_checkouts_say_what_blocks_them ... ok 28.4stest repo::tests::mode_change_and_text_binary_switch ... ok 28.5stest repo::tests::large_text_files_travel_and_survive_gc_as_text_blobs ... ok 28.5stest repo::tests::multiple_workspaces_share_a_repository ... ok 28.5stest repo::tests::operations_from_the_same_parent_are_merged ... ok 28.5stest repo::tests::operations_that_both_replace_a_working_copy_are_not_merged ... ok 28.5stest repo::tests::name_conflict_resolved_by_removing_a_candidate ... ok 28.6stest repo::tests::partial_commits_by_path_and_by_hunk ... ok 28.6stest repo::tests::paths_other_platforms_cannot_hold_are_reported ... ok 28.7stest repo::tests::pull_takes_a_remote_move_to_changes_already_here ... ok 28.7stest repo::tests::oxygen_subrepos_pin_follow_and_update ... ok 28.8stest repo::tests::rebase_re_expresses_a_change_against_another_base ... ok 28.8stest repo::tests::quick_status_for_prompts ... ok 29.1stest repo::tests::receipts_are_kept_with_their_state_and_verified ... ok 29.1stest repo::tests::renames_are_detected_and_tracked_as_moves ... ok 29.2stest repo::tests::receive_push_rejects_bad_updates ... ok 29.2stest repo::tests::replace_conflicts_are_settled_when_asked ... ok 29.2stest repo::tests::resolution_may_keep_both_sides_or_neither ... ok 29.3stest repo::tests::sparse_checkout_materializes_only_chosen_paths ... ok 29.3stest repo::tests::shallow_clone_and_deepen ... ok 29.4stest repo::tests::squash_folds_a_change_into_its_dependency ... ok 29.4stest repo::tests::split_works_on_non_heads_by_node ... ok 29.5stest repo::tests::stat_cache_skips_reading_unchanged_opaque_files ... ok 29.5stest repo::tests::stat_cache_takes_unchanged_text_from_the_base_and_misses_no_edit ... ok 29.5stest repo::tests::status_leaves_an_unchanged_manifest_alone ... ok 29.5stest repo::tests::status_json_lists_conflicts_with_contributors ... ok 29.6stest repo::tests::status_snapshots_skip_files_unchanged_since_the_manifest ... ok 29.7stest repo::tests::switching_bookmarks_carries_uncommitted_work ... ok 30.4stest repo::tests::tags_are_immutable_named_states_and_travel ... ok 30.4stest repo::tests::undo_skips_snapshot_operations ... ok 30.4stest repo::tests::unsigned_tags_keep_their_message ... ok 30.7stest repo::tests::user_config_supplies_defaults_and_clones_sign ... ok 30.7stest repo::tests::windows_file_systems_keep_exec_bits_and_symlinks ... ok 30.7stest rewrite::tests::describe_propagates_through_dependents ... ok 30.7stest rewrite::tests::missing_counterpart_is_reanchored ... ok 30.7stest rewrite::tests::removal_rewires_dependencies_or_fails_on_references ... ok 30.7stest state::tests::a_history_only_state_never_reads_an_unloaded_graph_as_empty - should panic ... ok 30.7stest state::tests::build_edit_and_materialize ... ok 30.8stest state::tests::checkpoint_index_round_trip_matches_version_1 ... ok 30.8stest repo::tests::identity_lifecycle ... ok 30.8stest state::tests::checkpoint_payload_round_trip_and_replay ... ok 30.8stest state::tests::graph_keys_change_exactly_when_a_graph_does ... ok 30.8stest state::tests::materializing_a_history_only_state_is_refused - should panic ... ok 30.8stest state::tests::maximal_elements ... ok 30.8stest state::tests::history_only_states_build_the_same_graphs_on_demand ... ok 30.8stest state::tests::missing_dependency_is_rejected ... ok 30.8stest state::tests::opaque_replace_and_conflict ... ok 30.8stest state::tests::self_references_and_multi_insert_indexing ... ok 30.9stest state::tests::maximal_matches_its_definition ... ok 31.0stest store::put_many_tests::many_objects_in_a_batch_are_compressed_together_and_all_read_back ... ok 31.0stest store::batch_tests::a_large_batch_packs_every_object_and_indexes_them_all ... ok 31.2stest store::tests::batches_write_loose_or_one_pack ... ok 31.2stest store::tests::change_round_trip_through_store ... ok 31.4stest repo::tests::trust_policy_governs_pushes_and_fetches ... ok 31.4stest store::tests::get_many_reads_loose_and_packed_objects_in_order ... ok 31.4stest store::tests::many_packs_merge_into_one ... ok 31.4stest store::tests::nocompress_chunks_pack_raw ... ok 31.5stest store::tests::packing_keeps_every_object_readable ... ok 31.5stest store::tests::corrupted_packs_and_indexes_fail_cleanly ... ok 31.5stest store::tests::put_get_verify ... ok 31.6stest store::tests::prune_removes_unreachable_loose_and_packed_objects ... ok 31.6stest store::text_tests::a_change_whose_text_blob_is_missing_is_reported_not_misread ... ok 31.6stest store::tests::signatures_are_stored_beside_objects ... ok 31.6stest subrepo::tests::modules_files ... ok 31.6stest store::text_tests::a_large_insert_is_stored_beside_its_change_and_read_back ... ok 31.6stest subrepo::tests::pins_round_trip ... ok 31.6stest tree::tests::concurrent_renames_are_multi_placement ... ok 31.6stest tree::tests::name_conflict_gets_suffixes ... ok 31.6stest tree::tests::mode_conflict_and_resolution ... ok 31.6stest tree::tests::nested_paths_and_rename ... ok 31.6stest tree::tests::serialization_round_trip ... ok 31.6stest tree::tests::orphan_and_cycle ... ok 32.0stest store::size_tests::an_object_over_the_limit_is_refused_and_nothing_is_written ... ok 43.8stest repo::tests::crash_at_every_step_of_commit_and_push_leaves_sound_repositories ... ok 43.8s 43.8stest result: ok. 196 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 20.32s 43.8s 43.8s Running tests/bench.rs (target/debug/deps/bench-78fcd2b5120c2914) 43.8s Running tests/commutativity.rs (target/debug/deps/commutativity-2e094caece21d1c7) 43.8s 43.8srunning 1 test 43.8stest bench_ten_thousand_files_five_thousand_changes ... ignored 43.8s 43.8stest result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s 43.8s 43.8s 43.8srunning 1 test 48.2stest order_of_changes_is_irrelevant ... ok 48.2s 48.2stest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.39s 48.2s 48.2s Running unittests src/lib.rs (target/debug/deps/oxy_server-f3e9fbb227c8e770) 48.2s 48.2srunning 0 tests 48.2s 48.2stest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s 48.2s 48.2s Running tests/http.rs (target/debug/deps/http-733f013d357aa7d9) 48.2s 48.2srunning 11 tests 48.3stest a_custom_backend_embeds_the_protocol ... ok 48.3stest an_unbound_repository_adopts_the_first_pushers_id ... ok 48.3stest a_bare_repository_is_served_and_browsed_without_a_working_copy ... ok 48.4stest a_refused_push_names_the_bookmark_and_the_step ... ok 48.5stest bookmarks_are_deleted_over_http_but_never_the_default ... ok 48.6stest https_with_a_self_signed_certificate ... ok 48.8stest objects_endpoint_serves_lazy_blobs ... ok 48.9stest clone_push_pull_over_http ... ok 48.9stest push_requires_a_token_when_configured ... ok 49.1stest concurrent_pushes_are_serialised ... ok 49.2stest anonymous_history_is_adopted_by_the_pushers_seal ... ok 49.2s 49.2stest result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.03s 49.2s 49.2s Doc-tests oxy_core 49.6s 49.6srunning 0 tests 49.6s 49.6stest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s 49.6s 49.6s Doc-tests oxy_server 49.7s 49.7srunning 0 tests 49.7s 49.7stest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s 49.7s