Merge "Deflake the test by verifying with exactly one OOME allocation"
diff --git a/Android.bp b/Android.bp
index eadd256..2de8862 100644
--- a/Android.bp
+++ b/Android.bp
@@ -8849,6 +8849,7 @@
     name: "perfetto_src_protozero_protozero",
     srcs: [
         "src/protozero/field.cc",
+        "src/protozero/gen_field_helpers.cc",
         "src/protozero/message.cc",
         "src/protozero/message_arena.cc",
         "src/protozero/message_handle.cc",
@@ -10088,6 +10089,14 @@
     name: "perfetto_src_trace_processor_unittests",
 }
 
+// GN: //src/trace_processor/util:bump_allocator
+filegroup {
+    name: "perfetto_src_trace_processor_util_bump_allocator",
+    srcs: [
+        "src/trace_processor/util/bump_allocator.cc",
+    ],
+}
+
 // GN: //src/trace_processor/util:descriptors
 filegroup {
     name: "perfetto_src_trace_processor_util_descriptors",
@@ -10176,6 +10185,7 @@
 filegroup {
     name: "perfetto_src_trace_processor_util_unittests",
     srcs: [
+        "src/trace_processor/util/bump_allocator_unittest.cc",
         "src/trace_processor/util/debug_annotation_parser_unittest.cc",
         "src/trace_processor/util/glob_unittest.cc",
         "src/trace_processor/util/gzip_utils_unittest.cc",
@@ -11551,6 +11561,7 @@
         ":perfetto_src_trace_processor_types_types",
         ":perfetto_src_trace_processor_types_unittests",
         ":perfetto_src_trace_processor_unittests",
+        ":perfetto_src_trace_processor_util_bump_allocator",
         ":perfetto_src_trace_processor_util_descriptors",
         ":perfetto_src_trace_processor_util_glob",
         ":perfetto_src_trace_processor_util_gzip",
@@ -12878,6 +12889,8 @@
     srcs: [
         "protos/perfetto/trace/perfetto_trace.proto",
     ],
+    // b/267831518: Pin tradefed and dependencies to Java 11.
+    java_version: "11",
 }
 
 java_library_host {
@@ -12888,6 +12901,8 @@
     srcs: [
         "protos/perfetto/metrics/perfetto_merged_metrics.proto",
     ],
+    // b/267831518: Pin tradefed and dependencies to Java 11.
+    java_version: "11",
 }
 
 // This sample target shows how to use the perfetto client API from within the
diff --git a/Android.bp.extras b/Android.bp.extras
index f1251b4..ded8bdb 100644
--- a/Android.bp.extras
+++ b/Android.bp.extras
@@ -18,6 +18,8 @@
     srcs: [
         "protos/perfetto/trace/perfetto_trace.proto",
     ],
+    // b/267831518: Pin tradefed and dependencies to Java 11.
+    java_version: "11",
 }
 
 java_library_host {
@@ -28,6 +30,8 @@
     srcs: [
         "protos/perfetto/metrics/perfetto_merged_metrics.proto",
     ],
+    // b/267831518: Pin tradefed and dependencies to Java 11.
+    java_version: "11",
 }
 
 // This sample target shows how to use the perfetto client API from within the
diff --git a/BUILD b/BUILD
index c4c9781..05a8baf 100644
--- a/BUILD
+++ b/BUILD
@@ -126,6 +126,7 @@
     name = "protozero",
     srcs = [
         "src/protozero/field.cc",
+        "src/protozero/gen_field_helpers.cc",
         "src/protozero/message.cc",
         "src/protozero/message_arena.cc",
         "src/protozero/message_handle.cc",
@@ -554,6 +555,7 @@
         "include/perfetto/protozero/cpp_message_obj.h",
         "include/perfetto/protozero/field.h",
         "include/perfetto/protozero/field_writer.h",
+        "include/perfetto/protozero/gen_field_helpers.h",
         "include/perfetto/protozero/message.h",
         "include/perfetto/protozero/message_arena.h",
         "include/perfetto/protozero/message_handle.h",
diff --git a/BUILD.gn b/BUILD.gn
index 0ad78da..bac6cfc 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -297,7 +297,7 @@
       ]
       public_deps += [ "include/perfetto/ext/tracing/ipc:ipc" ]
     }
-    if (!is_nacl && !is_ios) {
+    if (!is_nacl) {
       deps += [
         "src/trace_processor:export_json",
         "src/trace_processor:storage_minimal",
diff --git a/CHANGELOG b/CHANGELOG
index ef4b9fc..ac77b20 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,20 @@
 Unreleased:
   Tracing service and probes:
+    *
+  Trace Processor:
+    *
+  UI:
+    *
+  SDK:
+    *
+
+v32.1 - 2023-02-01:
+  Trace Processor:
+    * Fix build on windows.
+
+
+v32.0 - 2023-02-01:
+  Tracing service and probes:
     * Added an explicit TraceUuid packet. The tracing service now always
       generates a UUID, even if TraceConfig.trace_uuid_msb/lsb is empty.
   Trace Processor:
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 6682fec..7b11412 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -41,6 +41,7 @@
         files_to_check='.*',
         files_to_skip=[
             'Android[.]bp',
+            "buildtools/grpc/BUILD.gn",
             '.*[.]json$',
             '.*[.]sql$',
             '.*[.]out$',
diff --git a/buildtools/.gitignore b/buildtools/.gitignore
index 869315f..ad3768e 100644
--- a/buildtools/.gitignore
+++ b/buildtools/.gitignore
@@ -17,6 +17,7 @@
 debian_sid_armel-sysroot/
 emulator/
 googletest/
+grpc/src
 jsoncpp/
 libbacktrace/
 libbase/
diff --git a/buildtools/BUILD.gn b/buildtools/BUILD.gn
index 5eced89..be78fcf 100644
--- a/buildtools/BUILD.gn
+++ b/buildtools/BUILD.gn
@@ -129,21 +129,8 @@
 
   defines = [ "HAVE_PTHREAD=1" ]
   cflags = []
-  if (is_clang) {
-    # We do NOT build libprotobuf with -Wextra or -Weverything. But still it
-    # hits some warnings that we need to suppress.
-    cflags += [
-      "-Wno-unknown-warning-option",
-      "-Wno-enum-compare-switch",
-      "-Wno-user-defined-warnings",
-      "-Wno-tautological-constant-compare",
-      "-Wno-inconsistent-missing-override",
-    ]
-  } else if (!is_win) {  # implies gcc
-    cflags += [
-      "-Wno-return-type",
-      "-Wno-stringop-overread",
-    ]
+  if (!is_clang && !is_win) {  # implies gcc
+    cflags += [ "-Wno-stringop-overread" ]
   }
   if (is_win) {
     cflags += [ "/W0" ]
@@ -162,57 +149,101 @@
 source_set("protobuf_lite") {
   visibility = _buildtools_visibility
   sources = [
+    "protobuf/src/google/protobuf/any.h",
+    "protobuf/src/google/protobuf/any.pb.h",
     "protobuf/src/google/protobuf/any_lite.cc",
+    "protobuf/src/google/protobuf/api.pb.h",
     "protobuf/src/google/protobuf/arena.cc",
     "protobuf/src/google/protobuf/arena.h",
     "protobuf/src/google/protobuf/arena_impl.h",
+    "protobuf/src/google/protobuf/arenastring.cc",
     "protobuf/src/google/protobuf/arenastring.h",
+    "protobuf/src/google/protobuf/arenaz_sampler.cc",
+    "protobuf/src/google/protobuf/arenaz_sampler.h",
+    "protobuf/src/google/protobuf/compiler/importer.h",
+    "protobuf/src/google/protobuf/compiler/parser.h",
+    "protobuf/src/google/protobuf/descriptor.h",
+    "protobuf/src/google/protobuf/descriptor.pb.h",
+    "protobuf/src/google/protobuf/descriptor_database.h",
+    "protobuf/src/google/protobuf/duration.pb.h",
+    "protobuf/src/google/protobuf/dynamic_message.h",
+    "protobuf/src/google/protobuf/empty.pb.h",
+    "protobuf/src/google/protobuf/explicitly_constructed.h",
     "protobuf/src/google/protobuf/extension_set.cc",
     "protobuf/src/google/protobuf/extension_set.h",
+    "protobuf/src/google/protobuf/extension_set_inl.h",
+    "protobuf/src/google/protobuf/field_access_listener.h",
+    "protobuf/src/google/protobuf/field_mask.pb.h",
+    "protobuf/src/google/protobuf/generated_enum_reflection.h",
     "protobuf/src/google/protobuf/generated_enum_util.cc",
     "protobuf/src/google/protobuf/generated_enum_util.h",
-    "protobuf/src/google/protobuf/generated_message_table_driven_lite.cc",
-    "protobuf/src/google/protobuf/generated_message_table_driven_lite.h",
+    "protobuf/src/google/protobuf/generated_message_bases.h",
+    "protobuf/src/google/protobuf/generated_message_reflection.h",
+    "protobuf/src/google/protobuf/generated_message_tctable_decl.h",
+    "protobuf/src/google/protobuf/generated_message_tctable_impl.h",
+    "protobuf/src/google/protobuf/generated_message_tctable_lite.cc",
     "protobuf/src/google/protobuf/generated_message_util.cc",
     "protobuf/src/google/protobuf/generated_message_util.h",
     "protobuf/src/google/protobuf/has_bits.h",
     "protobuf/src/google/protobuf/implicit_weak_message.cc",
     "protobuf/src/google/protobuf/implicit_weak_message.h",
+    "protobuf/src/google/protobuf/inlined_string_field.cc",
     "protobuf/src/google/protobuf/inlined_string_field.h",
     "protobuf/src/google/protobuf/io/coded_stream.cc",
     "protobuf/src/google/protobuf/io/coded_stream.h",
-    "protobuf/src/google/protobuf/io/coded_stream_inl.h",
     "protobuf/src/google/protobuf/io/io_win32.cc",
     "protobuf/src/google/protobuf/io/io_win32.h",
+    "protobuf/src/google/protobuf/io/printer.h",
     "protobuf/src/google/protobuf/io/strtod.cc",
     "protobuf/src/google/protobuf/io/strtod.h",
+    "protobuf/src/google/protobuf/io/tokenizer.h",
     "protobuf/src/google/protobuf/io/zero_copy_stream.cc",
     "protobuf/src/google/protobuf/io/zero_copy_stream.h",
     "protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc",
     "protobuf/src/google/protobuf/io/zero_copy_stream_impl.h",
     "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
     "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h",
+    "protobuf/src/google/protobuf/map.cc",
     "protobuf/src/google/protobuf/map.h",
+    "protobuf/src/google/protobuf/map_entry.h",
     "protobuf/src/google/protobuf/map_entry_lite.h",
+    "protobuf/src/google/protobuf/map_field.h",
+    "protobuf/src/google/protobuf/map_field_inl.h",
     "protobuf/src/google/protobuf/map_field_lite.h",
     "protobuf/src/google/protobuf/map_type_handler.h",
+    "protobuf/src/google/protobuf/message.h",
     "protobuf/src/google/protobuf/message_lite.cc",
     "protobuf/src/google/protobuf/message_lite.h",
+    "protobuf/src/google/protobuf/metadata.h",
+    "protobuf/src/google/protobuf/metadata_lite.h",
+    "protobuf/src/google/protobuf/parse_context.cc",
+    "protobuf/src/google/protobuf/parse_context.h",
+    "protobuf/src/google/protobuf/port.h",
+    "protobuf/src/google/protobuf/port_def.inc",
+    "protobuf/src/google/protobuf/port_undef.inc",
+    "protobuf/src/google/protobuf/reflection.h",
+    "protobuf/src/google/protobuf/reflection_ops.h",
     "protobuf/src/google/protobuf/repeated_field.cc",
     "protobuf/src/google/protobuf/repeated_field.h",
+    "protobuf/src/google/protobuf/repeated_ptr_field.cc",
+    "protobuf/src/google/protobuf/repeated_ptr_field.h",
+    "protobuf/src/google/protobuf/service.h",
+    "protobuf/src/google/protobuf/source_context.pb.h",
+    "protobuf/src/google/protobuf/string_member_robber.h",
+    "protobuf/src/google/protobuf/struct.pb.h",
     "protobuf/src/google/protobuf/stubs/bytestream.cc",
     "protobuf/src/google/protobuf/stubs/bytestream.h",
     "protobuf/src/google/protobuf/stubs/callback.h",
     "protobuf/src/google/protobuf/stubs/casts.h",
     "protobuf/src/google/protobuf/stubs/common.cc",
     "protobuf/src/google/protobuf/stubs/common.h",
-    "protobuf/src/google/protobuf/stubs/fastmem.h",
     "protobuf/src/google/protobuf/stubs/hash.h",
     "protobuf/src/google/protobuf/stubs/int128.cc",
     "protobuf/src/google/protobuf/stubs/int128.h",
     "protobuf/src/google/protobuf/stubs/logging.h",
     "protobuf/src/google/protobuf/stubs/macros.h",
     "protobuf/src/google/protobuf/stubs/map_util.h",
+    "protobuf/src/google/protobuf/stubs/mathutil.h",
     "protobuf/src/google/protobuf/stubs/mutex.h",
     "protobuf/src/google/protobuf/stubs/once.h",
     "protobuf/src/google/protobuf/stubs/platform_macros.h",
@@ -233,8 +264,22 @@
     "protobuf/src/google/protobuf/stubs/template_util.h",
     "protobuf/src/google/protobuf/stubs/time.cc",
     "protobuf/src/google/protobuf/stubs/time.h",
+    "protobuf/src/google/protobuf/text_format.h",
+    "protobuf/src/google/protobuf/timestamp.pb.h",
+    "protobuf/src/google/protobuf/type.pb.h",
+    "protobuf/src/google/protobuf/unknown_field_set.h",
+    "protobuf/src/google/protobuf/util/delimited_message_util.h",
+    "protobuf/src/google/protobuf/util/field_comparator.h",
+    "protobuf/src/google/protobuf/util/field_mask_util.h",
+    "protobuf/src/google/protobuf/util/json_util.h",
+    "protobuf/src/google/protobuf/util/message_differencer.h",
+    "protobuf/src/google/protobuf/util/time_util.h",
+    "protobuf/src/google/protobuf/util/type_resolver.h",
+    "protobuf/src/google/protobuf/util/type_resolver_util.h",
+    "protobuf/src/google/protobuf/wire_format.h",
     "protobuf/src/google/protobuf/wire_format_lite.cc",
     "protobuf/src/google/protobuf/wire_format_lite.h",
+    "protobuf/src/google/protobuf/wrappers.pb.h",
   ]
   configs -= [ "//gn/standalone:extra_warnings" ]
   if (is_win) {
@@ -259,6 +304,10 @@
     "protobuf/src/google/protobuf/any.pb.h",
     "protobuf/src/google/protobuf/api.pb.cc",
     "protobuf/src/google/protobuf/api.pb.h",
+    "protobuf/src/google/protobuf/arena.h",
+    "protobuf/src/google/protobuf/arena_impl.h",
+    "protobuf/src/google/protobuf/arenastring.h",
+    "protobuf/src/google/protobuf/arenaz_sampler.h",
     "protobuf/src/google/protobuf/compiler/importer.cc",
     "protobuf/src/google/protobuf/compiler/importer.h",
     "protobuf/src/google/protobuf/compiler/parser.cc",
@@ -275,40 +324,85 @@
     "protobuf/src/google/protobuf/dynamic_message.h",
     "protobuf/src/google/protobuf/empty.pb.cc",
     "protobuf/src/google/protobuf/empty.pb.h",
+    "protobuf/src/google/protobuf/explicitly_constructed.h",
+    "protobuf/src/google/protobuf/extension_set.h",
     "protobuf/src/google/protobuf/extension_set_heavy.cc",
+    "protobuf/src/google/protobuf/extension_set_inl.h",
+    "protobuf/src/google/protobuf/field_access_listener.h",
     "protobuf/src/google/protobuf/field_mask.pb.cc",
     "protobuf/src/google/protobuf/field_mask.pb.h",
     "protobuf/src/google/protobuf/generated_enum_reflection.h",
+    "protobuf/src/google/protobuf/generated_enum_util.h",
+    "protobuf/src/google/protobuf/generated_message_bases.cc",
+    "protobuf/src/google/protobuf/generated_message_bases.h",
     "protobuf/src/google/protobuf/generated_message_reflection.cc",
     "protobuf/src/google/protobuf/generated_message_reflection.h",
+    "protobuf/src/google/protobuf/generated_message_tctable_decl.h",
+    "protobuf/src/google/protobuf/generated_message_tctable_full.cc",
+    "protobuf/src/google/protobuf/generated_message_tctable_impl.h",
+    "protobuf/src/google/protobuf/generated_message_util.h",
+    "protobuf/src/google/protobuf/has_bits.h",
+    "protobuf/src/google/protobuf/implicit_weak_message.h",
+    "protobuf/src/google/protobuf/inlined_string_field.h",
+    "protobuf/src/google/protobuf/io/coded_stream.h",
     "protobuf/src/google/protobuf/io/gzip_stream.cc",
-    "protobuf/src/google/protobuf/io/gzip_stream.h",
+    "protobuf/src/google/protobuf/io/io_win32.h",
     "protobuf/src/google/protobuf/io/printer.cc",
     "protobuf/src/google/protobuf/io/printer.h",
+    "protobuf/src/google/protobuf/io/strtod.h",
     "protobuf/src/google/protobuf/io/tokenizer.cc",
     "protobuf/src/google/protobuf/io/tokenizer.h",
+    "protobuf/src/google/protobuf/io/zero_copy_stream.h",
+    "protobuf/src/google/protobuf/io/zero_copy_stream_impl.h",
+    "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h",
+    "protobuf/src/google/protobuf/map.h",
     "protobuf/src/google/protobuf/map_entry.h",
+    "protobuf/src/google/protobuf/map_entry_lite.h",
     "protobuf/src/google/protobuf/map_field.cc",
     "protobuf/src/google/protobuf/map_field.h",
     "protobuf/src/google/protobuf/map_field_inl.h",
+    "protobuf/src/google/protobuf/map_field_lite.h",
+    "protobuf/src/google/protobuf/map_type_handler.h",
     "protobuf/src/google/protobuf/message.cc",
     "protobuf/src/google/protobuf/message.h",
+    "protobuf/src/google/protobuf/message_lite.h",
     "protobuf/src/google/protobuf/metadata.h",
+    "protobuf/src/google/protobuf/metadata_lite.h",
+    "protobuf/src/google/protobuf/parse_context.h",
+    "protobuf/src/google/protobuf/port.h",
+    "protobuf/src/google/protobuf/port_def.inc",
+    "protobuf/src/google/protobuf/port_undef.inc",
     "protobuf/src/google/protobuf/reflection.h",
     "protobuf/src/google/protobuf/reflection_internal.h",
     "protobuf/src/google/protobuf/reflection_ops.cc",
     "protobuf/src/google/protobuf/reflection_ops.h",
+    "protobuf/src/google/protobuf/repeated_field.h",
+    "protobuf/src/google/protobuf/repeated_ptr_field.h",
     "protobuf/src/google/protobuf/service.cc",
     "protobuf/src/google/protobuf/service.h",
     "protobuf/src/google/protobuf/source_context.pb.cc",
     "protobuf/src/google/protobuf/source_context.pb.h",
     "protobuf/src/google/protobuf/struct.pb.cc",
     "protobuf/src/google/protobuf/struct.pb.h",
-    "protobuf/src/google/protobuf/stubs/mathlimits.cc",
-    "protobuf/src/google/protobuf/stubs/mathlimits.h",
-    "protobuf/src/google/protobuf/stubs/mathutil.h",
+    "protobuf/src/google/protobuf/stubs/bytestream.h",
+    "protobuf/src/google/protobuf/stubs/callback.h",
+    "protobuf/src/google/protobuf/stubs/casts.h",
+    "protobuf/src/google/protobuf/stubs/common.h",
+    "protobuf/src/google/protobuf/stubs/hash.h",
+    "protobuf/src/google/protobuf/stubs/logging.h",
+    "protobuf/src/google/protobuf/stubs/macros.h",
+    "protobuf/src/google/protobuf/stubs/map_util.h",
+    "protobuf/src/google/protobuf/stubs/mutex.h",
+    "protobuf/src/google/protobuf/stubs/once.h",
+    "protobuf/src/google/protobuf/stubs/platform_macros.h",
+    "protobuf/src/google/protobuf/stubs/port.h",
+    "protobuf/src/google/protobuf/stubs/status.h",
+    "protobuf/src/google/protobuf/stubs/stl_util.h",
+    "protobuf/src/google/protobuf/stubs/stringpiece.h",
+    "protobuf/src/google/protobuf/stubs/strutil.h",
     "protobuf/src/google/protobuf/stubs/substitute.cc",
     "protobuf/src/google/protobuf/stubs/substitute.h",
+    "protobuf/src/google/protobuf/stubs/template_util.h",
     "protobuf/src/google/protobuf/text_format.cc",
     "protobuf/src/google/protobuf/text_format.h",
     "protobuf/src/google/protobuf/timestamp.pb.cc",
@@ -317,6 +411,8 @@
     "protobuf/src/google/protobuf/type.pb.h",
     "protobuf/src/google/protobuf/unknown_field_set.cc",
     "protobuf/src/google/protobuf/unknown_field_set.h",
+    "protobuf/src/google/protobuf/util/delimited_message_util.cc",
+    "protobuf/src/google/protobuf/util/delimited_message_util.h",
     "protobuf/src/google/protobuf/util/field_comparator.cc",
     "protobuf/src/google/protobuf/util/field_comparator.h",
     "protobuf/src/google/protobuf/util/field_mask_util.cc",
@@ -328,6 +424,7 @@
     "protobuf/src/google/protobuf/util/internal/default_value_objectwriter.h",
     "protobuf/src/google/protobuf/util/internal/error_listener.cc",
     "protobuf/src/google/protobuf/util/internal/error_listener.h",
+    "protobuf/src/google/protobuf/util/internal/expecting_objectwriter.h",
     "protobuf/src/google/protobuf/util/internal/field_mask_utility.cc",
     "protobuf/src/google/protobuf/util/internal/field_mask_utility.h",
     "protobuf/src/google/protobuf/util/internal/json_escaping.cc",
@@ -337,6 +434,7 @@
     "protobuf/src/google/protobuf/util/internal/json_stream_parser.cc",
     "protobuf/src/google/protobuf/util/internal/json_stream_parser.h",
     "protobuf/src/google/protobuf/util/internal/location_tracker.h",
+    "protobuf/src/google/protobuf/util/internal/mock_error_listener.h",
     "protobuf/src/google/protobuf/util/internal/object_location_tracker.h",
     "protobuf/src/google/protobuf/util/internal/object_source.h",
     "protobuf/src/google/protobuf/util/internal/object_writer.cc",
@@ -350,7 +448,6 @@
     "protobuf/src/google/protobuf/util/internal/structured_objectwriter.h",
     "protobuf/src/google/protobuf/util/internal/type_info.cc",
     "protobuf/src/google/protobuf/util/internal/type_info.h",
-    "protobuf/src/google/protobuf/util/internal/type_info_test_helper.cc",
     "protobuf/src/google/protobuf/util/internal/type_info_test_helper.h",
     "protobuf/src/google/protobuf/util/internal/utility.cc",
     "protobuf/src/google/protobuf/util/internal/utility.h",
@@ -365,6 +462,7 @@
     "protobuf/src/google/protobuf/util/type_resolver_util.h",
     "protobuf/src/google/protobuf/wire_format.cc",
     "protobuf/src/google/protobuf/wire_format.h",
+    "protobuf/src/google/protobuf/wire_format_lite.h",
     "protobuf/src/google/protobuf/wrappers.pb.cc",
     "protobuf/src/google/protobuf/wrappers.pb.h",
   ]
@@ -412,9 +510,12 @@
     "protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.h",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_message_layout_helper.h",
+    "protobuf/src/google/protobuf/compiler/cpp/cpp_names.h",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_options.h",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.h",
+    "protobuf/src/google/protobuf/compiler/cpp/cpp_parse_function_generator.cc",
+    "protobuf/src/google/protobuf/compiler/cpp/cpp_parse_function_generator.h",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.h",
     "protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc",
@@ -439,6 +540,7 @@
     "protobuf/src/google/protobuf/compiler/csharp/csharp_message.h",
     "protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc",
     "protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.h",
+    "protobuf/src/google/protobuf/compiler/csharp/csharp_names.h",
     "protobuf/src/google/protobuf/compiler/csharp/csharp_options.h",
     "protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
     "protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.h",
@@ -480,6 +582,8 @@
     "protobuf/src/google/protobuf/compiler/java/java_generator_factory.h",
     "protobuf/src/google/protobuf/compiler/java/java_helpers.cc",
     "protobuf/src/google/protobuf/compiler/java/java_helpers.h",
+    "protobuf/src/google/protobuf/compiler/java/java_kotlin_generator.cc",
+    "protobuf/src/google/protobuf/compiler/java/java_kotlin_generator.h",
     "protobuf/src/google/protobuf/compiler/java/java_map_field.cc",
     "protobuf/src/google/protobuf/compiler/java/java_map_field.h",
     "protobuf/src/google/protobuf/compiler/java/java_map_field_lite.cc",
@@ -498,6 +602,7 @@
     "protobuf/src/google/protobuf/compiler/java/java_message_lite.h",
     "protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc",
     "protobuf/src/google/protobuf/compiler/java/java_name_resolver.h",
+    "protobuf/src/google/protobuf/compiler/java/java_names.h",
     "protobuf/src/google/protobuf/compiler/java/java_options.h",
     "protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc",
     "protobuf/src/google/protobuf/compiler/java/java_primitive_field.h",
@@ -535,6 +640,7 @@
     "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.h",
     "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
     "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.h",
+    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h",
     "protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
     "protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.h",
     "protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
@@ -547,8 +653,13 @@
     "protobuf/src/google/protobuf/compiler/plugin.pb.h",
     "protobuf/src/google/protobuf/compiler/python/python_generator.cc",
     "protobuf/src/google/protobuf/compiler/python/python_generator.h",
+    "protobuf/src/google/protobuf/compiler/python/python_helpers.cc",
+    "protobuf/src/google/protobuf/compiler/python/python_helpers.h",
+    "protobuf/src/google/protobuf/compiler/python/python_pyi_generator.cc",
+    "protobuf/src/google/protobuf/compiler/python/python_pyi_generator.h",
     "protobuf/src/google/protobuf/compiler/ruby/ruby_generator.cc",
     "protobuf/src/google/protobuf/compiler/ruby/ruby_generator.h",
+    "protobuf/src/google/protobuf/compiler/scc.h",
     "protobuf/src/google/protobuf/compiler/subprocess.cc",
     "protobuf/src/google/protobuf/compiler/subprocess.h",
     "protobuf/src/google/protobuf/compiler/zip_writer.cc",
@@ -1340,3 +1451,46 @@
   ]
   deps = [ "//gn:default_deps" ]
 }
+
+if (enable_perfetto_grpc) {
+  config("grpc_absl_config") {
+    visibility = _buildtools_visibility
+    include_dirs = [ "grpc/src/third_party/abseil-cpp" ]
+    cflags = [ "-Wno-deprecated-builtins" ]
+  }
+
+  config("grpc_boringssl_config") {
+    visibility = _buildtools_visibility
+    include_dirs = [ "grpc/src/third_party/boringssl-with-bazel/src/include" ]
+  }
+
+  config("grpc_upb_config") {
+    visibility = _buildtools_visibility
+    include_dirs = [
+      "grpc/src/third_party/upb",
+      "grpc/src/src/core/ext/upb-generated",
+      "grpc/src/src/core/ext/upbdefs-generated",
+    ]
+  }
+
+  config("grpc_internal_config") {
+    visibility = _buildtools_visibility
+    include_dirs = [
+      "grpc/src/include",
+      "grpc/src",
+      "grpc/src/third_party/address_sorting/include",
+      "grpc/src/third_party/re2",
+      "grpc/src/src/core/ext/upb-generated",
+      "grpc/src/src/core/ext/upbdefs-generated",
+      "grpc/src/third_party/xxhash",
+    ]
+    cflags = [ "-DGRPC_ARES=0" ]
+  }
+
+  source_set("grpc") {
+    deps = [
+      "grpc:grpc++",
+      "//gn:default_deps",
+    ]
+  }
+}
diff --git a/buildtools/grpc/BUILD.gn b/buildtools/grpc/BUILD.gn
new file mode 100644
index 0000000..4702dab
--- /dev/null
+++ b/buildtools/grpc/BUILD.gn
@@ -0,0 +1,6320 @@
+#
+# DO NOT EDIT. AUTOGENERATED file
+#
+# This file is generated with the command:
+# tools/gen_grpc_build_gn.py > buildtools/grpc/BUILD.gn
+#
+
+# Prevent the gRPC from being depended upon without explicitly being opted in.
+assert(enable_perfetto_grpc)
+
+source_set("absl_algorithm_algorithm") {
+  sources = [ "src/third_party/abseil-cpp/absl/algorithm/algorithm.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_algorithm_container") {
+  sources = [ "src/third_party/abseil-cpp/absl/algorithm/container.h" ]
+  public_deps = [
+    ":absl_algorithm_algorithm",
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_atomic_hook") {
+  sources = [ "src/third_party/abseil-cpp/absl/base/internal/atomic_hook.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_base") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/call_once.h",
+    "src/third_party/abseil-cpp/absl/base/casts.h",
+    "src/third_party/abseil-cpp/absl/base/internal/cycleclock.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/cycleclock.h",
+    "src/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h",
+    "src/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock.h",
+    "src/third_party/abseil-cpp/absl/base/internal/sysinfo.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/sysinfo.h",
+    "src/third_party/abseil-cpp/absl/base/internal/thread_identity.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/thread_identity.h",
+    "src/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h",
+    "src/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h",
+  ]
+  public_deps = [
+    ":absl_base_atomic_hook",
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_cycleclock_internal",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_log_severity",
+    ":absl_base_raw_logging_internal",
+    ":absl_base_spinlock_wait",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_base_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/hide_ptr.h",
+    "src/third_party/abseil-cpp/absl/base/internal/identity.h",
+    "src/third_party/abseil-cpp/absl/base/internal/inline_variable.h",
+    "src/third_party/abseil-cpp/absl/base/internal/invoke.h",
+    "src/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_config") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/config.h",
+    "src/third_party/abseil-cpp/absl/base/options.h",
+    "src/third_party/abseil-cpp/absl/base/policy_checks.h",
+  ]
+  public_deps = []
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_core_headers") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/attributes.h",
+    "src/third_party/abseil-cpp/absl/base/const_init.h",
+    "src/third_party/abseil-cpp/absl/base/internal/thread_annotations.h",
+    "src/third_party/abseil-cpp/absl/base/macros.h",
+    "src/third_party/abseil-cpp/absl/base/optimization.h",
+    "src/third_party/abseil-cpp/absl/base/port.h",
+    "src/third_party/abseil-cpp/absl/base/thread_annotations.h",
+  ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_cycleclock_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h",
+    "src/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_dynamic_annotations") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/dynamic_annotations.h",
+    "src/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_endian") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/endian.h",
+    "src/third_party/abseil-cpp/absl/base/internal/unaligned_access.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_errno_saver") {
+  sources = [ "src/third_party/abseil-cpp/absl/base/internal/errno_saver.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_fast_type_id") {
+  sources = [ "src/third_party/abseil-cpp/absl/base/internal/fast_type_id.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_log_severity") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/log_severity.cc",
+    "src/third_party/abseil-cpp/absl/base/log_severity.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_malloc_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/direct_mmap.h",
+    "src/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_prefetch") {
+  sources = [ "src/third_party/abseil-cpp/absl/base/internal/prefetch.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_pretty_function") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/base/internal/pretty_function.h" ]
+  public_deps = []
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_raw_logging_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/raw_logging.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/raw_logging.h",
+  ]
+  public_deps = [
+    ":absl_base_atomic_hook",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_errno_saver",
+    ":absl_base_log_severity",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_spinlock_wait") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h",
+    "src/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_core_headers",
+    ":absl_base_errno_saver",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_strerror") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/strerror.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/strerror.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_errno_saver",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_base_throw_delegate") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc",
+    "src/third_party/abseil-cpp/absl/base/internal/throw_delegate.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_cleanup_cleanup") {
+  sources = [ "src/third_party/abseil-cpp/absl/cleanup/cleanup.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_cleanup_cleanup_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_cleanup_cleanup_internal") {
+  sources = [ "src/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h" ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_core_headers",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_btree") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/btree_map.h",
+    "src/third_party/abseil-cpp/absl/container/btree_set.h",
+    "src/third_party/abseil-cpp/absl/container/internal/btree.h",
+    "src/third_party/abseil-cpp/absl/container/internal/btree_container.h",
+  ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_base_throw_delegate",
+    ":absl_container_common",
+    ":absl_container_common_policy_traits",
+    ":absl_container_compressed_tuple",
+    ":absl_container_container_memory",
+    ":absl_container_layout",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_strings_cord",
+    ":absl_strings_strings",
+    ":absl_types_compare",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_common") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/internal/common.h" ]
+  public_deps = [
+    ":absl_meta_type_traits",
+    ":absl_types_optional",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_common_policy_traits") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h",
+  ]
+  public_deps = [ ":absl_meta_type_traits" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_compressed_tuple") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h",
+  ]
+  public_deps = [ ":absl_utility_utility" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_container_memory") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/container_memory.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_fixed_array") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/fixed_array.h" ]
+  public_deps = [
+    ":absl_algorithm_algorithm",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_throw_delegate",
+    ":absl_container_compressed_tuple",
+    ":absl_memory_memory",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_flat_hash_map") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/flat_hash_map.h" ]
+  public_deps = [
+    ":absl_algorithm_container",
+    ":absl_base_core_headers",
+    ":absl_container_container_memory",
+    ":absl_container_hash_function_defaults",
+    ":absl_container_raw_hash_map",
+    ":absl_memory_memory",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_flat_hash_set") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/flat_hash_set.h" ]
+  public_deps = [
+    ":absl_algorithm_container",
+    ":absl_base_core_headers",
+    ":absl_container_container_memory",
+    ":absl_container_hash_function_defaults",
+    ":absl_container_raw_hash_set",
+    ":absl_memory_memory",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_hash_function_defaults") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_hash_hash",
+    ":absl_strings_cord",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_hash_policy_traits") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h",
+  ]
+  public_deps = [
+    ":absl_container_common_policy_traits",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_hashtable_debug") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/container/internal/hashtable_debug.h" ]
+  public_deps = [ ":absl_container_hashtable_debug_hooks" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_hashtable_debug_hooks") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_hashtablez_sampler") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc",
+    "src/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h",
+    "src/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_debugging_stacktrace",
+    ":absl_memory_memory",
+    ":absl_profiling_exponential_biased",
+    ":absl_profiling_sample_recorder",
+    ":absl_synchronization_synchronization",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_inlined_vector") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/inlined_vector.h" ]
+  public_deps = [
+    ":absl_algorithm_algorithm",
+    ":absl_base_core_headers",
+    ":absl_base_throw_delegate",
+    ":absl_container_inlined_vector_internal",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_inlined_vector_internal") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/container/internal/inlined_vector.h" ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_container_compressed_tuple",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_layout") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/internal/layout.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+    ":absl_strings_strings",
+    ":absl_types_span",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_node_hash_map") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/node_hash_map.h" ]
+  public_deps = [
+    ":absl_algorithm_container",
+    ":absl_base_core_headers",
+    ":absl_container_container_memory",
+    ":absl_container_hash_function_defaults",
+    ":absl_container_node_slot_policy",
+    ":absl_container_raw_hash_map",
+    ":absl_memory_memory",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_node_hash_set") {
+  sources = [ "src/third_party/abseil-cpp/absl/container/node_hash_set.h" ]
+  public_deps = [
+    ":absl_algorithm_container",
+    ":absl_base_core_headers",
+    ":absl_container_hash_function_defaults",
+    ":absl_container_node_slot_policy",
+    ":absl_container_raw_hash_set",
+    ":absl_memory_memory",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_node_slot_policy") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h",
+  ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_raw_hash_map") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h" ]
+  public_deps = [
+    ":absl_base_throw_delegate",
+    ":absl_container_container_memory",
+    ":absl_container_raw_hash_set",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_container_raw_hash_set") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc",
+    "src/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_base_prefetch",
+    ":absl_base_raw_logging_internal",
+    ":absl_container_common",
+    ":absl_container_compressed_tuple",
+    ":absl_container_container_memory",
+    ":absl_container_hash_policy_traits",
+    ":absl_container_hashtable_debug_hooks",
+    ":absl_container_hashtablez_sampler",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_crc_cpu_detect") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc",
+    "src/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_crc_crc32c") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/crc/crc32c.cc",
+    "src/third_party/abseil-cpp/absl/crc/crc32c.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc32c.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_endian",
+    ":absl_base_prefetch",
+    ":absl_crc_cpu_detect",
+    ":absl_crc_crc_internal",
+    ":absl_crc_non_temporal_memcpy",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_crc_crc_cord_state") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_crc_crc32c",
+    ":absl_numeric_bits",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_crc_crc_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/crc/internal/crc.cc",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_internal.h",
+    "src/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_endian",
+    ":absl_base_prefetch",
+    ":absl_base_raw_logging_internal",
+    ":absl_crc_cpu_detect",
+    ":absl_memory_memory",
+    ":absl_numeric_bits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_crc_non_temporal_arm_intrinsics") {
+  sources = [ "src/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_crc_non_temporal_memcpy") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_crc_non_temporal_arm_intrinsics",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_debugging_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h",
+    "src/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h",
+    "src/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_errno_saver",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_demangle_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/internal/demangle.cc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/demangle.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_examine_stack") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_debugging_stacktrace",
+    ":absl_debugging_symbolize",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_failure_signal_handler") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc",
+    "src/third_party/abseil-cpp/absl/debugging/failure_signal_handler.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_debugging_examine_stack",
+    ":absl_debugging_stacktrace",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_leak_check") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/leak_check.cc",
+    "src/third_party/abseil-cpp/absl/debugging/leak_check.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_stacktrace") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc",
+    "src/third_party/abseil-cpp/absl/debugging/stacktrace.cc",
+    "src/third_party/abseil-cpp/absl/debugging/stacktrace.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_debugging_debugging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_debugging_symbolize") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/debugging/internal/symbolize.h",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize.cc",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize.h",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc",
+    "src/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_malloc_internal",
+    ":absl_base_raw_logging_internal",
+    ":absl_debugging_debugging_internal",
+    ":absl_debugging_demangle_internal",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_commandlineflag") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/commandlineflag.cc",
+    "src/third_party/abseil-cpp/absl/flags/commandlineflag.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_fast_type_id",
+    ":absl_flags_commandlineflag_internal",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_commandlineflag_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc",
+    "src/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_fast_type_id",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_config") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/config.h",
+    "src/third_party/abseil-cpp/absl/flags/usage_config.cc",
+    "src/third_party/abseil-cpp/absl/flags/usage_config.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_flags_path_util",
+    ":absl_flags_program_name",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_flag") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/declare.h",
+    "src/third_party/abseil-cpp/absl/flags/flag.cc",
+    "src/third_party/abseil-cpp/absl/flags/flag.h",
+    "src/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_flags_config",
+    ":absl_flags_flag_internal",
+    ":absl_flags_reflection",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_flag_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/flag.cc",
+    "src/third_party/abseil-cpp/absl/flags/internal/flag.h",
+    "src/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_flags_commandlineflag",
+    ":absl_flags_commandlineflag_internal",
+    ":absl_flags_config",
+    ":absl_flags_marshalling",
+    ":absl_flags_reflection",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_marshalling") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/marshalling.cc",
+    "src/third_party/abseil-cpp/absl/flags/marshalling.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_strings_str_format",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_parse") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/parse.h",
+    "src/third_party/abseil-cpp/absl/flags/parse.cc",
+    "src/third_party/abseil-cpp/absl/flags/parse.h",
+  ]
+  public_deps = [
+    ":absl_algorithm_container",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_flags_commandlineflag",
+    ":absl_flags_commandlineflag_internal",
+    ":absl_flags_config",
+    ":absl_flags_flag",
+    ":absl_flags_flag_internal",
+    ":absl_flags_private_handle_accessor",
+    ":absl_flags_program_name",
+    ":absl_flags_reflection",
+    ":absl_flags_usage",
+    ":absl_flags_usage_internal",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_path_util") {
+  sources = [ "src/third_party/abseil-cpp/absl/flags/internal/path_util.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_private_handle_accessor") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc",
+    "src/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_flags_commandlineflag",
+    ":absl_flags_commandlineflag_internal",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_program_name") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/program_name.cc",
+    "src/third_party/abseil-cpp/absl/flags/internal/program_name.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_flags_path_util",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_reflection") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/registry.h",
+    "src/third_party/abseil-cpp/absl/flags/reflection.cc",
+    "src/third_party/abseil-cpp/absl/flags/reflection.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_container_flat_hash_map",
+    ":absl_flags_commandlineflag",
+    ":absl_flags_commandlineflag_internal",
+    ":absl_flags_config",
+    ":absl_flags_private_handle_accessor",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_usage") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/usage.cc",
+    "src/third_party/abseil-cpp/absl/flags/usage.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_flags_usage_internal",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_flags_usage_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/flags/internal/usage.cc",
+    "src/third_party/abseil-cpp/absl/flags/internal/usage.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_container_flat_hash_map",
+    ":absl_flags_commandlineflag",
+    ":absl_flags_config",
+    ":absl_flags_flag",
+    ":absl_flags_flag_internal",
+    ":absl_flags_path_util",
+    ":absl_flags_private_handle_accessor",
+    ":absl_flags_program_name",
+    ":absl_flags_reflection",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_functional_any_invocable") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/functional/any_invocable.h",
+    "src/third_party/abseil-cpp/absl/functional/internal/any_invocable.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_functional_bind_front") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/functional/bind_front.h",
+    "src/third_party/abseil-cpp/absl/functional/internal/front_binder.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_container_compressed_tuple",
+    ":absl_meta_type_traits",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_functional_function_ref") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/functional/function_ref.h",
+    "src/third_party/abseil-cpp/absl/functional/internal/function_ref.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_hash_city") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/hash/internal/city.cc",
+    "src/third_party/abseil-cpp/absl/hash/internal/city.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_hash_hash") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/hash/hash.h",
+    "src/third_party/abseil-cpp/absl/hash/internal/hash.cc",
+    "src/third_party/abseil-cpp/absl/hash/internal/hash.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_container_fixed_array",
+    ":absl_functional_function_ref",
+    ":absl_hash_city",
+    ":absl_hash_low_level_hash",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_numeric_int128",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+    ":absl_types_variant",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_hash_low_level_hash") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc",
+    "src/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_endian",
+    ":absl_numeric_int128",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_append_truncated") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/log/internal/append_truncated.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_strings_strings",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_check_impl") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/check_impl.h" ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_log_internal_check_op",
+    ":absl_log_internal_conditions",
+    ":absl_log_internal_log_message",
+    ":absl_log_internal_strip",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_check_op") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/check_op.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/check_op.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_log_internal_nullguard",
+    ":absl_log_internal_nullstream",
+    ":absl_log_internal_strip",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_conditions") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/conditions.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/conditions.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_log_internal_voidify",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_config") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/config.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_flags") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/flags.h" ]
+  public_deps = [ ":absl_flags_flag" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_format") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/log_format.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/log_format.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_log_internal_append_truncated",
+    ":absl_log_internal_config",
+    ":absl_log_internal_globals",
+    ":absl_strings_str_format",
+    ":absl_strings_strings",
+    ":absl_time_time",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_globals") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/globals.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/globals.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_base_raw_logging_internal",
+    ":absl_strings_strings",
+    ":absl_time_time",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_log_impl") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/log_impl.h" ]
+  public_deps = [
+    ":absl_log_internal_conditions",
+    ":absl_log_internal_log_message",
+    ":absl_log_internal_strip",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_log_message") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/log_message.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/log_message.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_errno_saver",
+    ":absl_base_log_severity",
+    ":absl_base_raw_logging_internal",
+    ":absl_base_strerror",
+    ":absl_container_inlined_vector",
+    ":absl_debugging_examine_stack",
+    ":absl_log_globals",
+    ":absl_log_internal_append_truncated",
+    ":absl_log_internal_format",
+    ":absl_log_internal_globals",
+    ":absl_log_internal_log_sink_set",
+    ":absl_log_internal_nullguard",
+    ":absl_log_internal_proto",
+    ":absl_log_log_entry",
+    ":absl_log_log_sink",
+    ":absl_log_log_sink_registry",
+    ":absl_memory_memory",
+    ":absl_strings_strings",
+    ":absl_time_time",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_log_sink_set") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/log_sink_set.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_base_raw_logging_internal",
+    ":absl_cleanup_cleanup",
+    ":absl_log_globals",
+    ":absl_log_internal_config",
+    ":absl_log_internal_globals",
+    ":absl_log_log_entry",
+    ":absl_log_log_sink",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_nullguard") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/nullguard.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/nullguard.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_nullstream") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/nullstream.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_proto") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/internal/proto.cc",
+    "src/third_party/abseil-cpp/absl/log/internal/proto.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_strings_strings",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_strip") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/strip.h" ]
+  public_deps = [
+    ":absl_base_log_severity",
+    ":absl_log_internal_log_message",
+    ":absl_log_internal_nullstream",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_structured") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/structured.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_log_internal_log_message",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_internal_voidify") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/internal/voidify.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_absl_check") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/absl_check.h" ]
+  public_deps = [ ":absl_log_internal_check_impl" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_absl_log") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/absl_log.h" ]
+  public_deps = [ ":absl_log_internal_log_impl" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_check") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/check.h" ]
+  public_deps = [
+    ":absl_log_internal_check_impl",
+    ":absl_log_internal_check_op",
+    ":absl_log_internal_conditions",
+    ":absl_log_internal_log_message",
+    ":absl_log_internal_strip",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_die_if_null") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/die_if_null.cc",
+    "src/third_party/abseil-cpp/absl/log/die_if_null.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_log_log",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_flags") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/flags.cc",
+    "src/third_party/abseil-cpp/absl/log/flags.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_flags_flag",
+    ":absl_flags_marshalling",
+    ":absl_log_globals",
+    ":absl_log_internal_config",
+    ":absl_log_internal_flags",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_globals") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/globals.cc",
+    "src/third_party/abseil-cpp/absl/log/globals.h",
+  ]
+  public_deps = [
+    ":absl_base_atomic_hook",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_hash_hash",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_initialize") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/initialize.cc",
+    "src/third_party/abseil-cpp/absl/log/initialize.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_log_globals",
+    ":absl_log_internal_globals",
+    ":absl_time_time",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_log") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/log.h" ]
+  public_deps = [ ":absl_log_internal_log_impl" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_log_entry") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/log_entry.cc",
+    "src/third_party/abseil-cpp/absl/log/log_entry.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_log_severity",
+    ":absl_log_internal_config",
+    ":absl_strings_strings",
+    ":absl_time_time",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_log_sink") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/log/log_sink.cc",
+    "src/third_party/abseil-cpp/absl/log/log_sink.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_log_log_entry",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_log_sink_registry") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/log_sink_registry.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_log_internal_log_sink_set",
+    ":absl_log_log_sink",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_log_streamer") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/log_streamer.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_log_severity",
+    ":absl_log_absl_log",
+    ":absl_strings_internal",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_log_structured") {
+  sources = [ "src/third_party/abseil-cpp/absl/log/structured.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_log_internal_structured",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_memory_memory") {
+  sources = [ "src/third_party/abseil-cpp/absl/memory/memory.h" ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_meta_type_traits") {
+  sources = [ "src/third_party/abseil-cpp/absl/meta/type_traits.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_numeric_bits") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/numeric/bits.h",
+    "src/third_party/abseil-cpp/absl/numeric/internal/bits.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_numeric_int128") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/numeric/int128.cc",
+    "src/third_party/abseil-cpp/absl/numeric/int128.h",
+    "src/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc",
+    "src/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_numeric_bits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_numeric_representation") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/numeric/internal/representation.h" ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_profiling_exponential_biased") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc",
+    "src/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_profiling_periodic_sampler") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/profiling/internal/periodic_sampler.cc",
+    "src/third_party/abseil-cpp/absl/profiling/internal/periodic_sampler.h",
+  ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_profiling_exponential_biased",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_profiling_sample_recorder") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_synchronization_synchronization",
+    ":absl_time_time",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_distribution_caller") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/distribution_caller.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_fast_type_id",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_fast_uniform_bits") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_meta_type_traits",
+    ":absl_random_internal_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_fastmath") {
+  sources = [ "src/third_party/abseil-cpp/absl/random/internal/fastmath.h" ]
+  public_deps = [ ":absl_numeric_bits" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_generate_real") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/generate_real.h" ]
+  public_deps = [
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_random_internal_fastmath",
+    ":absl_random_internal_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_iostream_state_saver") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h",
+  ]
+  public_deps = [
+    ":absl_meta_type_traits",
+    ":absl_numeric_int128",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_mock_helpers") {
+  sources = [ "src/third_party/abseil-cpp/absl/random/internal/mock_helpers.h" ]
+  public_deps = [
+    ":absl_base_fast_type_id",
+    ":absl_types_optional",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_nanobenchmark") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/nanobenchmark.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/nanobenchmark.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_random_internal_platform",
+    ":absl_random_internal_randen_engine",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_nonsecure_base") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h" ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_container_inlined_vector",
+    ":absl_meta_type_traits",
+    ":absl_random_internal_pool_urbg",
+    ":absl_random_internal_salted_seed_seq",
+    ":absl_random_internal_seed_material",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_pcg_engine") {
+  sources = [ "src/third_party/abseil-cpp/absl/random/internal/pcg_engine.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_numeric_int128",
+    ":absl_random_internal_fastmath",
+    ":absl_random_internal_iostream_state_saver",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_platform") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/platform.h",
+    "src/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/randen_traits.h",
+  ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_pool_urbg") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/pool_urbg.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_base_raw_logging_internal",
+    ":absl_random_internal_randen",
+    ":absl_random_internal_seed_material",
+    ":absl_random_internal_traits",
+    ":absl_random_seed_gen_exception",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_randen") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/randen.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/randen.h",
+  ]
+  public_deps = [
+    ":absl_base_raw_logging_internal",
+    ":absl_random_internal_platform",
+    ":absl_random_internal_randen_hwaes",
+    ":absl_random_internal_randen_slow",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_randen_engine") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/randen_engine.h" ]
+  public_deps = [
+    ":absl_base_endian",
+    ":absl_meta_type_traits",
+    ":absl_random_internal_iostream_state_saver",
+    ":absl_random_internal_randen",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_randen_hwaes") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/randen_detect.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/randen_detect.h",
+    "src/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_random_internal_platform",
+    ":absl_random_internal_randen_hwaes_impl",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_randen_hwaes_impl") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_numeric_int128",
+    ":absl_random_internal_platform",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_randen_slow") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/randen_slow.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/randen_slow.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_numeric_int128",
+    ":absl_random_internal_platform",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_salted_seed_seq") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h" ]
+  public_deps = [
+    ":absl_container_inlined_vector",
+    ":absl_meta_type_traits",
+    ":absl_random_internal_seed_material",
+    ":absl_types_optional",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_seed_material") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/internal/seed_material.cc",
+    "src/third_party/abseil-cpp/absl/random/internal/seed_material.h",
+  ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_raw_logging_internal",
+    ":absl_random_internal_fast_uniform_bits",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_traits") {
+  sources = [ "src/third_party/abseil-cpp/absl/random/internal/traits.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_numeric_bits",
+    ":absl_numeric_int128",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_uniform_helper") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/uniform_helper.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_meta_type_traits",
+    ":absl_numeric_int128",
+    ":absl_random_internal_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_internal_wide_multiply") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/random/internal/wide_multiply.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_numeric_bits",
+    ":absl_numeric_int128",
+    ":absl_random_internal_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_bit_gen_ref") {
+  sources = [ "src/third_party/abseil-cpp/absl/random/bit_gen_ref.h" ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_base_fast_type_id",
+    ":absl_meta_type_traits",
+    ":absl_random_internal_distribution_caller",
+    ":absl_random_internal_fast_uniform_bits",
+    ":absl_random_random",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_distributions") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/bernoulli_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/beta_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/discrete_distribution.cc",
+    "src/third_party/abseil-cpp/absl/random/discrete_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/distributions.h",
+    "src/third_party/abseil-cpp/absl/random/exponential_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/gaussian_distribution.cc",
+    "src/third_party/abseil-cpp/absl/random/gaussian_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/poisson_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/uniform_int_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/uniform_real_distribution.h",
+    "src/third_party/abseil-cpp/absl/random/zipf_distribution.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_random_internal_distribution_caller",
+    ":absl_random_internal_fast_uniform_bits",
+    ":absl_random_internal_fastmath",
+    ":absl_random_internal_generate_real",
+    ":absl_random_internal_iostream_state_saver",
+    ":absl_random_internal_traits",
+    ":absl_random_internal_uniform_helper",
+    ":absl_random_internal_wide_multiply",
+    ":absl_strings_strings",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_random") {
+  sources = [ "src/third_party/abseil-cpp/absl/random/random.h" ]
+  public_deps = [
+    ":absl_random_distributions",
+    ":absl_random_internal_nonsecure_base",
+    ":absl_random_internal_pcg_engine",
+    ":absl_random_internal_pool_urbg",
+    ":absl_random_internal_randen_engine",
+    ":absl_random_seed_sequences",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_seed_gen_exception") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/seed_gen_exception.cc",
+    "src/third_party/abseil-cpp/absl/random/seed_gen_exception.h",
+  ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_random_seed_sequences") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/random/seed_sequences.cc",
+    "src/third_party/abseil-cpp/absl/random/seed_sequences.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_random_internal_pool_urbg",
+    ":absl_random_internal_salted_seed_seq",
+    ":absl_random_internal_seed_material",
+    ":absl_random_seed_gen_exception",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_status_status") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/status/internal/status_internal.h",
+    "src/third_party/abseil-cpp/absl/status/status.cc",
+    "src/third_party/abseil-cpp/absl/status/status.h",
+    "src/third_party/abseil-cpp/absl/status/status_payload_printer.cc",
+    "src/third_party/abseil-cpp/absl/status/status_payload_printer.h",
+  ]
+  public_deps = [
+    ":absl_base_atomic_hook",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_base_strerror",
+    ":absl_container_inlined_vector",
+    ":absl_debugging_stacktrace",
+    ":absl_debugging_symbolize",
+    ":absl_functional_function_ref",
+    ":absl_strings_cord",
+    ":absl_strings_str_format",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_status_statusor") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/status/internal/statusor_internal.h",
+    "src/third_party/abseil-cpp/absl/status/statusor.cc",
+    "src/third_party/abseil-cpp/absl/status/statusor.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_meta_type_traits",
+    ":absl_status_status",
+    ":absl_strings_strings",
+    ":absl_types_variant",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cord") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/cord.cc",
+    "src/third_party/abseil-cpp/absl/strings/cord.h",
+    "src/third_party/abseil-cpp/absl/strings/cord_analysis.cc",
+    "src/third_party/abseil-cpp/absl/strings/cord_analysis.h",
+    "src/third_party/abseil-cpp/absl/strings/cord_buffer.cc",
+    "src/third_party/abseil-cpp/absl/strings/cord_buffer.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_base_raw_logging_internal",
+    ":absl_container_fixed_array",
+    ":absl_container_inlined_vector",
+    ":absl_crc_crc_cord_state",
+    ":absl_functional_function_ref",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_strings_cord_internal",
+    ":absl_strings_cordz_functions",
+    ":absl_strings_cordz_info",
+    ":absl_strings_cordz_statistics",
+    ":absl_strings_cordz_update_scope",
+    ":absl_strings_cordz_update_tracker",
+    ":absl_strings_internal",
+    ":absl_strings_str_format",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cord_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_internal.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_base_raw_logging_internal",
+    ":absl_base_throw_delegate",
+    ":absl_container_compressed_tuple",
+    ":absl_container_container_memory",
+    ":absl_container_inlined_vector",
+    ":absl_container_layout",
+    ":absl_crc_crc_cord_state",
+    ":absl_functional_function_ref",
+    ":absl_meta_type_traits",
+    ":absl_strings_strings",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_functions") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_profiling_exponential_biased",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_handle") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_raw_logging_internal",
+    ":absl_synchronization_synchronization",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_info") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_info.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_container_inlined_vector",
+    ":absl_debugging_stacktrace",
+    ":absl_strings_cord_internal",
+    ":absl_strings_cordz_functions",
+    ":absl_strings_cordz_handle",
+    ":absl_strings_cordz_statistics",
+    ":absl_strings_cordz_update_tracker",
+    ":absl_synchronization_synchronization",
+    ":absl_types_span",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_sample_token") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_sample_token.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_sample_token.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_strings_cordz_handle",
+    ":absl_strings_cordz_info",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_statistics") {
+  sources =
+      [ "src/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_strings_cordz_update_tracker",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_update_scope") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_strings_cord_internal",
+    ":absl_strings_cordz_info",
+    ":absl_strings_cordz_update_tracker",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_cordz_update_tracker") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h",
+  ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/char_map.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/escaping.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/escaping.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/ostringstream.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/utf8.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/utf8.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_base_raw_logging_internal",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_str_format") {
+  sources = [ "src/third_party/abseil-cpp/absl/strings/str_format.h" ]
+  public_deps = [ ":absl_strings_str_format_internal" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_str_format_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/output.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_functional_function_ref",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_numeric_int128",
+    ":absl_numeric_representation",
+    ":absl_strings_strings",
+    ":absl_types_optional",
+    ":absl_types_span",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_strings_strings") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/strings/ascii.cc",
+    "src/third_party/abseil-cpp/absl/strings/ascii.h",
+    "src/third_party/abseil-cpp/absl/strings/charconv.cc",
+    "src/third_party/abseil-cpp/absl/strings/charconv.h",
+    "src/third_party/abseil-cpp/absl/strings/escaping.cc",
+    "src/third_party/abseil-cpp/absl/strings/escaping.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/memutil.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/memutil.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/string_constant.h",
+    "src/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc",
+    "src/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h",
+    "src/third_party/abseil-cpp/absl/strings/match.cc",
+    "src/third_party/abseil-cpp/absl/strings/match.h",
+    "src/third_party/abseil-cpp/absl/strings/numbers.cc",
+    "src/third_party/abseil-cpp/absl/strings/numbers.h",
+    "src/third_party/abseil-cpp/absl/strings/str_cat.cc",
+    "src/third_party/abseil-cpp/absl/strings/str_cat.h",
+    "src/third_party/abseil-cpp/absl/strings/str_join.h",
+    "src/third_party/abseil-cpp/absl/strings/str_replace.cc",
+    "src/third_party/abseil-cpp/absl/strings/str_replace.h",
+    "src/third_party/abseil-cpp/absl/strings/str_split.cc",
+    "src/third_party/abseil-cpp/absl/strings/str_split.h",
+    "src/third_party/abseil-cpp/absl/strings/string_view.cc",
+    "src/third_party/abseil-cpp/absl/strings/string_view.h",
+    "src/third_party/abseil-cpp/absl/strings/strip.h",
+    "src/third_party/abseil-cpp/absl/strings/substitute.cc",
+    "src/third_party/abseil-cpp/absl/strings/substitute.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_endian",
+    ":absl_base_raw_logging_internal",
+    ":absl_base_throw_delegate",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_numeric_bits",
+    ":absl_numeric_int128",
+    ":absl_strings_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_synchronization_graphcycles_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_malloc_internal",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_synchronization_kernel_timeout_internal") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h",
+  ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_time_time",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_synchronization_synchronization") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/synchronization/barrier.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/barrier.h",
+    "src/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/blocking_counter.h",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/futex.h",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/internal/waiter.h",
+    "src/third_party/abseil-cpp/absl/synchronization/mutex.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/mutex.h",
+    "src/third_party/abseil-cpp/absl/synchronization/notification.cc",
+    "src/third_party/abseil-cpp/absl/synchronization/notification.h",
+  ]
+  public_deps = [
+    ":absl_base_atomic_hook",
+    ":absl_base_base",
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_dynamic_annotations",
+    ":absl_base_malloc_internal",
+    ":absl_base_raw_logging_internal",
+    ":absl_debugging_stacktrace",
+    ":absl_debugging_symbolize",
+    ":absl_synchronization_graphcycles_internal",
+    ":absl_synchronization_kernel_timeout_internal",
+    ":absl_time_time",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_time_internal_cctz_civil_time") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc",
+  ]
+  public_deps = [ ":absl_base_config" ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_time_internal_cctz_time_zone") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h",
+    "src/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_time_internal_cctz_civil_time",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_time_time") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/time/civil_time.cc",
+    "src/third_party/abseil-cpp/absl/time/civil_time.h",
+    "src/third_party/abseil-cpp/absl/time/clock.cc",
+    "src/third_party/abseil-cpp/absl/time/clock.h",
+    "src/third_party/abseil-cpp/absl/time/duration.cc",
+    "src/third_party/abseil-cpp/absl/time/format.cc",
+    "src/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc",
+    "src/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc",
+    "src/third_party/abseil-cpp/absl/time/time.cc",
+    "src/third_party/abseil-cpp/absl/time/time.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_raw_logging_internal",
+    ":absl_numeric_int128",
+    ":absl_strings_strings",
+    ":absl_time_internal_cctz_civil_time",
+    ":absl_time_internal_cctz_time_zone",
+    ":absl_types_optional",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_any") {
+  sources = [ "src/third_party/abseil-cpp/absl/types/any.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_base_fast_type_id",
+    ":absl_meta_type_traits",
+    ":absl_types_bad_any_cast",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_bad_any_cast") {
+  sources = [ "src/third_party/abseil-cpp/absl/types/bad_any_cast.h" ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_types_bad_any_cast_impl",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_bad_any_cast_impl") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/types/bad_any_cast.cc",
+    "src/third_party/abseil-cpp/absl/types/bad_any_cast.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_bad_optional_access") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/types/bad_optional_access.cc",
+    "src/third_party/abseil-cpp/absl/types/bad_optional_access.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_bad_variant_access") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/types/bad_variant_access.cc",
+    "src/third_party/abseil-cpp/absl/types/bad_variant_access.h",
+  ]
+  public_deps = [
+    ":absl_base_config",
+    ":absl_base_raw_logging_internal",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_compare") {
+  sources = [ "src/third_party/abseil-cpp/absl/types/compare.h" ]
+  public_deps = [
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_optional") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/types/internal/optional.h",
+    "src/third_party/abseil-cpp/absl/types/optional.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_memory_memory",
+    ":absl_meta_type_traits",
+    ":absl_types_bad_optional_access",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_span") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/types/internal/span.h",
+    "src/third_party/abseil-cpp/absl/types/span.h",
+  ]
+  public_deps = [
+    ":absl_algorithm_algorithm",
+    ":absl_base_core_headers",
+    ":absl_base_throw_delegate",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_types_variant") {
+  sources = [
+    "src/third_party/abseil-cpp/absl/types/internal/variant.h",
+    "src/third_party/abseil-cpp/absl/types/variant.h",
+  ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_base_core_headers",
+    ":absl_meta_type_traits",
+    ":absl_types_bad_variant_access",
+    ":absl_utility_utility",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("absl_utility_utility") {
+  sources = [ "src/third_party/abseil-cpp/absl/utility/utility.h" ]
+  public_deps = [
+    ":absl_base_base_internal",
+    ":absl_base_config",
+    ":absl_meta_type_traits",
+  ]
+  public_configs = [ "..:grpc_absl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("upb") {
+  sources = [
+    "src/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h",
+    "src/third_party/upb/third_party/utf8_range/naive.c",
+    "src/third_party/upb/third_party/utf8_range/range2-neon.c",
+    "src/third_party/upb/third_party/utf8_range/range2-sse.c",
+    "src/third_party/upb/third_party/utf8_range/utf8_range.h",
+    "src/third_party/upb/upb/arena.c",
+    "src/third_party/upb/upb/arena.h",
+    "src/third_party/upb/upb/array.c",
+    "src/third_party/upb/upb/array.h",
+    "src/third_party/upb/upb/collections.h",
+    "src/third_party/upb/upb/decode.c",
+    "src/third_party/upb/upb/decode.h",
+    "src/third_party/upb/upb/decode_fast.c",
+    "src/third_party/upb/upb/decode_fast.h",
+    "src/third_party/upb/upb/def.c",
+    "src/third_party/upb/upb/def.h",
+    "src/third_party/upb/upb/def.hpp",
+    "src/third_party/upb/upb/encode.c",
+    "src/third_party/upb/upb/encode.h",
+    "src/third_party/upb/upb/extension_registry.c",
+    "src/third_party/upb/upb/extension_registry.h",
+    "src/third_party/upb/upb/internal/decode.h",
+    "src/third_party/upb/upb/internal/table.h",
+    "src/third_party/upb/upb/internal/upb.h",
+    "src/third_party/upb/upb/internal/vsnprintf_compat.h",
+    "src/third_party/upb/upb/json_decode.c",
+    "src/third_party/upb/upb/json_decode.h",
+    "src/third_party/upb/upb/json_encode.c",
+    "src/third_party/upb/upb/json_encode.h",
+    "src/third_party/upb/upb/map.c",
+    "src/third_party/upb/upb/map.h",
+    "src/third_party/upb/upb/message_value.h",
+    "src/third_party/upb/upb/mini_table.c",
+    "src/third_party/upb/upb/mini_table.h",
+    "src/third_party/upb/upb/mini_table.hpp",
+    "src/third_party/upb/upb/msg.c",
+    "src/third_party/upb/upb/msg.h",
+    "src/third_party/upb/upb/msg_internal.h",
+    "src/third_party/upb/upb/port_def.inc",
+    "src/third_party/upb/upb/port_undef.inc",
+    "src/third_party/upb/upb/reflection.c",
+    "src/third_party/upb/upb/reflection.h",
+    "src/third_party/upb/upb/reflection.hpp",
+    "src/third_party/upb/upb/status.c",
+    "src/third_party/upb/upb/status.h",
+    "src/third_party/upb/upb/table.c",
+    "src/third_party/upb/upb/table_internal.h",
+    "src/third_party/upb/upb/text_encode.c",
+    "src/third_party/upb/upb/text_encode.h",
+    "src/third_party/upb/upb/upb.c",
+    "src/third_party/upb/upb/upb.h",
+    "src/third_party/upb/upb/upb.hpp",
+  ]
+  public_deps = []
+  public_configs = [ "..:grpc_upb_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("boringssl") {
+  sources = [
+    "src/third_party/boringssl-with-bazel/err_data.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/base64/base64.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/bio.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/connect.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/fd.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/file.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/pair.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/printf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/socket.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/buf/buf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/conf/conf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/conf/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-fuchsia.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-linux.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/crypto.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/engine/engine.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/err/err.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/err/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/digestsign.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/evp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/print.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/evp/sign.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/ex_data.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/mem.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/obj/obj.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/pool/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/pool/pool.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/stack/stack.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/thread.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/thread_none.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/thread_win.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c",
+    "src/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/aead.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/aes.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/asn1.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/base.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/base64.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/bio.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/blake2.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/bn.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/buf.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/buffer.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/cast.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/chacha.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/cipher.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/cmac.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/conf.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/cpu.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/crypto.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/des.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/dh.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/digest.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/dsa.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ec.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/engine.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/err.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/evp.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/hmac.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/hpke.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/hrss.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/lhash.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/md4.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/md5.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/mem.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/nid.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/obj.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/objects.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/pem.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/pool.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/rand.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/rc4.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/rsa.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/safestack.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/sha.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/siphash.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/span.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/srtp.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ssl.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/stack.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/thread.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/tls1.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/type_check.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/x509.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h",
+    "src/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h",
+    "src/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/d1_both.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/extensions.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/handoff.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/handshake.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/internal.h",
+    "src/third_party/boringssl-with-bazel/src/ssl/s3_both.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/tls_method.cc",
+    "src/third_party/boringssl-with-bazel/src/ssl/tls_record.cc",
+    "src/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h",
+    "src/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h",
+    "src/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h",
+    "src/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h",
+  ]
+  public_deps = []
+  public_configs = [ "..:grpc_boringssl_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("address_sorting") {
+  sources = [
+    "src/third_party/address_sorting/address_sorting.c",
+    "src/third_party/address_sorting/address_sorting_internal.h",
+    "src/third_party/address_sorting/address_sorting_posix.c",
+    "src/third_party/address_sorting/address_sorting_windows.c",
+    "src/third_party/address_sorting/include/address_sorting/address_sorting.h",
+  ]
+  public_deps = []
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("gpr") {
+  sources = [
+    "src/src/core/lib/event_engine/thread_local.cc",
+    "src/src/core/lib/event_engine/thread_local.h",
+    "src/src/core/lib/gpr/alloc.cc",
+    "src/src/core/lib/gpr/alloc.h",
+    "src/src/core/lib/gpr/atm.cc",
+    "src/src/core/lib/gpr/cpu_iphone.cc",
+    "src/src/core/lib/gpr/cpu_linux.cc",
+    "src/src/core/lib/gpr/cpu_posix.cc",
+    "src/src/core/lib/gpr/cpu_windows.cc",
+    "src/src/core/lib/gpr/log.cc",
+    "src/src/core/lib/gpr/log_android.cc",
+    "src/src/core/lib/gpr/log_linux.cc",
+    "src/src/core/lib/gpr/log_posix.cc",
+    "src/src/core/lib/gpr/log_windows.cc",
+    "src/src/core/lib/gpr/string.cc",
+    "src/src/core/lib/gpr/string.h",
+    "src/src/core/lib/gpr/string_posix.cc",
+    "src/src/core/lib/gpr/string_util_windows.cc",
+    "src/src/core/lib/gpr/string_windows.cc",
+    "src/src/core/lib/gpr/sync.cc",
+    "src/src/core/lib/gpr/sync_abseil.cc",
+    "src/src/core/lib/gpr/sync_posix.cc",
+    "src/src/core/lib/gpr/sync_windows.cc",
+    "src/src/core/lib/gpr/time.cc",
+    "src/src/core/lib/gpr/time_posix.cc",
+    "src/src/core/lib/gpr/time_precise.cc",
+    "src/src/core/lib/gpr/time_precise.h",
+    "src/src/core/lib/gpr/time_windows.cc",
+    "src/src/core/lib/gpr/tmpfile.h",
+    "src/src/core/lib/gpr/tmpfile_msys.cc",
+    "src/src/core/lib/gpr/tmpfile_posix.cc",
+    "src/src/core/lib/gpr/tmpfile_windows.cc",
+    "src/src/core/lib/gpr/useful.h",
+    "src/src/core/lib/gpr/wrap_memcpy.cc",
+    "src/src/core/lib/gprpp/construct_destruct.h",
+    "src/src/core/lib/gprpp/crash.cc",
+    "src/src/core/lib/gprpp/crash.h",
+    "src/src/core/lib/gprpp/debug_location.h",
+    "src/src/core/lib/gprpp/env.h",
+    "src/src/core/lib/gprpp/env_linux.cc",
+    "src/src/core/lib/gprpp/env_posix.cc",
+    "src/src/core/lib/gprpp/env_windows.cc",
+    "src/src/core/lib/gprpp/examine_stack.cc",
+    "src/src/core/lib/gprpp/examine_stack.h",
+    "src/src/core/lib/gprpp/fork.cc",
+    "src/src/core/lib/gprpp/fork.h",
+    "src/src/core/lib/gprpp/global_config.h",
+    "src/src/core/lib/gprpp/global_config_custom.h",
+    "src/src/core/lib/gprpp/global_config_env.cc",
+    "src/src/core/lib/gprpp/global_config_env.h",
+    "src/src/core/lib/gprpp/global_config_generic.h",
+    "src/src/core/lib/gprpp/host_port.cc",
+    "src/src/core/lib/gprpp/host_port.h",
+    "src/src/core/lib/gprpp/memory.h",
+    "src/src/core/lib/gprpp/mpscq.cc",
+    "src/src/core/lib/gprpp/mpscq.h",
+    "src/src/core/lib/gprpp/no_destruct.h",
+    "src/src/core/lib/gprpp/stat.h",
+    "src/src/core/lib/gprpp/stat_posix.cc",
+    "src/src/core/lib/gprpp/stat_windows.cc",
+    "src/src/core/lib/gprpp/strerror.cc",
+    "src/src/core/lib/gprpp/strerror.h",
+    "src/src/core/lib/gprpp/sync.h",
+    "src/src/core/lib/gprpp/tchar.cc",
+    "src/src/core/lib/gprpp/tchar.h",
+    "src/src/core/lib/gprpp/thd.h",
+    "src/src/core/lib/gprpp/thd_posix.cc",
+    "src/src/core/lib/gprpp/thd_windows.cc",
+    "src/src/core/lib/gprpp/time_util.cc",
+    "src/src/core/lib/gprpp/time_util.h",
+  ]
+  public_deps = [
+    ":absl_base_base",
+    ":absl_base_core_headers",
+    ":absl_memory_memory",
+    ":absl_random_random",
+    ":absl_status_status",
+    ":absl_strings_cord",
+    ":absl_strings_str_format",
+    ":absl_strings_strings",
+    ":absl_synchronization_synchronization",
+    ":absl_time_time",
+    ":absl_types_optional",
+    ":absl_types_variant",
+  ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc") {
+  sources = [
+    "src/src/core/ext/filters/census/grpc_context.cc",
+    "src/src/core/ext/filters/channel_idle/channel_idle_filter.cc",
+    "src/src/core/ext/filters/channel_idle/channel_idle_filter.h",
+    "src/src/core/ext/filters/channel_idle/idle_filter_state.cc",
+    "src/src/core/ext/filters/channel_idle/idle_filter_state.h",
+    "src/src/core/ext/filters/client_channel/backend_metric.cc",
+    "src/src/core/ext/filters/client_channel/backend_metric.h",
+    "src/src/core/ext/filters/client_channel/backup_poller.cc",
+    "src/src/core/ext/filters/client_channel/backup_poller.h",
+    "src/src/core/ext/filters/client_channel/channel_connectivity.cc",
+    "src/src/core/ext/filters/client_channel/client_channel.cc",
+    "src/src/core/ext/filters/client_channel/client_channel.h",
+    "src/src/core/ext/filters/client_channel/client_channel_channelz.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_channelz.h",
+    "src/src/core/ext/filters/client_channel/client_channel_factory.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_factory.h",
+    "src/src/core/ext/filters/client_channel/client_channel_plugin.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_service_config.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_service_config.h",
+    "src/src/core/ext/filters/client_channel/config_selector.cc",
+    "src/src/core/ext/filters/client_channel/config_selector.h",
+    "src/src/core/ext/filters/client_channel/connector.h",
+    "src/src/core/ext/filters/client_channel/dynamic_filters.cc",
+    "src/src/core/ext/filters/client_channel/dynamic_filters.h",
+    "src/src/core/ext/filters/client_channel/global_subchannel_pool.cc",
+    "src/src/core/ext/filters/client_channel/global_subchannel_pool.h",
+    "src/src/core/ext/filters/client_channel/health/health_check_client.cc",
+    "src/src/core/ext/filters/client_channel/health/health_check_client.h",
+    "src/src/core/ext/filters/client_channel/http_proxy.cc",
+    "src/src/core/ext/filters/client_channel/http_proxy.h",
+    "src/src/core/ext/filters/client_channel/lb_call_state_internal.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/address_filtering.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc",
+    "src/src/core/ext/filters/client_channel/local_subchannel_pool.cc",
+    "src/src/core/ext/filters/client_channel/local_subchannel_pool.h",
+    "src/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h",
+    "src/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h",
+    "src/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/polling_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/polling_resolver.h",
+    "src/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h",
+    "src/src/core/ext/filters/client_channel/retry_filter.cc",
+    "src/src/core/ext/filters/client_channel/retry_filter.h",
+    "src/src/core/ext/filters/client_channel/retry_service_config.cc",
+    "src/src/core/ext/filters/client_channel/retry_service_config.h",
+    "src/src/core/ext/filters/client_channel/retry_throttle.cc",
+    "src/src/core/ext/filters/client_channel/retry_throttle.h",
+    "src/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc",
+    "src/src/core/ext/filters/client_channel/subchannel.cc",
+    "src/src/core/ext/filters/client_channel/subchannel.h",
+    "src/src/core/ext/filters/client_channel/subchannel_interface_internal.h",
+    "src/src/core/ext/filters/client_channel/subchannel_pool_interface.cc",
+    "src/src/core/ext/filters/client_channel/subchannel_pool_interface.h",
+    "src/src/core/ext/filters/client_channel/subchannel_stream_client.cc",
+    "src/src/core/ext/filters/client_channel/subchannel_stream_client.h",
+    "src/src/core/ext/filters/deadline/deadline_filter.cc",
+    "src/src/core/ext/filters/deadline/deadline_filter.h",
+    "src/src/core/ext/filters/fault_injection/fault_injection_filter.cc",
+    "src/src/core/ext/filters/fault_injection/fault_injection_filter.h",
+    "src/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc",
+    "src/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h",
+    "src/src/core/ext/filters/http/client/http_client_filter.cc",
+    "src/src/core/ext/filters/http/client/http_client_filter.h",
+    "src/src/core/ext/filters/http/client_authority_filter.cc",
+    "src/src/core/ext/filters/http/client_authority_filter.h",
+    "src/src/core/ext/filters/http/http_filters_plugin.cc",
+    "src/src/core/ext/filters/http/message_compress/compression_filter.cc",
+    "src/src/core/ext/filters/http/message_compress/compression_filter.h",
+    "src/src/core/ext/filters/http/server/http_server_filter.cc",
+    "src/src/core/ext/filters/http/server/http_server_filter.h",
+    "src/src/core/ext/filters/message_size/message_size_filter.cc",
+    "src/src/core/ext/filters/message_size/message_size_filter.h",
+    "src/src/core/ext/filters/rbac/rbac_filter.cc",
+    "src/src/core/ext/filters/rbac/rbac_filter.h",
+    "src/src/core/ext/filters/rbac/rbac_service_config_parser.cc",
+    "src/src/core/ext/filters/rbac/rbac_service_config_parser.h",
+    "src/src/core/ext/filters/server_config_selector/server_config_selector.h",
+    "src/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc",
+    "src/src/core/ext/filters/server_config_selector/server_config_selector_filter.h",
+    "src/src/core/ext/filters/stateful_session/stateful_session_filter.cc",
+    "src/src/core/ext/filters/stateful_session/stateful_session_filter.h",
+    "src/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc",
+    "src/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h",
+    "src/src/core/ext/transport/chttp2/alpn/alpn.cc",
+    "src/src/core/ext/transport/chttp2/alpn/alpn.h",
+    "src/src/core/ext/transport/chttp2/client/chttp2_connector.cc",
+    "src/src/core/ext/transport/chttp2/client/chttp2_connector.h",
+    "src/src/core/ext/transport/chttp2/server/chttp2_server.cc",
+    "src/src/core/ext/transport/chttp2/server/chttp2_server.h",
+    "src/src/core/ext/transport/chttp2/transport/bin_decoder.cc",
+    "src/src/core/ext/transport/chttp2/transport/bin_decoder.h",
+    "src/src/core/ext/transport/chttp2/transport/bin_encoder.cc",
+    "src/src/core/ext/transport/chttp2/transport/bin_encoder.h",
+    "src/src/core/ext/transport/chttp2/transport/chttp2_transport.cc",
+    "src/src/core/ext/transport/chttp2/transport/chttp2_transport.h",
+    "src/src/core/ext/transport/chttp2/transport/context_list.cc",
+    "src/src/core/ext/transport/chttp2/transport/context_list.h",
+    "src/src/core/ext/transport/chttp2/transport/decode_huff.cc",
+    "src/src/core/ext/transport/chttp2/transport/decode_huff.h",
+    "src/src/core/ext/transport/chttp2/transport/flow_control.cc",
+    "src/src/core/ext/transport/chttp2/transport/flow_control.h",
+    "src/src/core/ext/transport/chttp2/transport/frame.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_data.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_data.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_goaway.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_goaway.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_ping.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_ping.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_rst_stream.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_settings.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_settings.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_window_update.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_window_update.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_constants.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser_table.h",
+    "src/src/core/ext/transport/chttp2/transport/http2_settings.cc",
+    "src/src/core/ext/transport/chttp2/transport/http2_settings.h",
+    "src/src/core/ext/transport/chttp2/transport/http_trace.cc",
+    "src/src/core/ext/transport/chttp2/transport/http_trace.h",
+    "src/src/core/ext/transport/chttp2/transport/huffsyms.cc",
+    "src/src/core/ext/transport/chttp2/transport/huffsyms.h",
+    "src/src/core/ext/transport/chttp2/transport/internal.h",
+    "src/src/core/ext/transport/chttp2/transport/parsing.cc",
+    "src/src/core/ext/transport/chttp2/transport/stream_lists.cc",
+    "src/src/core/ext/transport/chttp2/transport/stream_map.cc",
+    "src/src/core/ext/transport/chttp2/transport/stream_map.h",
+    "src/src/core/ext/transport/chttp2/transport/varint.cc",
+    "src/src/core/ext/transport/chttp2/transport/varint.h",
+    "src/src/core/ext/transport/chttp2/transport/writing.cc",
+    "src/src/core/ext/transport/inproc/inproc_plugin.cc",
+    "src/src/core/ext/transport/inproc/inproc_transport.cc",
+    "src/src/core/ext/transport/inproc/inproc_transport.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c",
+    "src/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h",
+    "src/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c",
+    "src/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h",
+    "src/src/core/ext/upb-generated/envoy/annotations/resource.upb.c",
+    "src/src/core/ext/upb-generated/envoy/annotations/resource.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c",
+    "src/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c",
+    "src/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h",
+    "src/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c",
+    "src/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h",
+    "src/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c",
+    "src/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h",
+    "src/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c",
+    "src/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h",
+    "src/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c",
+    "src/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/http.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/http.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/range.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/range.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h",
+    "src/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c",
+    "src/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h",
+    "src/src/core/ext/upb-generated/google/api/annotations.upb.c",
+    "src/src/core/ext/upb-generated/google/api/annotations.upb.h",
+    "src/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c",
+    "src/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h",
+    "src/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c",
+    "src/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h",
+    "src/src/core/ext/upb-generated/google/api/http.upb.c",
+    "src/src/core/ext/upb-generated/google/api/http.upb.h",
+    "src/src/core/ext/upb-generated/google/api/httpbody.upb.c",
+    "src/src/core/ext/upb-generated/google/api/httpbody.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/any.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/any.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/duration.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/duration.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/empty.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/empty.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/struct.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/struct.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h",
+    "src/src/core/ext/upb-generated/google/rpc/status.upb.c",
+    "src/src/core/ext/upb-generated/google/rpc/status.upb.h",
+    "src/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c",
+    "src/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h",
+    "src/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c",
+    "src/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h",
+    "src/src/core/ext/upb-generated/udpa/annotations/security.upb.c",
+    "src/src/core/ext/upb-generated/udpa/annotations/security.upb.h",
+    "src/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c",
+    "src/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h",
+    "src/src/core/ext/upb-generated/udpa/annotations/status.upb.c",
+    "src/src/core/ext/upb-generated/udpa/annotations/status.upb.h",
+    "src/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c",
+    "src/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h",
+    "src/src/core/ext/upb-generated/validate/validate.upb.c",
+    "src/src/core/ext/upb-generated/validate/validate.upb.h",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c",
+    "src/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/authority.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/authority.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/extension.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/extension.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/resource.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/resource.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h",
+    "src/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c",
+    "src/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h",
+    "src/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c",
+    "src/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h",
+    "src/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c",
+    "src/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/v3/cel.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/v3/cel.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/v3/range.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/v3/range.upb.h",
+    "src/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c",
+    "src/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h",
+    "src/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c",
+    "src/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h",
+    "src/src/core/ext/xds/certificate_provider_store.cc",
+    "src/src/core/ext/xds/certificate_provider_store.h",
+    "src/src/core/ext/xds/file_watcher_certificate_provider_factory.cc",
+    "src/src/core/ext/xds/file_watcher_certificate_provider_factory.h",
+    "src/src/core/ext/xds/upb_utils.h",
+    "src/src/core/ext/xds/xds_api.cc",
+    "src/src/core/ext/xds/xds_api.h",
+    "src/src/core/ext/xds/xds_bootstrap.cc",
+    "src/src/core/ext/xds/xds_bootstrap.h",
+    "src/src/core/ext/xds/xds_bootstrap_grpc.cc",
+    "src/src/core/ext/xds/xds_bootstrap_grpc.h",
+    "src/src/core/ext/xds/xds_certificate_provider.cc",
+    "src/src/core/ext/xds/xds_certificate_provider.h",
+    "src/src/core/ext/xds/xds_channel_args.h",
+    "src/src/core/ext/xds/xds_channel_stack_modifier.cc",
+    "src/src/core/ext/xds/xds_channel_stack_modifier.h",
+    "src/src/core/ext/xds/xds_client.cc",
+    "src/src/core/ext/xds/xds_client.h",
+    "src/src/core/ext/xds/xds_client_grpc.cc",
+    "src/src/core/ext/xds/xds_client_grpc.h",
+    "src/src/core/ext/xds/xds_client_stats.cc",
+    "src/src/core/ext/xds/xds_client_stats.h",
+    "src/src/core/ext/xds/xds_cluster.cc",
+    "src/src/core/ext/xds/xds_cluster.h",
+    "src/src/core/ext/xds/xds_cluster_specifier_plugin.cc",
+    "src/src/core/ext/xds/xds_cluster_specifier_plugin.h",
+    "src/src/core/ext/xds/xds_common_types.cc",
+    "src/src/core/ext/xds/xds_common_types.h",
+    "src/src/core/ext/xds/xds_endpoint.cc",
+    "src/src/core/ext/xds/xds_endpoint.h",
+    "src/src/core/ext/xds/xds_health_status.cc",
+    "src/src/core/ext/xds/xds_health_status.h",
+    "src/src/core/ext/xds/xds_http_fault_filter.cc",
+    "src/src/core/ext/xds/xds_http_fault_filter.h",
+    "src/src/core/ext/xds/xds_http_filters.cc",
+    "src/src/core/ext/xds/xds_http_filters.h",
+    "src/src/core/ext/xds/xds_http_rbac_filter.cc",
+    "src/src/core/ext/xds/xds_http_rbac_filter.h",
+    "src/src/core/ext/xds/xds_http_stateful_session_filter.cc",
+    "src/src/core/ext/xds/xds_http_stateful_session_filter.h",
+    "src/src/core/ext/xds/xds_lb_policy_registry.cc",
+    "src/src/core/ext/xds/xds_lb_policy_registry.h",
+    "src/src/core/ext/xds/xds_listener.cc",
+    "src/src/core/ext/xds/xds_listener.h",
+    "src/src/core/ext/xds/xds_resource_type.h",
+    "src/src/core/ext/xds/xds_resource_type_impl.h",
+    "src/src/core/ext/xds/xds_route_config.cc",
+    "src/src/core/ext/xds/xds_route_config.h",
+    "src/src/core/ext/xds/xds_routing.cc",
+    "src/src/core/ext/xds/xds_routing.h",
+    "src/src/core/ext/xds/xds_server_config_fetcher.cc",
+    "src/src/core/ext/xds/xds_transport.h",
+    "src/src/core/ext/xds/xds_transport_grpc.cc",
+    "src/src/core/ext/xds/xds_transport_grpc.h",
+    "src/src/core/lib/address_utils/parse_address.cc",
+    "src/src/core/lib/address_utils/parse_address.h",
+    "src/src/core/lib/address_utils/sockaddr_utils.cc",
+    "src/src/core/lib/address_utils/sockaddr_utils.h",
+    "src/src/core/lib/avl/avl.h",
+    "src/src/core/lib/backoff/backoff.cc",
+    "src/src/core/lib/backoff/backoff.h",
+    "src/src/core/lib/channel/call_finalization.h",
+    "src/src/core/lib/channel/call_tracer.h",
+    "src/src/core/lib/channel/channel_args.cc",
+    "src/src/core/lib/channel/channel_args.h",
+    "src/src/core/lib/channel/channel_args_preconditioning.cc",
+    "src/src/core/lib/channel/channel_args_preconditioning.h",
+    "src/src/core/lib/channel/channel_fwd.h",
+    "src/src/core/lib/channel/channel_stack.cc",
+    "src/src/core/lib/channel/channel_stack.h",
+    "src/src/core/lib/channel/channel_stack_builder.cc",
+    "src/src/core/lib/channel/channel_stack_builder.h",
+    "src/src/core/lib/channel/channel_stack_builder_impl.cc",
+    "src/src/core/lib/channel/channel_stack_builder_impl.h",
+    "src/src/core/lib/channel/channel_trace.cc",
+    "src/src/core/lib/channel/channel_trace.h",
+    "src/src/core/lib/channel/channelz.cc",
+    "src/src/core/lib/channel/channelz.h",
+    "src/src/core/lib/channel/channelz_registry.cc",
+    "src/src/core/lib/channel/channelz_registry.h",
+    "src/src/core/lib/channel/connected_channel.cc",
+    "src/src/core/lib/channel/connected_channel.h",
+    "src/src/core/lib/channel/context.h",
+    "src/src/core/lib/channel/promise_based_filter.cc",
+    "src/src/core/lib/channel/promise_based_filter.h",
+    "src/src/core/lib/channel/status_util.cc",
+    "src/src/core/lib/channel/status_util.h",
+    "src/src/core/lib/compression/compression.cc",
+    "src/src/core/lib/compression/compression_internal.cc",
+    "src/src/core/lib/compression/compression_internal.h",
+    "src/src/core/lib/compression/message_compress.cc",
+    "src/src/core/lib/compression/message_compress.h",
+    "src/src/core/lib/config/core_configuration.cc",
+    "src/src/core/lib/config/core_configuration.h",
+    "src/src/core/lib/debug/event_log.cc",
+    "src/src/core/lib/debug/event_log.h",
+    "src/src/core/lib/debug/histogram_view.cc",
+    "src/src/core/lib/debug/histogram_view.h",
+    "src/src/core/lib/debug/stats.cc",
+    "src/src/core/lib/debug/stats.h",
+    "src/src/core/lib/debug/stats_data.cc",
+    "src/src/core/lib/debug/stats_data.h",
+    "src/src/core/lib/debug/trace.cc",
+    "src/src/core/lib/debug/trace.h",
+    "src/src/core/lib/event_engine/channel_args_endpoint_config.cc",
+    "src/src/core/lib/event_engine/channel_args_endpoint_config.h",
+    "src/src/core/lib/event_engine/common_closures.h",
+    "src/src/core/lib/event_engine/default_event_engine.cc",
+    "src/src/core/lib/event_engine/default_event_engine.h",
+    "src/src/core/lib/event_engine/default_event_engine_factory.cc",
+    "src/src/core/lib/event_engine/default_event_engine_factory.h",
+    "src/src/core/lib/event_engine/event_engine.cc",
+    "src/src/core/lib/event_engine/executor/executor.h",
+    "src/src/core/lib/event_engine/forkable.cc",
+    "src/src/core/lib/event_engine/forkable.h",
+    "src/src/core/lib/event_engine/handle_containers.h",
+    "src/src/core/lib/event_engine/memory_allocator.cc",
+    "src/src/core/lib/event_engine/poller.h",
+    "src/src/core/lib/event_engine/posix.h",
+    "src/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc",
+    "src/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h",
+    "src/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc",
+    "src/src/core/lib/event_engine/posix_engine/ev_poll_posix.h",
+    "src/src/core/lib/event_engine/posix_engine/event_poller.h",
+    "src/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc",
+    "src/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h",
+    "src/src/core/lib/event_engine/posix_engine/internal_errqueue.cc",
+    "src/src/core/lib/event_engine/posix_engine/internal_errqueue.h",
+    "src/src/core/lib/event_engine/posix_engine/lockfree_event.cc",
+    "src/src/core/lib/event_engine/posix_engine/lockfree_event.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_endpoint.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_endpoint.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_closure.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h",
+    "src/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc",
+    "src/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h",
+    "src/src/core/lib/event_engine/posix_engine/timer.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer.h",
+    "src/src/core/lib/event_engine/posix_engine/timer_heap.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer_heap.h",
+    "src/src/core/lib/event_engine/posix_engine/timer_manager.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer_manager.h",
+    "src/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc",
+    "src/src/core/lib/event_engine/posix_engine/traced_buffer_list.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h",
+    "src/src/core/lib/event_engine/resolved_address.cc",
+    "src/src/core/lib/event_engine/resolved_address_internal.h",
+    "src/src/core/lib/event_engine/shim.cc",
+    "src/src/core/lib/event_engine/shim.h",
+    "src/src/core/lib/event_engine/slice.cc",
+    "src/src/core/lib/event_engine/slice_buffer.cc",
+    "src/src/core/lib/event_engine/tcp_socket_utils.cc",
+    "src/src/core/lib/event_engine/tcp_socket_utils.h",
+    "src/src/core/lib/event_engine/thread_pool.cc",
+    "src/src/core/lib/event_engine/thread_pool.h",
+    "src/src/core/lib/event_engine/time_util.cc",
+    "src/src/core/lib/event_engine/time_util.h",
+    "src/src/core/lib/event_engine/trace.cc",
+    "src/src/core/lib/event_engine/trace.h",
+    "src/src/core/lib/event_engine/utils.cc",
+    "src/src/core/lib/event_engine/utils.h",
+    "src/src/core/lib/event_engine/windows/iocp.cc",
+    "src/src/core/lib/event_engine/windows/iocp.h",
+    "src/src/core/lib/event_engine/windows/win_socket.cc",
+    "src/src/core/lib/event_engine/windows/win_socket.h",
+    "src/src/core/lib/event_engine/windows/windows_endpoint.cc",
+    "src/src/core/lib/event_engine/windows/windows_endpoint.h",
+    "src/src/core/lib/event_engine/windows/windows_engine.cc",
+    "src/src/core/lib/event_engine/windows/windows_engine.h",
+    "src/src/core/lib/experiments/config.cc",
+    "src/src/core/lib/experiments/config.h",
+    "src/src/core/lib/experiments/experiments.cc",
+    "src/src/core/lib/experiments/experiments.h",
+    "src/src/core/lib/gpr/spinlock.h",
+    "src/src/core/lib/gprpp/atomic_utils.h",
+    "src/src/core/lib/gprpp/bitset.h",
+    "src/src/core/lib/gprpp/chunked_vector.h",
+    "src/src/core/lib/gprpp/cpp_impl_of.h",
+    "src/src/core/lib/gprpp/dual_ref_counted.h",
+    "src/src/core/lib/gprpp/load_file.cc",
+    "src/src/core/lib/gprpp/load_file.h",
+    "src/src/core/lib/gprpp/manual_constructor.h",
+    "src/src/core/lib/gprpp/match.h",
+    "src/src/core/lib/gprpp/notification.h",
+    "src/src/core/lib/gprpp/orphanable.h",
+    "src/src/core/lib/gprpp/overload.h",
+    "src/src/core/lib/gprpp/packed_table.h",
+    "src/src/core/lib/gprpp/per_cpu.h",
+    "src/src/core/lib/gprpp/ref_counted.h",
+    "src/src/core/lib/gprpp/ref_counted_ptr.h",
+    "src/src/core/lib/gprpp/single_set_ptr.h",
+    "src/src/core/lib/gprpp/sorted_pack.h",
+    "src/src/core/lib/gprpp/status_helper.cc",
+    "src/src/core/lib/gprpp/status_helper.h",
+    "src/src/core/lib/gprpp/table.h",
+    "src/src/core/lib/gprpp/time.cc",
+    "src/src/core/lib/gprpp/time.h",
+    "src/src/core/lib/gprpp/time_averaged_stats.cc",
+    "src/src/core/lib/gprpp/time_averaged_stats.h",
+    "src/src/core/lib/gprpp/unique_type_name.h",
+    "src/src/core/lib/gprpp/validation_errors.cc",
+    "src/src/core/lib/gprpp/validation_errors.h",
+    "src/src/core/lib/gprpp/work_serializer.cc",
+    "src/src/core/lib/gprpp/work_serializer.h",
+    "src/src/core/lib/handshaker/proxy_mapper.h",
+    "src/src/core/lib/handshaker/proxy_mapper_registry.cc",
+    "src/src/core/lib/handshaker/proxy_mapper_registry.h",
+    "src/src/core/lib/http/format_request.cc",
+    "src/src/core/lib/http/format_request.h",
+    "src/src/core/lib/http/httpcli.cc",
+    "src/src/core/lib/http/httpcli.h",
+    "src/src/core/lib/http/httpcli_security_connector.cc",
+    "src/src/core/lib/http/httpcli_ssl_credentials.h",
+    "src/src/core/lib/http/parser.cc",
+    "src/src/core/lib/http/parser.h",
+    "src/src/core/lib/iomgr/block_annotate.h",
+    "src/src/core/lib/iomgr/buffer_list.cc",
+    "src/src/core/lib/iomgr/buffer_list.h",
+    "src/src/core/lib/iomgr/call_combiner.cc",
+    "src/src/core/lib/iomgr/call_combiner.h",
+    "src/src/core/lib/iomgr/cfstream_handle.cc",
+    "src/src/core/lib/iomgr/cfstream_handle.h",
+    "src/src/core/lib/iomgr/closure.cc",
+    "src/src/core/lib/iomgr/closure.h",
+    "src/src/core/lib/iomgr/combiner.cc",
+    "src/src/core/lib/iomgr/combiner.h",
+    "src/src/core/lib/iomgr/dualstack_socket_posix.cc",
+    "src/src/core/lib/iomgr/dynamic_annotations.h",
+    "src/src/core/lib/iomgr/endpoint.cc",
+    "src/src/core/lib/iomgr/endpoint.h",
+    "src/src/core/lib/iomgr/endpoint_cfstream.cc",
+    "src/src/core/lib/iomgr/endpoint_cfstream.h",
+    "src/src/core/lib/iomgr/endpoint_pair.h",
+    "src/src/core/lib/iomgr/endpoint_pair_posix.cc",
+    "src/src/core/lib/iomgr/endpoint_pair_windows.cc",
+    "src/src/core/lib/iomgr/error.cc",
+    "src/src/core/lib/iomgr/error.h",
+    "src/src/core/lib/iomgr/error_cfstream.cc",
+    "src/src/core/lib/iomgr/error_cfstream.h",
+    "src/src/core/lib/iomgr/ev_apple.cc",
+    "src/src/core/lib/iomgr/ev_apple.h",
+    "src/src/core/lib/iomgr/ev_epoll1_linux.cc",
+    "src/src/core/lib/iomgr/ev_epoll1_linux.h",
+    "src/src/core/lib/iomgr/ev_poll_posix.cc",
+    "src/src/core/lib/iomgr/ev_poll_posix.h",
+    "src/src/core/lib/iomgr/ev_posix.cc",
+    "src/src/core/lib/iomgr/ev_posix.h",
+    "src/src/core/lib/iomgr/ev_windows.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/closure.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/closure.h",
+    "src/src/core/lib/iomgr/event_engine_shims/endpoint.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/endpoint.h",
+    "src/src/core/lib/iomgr/event_engine_shims/tcp_client.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/tcp_client.h",
+    "src/src/core/lib/iomgr/exec_ctx.cc",
+    "src/src/core/lib/iomgr/exec_ctx.h",
+    "src/src/core/lib/iomgr/executor.cc",
+    "src/src/core/lib/iomgr/executor.h",
+    "src/src/core/lib/iomgr/fork_posix.cc",
+    "src/src/core/lib/iomgr/fork_windows.cc",
+    "src/src/core/lib/iomgr/gethostname.h",
+    "src/src/core/lib/iomgr/gethostname_fallback.cc",
+    "src/src/core/lib/iomgr/gethostname_host_name_max.cc",
+    "src/src/core/lib/iomgr/gethostname_sysconf.cc",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex.h",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc",
+    "src/src/core/lib/iomgr/internal_errqueue.cc",
+    "src/src/core/lib/iomgr/internal_errqueue.h",
+    "src/src/core/lib/iomgr/iocp_windows.cc",
+    "src/src/core/lib/iomgr/iocp_windows.h",
+    "src/src/core/lib/iomgr/iomgr.cc",
+    "src/src/core/lib/iomgr/iomgr.h",
+    "src/src/core/lib/iomgr/iomgr_fwd.h",
+    "src/src/core/lib/iomgr/iomgr_internal.cc",
+    "src/src/core/lib/iomgr/iomgr_internal.h",
+    "src/src/core/lib/iomgr/iomgr_posix.cc",
+    "src/src/core/lib/iomgr/iomgr_posix_cfstream.cc",
+    "src/src/core/lib/iomgr/iomgr_windows.cc",
+    "src/src/core/lib/iomgr/load_file.cc",
+    "src/src/core/lib/iomgr/load_file.h",
+    "src/src/core/lib/iomgr/lockfree_event.cc",
+    "src/src/core/lib/iomgr/lockfree_event.h",
+    "src/src/core/lib/iomgr/nameser.h",
+    "src/src/core/lib/iomgr/polling_entity.cc",
+    "src/src/core/lib/iomgr/polling_entity.h",
+    "src/src/core/lib/iomgr/pollset.cc",
+    "src/src/core/lib/iomgr/pollset.h",
+    "src/src/core/lib/iomgr/pollset_set.cc",
+    "src/src/core/lib/iomgr/pollset_set.h",
+    "src/src/core/lib/iomgr/pollset_set_windows.cc",
+    "src/src/core/lib/iomgr/pollset_set_windows.h",
+    "src/src/core/lib/iomgr/pollset_windows.cc",
+    "src/src/core/lib/iomgr/pollset_windows.h",
+    "src/src/core/lib/iomgr/port.h",
+    "src/src/core/lib/iomgr/python_util.h",
+    "src/src/core/lib/iomgr/resolve_address.cc",
+    "src/src/core/lib/iomgr/resolve_address.h",
+    "src/src/core/lib/iomgr/resolve_address_impl.h",
+    "src/src/core/lib/iomgr/resolve_address_posix.cc",
+    "src/src/core/lib/iomgr/resolve_address_posix.h",
+    "src/src/core/lib/iomgr/resolve_address_windows.cc",
+    "src/src/core/lib/iomgr/resolve_address_windows.h",
+    "src/src/core/lib/iomgr/resolved_address.h",
+    "src/src/core/lib/iomgr/sockaddr.h",
+    "src/src/core/lib/iomgr/sockaddr_posix.h",
+    "src/src/core/lib/iomgr/sockaddr_utils_posix.cc",
+    "src/src/core/lib/iomgr/sockaddr_windows.h",
+    "src/src/core/lib/iomgr/socket_factory_posix.cc",
+    "src/src/core/lib/iomgr/socket_factory_posix.h",
+    "src/src/core/lib/iomgr/socket_mutator.cc",
+    "src/src/core/lib/iomgr/socket_mutator.h",
+    "src/src/core/lib/iomgr/socket_utils.h",
+    "src/src/core/lib/iomgr/socket_utils_common_posix.cc",
+    "src/src/core/lib/iomgr/socket_utils_linux.cc",
+    "src/src/core/lib/iomgr/socket_utils_posix.cc",
+    "src/src/core/lib/iomgr/socket_utils_posix.h",
+    "src/src/core/lib/iomgr/socket_utils_windows.cc",
+    "src/src/core/lib/iomgr/socket_windows.cc",
+    "src/src/core/lib/iomgr/socket_windows.h",
+    "src/src/core/lib/iomgr/systemd_utils.cc",
+    "src/src/core/lib/iomgr/systemd_utils.h",
+    "src/src/core/lib/iomgr/tcp_client.cc",
+    "src/src/core/lib/iomgr/tcp_client.h",
+    "src/src/core/lib/iomgr/tcp_client_cfstream.cc",
+    "src/src/core/lib/iomgr/tcp_client_posix.cc",
+    "src/src/core/lib/iomgr/tcp_client_posix.h",
+    "src/src/core/lib/iomgr/tcp_client_windows.cc",
+    "src/src/core/lib/iomgr/tcp_posix.cc",
+    "src/src/core/lib/iomgr/tcp_posix.h",
+    "src/src/core/lib/iomgr/tcp_server.cc",
+    "src/src/core/lib/iomgr/tcp_server.h",
+    "src/src/core/lib/iomgr/tcp_server_posix.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix.h",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
+    "src/src/core/lib/iomgr/tcp_server_windows.cc",
+    "src/src/core/lib/iomgr/tcp_windows.cc",
+    "src/src/core/lib/iomgr/tcp_windows.h",
+    "src/src/core/lib/iomgr/timer.cc",
+    "src/src/core/lib/iomgr/timer.h",
+    "src/src/core/lib/iomgr/timer_generic.cc",
+    "src/src/core/lib/iomgr/timer_generic.h",
+    "src/src/core/lib/iomgr/timer_heap.cc",
+    "src/src/core/lib/iomgr/timer_heap.h",
+    "src/src/core/lib/iomgr/timer_manager.cc",
+    "src/src/core/lib/iomgr/timer_manager.h",
+    "src/src/core/lib/iomgr/unix_sockets_posix.cc",
+    "src/src/core/lib/iomgr/unix_sockets_posix.h",
+    "src/src/core/lib/iomgr/unix_sockets_posix_noop.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_eventfd.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_nospecial.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_pipe.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_pipe.h",
+    "src/src/core/lib/iomgr/wakeup_fd_posix.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_posix.h",
+    "src/src/core/lib/json/json.h",
+    "src/src/core/lib/json/json_args.h",
+    "src/src/core/lib/json/json_channel_args.h",
+    "src/src/core/lib/json/json_object_loader.cc",
+    "src/src/core/lib/json/json_object_loader.h",
+    "src/src/core/lib/json/json_reader.cc",
+    "src/src/core/lib/json/json_util.cc",
+    "src/src/core/lib/json/json_util.h",
+    "src/src/core/lib/json/json_writer.cc",
+    "src/src/core/lib/load_balancing/lb_policy.cc",
+    "src/src/core/lib/load_balancing/lb_policy.h",
+    "src/src/core/lib/load_balancing/lb_policy_factory.h",
+    "src/src/core/lib/load_balancing/lb_policy_registry.cc",
+    "src/src/core/lib/load_balancing/lb_policy_registry.h",
+    "src/src/core/lib/load_balancing/subchannel_interface.h",
+    "src/src/core/lib/matchers/matchers.cc",
+    "src/src/core/lib/matchers/matchers.h",
+    "src/src/core/lib/promise/activity.cc",
+    "src/src/core/lib/promise/activity.h",
+    "src/src/core/lib/promise/arena_promise.h",
+    "src/src/core/lib/promise/context.h",
+    "src/src/core/lib/promise/detail/basic_join.h",
+    "src/src/core/lib/promise/detail/basic_seq.h",
+    "src/src/core/lib/promise/detail/promise_factory.h",
+    "src/src/core/lib/promise/detail/promise_like.h",
+    "src/src/core/lib/promise/detail/status.h",
+    "src/src/core/lib/promise/detail/switch.h",
+    "src/src/core/lib/promise/exec_ctx_wakeup_scheduler.h",
+    "src/src/core/lib/promise/if.h",
+    "src/src/core/lib/promise/interceptor_list.h",
+    "src/src/core/lib/promise/intra_activity_waiter.h",
+    "src/src/core/lib/promise/latch.h",
+    "src/src/core/lib/promise/loop.h",
+    "src/src/core/lib/promise/map.h",
+    "src/src/core/lib/promise/pipe.h",
+    "src/src/core/lib/promise/poll.h",
+    "src/src/core/lib/promise/promise.h",
+    "src/src/core/lib/promise/race.h",
+    "src/src/core/lib/promise/seq.h",
+    "src/src/core/lib/promise/sleep.cc",
+    "src/src/core/lib/promise/sleep.h",
+    "src/src/core/lib/promise/trace.cc",
+    "src/src/core/lib/promise/trace.h",
+    "src/src/core/lib/promise/try_join.h",
+    "src/src/core/lib/promise/try_seq.h",
+    "src/src/core/lib/resolver/resolver.cc",
+    "src/src/core/lib/resolver/resolver.h",
+    "src/src/core/lib/resolver/resolver_factory.h",
+    "src/src/core/lib/resolver/resolver_registry.cc",
+    "src/src/core/lib/resolver/resolver_registry.h",
+    "src/src/core/lib/resolver/server_address.cc",
+    "src/src/core/lib/resolver/server_address.h",
+    "src/src/core/lib/resource_quota/api.cc",
+    "src/src/core/lib/resource_quota/api.h",
+    "src/src/core/lib/resource_quota/arena.cc",
+    "src/src/core/lib/resource_quota/arena.h",
+    "src/src/core/lib/resource_quota/memory_quota.cc",
+    "src/src/core/lib/resource_quota/memory_quota.h",
+    "src/src/core/lib/resource_quota/periodic_update.cc",
+    "src/src/core/lib/resource_quota/periodic_update.h",
+    "src/src/core/lib/resource_quota/resource_quota.cc",
+    "src/src/core/lib/resource_quota/resource_quota.h",
+    "src/src/core/lib/resource_quota/thread_quota.cc",
+    "src/src/core/lib/resource_quota/thread_quota.h",
+    "src/src/core/lib/resource_quota/trace.cc",
+    "src/src/core/lib/resource_quota/trace.h",
+    "src/src/core/lib/security/authorization/authorization_engine.h",
+    "src/src/core/lib/security/authorization/authorization_policy_provider.h",
+    "src/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc",
+    "src/src/core/lib/security/authorization/evaluate_args.cc",
+    "src/src/core/lib/security/authorization/evaluate_args.h",
+    "src/src/core/lib/security/authorization/grpc_authorization_engine.cc",
+    "src/src/core/lib/security/authorization/grpc_authorization_engine.h",
+    "src/src/core/lib/security/authorization/grpc_server_authz_filter.cc",
+    "src/src/core/lib/security/authorization/grpc_server_authz_filter.h",
+    "src/src/core/lib/security/authorization/matchers.cc",
+    "src/src/core/lib/security/authorization/matchers.h",
+    "src/src/core/lib/security/authorization/rbac_policy.cc",
+    "src/src/core/lib/security/authorization/rbac_policy.h",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_factory.h",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_registry.cc",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_registry.h",
+    "src/src/core/lib/security/context/security_context.cc",
+    "src/src/core/lib/security/context/security_context.h",
+    "src/src/core/lib/security/credentials/alts/alts_credentials.cc",
+    "src/src/core/lib/security/credentials/alts/alts_credentials.h",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment.h",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc",
+    "src/src/core/lib/security/credentials/call_creds_util.cc",
+    "src/src/core/lib/security/credentials/call_creds_util.h",
+    "src/src/core/lib/security/credentials/channel_creds_registry.h",
+    "src/src/core/lib/security/credentials/channel_creds_registry_init.cc",
+    "src/src/core/lib/security/credentials/composite/composite_credentials.cc",
+    "src/src/core/lib/security/credentials/composite/composite_credentials.h",
+    "src/src/core/lib/security/credentials/credentials.cc",
+    "src/src/core/lib/security/credentials/credentials.h",
+    "src/src/core/lib/security/credentials/external/aws_external_account_credentials.cc",
+    "src/src/core/lib/security/credentials/external/aws_external_account_credentials.h",
+    "src/src/core/lib/security/credentials/external/aws_request_signer.cc",
+    "src/src/core/lib/security/credentials/external/aws_request_signer.h",
+    "src/src/core/lib/security/credentials/external/external_account_credentials.cc",
+    "src/src/core/lib/security/credentials/external/external_account_credentials.h",
+    "src/src/core/lib/security/credentials/external/file_external_account_credentials.cc",
+    "src/src/core/lib/security/credentials/external/file_external_account_credentials.h",
+    "src/src/core/lib/security/credentials/external/url_external_account_credentials.cc",
+    "src/src/core/lib/security/credentials/external/url_external_account_credentials.h",
+    "src/src/core/lib/security/credentials/fake/fake_credentials.cc",
+    "src/src/core/lib/security/credentials/fake/fake_credentials.h",
+    "src/src/core/lib/security/credentials/google_default/credentials_generic.cc",
+    "src/src/core/lib/security/credentials/google_default/google_default_credentials.cc",
+    "src/src/core/lib/security/credentials/google_default/google_default_credentials.h",
+    "src/src/core/lib/security/credentials/iam/iam_credentials.cc",
+    "src/src/core/lib/security/credentials/iam/iam_credentials.h",
+    "src/src/core/lib/security/credentials/insecure/insecure_credentials.cc",
+    "src/src/core/lib/security/credentials/insecure/insecure_credentials.h",
+    "src/src/core/lib/security/credentials/jwt/json_token.cc",
+    "src/src/core/lib/security/credentials/jwt/json_token.h",
+    "src/src/core/lib/security/credentials/jwt/jwt_credentials.cc",
+    "src/src/core/lib/security/credentials/jwt/jwt_credentials.h",
+    "src/src/core/lib/security/credentials/jwt/jwt_verifier.cc",
+    "src/src/core/lib/security/credentials/jwt/jwt_verifier.h",
+    "src/src/core/lib/security/credentials/local/local_credentials.cc",
+    "src/src/core/lib/security/credentials/local/local_credentials.h",
+    "src/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc",
+    "src/src/core/lib/security/credentials/oauth2/oauth2_credentials.h",
+    "src/src/core/lib/security/credentials/plugin/plugin_credentials.cc",
+    "src/src/core/lib/security/credentials/plugin/plugin_credentials.h",
+    "src/src/core/lib/security/credentials/ssl/ssl_credentials.cc",
+    "src/src/core/lib/security/credentials/ssl/ssl_credentials.h",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
+    "src/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h",
+    "src/src/core/lib/security/credentials/tls/tls_credentials.cc",
+    "src/src/core/lib/security/credentials/tls/tls_credentials.h",
+    "src/src/core/lib/security/credentials/tls/tls_utils.cc",
+    "src/src/core/lib/security/credentials/tls/tls_utils.h",
+    "src/src/core/lib/security/credentials/xds/xds_credentials.cc",
+    "src/src/core/lib/security/credentials/xds/xds_credentials.h",
+    "src/src/core/lib/security/security_connector/alts/alts_security_connector.cc",
+    "src/src/core/lib/security/security_connector/alts/alts_security_connector.h",
+    "src/src/core/lib/security/security_connector/fake/fake_security_connector.cc",
+    "src/src/core/lib/security/security_connector/fake/fake_security_connector.h",
+    "src/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc",
+    "src/src/core/lib/security/security_connector/insecure/insecure_security_connector.h",
+    "src/src/core/lib/security/security_connector/load_system_roots.h",
+    "src/src/core/lib/security/security_connector/load_system_roots_fallback.cc",
+    "src/src/core/lib/security/security_connector/load_system_roots_supported.cc",
+    "src/src/core/lib/security/security_connector/load_system_roots_supported.h",
+    "src/src/core/lib/security/security_connector/local/local_security_connector.cc",
+    "src/src/core/lib/security/security_connector/local/local_security_connector.h",
+    "src/src/core/lib/security/security_connector/security_connector.cc",
+    "src/src/core/lib/security/security_connector/security_connector.h",
+    "src/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc",
+    "src/src/core/lib/security/security_connector/ssl/ssl_security_connector.h",
+    "src/src/core/lib/security/security_connector/ssl_utils.cc",
+    "src/src/core/lib/security/security_connector/ssl_utils.h",
+    "src/src/core/lib/security/security_connector/ssl_utils_config.cc",
+    "src/src/core/lib/security/security_connector/ssl_utils_config.h",
+    "src/src/core/lib/security/security_connector/tls/tls_security_connector.cc",
+    "src/src/core/lib/security/security_connector/tls/tls_security_connector.h",
+    "src/src/core/lib/security/transport/auth_filters.h",
+    "src/src/core/lib/security/transport/client_auth_filter.cc",
+    "src/src/core/lib/security/transport/secure_endpoint.cc",
+    "src/src/core/lib/security/transport/secure_endpoint.h",
+    "src/src/core/lib/security/transport/security_handshaker.cc",
+    "src/src/core/lib/security/transport/security_handshaker.h",
+    "src/src/core/lib/security/transport/server_auth_filter.cc",
+    "src/src/core/lib/security/transport/tsi_error.cc",
+    "src/src/core/lib/security/transport/tsi_error.h",
+    "src/src/core/lib/security/util/json_util.cc",
+    "src/src/core/lib/security/util/json_util.h",
+    "src/src/core/lib/service_config/service_config.h",
+    "src/src/core/lib/service_config/service_config_call_data.h",
+    "src/src/core/lib/service_config/service_config_impl.cc",
+    "src/src/core/lib/service_config/service_config_impl.h",
+    "src/src/core/lib/service_config/service_config_parser.cc",
+    "src/src/core/lib/service_config/service_config_parser.h",
+    "src/src/core/lib/slice/b64.cc",
+    "src/src/core/lib/slice/b64.h",
+    "src/src/core/lib/slice/percent_encoding.cc",
+    "src/src/core/lib/slice/percent_encoding.h",
+    "src/src/core/lib/slice/slice.cc",
+    "src/src/core/lib/slice/slice.h",
+    "src/src/core/lib/slice/slice_buffer.cc",
+    "src/src/core/lib/slice/slice_buffer.h",
+    "src/src/core/lib/slice/slice_internal.h",
+    "src/src/core/lib/slice/slice_refcount.cc",
+    "src/src/core/lib/slice/slice_refcount.h",
+    "src/src/core/lib/slice/slice_string_helpers.cc",
+    "src/src/core/lib/slice/slice_string_helpers.h",
+    "src/src/core/lib/surface/api_trace.cc",
+    "src/src/core/lib/surface/api_trace.h",
+    "src/src/core/lib/surface/builtins.cc",
+    "src/src/core/lib/surface/builtins.h",
+    "src/src/core/lib/surface/byte_buffer.cc",
+    "src/src/core/lib/surface/byte_buffer_reader.cc",
+    "src/src/core/lib/surface/call.cc",
+    "src/src/core/lib/surface/call.h",
+    "src/src/core/lib/surface/call_details.cc",
+    "src/src/core/lib/surface/call_log_batch.cc",
+    "src/src/core/lib/surface/call_test_only.h",
+    "src/src/core/lib/surface/call_trace.cc",
+    "src/src/core/lib/surface/call_trace.h",
+    "src/src/core/lib/surface/channel.cc",
+    "src/src/core/lib/surface/channel.h",
+    "src/src/core/lib/surface/channel_init.cc",
+    "src/src/core/lib/surface/channel_init.h",
+    "src/src/core/lib/surface/channel_ping.cc",
+    "src/src/core/lib/surface/channel_stack_type.cc",
+    "src/src/core/lib/surface/channel_stack_type.h",
+    "src/src/core/lib/surface/completion_queue.cc",
+    "src/src/core/lib/surface/completion_queue.h",
+    "src/src/core/lib/surface/completion_queue_factory.cc",
+    "src/src/core/lib/surface/completion_queue_factory.h",
+    "src/src/core/lib/surface/event_string.cc",
+    "src/src/core/lib/surface/event_string.h",
+    "src/src/core/lib/surface/init.cc",
+    "src/src/core/lib/surface/init.h",
+    "src/src/core/lib/surface/init_internally.cc",
+    "src/src/core/lib/surface/init_internally.h",
+    "src/src/core/lib/surface/lame_client.cc",
+    "src/src/core/lib/surface/lame_client.h",
+    "src/src/core/lib/surface/metadata_array.cc",
+    "src/src/core/lib/surface/server.cc",
+    "src/src/core/lib/surface/server.h",
+    "src/src/core/lib/surface/validate_metadata.cc",
+    "src/src/core/lib/surface/validate_metadata.h",
+    "src/src/core/lib/surface/version.cc",
+    "src/src/core/lib/transport/bdp_estimator.cc",
+    "src/src/core/lib/transport/bdp_estimator.h",
+    "src/src/core/lib/transport/connectivity_state.cc",
+    "src/src/core/lib/transport/connectivity_state.h",
+    "src/src/core/lib/transport/error_utils.cc",
+    "src/src/core/lib/transport/error_utils.h",
+    "src/src/core/lib/transport/handshaker.cc",
+    "src/src/core/lib/transport/handshaker.h",
+    "src/src/core/lib/transport/handshaker_factory.h",
+    "src/src/core/lib/transport/handshaker_registry.cc",
+    "src/src/core/lib/transport/handshaker_registry.h",
+    "src/src/core/lib/transport/http2_errors.h",
+    "src/src/core/lib/transport/http_connect_handshaker.cc",
+    "src/src/core/lib/transport/http_connect_handshaker.h",
+    "src/src/core/lib/transport/metadata_batch.cc",
+    "src/src/core/lib/transport/metadata_batch.h",
+    "src/src/core/lib/transport/parsed_metadata.cc",
+    "src/src/core/lib/transport/parsed_metadata.h",
+    "src/src/core/lib/transport/pid_controller.cc",
+    "src/src/core/lib/transport/pid_controller.h",
+    "src/src/core/lib/transport/status_conversion.cc",
+    "src/src/core/lib/transport/status_conversion.h",
+    "src/src/core/lib/transport/tcp_connect_handshaker.cc",
+    "src/src/core/lib/transport/tcp_connect_handshaker.h",
+    "src/src/core/lib/transport/timeout_encoding.cc",
+    "src/src/core/lib/transport/timeout_encoding.h",
+    "src/src/core/lib/transport/transport.cc",
+    "src/src/core/lib/transport/transport.h",
+    "src/src/core/lib/transport/transport_fwd.h",
+    "src/src/core/lib/transport/transport_impl.h",
+    "src/src/core/lib/transport/transport_op_string.cc",
+    "src/src/core/lib/uri/uri_parser.cc",
+    "src/src/core/lib/uri/uri_parser.h",
+    "src/src/core/plugin_registry/grpc_plugin_registry.cc",
+    "src/src/core/plugin_registry/grpc_plugin_registry_extra.cc",
+    "src/src/core/tsi/alts/crypt/aes_gcm.cc",
+    "src/src/core/tsi/alts/crypt/gsec.cc",
+    "src/src/core/tsi/alts/crypt/gsec.h",
+    "src/src/core/tsi/alts/frame_protector/alts_counter.cc",
+    "src/src/core/tsi/alts/frame_protector/alts_counter.h",
+    "src/src/core/tsi/alts/frame_protector/alts_crypter.cc",
+    "src/src/core/tsi/alts/frame_protector/alts_crypter.h",
+    "src/src/core/tsi/alts/frame_protector/alts_frame_protector.cc",
+    "src/src/core/tsi/alts/frame_protector/alts_frame_protector.h",
+    "src/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc",
+    "src/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h",
+    "src/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc",
+    "src/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc",
+    "src/src/core/tsi/alts/frame_protector/frame_handler.cc",
+    "src/src/core/tsi/alts/frame_protector/frame_handler.h",
+    "src/src/core/tsi/alts/handshaker/alts_handshaker_client.cc",
+    "src/src/core/tsi/alts/handshaker/alts_handshaker_client.h",
+    "src/src/core/tsi/alts/handshaker/alts_shared_resource.cc",
+    "src/src/core/tsi/alts/handshaker/alts_shared_resource.h",
+    "src/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc",
+    "src/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h",
+    "src/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h",
+    "src/src/core/tsi/alts/handshaker/alts_tsi_utils.cc",
+    "src/src/core/tsi/alts/handshaker/alts_tsi_utils.h",
+    "src/src/core/tsi/alts/handshaker/transport_security_common_api.cc",
+    "src/src/core/tsi/alts/handshaker/transport_security_common_api.h",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc",
+    "src/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h",
+    "src/src/core/tsi/fake_transport_security.cc",
+    "src/src/core/tsi/fake_transport_security.h",
+    "src/src/core/tsi/local_transport_security.cc",
+    "src/src/core/tsi/local_transport_security.h",
+    "src/src/core/tsi/ssl/key_logging/ssl_key_logging.cc",
+    "src/src/core/tsi/ssl/key_logging/ssl_key_logging.h",
+    "src/src/core/tsi/ssl/session_cache/ssl_session.h",
+    "src/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc",
+    "src/src/core/tsi/ssl/session_cache/ssl_session_cache.cc",
+    "src/src/core/tsi/ssl/session_cache/ssl_session_cache.h",
+    "src/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc",
+    "src/src/core/tsi/ssl_transport_security.cc",
+    "src/src/core/tsi/ssl_transport_security.h",
+    "src/src/core/tsi/ssl_transport_security_utils.cc",
+    "src/src/core/tsi/ssl_transport_security_utils.h",
+    "src/src/core/tsi/ssl_types.h",
+    "src/src/core/tsi/transport_security.cc",
+    "src/src/core/tsi/transport_security.h",
+    "src/src/core/tsi/transport_security_grpc.cc",
+    "src/src/core/tsi/transport_security_grpc.h",
+    "src/src/core/tsi/transport_security_interface.h",
+    "src/third_party/xxhash/xxhash.h",
+  ]
+  public_deps = [
+    ":absl_cleanup_cleanup",
+    ":absl_container_flat_hash_map",
+    ":absl_container_flat_hash_set",
+    ":absl_container_inlined_vector",
+    ":absl_functional_any_invocable",
+    ":absl_functional_bind_front",
+    ":absl_functional_function_ref",
+    ":absl_hash_hash",
+    ":absl_meta_type_traits",
+    ":absl_status_statusor",
+    ":absl_types_span",
+    ":absl_utility_utility",
+    ":address_sorting",
+    ":boringssl",
+    ":gpr",
+    ":upb",
+  ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc_unsecure") {
+  sources = [
+    "src/src/core/ext/filters/census/grpc_context.cc",
+    "src/src/core/ext/filters/channel_idle/channel_idle_filter.cc",
+    "src/src/core/ext/filters/channel_idle/channel_idle_filter.h",
+    "src/src/core/ext/filters/channel_idle/idle_filter_state.cc",
+    "src/src/core/ext/filters/channel_idle/idle_filter_state.h",
+    "src/src/core/ext/filters/client_channel/backend_metric.cc",
+    "src/src/core/ext/filters/client_channel/backend_metric.h",
+    "src/src/core/ext/filters/client_channel/backup_poller.cc",
+    "src/src/core/ext/filters/client_channel/backup_poller.h",
+    "src/src/core/ext/filters/client_channel/channel_connectivity.cc",
+    "src/src/core/ext/filters/client_channel/client_channel.cc",
+    "src/src/core/ext/filters/client_channel/client_channel.h",
+    "src/src/core/ext/filters/client_channel/client_channel_channelz.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_channelz.h",
+    "src/src/core/ext/filters/client_channel/client_channel_factory.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_factory.h",
+    "src/src/core/ext/filters/client_channel/client_channel_plugin.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_service_config.cc",
+    "src/src/core/ext/filters/client_channel/client_channel_service_config.h",
+    "src/src/core/ext/filters/client_channel/config_selector.cc",
+    "src/src/core/ext/filters/client_channel/config_selector.h",
+    "src/src/core/ext/filters/client_channel/connector.h",
+    "src/src/core/ext/filters/client_channel/dynamic_filters.cc",
+    "src/src/core/ext/filters/client_channel/dynamic_filters.h",
+    "src/src/core/ext/filters/client_channel/global_subchannel_pool.cc",
+    "src/src/core/ext/filters/client_channel/global_subchannel_pool.h",
+    "src/src/core/ext/filters/client_channel/health/health_check_client.cc",
+    "src/src/core/ext/filters/client_channel/health/health_check_client.h",
+    "src/src/core/ext/filters/client_channel/http_proxy.cc",
+    "src/src/core/ext/filters/client_channel/http_proxy.h",
+    "src/src/core/ext/filters/client_channel/lb_call_state_internal.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/address_filtering.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc",
+    "src/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc",
+    "src/src/core/ext/filters/client_channel/local_subchannel_pool.cc",
+    "src/src/core/ext/filters/client_channel/local_subchannel_pool.h",
+    "src/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc",
+    "src/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h",
+    "src/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h",
+    "src/src/core/ext/filters/client_channel/resolver/polling_resolver.cc",
+    "src/src/core/ext/filters/client_channel/resolver/polling_resolver.h",
+    "src/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
+    "src/src/core/ext/filters/client_channel/retry_filter.cc",
+    "src/src/core/ext/filters/client_channel/retry_filter.h",
+    "src/src/core/ext/filters/client_channel/retry_service_config.cc",
+    "src/src/core/ext/filters/client_channel/retry_service_config.h",
+    "src/src/core/ext/filters/client_channel/retry_throttle.cc",
+    "src/src/core/ext/filters/client_channel/retry_throttle.h",
+    "src/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc",
+    "src/src/core/ext/filters/client_channel/subchannel.cc",
+    "src/src/core/ext/filters/client_channel/subchannel.h",
+    "src/src/core/ext/filters/client_channel/subchannel_interface_internal.h",
+    "src/src/core/ext/filters/client_channel/subchannel_pool_interface.cc",
+    "src/src/core/ext/filters/client_channel/subchannel_pool_interface.h",
+    "src/src/core/ext/filters/client_channel/subchannel_stream_client.cc",
+    "src/src/core/ext/filters/client_channel/subchannel_stream_client.h",
+    "src/src/core/ext/filters/deadline/deadline_filter.cc",
+    "src/src/core/ext/filters/deadline/deadline_filter.h",
+    "src/src/core/ext/filters/fault_injection/fault_injection_filter.cc",
+    "src/src/core/ext/filters/fault_injection/fault_injection_filter.h",
+    "src/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc",
+    "src/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h",
+    "src/src/core/ext/filters/http/client/http_client_filter.cc",
+    "src/src/core/ext/filters/http/client/http_client_filter.h",
+    "src/src/core/ext/filters/http/client_authority_filter.cc",
+    "src/src/core/ext/filters/http/client_authority_filter.h",
+    "src/src/core/ext/filters/http/http_filters_plugin.cc",
+    "src/src/core/ext/filters/http/message_compress/compression_filter.cc",
+    "src/src/core/ext/filters/http/message_compress/compression_filter.h",
+    "src/src/core/ext/filters/http/server/http_server_filter.cc",
+    "src/src/core/ext/filters/http/server/http_server_filter.h",
+    "src/src/core/ext/filters/message_size/message_size_filter.cc",
+    "src/src/core/ext/filters/message_size/message_size_filter.h",
+    "src/src/core/ext/transport/chttp2/client/chttp2_connector.cc",
+    "src/src/core/ext/transport/chttp2/client/chttp2_connector.h",
+    "src/src/core/ext/transport/chttp2/server/chttp2_server.cc",
+    "src/src/core/ext/transport/chttp2/server/chttp2_server.h",
+    "src/src/core/ext/transport/chttp2/transport/bin_decoder.cc",
+    "src/src/core/ext/transport/chttp2/transport/bin_decoder.h",
+    "src/src/core/ext/transport/chttp2/transport/bin_encoder.cc",
+    "src/src/core/ext/transport/chttp2/transport/bin_encoder.h",
+    "src/src/core/ext/transport/chttp2/transport/chttp2_transport.cc",
+    "src/src/core/ext/transport/chttp2/transport/chttp2_transport.h",
+    "src/src/core/ext/transport/chttp2/transport/context_list.cc",
+    "src/src/core/ext/transport/chttp2/transport/context_list.h",
+    "src/src/core/ext/transport/chttp2/transport/decode_huff.cc",
+    "src/src/core/ext/transport/chttp2/transport/decode_huff.h",
+    "src/src/core/ext/transport/chttp2/transport/flow_control.cc",
+    "src/src/core/ext/transport/chttp2/transport/flow_control.h",
+    "src/src/core/ext/transport/chttp2/transport/frame.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_data.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_data.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_goaway.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_goaway.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_ping.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_ping.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_rst_stream.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_settings.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_settings.h",
+    "src/src/core/ext/transport/chttp2/transport/frame_window_update.cc",
+    "src/src/core/ext/transport/chttp2/transport/frame_window_update.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_constants.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser.h",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc",
+    "src/src/core/ext/transport/chttp2/transport/hpack_parser_table.h",
+    "src/src/core/ext/transport/chttp2/transport/http2_settings.cc",
+    "src/src/core/ext/transport/chttp2/transport/http2_settings.h",
+    "src/src/core/ext/transport/chttp2/transport/http_trace.cc",
+    "src/src/core/ext/transport/chttp2/transport/http_trace.h",
+    "src/src/core/ext/transport/chttp2/transport/huffsyms.cc",
+    "src/src/core/ext/transport/chttp2/transport/huffsyms.h",
+    "src/src/core/ext/transport/chttp2/transport/internal.h",
+    "src/src/core/ext/transport/chttp2/transport/parsing.cc",
+    "src/src/core/ext/transport/chttp2/transport/stream_lists.cc",
+    "src/src/core/ext/transport/chttp2/transport/stream_map.cc",
+    "src/src/core/ext/transport/chttp2/transport/stream_map.h",
+    "src/src/core/ext/transport/chttp2/transport/varint.cc",
+    "src/src/core/ext/transport/chttp2/transport/varint.h",
+    "src/src/core/ext/transport/chttp2/transport/writing.cc",
+    "src/src/core/ext/transport/inproc/inproc_plugin.cc",
+    "src/src/core/ext/transport/inproc/inproc_transport.cc",
+    "src/src/core/ext/transport/inproc/inproc_transport.h",
+    "src/src/core/ext/upb-generated/google/api/annotations.upb.c",
+    "src/src/core/ext/upb-generated/google/api/annotations.upb.h",
+    "src/src/core/ext/upb-generated/google/api/http.upb.c",
+    "src/src/core/ext/upb-generated/google/api/http.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/any.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/any.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/duration.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/duration.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/empty.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/empty.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/struct.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/struct.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h",
+    "src/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h",
+    "src/src/core/ext/upb-generated/google/rpc/status.upb.c",
+    "src/src/core/ext/upb-generated/google/rpc/status.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h",
+    "src/src/core/ext/upb-generated/validate/validate.upb.c",
+    "src/src/core/ext/upb-generated/validate/validate.upb.h",
+    "src/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c",
+    "src/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h",
+    "src/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c",
+    "src/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h",
+    "src/src/core/lib/address_utils/parse_address.cc",
+    "src/src/core/lib/address_utils/parse_address.h",
+    "src/src/core/lib/address_utils/sockaddr_utils.cc",
+    "src/src/core/lib/address_utils/sockaddr_utils.h",
+    "src/src/core/lib/avl/avl.h",
+    "src/src/core/lib/backoff/backoff.cc",
+    "src/src/core/lib/backoff/backoff.h",
+    "src/src/core/lib/channel/call_finalization.h",
+    "src/src/core/lib/channel/call_tracer.h",
+    "src/src/core/lib/channel/channel_args.cc",
+    "src/src/core/lib/channel/channel_args.h",
+    "src/src/core/lib/channel/channel_args_preconditioning.cc",
+    "src/src/core/lib/channel/channel_args_preconditioning.h",
+    "src/src/core/lib/channel/channel_fwd.h",
+    "src/src/core/lib/channel/channel_stack.cc",
+    "src/src/core/lib/channel/channel_stack.h",
+    "src/src/core/lib/channel/channel_stack_builder.cc",
+    "src/src/core/lib/channel/channel_stack_builder.h",
+    "src/src/core/lib/channel/channel_stack_builder_impl.cc",
+    "src/src/core/lib/channel/channel_stack_builder_impl.h",
+    "src/src/core/lib/channel/channel_trace.cc",
+    "src/src/core/lib/channel/channel_trace.h",
+    "src/src/core/lib/channel/channelz.cc",
+    "src/src/core/lib/channel/channelz.h",
+    "src/src/core/lib/channel/channelz_registry.cc",
+    "src/src/core/lib/channel/channelz_registry.h",
+    "src/src/core/lib/channel/connected_channel.cc",
+    "src/src/core/lib/channel/connected_channel.h",
+    "src/src/core/lib/channel/context.h",
+    "src/src/core/lib/channel/promise_based_filter.cc",
+    "src/src/core/lib/channel/promise_based_filter.h",
+    "src/src/core/lib/channel/status_util.cc",
+    "src/src/core/lib/channel/status_util.h",
+    "src/src/core/lib/compression/compression.cc",
+    "src/src/core/lib/compression/compression_internal.cc",
+    "src/src/core/lib/compression/compression_internal.h",
+    "src/src/core/lib/compression/message_compress.cc",
+    "src/src/core/lib/compression/message_compress.h",
+    "src/src/core/lib/config/core_configuration.cc",
+    "src/src/core/lib/config/core_configuration.h",
+    "src/src/core/lib/debug/event_log.cc",
+    "src/src/core/lib/debug/event_log.h",
+    "src/src/core/lib/debug/histogram_view.cc",
+    "src/src/core/lib/debug/histogram_view.h",
+    "src/src/core/lib/debug/stats.cc",
+    "src/src/core/lib/debug/stats.h",
+    "src/src/core/lib/debug/stats_data.cc",
+    "src/src/core/lib/debug/stats_data.h",
+    "src/src/core/lib/debug/trace.cc",
+    "src/src/core/lib/debug/trace.h",
+    "src/src/core/lib/event_engine/channel_args_endpoint_config.cc",
+    "src/src/core/lib/event_engine/channel_args_endpoint_config.h",
+    "src/src/core/lib/event_engine/common_closures.h",
+    "src/src/core/lib/event_engine/default_event_engine.cc",
+    "src/src/core/lib/event_engine/default_event_engine.h",
+    "src/src/core/lib/event_engine/default_event_engine_factory.cc",
+    "src/src/core/lib/event_engine/default_event_engine_factory.h",
+    "src/src/core/lib/event_engine/event_engine.cc",
+    "src/src/core/lib/event_engine/executor/executor.h",
+    "src/src/core/lib/event_engine/forkable.cc",
+    "src/src/core/lib/event_engine/forkable.h",
+    "src/src/core/lib/event_engine/handle_containers.h",
+    "src/src/core/lib/event_engine/memory_allocator.cc",
+    "src/src/core/lib/event_engine/poller.h",
+    "src/src/core/lib/event_engine/posix.h",
+    "src/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc",
+    "src/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h",
+    "src/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc",
+    "src/src/core/lib/event_engine/posix_engine/ev_poll_posix.h",
+    "src/src/core/lib/event_engine/posix_engine/event_poller.h",
+    "src/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc",
+    "src/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h",
+    "src/src/core/lib/event_engine/posix_engine/internal_errqueue.cc",
+    "src/src/core/lib/event_engine/posix_engine/internal_errqueue.h",
+    "src/src/core/lib/event_engine/posix_engine/lockfree_event.cc",
+    "src/src/core/lib/event_engine/posix_engine/lockfree_event.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_endpoint.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_endpoint.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_closure.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h",
+    "src/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc",
+    "src/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h",
+    "src/src/core/lib/event_engine/posix_engine/timer.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer.h",
+    "src/src/core/lib/event_engine/posix_engine/timer_heap.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer_heap.h",
+    "src/src/core/lib/event_engine/posix_engine/timer_manager.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer_manager.h",
+    "src/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc",
+    "src/src/core/lib/event_engine/posix_engine/traced_buffer_list.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h",
+    "src/src/core/lib/event_engine/resolved_address.cc",
+    "src/src/core/lib/event_engine/resolved_address_internal.h",
+    "src/src/core/lib/event_engine/shim.cc",
+    "src/src/core/lib/event_engine/shim.h",
+    "src/src/core/lib/event_engine/slice.cc",
+    "src/src/core/lib/event_engine/slice_buffer.cc",
+    "src/src/core/lib/event_engine/tcp_socket_utils.cc",
+    "src/src/core/lib/event_engine/tcp_socket_utils.h",
+    "src/src/core/lib/event_engine/thread_pool.cc",
+    "src/src/core/lib/event_engine/thread_pool.h",
+    "src/src/core/lib/event_engine/time_util.cc",
+    "src/src/core/lib/event_engine/time_util.h",
+    "src/src/core/lib/event_engine/trace.cc",
+    "src/src/core/lib/event_engine/trace.h",
+    "src/src/core/lib/event_engine/utils.cc",
+    "src/src/core/lib/event_engine/utils.h",
+    "src/src/core/lib/event_engine/windows/iocp.cc",
+    "src/src/core/lib/event_engine/windows/iocp.h",
+    "src/src/core/lib/event_engine/windows/win_socket.cc",
+    "src/src/core/lib/event_engine/windows/win_socket.h",
+    "src/src/core/lib/event_engine/windows/windows_endpoint.cc",
+    "src/src/core/lib/event_engine/windows/windows_endpoint.h",
+    "src/src/core/lib/event_engine/windows/windows_engine.cc",
+    "src/src/core/lib/event_engine/windows/windows_engine.h",
+    "src/src/core/lib/experiments/config.cc",
+    "src/src/core/lib/experiments/config.h",
+    "src/src/core/lib/experiments/experiments.cc",
+    "src/src/core/lib/experiments/experiments.h",
+    "src/src/core/lib/gpr/spinlock.h",
+    "src/src/core/lib/gprpp/atomic_utils.h",
+    "src/src/core/lib/gprpp/bitset.h",
+    "src/src/core/lib/gprpp/chunked_vector.h",
+    "src/src/core/lib/gprpp/cpp_impl_of.h",
+    "src/src/core/lib/gprpp/dual_ref_counted.h",
+    "src/src/core/lib/gprpp/load_file.cc",
+    "src/src/core/lib/gprpp/load_file.h",
+    "src/src/core/lib/gprpp/manual_constructor.h",
+    "src/src/core/lib/gprpp/match.h",
+    "src/src/core/lib/gprpp/notification.h",
+    "src/src/core/lib/gprpp/orphanable.h",
+    "src/src/core/lib/gprpp/overload.h",
+    "src/src/core/lib/gprpp/packed_table.h",
+    "src/src/core/lib/gprpp/per_cpu.h",
+    "src/src/core/lib/gprpp/ref_counted.h",
+    "src/src/core/lib/gprpp/ref_counted_ptr.h",
+    "src/src/core/lib/gprpp/single_set_ptr.h",
+    "src/src/core/lib/gprpp/sorted_pack.h",
+    "src/src/core/lib/gprpp/status_helper.cc",
+    "src/src/core/lib/gprpp/status_helper.h",
+    "src/src/core/lib/gprpp/table.h",
+    "src/src/core/lib/gprpp/time.cc",
+    "src/src/core/lib/gprpp/time.h",
+    "src/src/core/lib/gprpp/time_averaged_stats.cc",
+    "src/src/core/lib/gprpp/time_averaged_stats.h",
+    "src/src/core/lib/gprpp/unique_type_name.h",
+    "src/src/core/lib/gprpp/validation_errors.cc",
+    "src/src/core/lib/gprpp/validation_errors.h",
+    "src/src/core/lib/gprpp/work_serializer.cc",
+    "src/src/core/lib/gprpp/work_serializer.h",
+    "src/src/core/lib/handshaker/proxy_mapper.h",
+    "src/src/core/lib/handshaker/proxy_mapper_registry.cc",
+    "src/src/core/lib/handshaker/proxy_mapper_registry.h",
+    "src/src/core/lib/http/format_request.cc",
+    "src/src/core/lib/http/format_request.h",
+    "src/src/core/lib/http/httpcli.cc",
+    "src/src/core/lib/http/httpcli.h",
+    "src/src/core/lib/http/parser.cc",
+    "src/src/core/lib/http/parser.h",
+    "src/src/core/lib/iomgr/block_annotate.h",
+    "src/src/core/lib/iomgr/buffer_list.cc",
+    "src/src/core/lib/iomgr/buffer_list.h",
+    "src/src/core/lib/iomgr/call_combiner.cc",
+    "src/src/core/lib/iomgr/call_combiner.h",
+    "src/src/core/lib/iomgr/cfstream_handle.cc",
+    "src/src/core/lib/iomgr/cfstream_handle.h",
+    "src/src/core/lib/iomgr/closure.cc",
+    "src/src/core/lib/iomgr/closure.h",
+    "src/src/core/lib/iomgr/combiner.cc",
+    "src/src/core/lib/iomgr/combiner.h",
+    "src/src/core/lib/iomgr/dualstack_socket_posix.cc",
+    "src/src/core/lib/iomgr/dynamic_annotations.h",
+    "src/src/core/lib/iomgr/endpoint.cc",
+    "src/src/core/lib/iomgr/endpoint.h",
+    "src/src/core/lib/iomgr/endpoint_cfstream.cc",
+    "src/src/core/lib/iomgr/endpoint_cfstream.h",
+    "src/src/core/lib/iomgr/endpoint_pair.h",
+    "src/src/core/lib/iomgr/endpoint_pair_posix.cc",
+    "src/src/core/lib/iomgr/endpoint_pair_windows.cc",
+    "src/src/core/lib/iomgr/error.cc",
+    "src/src/core/lib/iomgr/error.h",
+    "src/src/core/lib/iomgr/error_cfstream.cc",
+    "src/src/core/lib/iomgr/error_cfstream.h",
+    "src/src/core/lib/iomgr/ev_apple.cc",
+    "src/src/core/lib/iomgr/ev_apple.h",
+    "src/src/core/lib/iomgr/ev_epoll1_linux.cc",
+    "src/src/core/lib/iomgr/ev_epoll1_linux.h",
+    "src/src/core/lib/iomgr/ev_poll_posix.cc",
+    "src/src/core/lib/iomgr/ev_poll_posix.h",
+    "src/src/core/lib/iomgr/ev_posix.cc",
+    "src/src/core/lib/iomgr/ev_posix.h",
+    "src/src/core/lib/iomgr/ev_windows.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/closure.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/closure.h",
+    "src/src/core/lib/iomgr/event_engine_shims/endpoint.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/endpoint.h",
+    "src/src/core/lib/iomgr/event_engine_shims/tcp_client.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/tcp_client.h",
+    "src/src/core/lib/iomgr/exec_ctx.cc",
+    "src/src/core/lib/iomgr/exec_ctx.h",
+    "src/src/core/lib/iomgr/executor.cc",
+    "src/src/core/lib/iomgr/executor.h",
+    "src/src/core/lib/iomgr/fork_posix.cc",
+    "src/src/core/lib/iomgr/fork_windows.cc",
+    "src/src/core/lib/iomgr/gethostname.h",
+    "src/src/core/lib/iomgr/gethostname_fallback.cc",
+    "src/src/core/lib/iomgr/gethostname_host_name_max.cc",
+    "src/src/core/lib/iomgr/gethostname_sysconf.cc",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex.h",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc",
+    "src/src/core/lib/iomgr/internal_errqueue.cc",
+    "src/src/core/lib/iomgr/internal_errqueue.h",
+    "src/src/core/lib/iomgr/iocp_windows.cc",
+    "src/src/core/lib/iomgr/iocp_windows.h",
+    "src/src/core/lib/iomgr/iomgr.cc",
+    "src/src/core/lib/iomgr/iomgr.h",
+    "src/src/core/lib/iomgr/iomgr_fwd.h",
+    "src/src/core/lib/iomgr/iomgr_internal.cc",
+    "src/src/core/lib/iomgr/iomgr_internal.h",
+    "src/src/core/lib/iomgr/iomgr_posix.cc",
+    "src/src/core/lib/iomgr/iomgr_posix_cfstream.cc",
+    "src/src/core/lib/iomgr/iomgr_windows.cc",
+    "src/src/core/lib/iomgr/load_file.cc",
+    "src/src/core/lib/iomgr/load_file.h",
+    "src/src/core/lib/iomgr/lockfree_event.cc",
+    "src/src/core/lib/iomgr/lockfree_event.h",
+    "src/src/core/lib/iomgr/nameser.h",
+    "src/src/core/lib/iomgr/polling_entity.cc",
+    "src/src/core/lib/iomgr/polling_entity.h",
+    "src/src/core/lib/iomgr/pollset.cc",
+    "src/src/core/lib/iomgr/pollset.h",
+    "src/src/core/lib/iomgr/pollset_set.cc",
+    "src/src/core/lib/iomgr/pollset_set.h",
+    "src/src/core/lib/iomgr/pollset_set_windows.cc",
+    "src/src/core/lib/iomgr/pollset_set_windows.h",
+    "src/src/core/lib/iomgr/pollset_windows.cc",
+    "src/src/core/lib/iomgr/pollset_windows.h",
+    "src/src/core/lib/iomgr/port.h",
+    "src/src/core/lib/iomgr/python_util.h",
+    "src/src/core/lib/iomgr/resolve_address.cc",
+    "src/src/core/lib/iomgr/resolve_address.h",
+    "src/src/core/lib/iomgr/resolve_address_impl.h",
+    "src/src/core/lib/iomgr/resolve_address_posix.cc",
+    "src/src/core/lib/iomgr/resolve_address_posix.h",
+    "src/src/core/lib/iomgr/resolve_address_windows.cc",
+    "src/src/core/lib/iomgr/resolve_address_windows.h",
+    "src/src/core/lib/iomgr/resolved_address.h",
+    "src/src/core/lib/iomgr/sockaddr.h",
+    "src/src/core/lib/iomgr/sockaddr_posix.h",
+    "src/src/core/lib/iomgr/sockaddr_utils_posix.cc",
+    "src/src/core/lib/iomgr/sockaddr_windows.h",
+    "src/src/core/lib/iomgr/socket_factory_posix.cc",
+    "src/src/core/lib/iomgr/socket_factory_posix.h",
+    "src/src/core/lib/iomgr/socket_mutator.cc",
+    "src/src/core/lib/iomgr/socket_mutator.h",
+    "src/src/core/lib/iomgr/socket_utils.h",
+    "src/src/core/lib/iomgr/socket_utils_common_posix.cc",
+    "src/src/core/lib/iomgr/socket_utils_linux.cc",
+    "src/src/core/lib/iomgr/socket_utils_posix.cc",
+    "src/src/core/lib/iomgr/socket_utils_posix.h",
+    "src/src/core/lib/iomgr/socket_utils_windows.cc",
+    "src/src/core/lib/iomgr/socket_windows.cc",
+    "src/src/core/lib/iomgr/socket_windows.h",
+    "src/src/core/lib/iomgr/systemd_utils.cc",
+    "src/src/core/lib/iomgr/systemd_utils.h",
+    "src/src/core/lib/iomgr/tcp_client.cc",
+    "src/src/core/lib/iomgr/tcp_client.h",
+    "src/src/core/lib/iomgr/tcp_client_cfstream.cc",
+    "src/src/core/lib/iomgr/tcp_client_posix.cc",
+    "src/src/core/lib/iomgr/tcp_client_posix.h",
+    "src/src/core/lib/iomgr/tcp_client_windows.cc",
+    "src/src/core/lib/iomgr/tcp_posix.cc",
+    "src/src/core/lib/iomgr/tcp_posix.h",
+    "src/src/core/lib/iomgr/tcp_server.cc",
+    "src/src/core/lib/iomgr/tcp_server.h",
+    "src/src/core/lib/iomgr/tcp_server_posix.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix.h",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
+    "src/src/core/lib/iomgr/tcp_server_windows.cc",
+    "src/src/core/lib/iomgr/tcp_windows.cc",
+    "src/src/core/lib/iomgr/tcp_windows.h",
+    "src/src/core/lib/iomgr/timer.cc",
+    "src/src/core/lib/iomgr/timer.h",
+    "src/src/core/lib/iomgr/timer_generic.cc",
+    "src/src/core/lib/iomgr/timer_generic.h",
+    "src/src/core/lib/iomgr/timer_heap.cc",
+    "src/src/core/lib/iomgr/timer_heap.h",
+    "src/src/core/lib/iomgr/timer_manager.cc",
+    "src/src/core/lib/iomgr/timer_manager.h",
+    "src/src/core/lib/iomgr/unix_sockets_posix.cc",
+    "src/src/core/lib/iomgr/unix_sockets_posix.h",
+    "src/src/core/lib/iomgr/unix_sockets_posix_noop.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_eventfd.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_nospecial.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_pipe.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_pipe.h",
+    "src/src/core/lib/iomgr/wakeup_fd_posix.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_posix.h",
+    "src/src/core/lib/json/json.h",
+    "src/src/core/lib/json/json_args.h",
+    "src/src/core/lib/json/json_channel_args.h",
+    "src/src/core/lib/json/json_object_loader.cc",
+    "src/src/core/lib/json/json_object_loader.h",
+    "src/src/core/lib/json/json_reader.cc",
+    "src/src/core/lib/json/json_writer.cc",
+    "src/src/core/lib/load_balancing/lb_policy.cc",
+    "src/src/core/lib/load_balancing/lb_policy.h",
+    "src/src/core/lib/load_balancing/lb_policy_factory.h",
+    "src/src/core/lib/load_balancing/lb_policy_registry.cc",
+    "src/src/core/lib/load_balancing/lb_policy_registry.h",
+    "src/src/core/lib/load_balancing/subchannel_interface.h",
+    "src/src/core/lib/promise/activity.cc",
+    "src/src/core/lib/promise/activity.h",
+    "src/src/core/lib/promise/arena_promise.h",
+    "src/src/core/lib/promise/context.h",
+    "src/src/core/lib/promise/detail/basic_join.h",
+    "src/src/core/lib/promise/detail/basic_seq.h",
+    "src/src/core/lib/promise/detail/promise_factory.h",
+    "src/src/core/lib/promise/detail/promise_like.h",
+    "src/src/core/lib/promise/detail/status.h",
+    "src/src/core/lib/promise/detail/switch.h",
+    "src/src/core/lib/promise/exec_ctx_wakeup_scheduler.h",
+    "src/src/core/lib/promise/if.h",
+    "src/src/core/lib/promise/interceptor_list.h",
+    "src/src/core/lib/promise/intra_activity_waiter.h",
+    "src/src/core/lib/promise/latch.h",
+    "src/src/core/lib/promise/loop.h",
+    "src/src/core/lib/promise/map.h",
+    "src/src/core/lib/promise/pipe.h",
+    "src/src/core/lib/promise/poll.h",
+    "src/src/core/lib/promise/promise.h",
+    "src/src/core/lib/promise/race.h",
+    "src/src/core/lib/promise/seq.h",
+    "src/src/core/lib/promise/sleep.cc",
+    "src/src/core/lib/promise/sleep.h",
+    "src/src/core/lib/promise/trace.cc",
+    "src/src/core/lib/promise/trace.h",
+    "src/src/core/lib/promise/try_join.h",
+    "src/src/core/lib/promise/try_seq.h",
+    "src/src/core/lib/resolver/resolver.cc",
+    "src/src/core/lib/resolver/resolver.h",
+    "src/src/core/lib/resolver/resolver_factory.h",
+    "src/src/core/lib/resolver/resolver_registry.cc",
+    "src/src/core/lib/resolver/resolver_registry.h",
+    "src/src/core/lib/resolver/server_address.cc",
+    "src/src/core/lib/resolver/server_address.h",
+    "src/src/core/lib/resource_quota/api.cc",
+    "src/src/core/lib/resource_quota/api.h",
+    "src/src/core/lib/resource_quota/arena.cc",
+    "src/src/core/lib/resource_quota/arena.h",
+    "src/src/core/lib/resource_quota/memory_quota.cc",
+    "src/src/core/lib/resource_quota/memory_quota.h",
+    "src/src/core/lib/resource_quota/periodic_update.cc",
+    "src/src/core/lib/resource_quota/periodic_update.h",
+    "src/src/core/lib/resource_quota/resource_quota.cc",
+    "src/src/core/lib/resource_quota/resource_quota.h",
+    "src/src/core/lib/resource_quota/thread_quota.cc",
+    "src/src/core/lib/resource_quota/thread_quota.h",
+    "src/src/core/lib/resource_quota/trace.cc",
+    "src/src/core/lib/resource_quota/trace.h",
+    "src/src/core/lib/security/authorization/authorization_engine.h",
+    "src/src/core/lib/security/authorization/authorization_policy_provider.h",
+    "src/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc",
+    "src/src/core/lib/security/authorization/evaluate_args.cc",
+    "src/src/core/lib/security/authorization/evaluate_args.h",
+    "src/src/core/lib/security/authorization/grpc_server_authz_filter.cc",
+    "src/src/core/lib/security/authorization/grpc_server_authz_filter.h",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_factory.h",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_registry.cc",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_registry.h",
+    "src/src/core/lib/security/context/security_context.cc",
+    "src/src/core/lib/security/context/security_context.h",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment.h",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc",
+    "src/src/core/lib/security/credentials/call_creds_util.cc",
+    "src/src/core/lib/security/credentials/call_creds_util.h",
+    "src/src/core/lib/security/credentials/channel_creds_registry.h",
+    "src/src/core/lib/security/credentials/composite/composite_credentials.cc",
+    "src/src/core/lib/security/credentials/composite/composite_credentials.h",
+    "src/src/core/lib/security/credentials/credentials.cc",
+    "src/src/core/lib/security/credentials/credentials.h",
+    "src/src/core/lib/security/credentials/fake/fake_credentials.cc",
+    "src/src/core/lib/security/credentials/fake/fake_credentials.h",
+    "src/src/core/lib/security/credentials/insecure/insecure_credentials.cc",
+    "src/src/core/lib/security/credentials/insecure/insecure_credentials.h",
+    "src/src/core/lib/security/credentials/plugin/plugin_credentials.cc",
+    "src/src/core/lib/security/credentials/plugin/plugin_credentials.h",
+    "src/src/core/lib/security/credentials/tls/tls_utils.cc",
+    "src/src/core/lib/security/credentials/tls/tls_utils.h",
+    "src/src/core/lib/security/security_connector/fake/fake_security_connector.cc",
+    "src/src/core/lib/security/security_connector/fake/fake_security_connector.h",
+    "src/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc",
+    "src/src/core/lib/security/security_connector/insecure/insecure_security_connector.h",
+    "src/src/core/lib/security/security_connector/load_system_roots.h",
+    "src/src/core/lib/security/security_connector/load_system_roots_fallback.cc",
+    "src/src/core/lib/security/security_connector/load_system_roots_supported.cc",
+    "src/src/core/lib/security/security_connector/load_system_roots_supported.h",
+    "src/src/core/lib/security/security_connector/security_connector.cc",
+    "src/src/core/lib/security/security_connector/security_connector.h",
+    "src/src/core/lib/security/transport/auth_filters.h",
+    "src/src/core/lib/security/transport/client_auth_filter.cc",
+    "src/src/core/lib/security/transport/secure_endpoint.cc",
+    "src/src/core/lib/security/transport/secure_endpoint.h",
+    "src/src/core/lib/security/transport/security_handshaker.cc",
+    "src/src/core/lib/security/transport/security_handshaker.h",
+    "src/src/core/lib/security/transport/server_auth_filter.cc",
+    "src/src/core/lib/security/transport/tsi_error.cc",
+    "src/src/core/lib/security/transport/tsi_error.h",
+    "src/src/core/lib/security/util/json_util.cc",
+    "src/src/core/lib/security/util/json_util.h",
+    "src/src/core/lib/service_config/service_config.h",
+    "src/src/core/lib/service_config/service_config_call_data.h",
+    "src/src/core/lib/service_config/service_config_impl.cc",
+    "src/src/core/lib/service_config/service_config_impl.h",
+    "src/src/core/lib/service_config/service_config_parser.cc",
+    "src/src/core/lib/service_config/service_config_parser.h",
+    "src/src/core/lib/slice/b64.cc",
+    "src/src/core/lib/slice/b64.h",
+    "src/src/core/lib/slice/percent_encoding.cc",
+    "src/src/core/lib/slice/percent_encoding.h",
+    "src/src/core/lib/slice/slice.cc",
+    "src/src/core/lib/slice/slice.h",
+    "src/src/core/lib/slice/slice_buffer.cc",
+    "src/src/core/lib/slice/slice_buffer.h",
+    "src/src/core/lib/slice/slice_internal.h",
+    "src/src/core/lib/slice/slice_refcount.cc",
+    "src/src/core/lib/slice/slice_refcount.h",
+    "src/src/core/lib/slice/slice_string_helpers.cc",
+    "src/src/core/lib/slice/slice_string_helpers.h",
+    "src/src/core/lib/surface/api_trace.cc",
+    "src/src/core/lib/surface/api_trace.h",
+    "src/src/core/lib/surface/builtins.cc",
+    "src/src/core/lib/surface/builtins.h",
+    "src/src/core/lib/surface/byte_buffer.cc",
+    "src/src/core/lib/surface/byte_buffer_reader.cc",
+    "src/src/core/lib/surface/call.cc",
+    "src/src/core/lib/surface/call.h",
+    "src/src/core/lib/surface/call_details.cc",
+    "src/src/core/lib/surface/call_log_batch.cc",
+    "src/src/core/lib/surface/call_test_only.h",
+    "src/src/core/lib/surface/call_trace.cc",
+    "src/src/core/lib/surface/call_trace.h",
+    "src/src/core/lib/surface/channel.cc",
+    "src/src/core/lib/surface/channel.h",
+    "src/src/core/lib/surface/channel_init.cc",
+    "src/src/core/lib/surface/channel_init.h",
+    "src/src/core/lib/surface/channel_ping.cc",
+    "src/src/core/lib/surface/channel_stack_type.cc",
+    "src/src/core/lib/surface/channel_stack_type.h",
+    "src/src/core/lib/surface/completion_queue.cc",
+    "src/src/core/lib/surface/completion_queue.h",
+    "src/src/core/lib/surface/completion_queue_factory.cc",
+    "src/src/core/lib/surface/completion_queue_factory.h",
+    "src/src/core/lib/surface/event_string.cc",
+    "src/src/core/lib/surface/event_string.h",
+    "src/src/core/lib/surface/init.cc",
+    "src/src/core/lib/surface/init.h",
+    "src/src/core/lib/surface/init_internally.cc",
+    "src/src/core/lib/surface/init_internally.h",
+    "src/src/core/lib/surface/lame_client.cc",
+    "src/src/core/lib/surface/lame_client.h",
+    "src/src/core/lib/surface/metadata_array.cc",
+    "src/src/core/lib/surface/server.cc",
+    "src/src/core/lib/surface/server.h",
+    "src/src/core/lib/surface/validate_metadata.cc",
+    "src/src/core/lib/surface/validate_metadata.h",
+    "src/src/core/lib/surface/version.cc",
+    "src/src/core/lib/transport/bdp_estimator.cc",
+    "src/src/core/lib/transport/bdp_estimator.h",
+    "src/src/core/lib/transport/connectivity_state.cc",
+    "src/src/core/lib/transport/connectivity_state.h",
+    "src/src/core/lib/transport/error_utils.cc",
+    "src/src/core/lib/transport/error_utils.h",
+    "src/src/core/lib/transport/handshaker.cc",
+    "src/src/core/lib/transport/handshaker.h",
+    "src/src/core/lib/transport/handshaker_factory.h",
+    "src/src/core/lib/transport/handshaker_registry.cc",
+    "src/src/core/lib/transport/handshaker_registry.h",
+    "src/src/core/lib/transport/http2_errors.h",
+    "src/src/core/lib/transport/http_connect_handshaker.cc",
+    "src/src/core/lib/transport/http_connect_handshaker.h",
+    "src/src/core/lib/transport/metadata_batch.cc",
+    "src/src/core/lib/transport/metadata_batch.h",
+    "src/src/core/lib/transport/parsed_metadata.cc",
+    "src/src/core/lib/transport/parsed_metadata.h",
+    "src/src/core/lib/transport/pid_controller.cc",
+    "src/src/core/lib/transport/pid_controller.h",
+    "src/src/core/lib/transport/status_conversion.cc",
+    "src/src/core/lib/transport/status_conversion.h",
+    "src/src/core/lib/transport/tcp_connect_handshaker.cc",
+    "src/src/core/lib/transport/tcp_connect_handshaker.h",
+    "src/src/core/lib/transport/timeout_encoding.cc",
+    "src/src/core/lib/transport/timeout_encoding.h",
+    "src/src/core/lib/transport/transport.cc",
+    "src/src/core/lib/transport/transport.h",
+    "src/src/core/lib/transport/transport_fwd.h",
+    "src/src/core/lib/transport/transport_impl.h",
+    "src/src/core/lib/transport/transport_op_string.cc",
+    "src/src/core/lib/uri/uri_parser.cc",
+    "src/src/core/lib/uri/uri_parser.h",
+    "src/src/core/plugin_registry/grpc_plugin_registry.cc",
+    "src/src/core/plugin_registry/grpc_plugin_registry_noextra.cc",
+    "src/src/core/tsi/alts/handshaker/transport_security_common_api.cc",
+    "src/src/core/tsi/alts/handshaker/transport_security_common_api.h",
+    "src/src/core/tsi/fake_transport_security.cc",
+    "src/src/core/tsi/fake_transport_security.h",
+    "src/src/core/tsi/local_transport_security.cc",
+    "src/src/core/tsi/local_transport_security.h",
+    "src/src/core/tsi/transport_security.cc",
+    "src/src/core/tsi/transport_security.h",
+    "src/src/core/tsi/transport_security_grpc.cc",
+    "src/src/core/tsi/transport_security_grpc.h",
+    "src/src/core/tsi/transport_security_interface.h",
+    "src/third_party/xxhash/xxhash.h",
+  ]
+  public_deps = [
+    ":absl_cleanup_cleanup",
+    ":absl_container_flat_hash_map",
+    ":absl_container_flat_hash_set",
+    ":absl_container_inlined_vector",
+    ":absl_functional_any_invocable",
+    ":absl_functional_bind_front",
+    ":absl_functional_function_ref",
+    ":absl_hash_hash",
+    ":absl_meta_type_traits",
+    ":absl_status_statusor",
+    ":absl_types_span",
+    ":absl_utility_utility",
+    ":address_sorting",
+    ":gpr",
+    ":upb",
+  ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc++") {
+  sources = [
+    "src/src/core/ext/transport/binder/client/binder_connector.cc",
+    "src/src/core/ext/transport/binder/client/binder_connector.h",
+    "src/src/core/ext/transport/binder/client/channel_create.cc",
+    "src/src/core/ext/transport/binder/client/channel_create_impl.cc",
+    "src/src/core/ext/transport/binder/client/channel_create_impl.h",
+    "src/src/core/ext/transport/binder/client/connection_id_generator.cc",
+    "src/src/core/ext/transport/binder/client/connection_id_generator.h",
+    "src/src/core/ext/transport/binder/client/endpoint_binder_pool.cc",
+    "src/src/core/ext/transport/binder/client/endpoint_binder_pool.h",
+    "src/src/core/ext/transport/binder/client/jni_utils.cc",
+    "src/src/core/ext/transport/binder/client/jni_utils.h",
+    "src/src/core/ext/transport/binder/client/security_policy_setting.cc",
+    "src/src/core/ext/transport/binder/client/security_policy_setting.h",
+    "src/src/core/ext/transport/binder/security_policy/binder_security_policy.cc",
+    "src/src/core/ext/transport/binder/server/binder_server.cc",
+    "src/src/core/ext/transport/binder/server/binder_server.h",
+    "src/src/core/ext/transport/binder/server/binder_server_credentials.cc",
+    "src/src/core/ext/transport/binder/transport/binder_stream.h",
+    "src/src/core/ext/transport/binder/transport/binder_transport.cc",
+    "src/src/core/ext/transport/binder/transport/binder_transport.h",
+    "src/src/core/ext/transport/binder/utils/binder_auto_utils.h",
+    "src/src/core/ext/transport/binder/utils/ndk_binder.cc",
+    "src/src/core/ext/transport/binder/utils/ndk_binder.h",
+    "src/src/core/ext/transport/binder/utils/transport_stream_receiver.h",
+    "src/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc",
+    "src/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.h",
+    "src/src/core/ext/transport/binder/wire_format/binder.h",
+    "src/src/core/ext/transport/binder/wire_format/binder_android.cc",
+    "src/src/core/ext/transport/binder/wire_format/binder_android.h",
+    "src/src/core/ext/transport/binder/wire_format/binder_constants.cc",
+    "src/src/core/ext/transport/binder/wire_format/binder_constants.h",
+    "src/src/core/ext/transport/binder/wire_format/transaction.cc",
+    "src/src/core/ext/transport/binder/wire_format/transaction.h",
+    "src/src/core/ext/transport/binder/wire_format/wire_reader.h",
+    "src/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc",
+    "src/src/core/ext/transport/binder/wire_format/wire_reader_impl.h",
+    "src/src/core/ext/transport/binder/wire_format/wire_writer.cc",
+    "src/src/core/ext/transport/binder/wire_format/wire_writer.h",
+    "src/src/cpp/client/channel_cc.cc",
+    "src/src/cpp/client/client_callback.cc",
+    "src/src/cpp/client/client_context.cc",
+    "src/src/cpp/client/client_interceptor.cc",
+    "src/src/cpp/client/create_channel.cc",
+    "src/src/cpp/client/create_channel_internal.cc",
+    "src/src/cpp/client/create_channel_internal.h",
+    "src/src/cpp/client/create_channel_posix.cc",
+    "src/src/cpp/client/insecure_credentials.cc",
+    "src/src/cpp/client/secure_credentials.cc",
+    "src/src/cpp/client/secure_credentials.h",
+    "src/src/cpp/client/xds_credentials.cc",
+    "src/src/cpp/common/alarm.cc",
+    "src/src/cpp/common/auth_property_iterator.cc",
+    "src/src/cpp/common/channel_arguments.cc",
+    "src/src/cpp/common/channel_filter.cc",
+    "src/src/cpp/common/channel_filter.h",
+    "src/src/cpp/common/completion_queue_cc.cc",
+    "src/src/cpp/common/resource_quota_cc.cc",
+    "src/src/cpp/common/rpc_method.cc",
+    "src/src/cpp/common/secure_auth_context.cc",
+    "src/src/cpp/common/secure_auth_context.h",
+    "src/src/cpp/common/secure_channel_arguments.cc",
+    "src/src/cpp/common/secure_create_auth_context.cc",
+    "src/src/cpp/common/tls_certificate_provider.cc",
+    "src/src/cpp/common/tls_certificate_verifier.cc",
+    "src/src/cpp/common/tls_credentials_options.cc",
+    "src/src/cpp/common/validate_service_config.cc",
+    "src/src/cpp/common/version_cc.cc",
+    "src/src/cpp/server/async_generic_service.cc",
+    "src/src/cpp/server/channel_argument_option.cc",
+    "src/src/cpp/server/create_default_thread_pool.cc",
+    "src/src/cpp/server/dynamic_thread_pool.h",
+    "src/src/cpp/server/external_connection_acceptor_impl.cc",
+    "src/src/cpp/server/external_connection_acceptor_impl.h",
+    "src/src/cpp/server/health/default_health_check_service.cc",
+    "src/src/cpp/server/health/default_health_check_service.h",
+    "src/src/cpp/server/health/health_check_service.cc",
+    "src/src/cpp/server/health/health_check_service_server_builder_option.cc",
+    "src/src/cpp/server/insecure_server_credentials.cc",
+    "src/src/cpp/server/orca/call_metric_recorder.cc",
+    "src/src/cpp/server/secure_server_credentials.cc",
+    "src/src/cpp/server/secure_server_credentials.h",
+    "src/src/cpp/server/server_builder.cc",
+    "src/src/cpp/server/server_callback.cc",
+    "src/src/cpp/server/server_cc.cc",
+    "src/src/cpp/server/server_context.cc",
+    "src/src/cpp/server/server_posix.cc",
+    "src/src/cpp/server/thread_pool_interface.h",
+    "src/src/cpp/server/xds_server_credentials.cc",
+    "src/src/cpp/thread_manager/thread_manager.cc",
+    "src/src/cpp/thread_manager/thread_manager.h",
+    "src/src/cpp/util/byte_buffer_cc.cc",
+    "src/src/cpp/util/status.cc",
+    "src/src/cpp/util/string_ref.cc",
+    "src/src/cpp/util/time_cc.cc",
+  ]
+  public_deps = [ ":grpc" ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc++_alts") {
+  sources = [
+    "src/src/cpp/common/alts_context.cc",
+    "src/src/cpp/common/alts_util.cc",
+  ]
+  public_deps = [ ":grpc++" ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc++_error_details") {
+  sources = [ "src/src/cpp/util/error_details.cc" ]
+  public_deps = [ ":grpc++" ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc++_unsecure") {
+  sources = [
+    "src/src/cpp/client/channel_cc.cc",
+    "src/src/cpp/client/client_callback.cc",
+    "src/src/cpp/client/client_context.cc",
+    "src/src/cpp/client/client_interceptor.cc",
+    "src/src/cpp/client/create_channel.cc",
+    "src/src/cpp/client/create_channel_internal.cc",
+    "src/src/cpp/client/create_channel_internal.h",
+    "src/src/cpp/client/create_channel_posix.cc",
+    "src/src/cpp/client/insecure_credentials.cc",
+    "src/src/cpp/common/alarm.cc",
+    "src/src/cpp/common/channel_arguments.cc",
+    "src/src/cpp/common/channel_filter.cc",
+    "src/src/cpp/common/channel_filter.h",
+    "src/src/cpp/common/completion_queue_cc.cc",
+    "src/src/cpp/common/insecure_create_auth_context.cc",
+    "src/src/cpp/common/resource_quota_cc.cc",
+    "src/src/cpp/common/rpc_method.cc",
+    "src/src/cpp/common/validate_service_config.cc",
+    "src/src/cpp/common/version_cc.cc",
+    "src/src/cpp/server/async_generic_service.cc",
+    "src/src/cpp/server/channel_argument_option.cc",
+    "src/src/cpp/server/create_default_thread_pool.cc",
+    "src/src/cpp/server/dynamic_thread_pool.h",
+    "src/src/cpp/server/external_connection_acceptor_impl.cc",
+    "src/src/cpp/server/external_connection_acceptor_impl.h",
+    "src/src/cpp/server/health/default_health_check_service.cc",
+    "src/src/cpp/server/health/default_health_check_service.h",
+    "src/src/cpp/server/health/health_check_service.cc",
+    "src/src/cpp/server/health/health_check_service_server_builder_option.cc",
+    "src/src/cpp/server/insecure_server_credentials.cc",
+    "src/src/cpp/server/orca/call_metric_recorder.cc",
+    "src/src/cpp/server/server_builder.cc",
+    "src/src/cpp/server/server_callback.cc",
+    "src/src/cpp/server/server_cc.cc",
+    "src/src/cpp/server/server_context.cc",
+    "src/src/cpp/server/server_posix.cc",
+    "src/src/cpp/server/thread_pool_interface.h",
+    "src/src/cpp/thread_manager/thread_manager.cc",
+    "src/src/cpp/thread_manager/thread_manager.h",
+    "src/src/cpp/util/byte_buffer_cc.cc",
+    "src/src/cpp/util/status.cc",
+    "src/src/cpp/util/string_ref.cc",
+    "src/src/cpp/util/time_cc.cc",
+  ]
+  public_deps = [ ":grpc_unsecure" ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
+
+source_set("grpc_authorization_provider") {
+  sources = [
+    "src/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h",
+    "src/src/core/ext/upb-generated/google/protobuf/any.upb.c",
+    "src/src/core/ext/upb-generated/google/protobuf/any.upb.h",
+    "src/src/core/ext/upb-generated/google/rpc/status.upb.c",
+    "src/src/core/ext/upb-generated/google/rpc/status.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c",
+    "src/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h",
+    "src/src/core/lib/address_utils/parse_address.cc",
+    "src/src/core/lib/address_utils/parse_address.h",
+    "src/src/core/lib/address_utils/sockaddr_utils.cc",
+    "src/src/core/lib/address_utils/sockaddr_utils.h",
+    "src/src/core/lib/avl/avl.h",
+    "src/src/core/lib/channel/call_finalization.h",
+    "src/src/core/lib/channel/call_tracer.h",
+    "src/src/core/lib/channel/channel_args.cc",
+    "src/src/core/lib/channel/channel_args.h",
+    "src/src/core/lib/channel/channel_args_preconditioning.cc",
+    "src/src/core/lib/channel/channel_args_preconditioning.h",
+    "src/src/core/lib/channel/channel_fwd.h",
+    "src/src/core/lib/channel/channel_stack.cc",
+    "src/src/core/lib/channel/channel_stack.h",
+    "src/src/core/lib/channel/channel_stack_builder.cc",
+    "src/src/core/lib/channel/channel_stack_builder.h",
+    "src/src/core/lib/channel/channel_stack_builder_impl.cc",
+    "src/src/core/lib/channel/channel_stack_builder_impl.h",
+    "src/src/core/lib/channel/channel_trace.cc",
+    "src/src/core/lib/channel/channel_trace.h",
+    "src/src/core/lib/channel/channelz.cc",
+    "src/src/core/lib/channel/channelz.h",
+    "src/src/core/lib/channel/channelz_registry.cc",
+    "src/src/core/lib/channel/channelz_registry.h",
+    "src/src/core/lib/channel/connected_channel.cc",
+    "src/src/core/lib/channel/connected_channel.h",
+    "src/src/core/lib/channel/context.h",
+    "src/src/core/lib/channel/promise_based_filter.cc",
+    "src/src/core/lib/channel/promise_based_filter.h",
+    "src/src/core/lib/channel/status_util.cc",
+    "src/src/core/lib/channel/status_util.h",
+    "src/src/core/lib/compression/compression.cc",
+    "src/src/core/lib/compression/compression_internal.cc",
+    "src/src/core/lib/compression/compression_internal.h",
+    "src/src/core/lib/compression/message_compress.cc",
+    "src/src/core/lib/compression/message_compress.h",
+    "src/src/core/lib/config/core_configuration.cc",
+    "src/src/core/lib/config/core_configuration.h",
+    "src/src/core/lib/debug/event_log.cc",
+    "src/src/core/lib/debug/event_log.h",
+    "src/src/core/lib/debug/histogram_view.cc",
+    "src/src/core/lib/debug/histogram_view.h",
+    "src/src/core/lib/debug/stats.cc",
+    "src/src/core/lib/debug/stats.h",
+    "src/src/core/lib/debug/stats_data.cc",
+    "src/src/core/lib/debug/stats_data.h",
+    "src/src/core/lib/debug/trace.cc",
+    "src/src/core/lib/debug/trace.h",
+    "src/src/core/lib/event_engine/channel_args_endpoint_config.cc",
+    "src/src/core/lib/event_engine/channel_args_endpoint_config.h",
+    "src/src/core/lib/event_engine/common_closures.h",
+    "src/src/core/lib/event_engine/default_event_engine.cc",
+    "src/src/core/lib/event_engine/default_event_engine.h",
+    "src/src/core/lib/event_engine/default_event_engine_factory.cc",
+    "src/src/core/lib/event_engine/default_event_engine_factory.h",
+    "src/src/core/lib/event_engine/event_engine.cc",
+    "src/src/core/lib/event_engine/executor/executor.h",
+    "src/src/core/lib/event_engine/forkable.cc",
+    "src/src/core/lib/event_engine/forkable.h",
+    "src/src/core/lib/event_engine/handle_containers.h",
+    "src/src/core/lib/event_engine/memory_allocator.cc",
+    "src/src/core/lib/event_engine/poller.h",
+    "src/src/core/lib/event_engine/posix.h",
+    "src/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc",
+    "src/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h",
+    "src/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc",
+    "src/src/core/lib/event_engine/posix_engine/ev_poll_posix.h",
+    "src/src/core/lib/event_engine/posix_engine/event_poller.h",
+    "src/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc",
+    "src/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h",
+    "src/src/core/lib/event_engine/posix_engine/internal_errqueue.cc",
+    "src/src/core/lib/event_engine/posix_engine/internal_errqueue.h",
+    "src/src/core/lib/event_engine/posix_engine/lockfree_event.cc",
+    "src/src/core/lib/event_engine/posix_engine/lockfree_event.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_endpoint.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_endpoint.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_closure.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener.h",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc",
+    "src/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h",
+    "src/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc",
+    "src/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h",
+    "src/src/core/lib/event_engine/posix_engine/timer.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer.h",
+    "src/src/core/lib/event_engine/posix_engine/timer_heap.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer_heap.h",
+    "src/src/core/lib/event_engine/posix_engine/timer_manager.cc",
+    "src/src/core/lib/event_engine/posix_engine/timer_manager.h",
+    "src/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc",
+    "src/src/core/lib/event_engine/posix_engine/traced_buffer_list.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc",
+    "src/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h",
+    "src/src/core/lib/event_engine/resolved_address.cc",
+    "src/src/core/lib/event_engine/resolved_address_internal.h",
+    "src/src/core/lib/event_engine/shim.cc",
+    "src/src/core/lib/event_engine/shim.h",
+    "src/src/core/lib/event_engine/slice.cc",
+    "src/src/core/lib/event_engine/slice_buffer.cc",
+    "src/src/core/lib/event_engine/tcp_socket_utils.cc",
+    "src/src/core/lib/event_engine/tcp_socket_utils.h",
+    "src/src/core/lib/event_engine/thread_pool.cc",
+    "src/src/core/lib/event_engine/thread_pool.h",
+    "src/src/core/lib/event_engine/time_util.cc",
+    "src/src/core/lib/event_engine/time_util.h",
+    "src/src/core/lib/event_engine/trace.cc",
+    "src/src/core/lib/event_engine/trace.h",
+    "src/src/core/lib/event_engine/utils.cc",
+    "src/src/core/lib/event_engine/utils.h",
+    "src/src/core/lib/event_engine/windows/iocp.cc",
+    "src/src/core/lib/event_engine/windows/iocp.h",
+    "src/src/core/lib/event_engine/windows/win_socket.cc",
+    "src/src/core/lib/event_engine/windows/win_socket.h",
+    "src/src/core/lib/event_engine/windows/windows_endpoint.cc",
+    "src/src/core/lib/event_engine/windows/windows_endpoint.h",
+    "src/src/core/lib/event_engine/windows/windows_engine.cc",
+    "src/src/core/lib/event_engine/windows/windows_engine.h",
+    "src/src/core/lib/experiments/config.cc",
+    "src/src/core/lib/experiments/config.h",
+    "src/src/core/lib/experiments/experiments.cc",
+    "src/src/core/lib/experiments/experiments.h",
+    "src/src/core/lib/gpr/spinlock.h",
+    "src/src/core/lib/gprpp/atomic_utils.h",
+    "src/src/core/lib/gprpp/bitset.h",
+    "src/src/core/lib/gprpp/chunked_vector.h",
+    "src/src/core/lib/gprpp/cpp_impl_of.h",
+    "src/src/core/lib/gprpp/dual_ref_counted.h",
+    "src/src/core/lib/gprpp/load_file.cc",
+    "src/src/core/lib/gprpp/load_file.h",
+    "src/src/core/lib/gprpp/manual_constructor.h",
+    "src/src/core/lib/gprpp/match.h",
+    "src/src/core/lib/gprpp/notification.h",
+    "src/src/core/lib/gprpp/orphanable.h",
+    "src/src/core/lib/gprpp/overload.h",
+    "src/src/core/lib/gprpp/packed_table.h",
+    "src/src/core/lib/gprpp/per_cpu.h",
+    "src/src/core/lib/gprpp/ref_counted.h",
+    "src/src/core/lib/gprpp/ref_counted_ptr.h",
+    "src/src/core/lib/gprpp/sorted_pack.h",
+    "src/src/core/lib/gprpp/status_helper.cc",
+    "src/src/core/lib/gprpp/status_helper.h",
+    "src/src/core/lib/gprpp/table.h",
+    "src/src/core/lib/gprpp/time.cc",
+    "src/src/core/lib/gprpp/time.h",
+    "src/src/core/lib/gprpp/time_averaged_stats.cc",
+    "src/src/core/lib/gprpp/time_averaged_stats.h",
+    "src/src/core/lib/gprpp/unique_type_name.h",
+    "src/src/core/lib/gprpp/validation_errors.cc",
+    "src/src/core/lib/gprpp/validation_errors.h",
+    "src/src/core/lib/gprpp/work_serializer.cc",
+    "src/src/core/lib/gprpp/work_serializer.h",
+    "src/src/core/lib/handshaker/proxy_mapper.h",
+    "src/src/core/lib/handshaker/proxy_mapper_registry.cc",
+    "src/src/core/lib/handshaker/proxy_mapper_registry.h",
+    "src/src/core/lib/iomgr/block_annotate.h",
+    "src/src/core/lib/iomgr/buffer_list.cc",
+    "src/src/core/lib/iomgr/buffer_list.h",
+    "src/src/core/lib/iomgr/call_combiner.cc",
+    "src/src/core/lib/iomgr/call_combiner.h",
+    "src/src/core/lib/iomgr/cfstream_handle.cc",
+    "src/src/core/lib/iomgr/cfstream_handle.h",
+    "src/src/core/lib/iomgr/closure.cc",
+    "src/src/core/lib/iomgr/closure.h",
+    "src/src/core/lib/iomgr/combiner.cc",
+    "src/src/core/lib/iomgr/combiner.h",
+    "src/src/core/lib/iomgr/dualstack_socket_posix.cc",
+    "src/src/core/lib/iomgr/dynamic_annotations.h",
+    "src/src/core/lib/iomgr/endpoint.cc",
+    "src/src/core/lib/iomgr/endpoint.h",
+    "src/src/core/lib/iomgr/endpoint_cfstream.cc",
+    "src/src/core/lib/iomgr/endpoint_cfstream.h",
+    "src/src/core/lib/iomgr/endpoint_pair.h",
+    "src/src/core/lib/iomgr/endpoint_pair_posix.cc",
+    "src/src/core/lib/iomgr/endpoint_pair_windows.cc",
+    "src/src/core/lib/iomgr/error.cc",
+    "src/src/core/lib/iomgr/error.h",
+    "src/src/core/lib/iomgr/error_cfstream.cc",
+    "src/src/core/lib/iomgr/error_cfstream.h",
+    "src/src/core/lib/iomgr/ev_apple.cc",
+    "src/src/core/lib/iomgr/ev_apple.h",
+    "src/src/core/lib/iomgr/ev_epoll1_linux.cc",
+    "src/src/core/lib/iomgr/ev_epoll1_linux.h",
+    "src/src/core/lib/iomgr/ev_poll_posix.cc",
+    "src/src/core/lib/iomgr/ev_poll_posix.h",
+    "src/src/core/lib/iomgr/ev_posix.cc",
+    "src/src/core/lib/iomgr/ev_posix.h",
+    "src/src/core/lib/iomgr/ev_windows.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/closure.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/closure.h",
+    "src/src/core/lib/iomgr/event_engine_shims/endpoint.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/endpoint.h",
+    "src/src/core/lib/iomgr/event_engine_shims/tcp_client.cc",
+    "src/src/core/lib/iomgr/event_engine_shims/tcp_client.h",
+    "src/src/core/lib/iomgr/exec_ctx.cc",
+    "src/src/core/lib/iomgr/exec_ctx.h",
+    "src/src/core/lib/iomgr/executor.cc",
+    "src/src/core/lib/iomgr/executor.h",
+    "src/src/core/lib/iomgr/fork_posix.cc",
+    "src/src/core/lib/iomgr/fork_windows.cc",
+    "src/src/core/lib/iomgr/gethostname.h",
+    "src/src/core/lib/iomgr/gethostname_fallback.cc",
+    "src/src/core/lib/iomgr/gethostname_host_name_max.cc",
+    "src/src/core/lib/iomgr/gethostname_sysconf.cc",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex.h",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc",
+    "src/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc",
+    "src/src/core/lib/iomgr/internal_errqueue.cc",
+    "src/src/core/lib/iomgr/internal_errqueue.h",
+    "src/src/core/lib/iomgr/iocp_windows.cc",
+    "src/src/core/lib/iomgr/iocp_windows.h",
+    "src/src/core/lib/iomgr/iomgr.cc",
+    "src/src/core/lib/iomgr/iomgr.h",
+    "src/src/core/lib/iomgr/iomgr_fwd.h",
+    "src/src/core/lib/iomgr/iomgr_internal.cc",
+    "src/src/core/lib/iomgr/iomgr_internal.h",
+    "src/src/core/lib/iomgr/iomgr_posix.cc",
+    "src/src/core/lib/iomgr/iomgr_posix_cfstream.cc",
+    "src/src/core/lib/iomgr/iomgr_windows.cc",
+    "src/src/core/lib/iomgr/load_file.cc",
+    "src/src/core/lib/iomgr/load_file.h",
+    "src/src/core/lib/iomgr/lockfree_event.cc",
+    "src/src/core/lib/iomgr/lockfree_event.h",
+    "src/src/core/lib/iomgr/nameser.h",
+    "src/src/core/lib/iomgr/polling_entity.cc",
+    "src/src/core/lib/iomgr/polling_entity.h",
+    "src/src/core/lib/iomgr/pollset.cc",
+    "src/src/core/lib/iomgr/pollset.h",
+    "src/src/core/lib/iomgr/pollset_set.cc",
+    "src/src/core/lib/iomgr/pollset_set.h",
+    "src/src/core/lib/iomgr/pollset_set_windows.cc",
+    "src/src/core/lib/iomgr/pollset_set_windows.h",
+    "src/src/core/lib/iomgr/pollset_windows.cc",
+    "src/src/core/lib/iomgr/pollset_windows.h",
+    "src/src/core/lib/iomgr/port.h",
+    "src/src/core/lib/iomgr/python_util.h",
+    "src/src/core/lib/iomgr/resolve_address.cc",
+    "src/src/core/lib/iomgr/resolve_address.h",
+    "src/src/core/lib/iomgr/resolve_address_impl.h",
+    "src/src/core/lib/iomgr/resolve_address_posix.cc",
+    "src/src/core/lib/iomgr/resolve_address_posix.h",
+    "src/src/core/lib/iomgr/resolve_address_windows.cc",
+    "src/src/core/lib/iomgr/resolve_address_windows.h",
+    "src/src/core/lib/iomgr/resolved_address.h",
+    "src/src/core/lib/iomgr/sockaddr.h",
+    "src/src/core/lib/iomgr/sockaddr_posix.h",
+    "src/src/core/lib/iomgr/sockaddr_utils_posix.cc",
+    "src/src/core/lib/iomgr/sockaddr_windows.h",
+    "src/src/core/lib/iomgr/socket_factory_posix.cc",
+    "src/src/core/lib/iomgr/socket_factory_posix.h",
+    "src/src/core/lib/iomgr/socket_mutator.cc",
+    "src/src/core/lib/iomgr/socket_mutator.h",
+    "src/src/core/lib/iomgr/socket_utils.h",
+    "src/src/core/lib/iomgr/socket_utils_common_posix.cc",
+    "src/src/core/lib/iomgr/socket_utils_linux.cc",
+    "src/src/core/lib/iomgr/socket_utils_posix.cc",
+    "src/src/core/lib/iomgr/socket_utils_posix.h",
+    "src/src/core/lib/iomgr/socket_utils_windows.cc",
+    "src/src/core/lib/iomgr/socket_windows.cc",
+    "src/src/core/lib/iomgr/socket_windows.h",
+    "src/src/core/lib/iomgr/systemd_utils.cc",
+    "src/src/core/lib/iomgr/systemd_utils.h",
+    "src/src/core/lib/iomgr/tcp_client.cc",
+    "src/src/core/lib/iomgr/tcp_client.h",
+    "src/src/core/lib/iomgr/tcp_client_cfstream.cc",
+    "src/src/core/lib/iomgr/tcp_client_posix.cc",
+    "src/src/core/lib/iomgr/tcp_client_posix.h",
+    "src/src/core/lib/iomgr/tcp_client_windows.cc",
+    "src/src/core/lib/iomgr/tcp_posix.cc",
+    "src/src/core/lib/iomgr/tcp_posix.h",
+    "src/src/core/lib/iomgr/tcp_server.cc",
+    "src/src/core/lib/iomgr/tcp_server.h",
+    "src/src/core/lib/iomgr/tcp_server_posix.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix.h",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
+    "src/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
+    "src/src/core/lib/iomgr/tcp_server_windows.cc",
+    "src/src/core/lib/iomgr/tcp_windows.cc",
+    "src/src/core/lib/iomgr/tcp_windows.h",
+    "src/src/core/lib/iomgr/timer.cc",
+    "src/src/core/lib/iomgr/timer.h",
+    "src/src/core/lib/iomgr/timer_generic.cc",
+    "src/src/core/lib/iomgr/timer_generic.h",
+    "src/src/core/lib/iomgr/timer_heap.cc",
+    "src/src/core/lib/iomgr/timer_heap.h",
+    "src/src/core/lib/iomgr/timer_manager.cc",
+    "src/src/core/lib/iomgr/timer_manager.h",
+    "src/src/core/lib/iomgr/unix_sockets_posix.cc",
+    "src/src/core/lib/iomgr/unix_sockets_posix.h",
+    "src/src/core/lib/iomgr/unix_sockets_posix_noop.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_eventfd.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_nospecial.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_pipe.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_pipe.h",
+    "src/src/core/lib/iomgr/wakeup_fd_posix.cc",
+    "src/src/core/lib/iomgr/wakeup_fd_posix.h",
+    "src/src/core/lib/json/json.h",
+    "src/src/core/lib/json/json_reader.cc",
+    "src/src/core/lib/json/json_writer.cc",
+    "src/src/core/lib/load_balancing/lb_policy.cc",
+    "src/src/core/lib/load_balancing/lb_policy.h",
+    "src/src/core/lib/load_balancing/lb_policy_factory.h",
+    "src/src/core/lib/load_balancing/lb_policy_registry.cc",
+    "src/src/core/lib/load_balancing/lb_policy_registry.h",
+    "src/src/core/lib/load_balancing/subchannel_interface.h",
+    "src/src/core/lib/matchers/matchers.cc",
+    "src/src/core/lib/matchers/matchers.h",
+    "src/src/core/lib/promise/activity.cc",
+    "src/src/core/lib/promise/activity.h",
+    "src/src/core/lib/promise/arena_promise.h",
+    "src/src/core/lib/promise/context.h",
+    "src/src/core/lib/promise/detail/basic_join.h",
+    "src/src/core/lib/promise/detail/basic_seq.h",
+    "src/src/core/lib/promise/detail/promise_factory.h",
+    "src/src/core/lib/promise/detail/promise_like.h",
+    "src/src/core/lib/promise/detail/status.h",
+    "src/src/core/lib/promise/detail/switch.h",
+    "src/src/core/lib/promise/exec_ctx_wakeup_scheduler.h",
+    "src/src/core/lib/promise/if.h",
+    "src/src/core/lib/promise/interceptor_list.h",
+    "src/src/core/lib/promise/intra_activity_waiter.h",
+    "src/src/core/lib/promise/loop.h",
+    "src/src/core/lib/promise/map.h",
+    "src/src/core/lib/promise/pipe.h",
+    "src/src/core/lib/promise/poll.h",
+    "src/src/core/lib/promise/promise.h",
+    "src/src/core/lib/promise/race.h",
+    "src/src/core/lib/promise/seq.h",
+    "src/src/core/lib/promise/trace.cc",
+    "src/src/core/lib/promise/trace.h",
+    "src/src/core/lib/promise/try_join.h",
+    "src/src/core/lib/promise/try_seq.h",
+    "src/src/core/lib/resolver/resolver.cc",
+    "src/src/core/lib/resolver/resolver.h",
+    "src/src/core/lib/resolver/resolver_factory.h",
+    "src/src/core/lib/resolver/resolver_registry.cc",
+    "src/src/core/lib/resolver/resolver_registry.h",
+    "src/src/core/lib/resolver/server_address.cc",
+    "src/src/core/lib/resolver/server_address.h",
+    "src/src/core/lib/resource_quota/api.cc",
+    "src/src/core/lib/resource_quota/api.h",
+    "src/src/core/lib/resource_quota/arena.cc",
+    "src/src/core/lib/resource_quota/arena.h",
+    "src/src/core/lib/resource_quota/memory_quota.cc",
+    "src/src/core/lib/resource_quota/memory_quota.h",
+    "src/src/core/lib/resource_quota/periodic_update.cc",
+    "src/src/core/lib/resource_quota/periodic_update.h",
+    "src/src/core/lib/resource_quota/resource_quota.cc",
+    "src/src/core/lib/resource_quota/resource_quota.h",
+    "src/src/core/lib/resource_quota/thread_quota.cc",
+    "src/src/core/lib/resource_quota/thread_quota.h",
+    "src/src/core/lib/resource_quota/trace.cc",
+    "src/src/core/lib/resource_quota/trace.h",
+    "src/src/core/lib/security/authorization/authorization_engine.h",
+    "src/src/core/lib/security/authorization/authorization_policy_provider.h",
+    "src/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc",
+    "src/src/core/lib/security/authorization/evaluate_args.cc",
+    "src/src/core/lib/security/authorization/evaluate_args.h",
+    "src/src/core/lib/security/authorization/grpc_authorization_engine.cc",
+    "src/src/core/lib/security/authorization/grpc_authorization_engine.h",
+    "src/src/core/lib/security/authorization/grpc_authorization_policy_provider.cc",
+    "src/src/core/lib/security/authorization/grpc_authorization_policy_provider.h",
+    "src/src/core/lib/security/authorization/grpc_server_authz_filter.cc",
+    "src/src/core/lib/security/authorization/grpc_server_authz_filter.h",
+    "src/src/core/lib/security/authorization/matchers.cc",
+    "src/src/core/lib/security/authorization/matchers.h",
+    "src/src/core/lib/security/authorization/rbac_policy.cc",
+    "src/src/core/lib/security/authorization/rbac_policy.h",
+    "src/src/core/lib/security/authorization/rbac_translator.cc",
+    "src/src/core/lib/security/authorization/rbac_translator.h",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_factory.h",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_registry.cc",
+    "src/src/core/lib/security/certificate_provider/certificate_provider_registry.h",
+    "src/src/core/lib/security/context/security_context.cc",
+    "src/src/core/lib/security/context/security_context.h",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment.h",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc",
+    "src/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h",
+    "src/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc",
+    "src/src/core/lib/security/credentials/call_creds_util.cc",
+    "src/src/core/lib/security/credentials/call_creds_util.h",
+    "src/src/core/lib/security/credentials/channel_creds_registry.h",
+    "src/src/core/lib/security/credentials/composite/composite_credentials.cc",
+    "src/src/core/lib/security/credentials/composite/composite_credentials.h",
+    "src/src/core/lib/security/credentials/credentials.cc",
+    "src/src/core/lib/security/credentials/credentials.h",
+    "src/src/core/lib/security/credentials/plugin/plugin_credentials.cc",
+    "src/src/core/lib/security/credentials/plugin/plugin_credentials.h",
+    "src/src/core/lib/security/credentials/tls/tls_utils.cc",
+    "src/src/core/lib/security/credentials/tls/tls_utils.h",
+    "src/src/core/lib/security/security_connector/load_system_roots.h",
+    "src/src/core/lib/security/security_connector/load_system_roots_fallback.cc",
+    "src/src/core/lib/security/security_connector/load_system_roots_supported.cc",
+    "src/src/core/lib/security/security_connector/load_system_roots_supported.h",
+    "src/src/core/lib/security/security_connector/security_connector.cc",
+    "src/src/core/lib/security/security_connector/security_connector.h",
+    "src/src/core/lib/security/transport/auth_filters.h",
+    "src/src/core/lib/security/transport/client_auth_filter.cc",
+    "src/src/core/lib/security/transport/secure_endpoint.cc",
+    "src/src/core/lib/security/transport/secure_endpoint.h",
+    "src/src/core/lib/security/transport/security_handshaker.cc",
+    "src/src/core/lib/security/transport/security_handshaker.h",
+    "src/src/core/lib/security/transport/server_auth_filter.cc",
+    "src/src/core/lib/security/transport/tsi_error.cc",
+    "src/src/core/lib/security/transport/tsi_error.h",
+    "src/src/core/lib/security/util/json_util.cc",
+    "src/src/core/lib/security/util/json_util.h",
+    "src/src/core/lib/service_config/service_config.h",
+    "src/src/core/lib/service_config/service_config_call_data.h",
+    "src/src/core/lib/service_config/service_config_parser.cc",
+    "src/src/core/lib/service_config/service_config_parser.h",
+    "src/src/core/lib/slice/b64.cc",
+    "src/src/core/lib/slice/b64.h",
+    "src/src/core/lib/slice/percent_encoding.cc",
+    "src/src/core/lib/slice/percent_encoding.h",
+    "src/src/core/lib/slice/slice.cc",
+    "src/src/core/lib/slice/slice.h",
+    "src/src/core/lib/slice/slice_buffer.cc",
+    "src/src/core/lib/slice/slice_buffer.h",
+    "src/src/core/lib/slice/slice_internal.h",
+    "src/src/core/lib/slice/slice_refcount.cc",
+    "src/src/core/lib/slice/slice_refcount.h",
+    "src/src/core/lib/slice/slice_string_helpers.cc",
+    "src/src/core/lib/slice/slice_string_helpers.h",
+    "src/src/core/lib/surface/api_trace.cc",
+    "src/src/core/lib/surface/api_trace.h",
+    "src/src/core/lib/surface/builtins.cc",
+    "src/src/core/lib/surface/builtins.h",
+    "src/src/core/lib/surface/byte_buffer.cc",
+    "src/src/core/lib/surface/byte_buffer_reader.cc",
+    "src/src/core/lib/surface/call.cc",
+    "src/src/core/lib/surface/call.h",
+    "src/src/core/lib/surface/call_details.cc",
+    "src/src/core/lib/surface/call_log_batch.cc",
+    "src/src/core/lib/surface/call_test_only.h",
+    "src/src/core/lib/surface/call_trace.cc",
+    "src/src/core/lib/surface/call_trace.h",
+    "src/src/core/lib/surface/channel.cc",
+    "src/src/core/lib/surface/channel.h",
+    "src/src/core/lib/surface/channel_init.cc",
+    "src/src/core/lib/surface/channel_init.h",
+    "src/src/core/lib/surface/channel_ping.cc",
+    "src/src/core/lib/surface/channel_stack_type.cc",
+    "src/src/core/lib/surface/channel_stack_type.h",
+    "src/src/core/lib/surface/completion_queue.cc",
+    "src/src/core/lib/surface/completion_queue.h",
+    "src/src/core/lib/surface/completion_queue_factory.cc",
+    "src/src/core/lib/surface/completion_queue_factory.h",
+    "src/src/core/lib/surface/event_string.cc",
+    "src/src/core/lib/surface/event_string.h",
+    "src/src/core/lib/surface/init.h",
+    "src/src/core/lib/surface/init_internally.cc",
+    "src/src/core/lib/surface/init_internally.h",
+    "src/src/core/lib/surface/lame_client.cc",
+    "src/src/core/lib/surface/lame_client.h",
+    "src/src/core/lib/surface/metadata_array.cc",
+    "src/src/core/lib/surface/server.cc",
+    "src/src/core/lib/surface/server.h",
+    "src/src/core/lib/surface/validate_metadata.cc",
+    "src/src/core/lib/surface/validate_metadata.h",
+    "src/src/core/lib/surface/version.cc",
+    "src/src/core/lib/transport/connectivity_state.cc",
+    "src/src/core/lib/transport/connectivity_state.h",
+    "src/src/core/lib/transport/error_utils.cc",
+    "src/src/core/lib/transport/error_utils.h",
+    "src/src/core/lib/transport/handshaker.cc",
+    "src/src/core/lib/transport/handshaker.h",
+    "src/src/core/lib/transport/handshaker_factory.h",
+    "src/src/core/lib/transport/handshaker_registry.cc",
+    "src/src/core/lib/transport/handshaker_registry.h",
+    "src/src/core/lib/transport/http2_errors.h",
+    "src/src/core/lib/transport/metadata_batch.cc",
+    "src/src/core/lib/transport/metadata_batch.h",
+    "src/src/core/lib/transport/parsed_metadata.cc",
+    "src/src/core/lib/transport/parsed_metadata.h",
+    "src/src/core/lib/transport/status_conversion.cc",
+    "src/src/core/lib/transport/status_conversion.h",
+    "src/src/core/lib/transport/timeout_encoding.cc",
+    "src/src/core/lib/transport/timeout_encoding.h",
+    "src/src/core/lib/transport/transport.cc",
+    "src/src/core/lib/transport/transport.h",
+    "src/src/core/lib/transport/transport_fwd.h",
+    "src/src/core/lib/transport/transport_impl.h",
+    "src/src/core/lib/transport/transport_op_string.cc",
+    "src/src/core/lib/uri/uri_parser.cc",
+    "src/src/core/lib/uri/uri_parser.h",
+    "src/src/core/tsi/alts/handshaker/transport_security_common_api.cc",
+    "src/src/core/tsi/alts/handshaker/transport_security_common_api.h",
+    "src/src/core/tsi/transport_security.cc",
+    "src/src/core/tsi/transport_security.h",
+    "src/src/core/tsi/transport_security_grpc.cc",
+    "src/src/core/tsi/transport_security_grpc.h",
+    "src/src/core/tsi/transport_security_interface.h",
+  ]
+  public_deps = [
+    ":absl_cleanup_cleanup",
+    ":absl_container_flat_hash_map",
+    ":absl_container_flat_hash_set",
+    ":absl_container_inlined_vector",
+    ":absl_functional_any_invocable",
+    ":absl_functional_function_ref",
+    ":absl_hash_hash",
+    ":absl_meta_type_traits",
+    ":absl_status_statusor",
+    ":absl_types_span",
+    ":absl_utility_utility",
+    ":gpr",
+    ":upb",
+  ]
+  public_configs = [ "..:grpc_internal_config" ]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}
diff --git a/docs/contributing/build-instructions.md b/docs/contributing/build-instructions.md
index e037479..74eeecf 100644
--- a/docs/contributing/build-instructions.md
+++ b/docs/contributing/build-instructions.md
@@ -149,6 +149,21 @@
 ui/run-unittests
 ```
 
+This command will perform the build first; which is not necessary if you
+already have a development server running. In this case, to avoid interference
+with the rebuild done by development server and to get the results faster, you
+can use
+
+```bash
+ui/run-unittests --no-build
+```
+
+to skip the build steps.
+
+Script `ui/run-unittests` also supports `--watch` parameter, which would
+restart the testing when the underlying source files are changed. This can be
+used in conjunction with `--no-build`, and on its own as well.
+
 ## Build files
 
 The source of truth of our build file is in the BUILD.gn files, which are based
diff --git a/docs/contributing/sdk-releasing.md b/docs/contributing/sdk-releasing.md
index 5e62cca..b5b6984 100644
--- a/docs/contributing/sdk-releasing.md
+++ b/docs/contributing/sdk-releasing.md
@@ -21,6 +21,20 @@
 
 ## a) Creating a new major version
 
+Make sure that the current master branch builds on
+[LUCI](https://luci-scheduler.appspot.com/jobs/perfetto) by triggering all the
+builds and waiting for their success. If any of the builds fail, fix the failure
+on master before proceeding.
+
+Create an entry in CHANGELOG with the new major version: this usually involves
+renaming the "Unreleased" entry to the version number you chose earlier
+([example](https://r.android.com/2417175)).
+
+Test that the perfetto build tools can parse the CHANGELOG: after building,
+running `perfetto --version` should show your new version number.
+
+Upload the CHANGELOG change and submit it on the master branch.
+
 Create a release branch for the new major version ("v16.x" here):
 
 ```bash
diff --git a/docs/faq.md b/docs/faq.md
index 29ba71b..7a05913 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -1,23 +1,48 @@
 # Frequently Asked Questions
-This page contains some common questions that the Perfetto team is asked
-and their answers.
-
-- [Frequently Asked Questions](#frequently-asked-questions)
-  - [How do I open trace in UI from command line?](#how-do-i-open-trace-in-ui-from-command-line)
 
 ## How do I open trace in UI from command line?
+
 When collecting traces from the command line, a convenient way to open traces
-is to use the [open_trace_in_ui script](/tools/open_trace_in_ui).
+is to use the [open\_trace\_in\_ui script](/tools/open_trace_in_ui).
 
 This can be used as follows:
+
 ```sh
 curl -OL https://github.com/google/perfetto/raw/master/tools/open_trace_in_ui
 chmod +x open_trace_in_ui
 ./open_trace_in_ui -i /path/to/trace
 ```
 
-If you already have a Perfetto checkout, the first steps can be skipped.
+If you already have a Perfetto checkout, the first two steps can be skipped.
 From the Perfetto root, run:
+
 ```sh
 tools/open_trace_in_ui -i /path/to/trace
-```
\ No newline at end of file
+```
+
+## Incorrectly displayed overlapping events in JSON trace
+
+NOTE: JSON is considered a legacy trace format and is supported on a best-effort
+basis.
+
+The Perfetto UI and trace processor do support overlapping B/E/X events, in
+compliance with the
+[JSON spec](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.nso4gcezn7n1).
+As stated in the spec, events are only allowed to perfecty nest.
+
+Users are recommended to emit
+[TrackEvent](/docs/instrumentation/track-events.md)
+instead, Perfetto's native trace format. See
+[this guide](/docs/reference/synthetic-track-event.md) for how common JSON
+events can be represented using
+TrackEvent.
+
+## How can I use Perfetto tooling without instrumenting my program?
+A common problem is that users want to use Perfetto analysis and visualization
+tooling but they don't want to instrument their program. This can be because
+Perfetto is not a good fit for their use-case or because they may already have
+an existing tracing system.
+
+The recommended approach for this is to emit Perfetto's native TrackEvent proto
+format. A reference guide for this is available
+[here](/docs/reference/synthetic-track-event.md).
diff --git a/docs/images/synthetic-track-event-counter.png b/docs/images/synthetic-track-event-counter.png
new file mode 100644
index 0000000..fc659d5
--- /dev/null
+++ b/docs/images/synthetic-track-event-counter.png
Binary files differ
diff --git a/docs/images/synthetic-track-event-flow.png b/docs/images/synthetic-track-event-flow.png
new file mode 100644
index 0000000..e0a20ed
--- /dev/null
+++ b/docs/images/synthetic-track-event-flow.png
Binary files differ
diff --git a/docs/images/synthetic-track-event-process.png b/docs/images/synthetic-track-event-process.png
new file mode 100644
index 0000000..db1379e
--- /dev/null
+++ b/docs/images/synthetic-track-event-process.png
Binary files differ
diff --git a/docs/images/synthetic-track-event-thread.png b/docs/images/synthetic-track-event-thread.png
new file mode 100644
index 0000000..d247662
--- /dev/null
+++ b/docs/images/synthetic-track-event-thread.png
Binary files differ
diff --git a/docs/instrumentation/tracing-sdk.md b/docs/instrumentation/tracing-sdk.md
index 75d10db..cd49de3 100644
--- a/docs/instrumentation/tracing-sdk.md
+++ b/docs/instrumentation/tracing-sdk.md
@@ -30,7 +30,7 @@
 To start using the Client API, first check out the latest SDK release:
 
 ```bash
-git clone https://android.googlesource.com/platform/external/perfetto -b v29.0
+git clone https://android.googlesource.com/platform/external/perfetto -b v32.1
 ```
 
 The SDK consists of two files, `sdk/perfetto.h` and `sdk/perfetto.cc`. These are
diff --git a/docs/reference/synthetic-track-event.md b/docs/reference/synthetic-track-event.md
new file mode 100644
index 0000000..1052d77
--- /dev/null
+++ b/docs/reference/synthetic-track-event.md
@@ -0,0 +1,375 @@
+# Writing TrackEvent Protos Synthetically
+This page acts as a reference guide to synthetically generate TrackEvent,
+Perfetto's native protobuf based tracing format. This allows using Perfetto's
+analysis and visualzation without using collecting traces using the Perfetto
+SDK.
+
+TrackEvent protos can be manually written using the
+[official protobuf library](https://protobuf.dev/reference/) or any other
+protobuf-compatible library. To be language-agnostic, the rest of this page
+will show examples using the
+[text format](https://protobuf.dev/reference/protobuf/textformat-spec/)
+representation of protobufs.
+
+## Thread-scoped (sync) slices
+NOTE: in the legacy JSON tracing format, this section correspond to B/E/I/X
+events with the associated M (metadata) events.
+
+Thread scoped slices are used to trace execution of functions on a single
+thread. As only one function runs on a single thread over time, this requires
+that child slices nest perfectly inside parent slices and do not partially
+overlap.
+
+![Thread track event in UI](/docs/images/synthetic-track-event-thread.png)
+
+This is corresponds to the following protos:
+```
+# Emit this packet once *before* you emit the first event for this process.
+packet: {
+  track_descriptor: {
+    uuid: 894893984                     # 64-bit random number.
+    process: {
+      pid: 1234                         # PID for your process.
+      process_name: "My process name"
+    }
+  }
+}
+
+# Emit this packet once *before* you emit the first event for this thread.
+packet: {
+  track_descriptor: {
+    uuid: 49083589894                   # 64-bit random number.
+    parent_uuid: 894893984              # UUID from above.
+    thread: {
+      pid: 1234                         # PID for your process.
+      tid: 5678                         # TID for your thread.
+      thread_name: "My thread name"
+    }
+  }
+}
+
+# The events for this thread.
+packet: {
+  timestamp: 200
+  track_event: {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 49083589894             # Same random number from above.
+    name: "My special parent"
+  }
+  trusted_packet_sequence_id: 3903809   # Generate *once*, use throughout.
+}
+packet: {
+  timestamp: 250
+  track_event: {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 49083589894
+    name: "My special child"
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 285
+  track_event {
+    type: TYPE_INSTANT
+    track_uuid: 49083589894
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet: {
+  timestamp: 290
+  track_event: {
+    type: TYPE_SLICE_END
+    track_uuid: 49083589894
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet: {
+  timestamp: 300
+  track_event: {
+    type: TYPE_SLICE_END
+    track_uuid: 49083589894
+  }
+  trusted_packet_sequence_id: 3903809
+}
+```
+
+## Process-scoped (async) slices
+NOTE: in the legacy JSON tracing format, this section corresponds to b/e/n
+events with the associated M (metadata) events.
+
+Process-scoped slices are useful to trace execution of a "piece of work" across
+multiple threads of a process. A process-scoped slice can start on a thread
+A and end on a thread B. Examples include work submitted to thread pools
+and coroutines.
+
+Process tracks can be named corresponding to the executor and can also have
+child slices in an identical way to thread-scoped slices. Importantly, this
+means slices on a single track must **strictly nest** inside each other
+without overlapping.
+
+As separating each track in the UI can cause a lot of clutter, the UI
+visually merges process tracks with the same name in each process. Note that
+this **does not** change the data model (e.g. in trace processor
+tracks remain separated) as this is simply a visual grouping.
+
+![Process track event in UI](/docs/images/synthetic-track-event-process.png)
+
+This is corresponds to the following protos:
+```
+# The first track associated with this process.
+packet {
+  track_descriptor {
+    uuid: 48948                         # 64-bit random number.
+    name: "My special track"
+    process {
+      pid: 1234                         # PID for your process
+      process_name: "My process name"
+    }
+  }
+}
+# The events for the first track.
+packet {
+  timestamp: 200
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 48948                   # Same random number from above.
+    name: "My special parent A"
+  }
+  trusted_packet_sequence_id: 3903809   # Generate *once*, use throughout.
+}
+packet {
+  timestamp: 250
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 48948
+    name: "My special child"
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 290
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 48948
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 300
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 48948
+  }
+  trusted_packet_sequence_id: 3903809
+}
+
+# The second track associated with this process. Note how we make the above
+# track the "parent" of this track: this means that this track also is
+# associated to the same process. Note further this shows as the same visual
+# track in the UI but remains separate in the trace and data model. Emitting
+# these events on a separate track is necessary because these events overlap
+# *without* nesting with the above events.
+packet {
+  track_descriptor {
+      uuid: 2390190934                  # 64-bit random number.
+      name: "My special track"
+      parent_uuid: 48948
+  }
+}
+# The events for the second track.
+packet {
+  timestamp: 230
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 2390190934              # Same random number from above.
+    name: "My special parent A"
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 260
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 2390190934
+    name: "My special child"
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 270
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 2390190934
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 295
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 2390190934
+  }
+  trusted_packet_sequence_id: 3903809
+}
+```
+
+## Flows
+NOTE: in the legacy JSON tracing format, this section correspond to s/t/f
+events.
+
+Flows allow connecting any number of slices with arrows. The semantic meaning
+of the arrow varies across different applications but most commonly it is used
+to track work passing between threads or processes: e.g. the UI thread asks a
+background thread to do some work and notify when the result is available.
+
+NOTE: a single flow *cannot* fork ands imply represents a single stream of
+arrows from one slice to the next. See [this](https://source.chromium.org/chromium/chromium/src/+/main:third_party/perfetto/protos/perfetto/trace/perfetto_trace.proto;drc=ba05b783d9c29fe334a02913cf157ea1d415d37c;l=9604) comment for information.
+
+![TrackEvent flows in UI](/docs/images/synthetic-track-event-flow.png)
+
+```
+# The main thread of the process.
+packet {
+  track_descriptor {
+    uuid: 93094
+    thread {
+        pid: 100
+        tid: 100
+        thread_name: "Main thread"
+    }
+  }
+}
+packet {
+  timestamp: 200
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 93094
+    name: "Request generation"
+    flow_ids: 1055895987                  # Random number used to track work
+                                          # across threads/processes.
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 300
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 93094
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 400
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 93094
+    name: "Process background result"
+    flow_ids: 1055895987                  # Same as above.
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 500
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 93094
+  }
+  trusted_packet_sequence_id: 3903809
+}
+
+# The background thread of the process.
+packet {
+  track_descriptor {
+    uuid: 40489498
+    thread {
+      pid: 100
+      tid: 101
+      thread_name: "Background thread"
+    }
+  }
+}
+packet {
+  timestamp: 310
+  track_event {
+    type: TYPE_SLICE_BEGIN
+    track_uuid: 40489498
+    name: "Background work"
+    flow_ids: 1055895987                  # Same as above.
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 385
+  track_event {
+    type: TYPE_SLICE_END
+    track_uuid: 40489498
+  }
+  trusted_packet_sequence_id: 3903809
+}
+```
+
+## Counters
+NOTE: in the legacy JSON tracing format, this section correspond to C events.
+
+Counters are useful to represent continuous values which change with time.
+Common examples include CPU frequency, memory usage, battery charge etc.
+
+![TrackEvent counter in UI](/docs/images/synthetic-track-event-counter.png)
+
+This corresponds to the following protos:
+```
+# Counter track scoped to a process.
+packet {
+  track_descriptor {
+    uuid: 1388
+    process {
+      pid: 1024
+      process_name: "MySpecialProcess"
+    }
+  }
+}
+packet {
+  track_descriptor {
+    uuid: 4489498
+    parent_uuid: 1388
+    name: "My special counter"
+    counter {}
+  }
+}
+packet {
+  timestamp: 200
+  track_event {
+    type: TYPE_COUNTER
+    track_uuid: 4489498
+    counter_value: 34567    # Value at start
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 250
+  track_event {
+    type: TYPE_COUNTER
+    track_uuid: 4489498
+    counter_value: 67890    # Value goes up
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 300
+  track_event {
+    type: TYPE_COUNTER
+    track_uuid: 4489498
+    counter_value: 12345   # Value goes down
+  }
+  trusted_packet_sequence_id: 3903809
+}
+packet {
+  timestamp: 400
+  track_event {
+    type: TYPE_COUNTER
+    track_uuid: 4489498
+    counter_value: 12345   # Final value
+  }
+  trusted_packet_sequence_id: 3903809
+}
+```
diff --git a/docs/toc.md b/docs/toc.md
index 1d37192..bc96bbc 100644
--- a/docs/toc.md
+++ b/docs/toc.md
@@ -67,6 +67,7 @@
   * [Trace Packet proto](reference/trace-packet-proto.autogen)
   * [perfetto cmdline](reference/perfetto-cli.md)
   * [heap_profile cmdline](reference/heap_profile-cli.md)
+  * [Synthetic TrackEvent](reference/synthetic-track-event.md)
 
 * [Contributing](#)
     * [Getting started](contributing/getting-started.md)
diff --git a/docs/tracing-101.md b/docs/tracing-101.md
index 61ea985..ef80452 100644
--- a/docs/tracing-101.md
+++ b/docs/tracing-101.md
@@ -1,9 +1,6 @@
 # Tracing 101
-*This page provides a birds-eye view of performance analysis using Perfetto.
-The aim is for to orient even people who have no idea what "tracing" is. You
-should walk away from this page with a good understanding of the available
-capabilities in Perfetto and how they can be used to improve performance of a
-system.*
+*This page provides a birds-eye view of performance analysis.
+The aim is to orient people who have no idea what "tracing" is.*
 
 ## Introduction to...
 ### Performance
@@ -148,7 +145,7 @@
 systems. It helps identify the changes they can make to improve performance
 and verify the impact of those changes.
 
-NOTE: In Perfetto, since profiles and traces can be collected simultaneously, 
+NOTE: In Perfetto, since profiles and traces can be collected simultaneously,
 we call everything a "trace" even if it may contain (only) profiling data
 inside.
 
diff --git a/examples/sdk/README.md b/examples/sdk/README.md
index e25c308..238d50d 100644
--- a/examples/sdk/README.md
+++ b/examples/sdk/README.md
@@ -15,7 +15,7 @@
 First, check out the latest Perfetto release:
 
 ```bash
-git clone https://android.googlesource.com/platform/external/perfetto -b v29.0
+git clone https://android.googlesource.com/platform/external/perfetto -b v32.1
 ```
 
 Then, build using CMake:
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
index 0130ce7..01f12d0 100644
--- a/gn/BUILD.gn
+++ b/gn/BUILD.gn
@@ -275,13 +275,8 @@
     "GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
   ]
   cflags = []
-  if (is_clang || !is_win) {
-    cflags += [
-      "-Wno-unknown-warning-option",
-      "-Wno-deprecated",
-      "-Wno-undef",
-      "-Wno-zero-as-null-pointer-constant",
-    ]
+  if (!is_clang || !is_win) {
+    cflags += [ "-Wno-deprecated-declarations" ]
   }
   if (is_clang && is_win) {
     cflags += [
diff --git a/gn/perfetto.gni b/gn/perfetto.gni
index 04c07ca..f41e959 100644
--- a/gn/perfetto.gni
+++ b/gn/perfetto.gni
@@ -307,6 +307,11 @@
   # typically handles only itanium mangling.
   enable_perfetto_llvm_demangle =
       enable_perfetto_trace_processor && perfetto_build_standalone
+
+  # Enables gRPC support. This is used as the RPC framework for cloud trace
+  # processor in open source but is disabled by default because of how
+  # heavyweight gRPC is.
+  enable_perfetto_grpc = false
 }
 
 declare_args() {
diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index bd21589..329aa97 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -84,6 +84,7 @@
       "-Wno-reserved-identifier",
       "-Wno-unknown-sanitizers",
       "-Wno-unknown-warning-option",
+      "-Wno-unsafe-buffer-usage",
     ]
   } else if (!is_clang && !is_win) {
     # Use return std::move(...) for compatibility with old GCC compilers.
diff --git a/include/perfetto/base/compiler.h b/include/perfetto/base/compiler.h
index c67e315..bf1b823 100644
--- a/include/perfetto/base/compiler.h
+++ b/include/perfetto/base/compiler.h
@@ -25,6 +25,10 @@
 
 #if __cplusplus >= 201703
 #define PERFETTO_IS_AT_LEAST_CPP17() 1
+#elif defined(_MSVC_LANG) && _MSVC_LANG >= 201703L
+// Without additional flags, MSVC is not standard compliant and keeps
+// __cplusplus stuck at an old value, even with C++17
+#define PERFETTO_IS_AT_LEAST_CPP17() 1
 #else
 #define PERFETTO_IS_AT_LEAST_CPP17() 0
 #endif
diff --git a/include/perfetto/ext/base/circular_queue.h b/include/perfetto/ext/base/circular_queue.h
index d607562..1f69ce5 100644
--- a/include/perfetto/ext/base/circular_queue.h
+++ b/include/perfetto/ext/base/circular_queue.h
@@ -20,6 +20,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 
+#include <cstddef>
 #include <iterator>
 
 #include "perfetto/base/logging.h"
@@ -234,6 +235,16 @@
 
   void clear() { erase_front(size()); }
 
+  void shrink_to_fit() {
+    // We only bother shrinking if we can fit in quarter of the capacity we are
+    // currently using. Moreover, don't bother shrinking below 4096 elements as
+    // that will cause a lot of reallocations for little benefit.
+    if (size() > capacity() / 2 || capacity() <= 4096) {
+      return;
+    }
+    ChangeCapacity(capacity() / 2);
+  }
+
   T& at(size_t idx) {
     PERFETTO_DCHECK(idx < size());
     return *Get(begin_ + idx);
@@ -272,6 +283,13 @@
     // anything other than crash in this case.
     PERFETTO_CHECK(new_capacity > capacity_);
 
+    ChangeCapacity(new_capacity);
+  }
+
+  void ChangeCapacity(size_t new_capacity) {
+    // We should still have enough space to fit all the elements in the queue.
+    PERFETTO_CHECK(new_capacity >= size());
+
     AlignedUniquePtr<T[]> new_vec = AlignedAllocTyped<T[]>(new_capacity);
 
     // Move all elements in the expanded array.
diff --git a/include/perfetto/ext/base/string_view.h b/include/perfetto/ext/base/string_view.h
index 7c48ea0..1fe3696 100644
--- a/include/perfetto/ext/base/string_view.h
+++ b/include/perfetto/ext/base/string_view.h
@@ -127,11 +127,7 @@
       return false;
     if (other.size() > size())
       return false;
-    for (uint32_t i = 0; i < other.size(); ++i) {
-      if (at(i) != other.at(i))
-        return false;
-    }
-    return true;
+    return memcmp(data(), other.data(), other.size()) == 0;
   }
 
   bool EndsWith(const StringView& other) const {
@@ -141,12 +137,8 @@
       return false;
     if (other.size() > size())
       return false;
-    const size_t off = size() - other.size();
-    for (size_t i = 0; i < other.size(); ++i) {
-      if (at(off + i) != other.at(i))
-        return false;
-    }
-    return true;
+    size_t off = size() - other.size();
+    return memcmp(data() + off, other.data(), other.size()) == 0;
   }
 
   std::string ToStdString() const {
diff --git a/include/perfetto/protozero/BUILD.gn b/include/perfetto/protozero/BUILD.gn
index c99f7fd..4c6c08f 100644
--- a/include/perfetto/protozero/BUILD.gn
+++ b/include/perfetto/protozero/BUILD.gn
@@ -20,6 +20,7 @@
     "cpp_message_obj.h",
     "field.h",
     "field_writer.h",
+    "gen_field_helpers.h",
     "message.h",
     "message_arena.h",
     "message_handle.h",
diff --git a/include/perfetto/protozero/gen_field_helpers.h b/include/perfetto/protozero/gen_field_helpers.h
new file mode 100644
index 0000000..ad3dee8
--- /dev/null
+++ b/include/perfetto/protozero/gen_field_helpers.h
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef INCLUDE_PERFETTO_PROTOZERO_GEN_FIELD_HELPERS_H_
+#define INCLUDE_PERFETTO_PROTOZERO_GEN_FIELD_HELPERS_H_
+
+#include "perfetto/protozero/message.h"
+#include "perfetto/protozero/proto_decoder.h"
+#include "perfetto/protozero/proto_utils.h"
+#include "perfetto/protozero/scattered_heap_buffer.h"
+
+namespace protozero {
+namespace internal {
+namespace gen_helpers {
+
+// This file implements some helpers used by the protobuf generated code in the
+// .gen.cc files.
+//
+// The .gen.cc generated protobuf implementation (as opposed to the .pbzero.h
+// implementation) is not zero-copy and is not supposed to be used in fast
+// paths, so most of these helpers are designed to reduce binary size.
+
+void DeserializeString(const protozero::Field& field, std::string* dst);
+
+// Read packed repeated elements (serialized as `wire_type`) from `field` into
+// the `*dst` vector. Returns false if some bytes of `field` could not be
+// interpreted correctly as `wire_type`.
+template <proto_utils::ProtoWireType wire_type, typename CppType>
+bool DeserializePackedRepeated(const protozero::Field& field,
+                               std::vector<CppType>* dst) {
+  bool parse_error = false;
+  for (::protozero::PackedRepeatedFieldIterator<wire_type, CppType> rep(
+           field.data(), field.size(), &parse_error);
+       rep; ++rep) {
+    dst->emplace_back(*rep);
+  }
+  return !parse_error;
+}
+
+extern template bool
+DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt, uint64_t>(
+    const protozero::Field& field,
+    std::vector<uint64_t>* dst);
+
+extern template bool
+DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt, int64_t>(
+    const protozero::Field& field,
+    std::vector<int64_t>* dst);
+
+extern template bool
+DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt, uint32_t>(
+    const protozero::Field& field,
+    std::vector<uint32_t>* dst);
+
+extern template bool
+DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt, int32_t>(
+    const protozero::Field& field,
+    std::vector<int32_t>* dst);
+
+// Serializers for different type of fields
+
+void SerializeTinyVarInt(uint32_t field_id, bool value, Message* msg);
+
+template <typename T>
+void SerializeExtendedVarInt(uint32_t field_id, T value, Message* msg) {
+  msg->AppendVarInt(field_id, value);
+}
+
+extern template void SerializeExtendedVarInt<uint64_t>(uint32_t field_id,
+                                                       uint64_t value,
+                                                       Message* msg);
+
+extern template void SerializeExtendedVarInt<uint32_t>(uint32_t field_id,
+                                                       uint32_t value,
+                                                       Message* msg);
+
+template <typename T>
+void SerializeVarInt(uint32_t field_id, T value, Message* msg) {
+  SerializeExtendedVarInt(
+      field_id, proto_utils::ExtendValueForVarIntSerialization(value), msg);
+}
+
+template <typename T>
+void SerializeSignedVarInt(uint32_t field_id, T value, Message* msg) {
+  SerializeVarInt(field_id, proto_utils::ZigZagEncode(value), msg);
+}
+
+template <typename T>
+void SerializeFixed(uint32_t field_id, T value, Message* msg) {
+  msg->AppendFixed(field_id, value);
+}
+
+extern template void SerializeFixed<double>(uint32_t field_id,
+                                            double value,
+                                            Message* msg);
+
+extern template void SerializeFixed<float>(uint32_t field_id,
+                                           float value,
+                                           Message* msg);
+
+extern template void SerializeFixed<uint64_t>(uint32_t field_id,
+                                              uint64_t value,
+                                              Message* msg);
+
+extern template void SerializeFixed<int64_t>(uint32_t field_id,
+                                             int64_t value,
+                                             Message* msg);
+
+extern template void SerializeFixed<uint32_t>(uint32_t field_id,
+                                              uint32_t value,
+                                              Message* msg);
+
+extern template void SerializeFixed<int32_t>(uint32_t field_id,
+                                             int32_t value,
+                                             Message* msg);
+
+void SerializeString(uint32_t field_id, const std::string& value, Message* msg);
+
+void SerializeUnknownFields(const std::string& unknown_fields, Message* msg);
+
+// Wrapper around HeapBuffered that avoids inlining.
+class MessageSerializer {
+ public:
+  MessageSerializer();
+  ~MessageSerializer();
+
+  Message* get() { return msg_.get(); }
+  std::vector<uint8_t> SerializeAsArray();
+  std::string SerializeAsString();
+
+ private:
+  HeapBuffered<Message> msg_;
+};
+
+}  // namespace gen_helpers
+}  // namespace internal
+}  // namespace protozero
+
+#endif  // INCLUDE_PERFETTO_PROTOZERO_GEN_FIELD_HELPERS_H_
diff --git a/include/perfetto/protozero/proto_utils.h b/include/perfetto/protozero/proto_utils.h
index eafd6ce..2896b3d 100644
--- a/include/perfetto/protozero/proto_utils.h
+++ b/include/perfetto/protozero/proto_utils.h
@@ -178,7 +178,9 @@
 }
 
 template <typename T>
-inline uint8_t* WriteVarInt(T value, uint8_t* target) {
+auto ExtendValueForVarIntSerialization(T value) -> typename std::make_unsigned<
+    typename std::conditional<std::is_unsigned<T>::value, T, int64_t>::type>::
+    type {
   // If value is <= 0 we must first sign extend to int64_t (see [1]).
   // Finally we always cast to an unsigned value to to avoid arithmetic
   // (sign expanding) shifts in the while loop.
@@ -198,6 +200,13 @@
   MaybeExtendedType extended_value = static_cast<MaybeExtendedType>(value);
   UnsignedType unsigned_value = static_cast<UnsignedType>(extended_value);
 
+  return unsigned_value;
+}
+
+template <typename T>
+inline uint8_t* WriteVarInt(T value, uint8_t* target) {
+  auto unsigned_value = ExtendValueForVarIntSerialization(value);
+
   while (unsigned_value >= 0x80) {
     *target++ = static_cast<uint8_t>(unsigned_value) | 0x80;
     unsigned_value >>= 7;
diff --git a/include/perfetto/trace_processor/ref_counted.h b/include/perfetto/trace_processor/ref_counted.h
index 4eb27c9..02996f0 100644
--- a/include/perfetto/trace_processor/ref_counted.h
+++ b/include/perfetto/trace_processor/ref_counted.h
@@ -88,6 +88,23 @@
   // This case is really the move-assignment operator=(&&).
   void reset(T* new_obj) { *this = RefPtr<T>(new_obj); }
 
+  // Releases the pointer owned by this RefPtr *without* decrementing the
+  // refcount. Callers *must* call |FromReleasedUnsafe| at a later date with
+  // this pointer to avoid memory leaks.
+  T* ReleaseUnsafe() {
+    auto* old_ptr = ptr_;
+    ptr_ = nullptr;
+    return old_ptr;
+  }
+
+  // Creates a RefPtr from a pointer returned by |ReleaseUnsafe|. Passing a
+  // pointer from any other source results in undefined behaviour.
+  static RefPtr<T> FromReleasedUnsafe(T* ptr) {
+    RefPtr<T> res;
+    res.ptr_ = ptr;
+    return res;
+  }
+
   // Move operators.
   RefPtr(RefPtr&& move_from) noexcept {
     ptr_ = move_from.ptr_;
diff --git a/include/perfetto/tracing.h b/include/perfetto/tracing.h
index c542741..8769cb3 100644
--- a/include/perfetto/tracing.h
+++ b/include/perfetto/tracing.h
@@ -23,6 +23,7 @@
 // The only exception to this should be large projects where build time is a
 // concern (e.g. chromium), which migh prefer sticking to strict IWYU.
 
+#include "perfetto/base/time.h"
 #include "perfetto/tracing/buffer_exhausted_policy.h"
 #include "perfetto/tracing/console_interceptor.h"
 #include "perfetto/tracing/core/data_source_config.h"
diff --git a/include/perfetto/tracing/data_source.h b/include/perfetto/tracing/data_source.h
index 5065c5b..7206776 100644
--- a/include/perfetto/tracing/data_source.h
+++ b/include/perfetto/tracing/data_source.h
@@ -56,8 +56,14 @@
 // should be made visible outside the current module. (e.g., in Chrome's
 // component build).
 #if !defined(PERFETTO_COMPONENT_EXPORT)
+#if PERFETTO_BUILDFLAG(PERFETTO_COMPILER_MSVC)
+// Workaround for C4003: not enough arguments for function-like macro invocation
+// 'PERFETTO_INTERNAL_DECLARE_TRACK_EVENT_DATA_SOURCE'
+#define PERFETTO_COMPONENT_EXPORT __declspec()
+#else
 #define PERFETTO_COMPONENT_EXPORT
 #endif
+#endif
 
 namespace perfetto {
 namespace internal {
@@ -368,9 +374,24 @@
     constexpr auto kMaxDataSourceInstances = internal::kMaxDataSourceInstances;
 
     // See tracing_muxer.h for the structure of the TLS.
-    auto* tracing_impl = internal::TracingMuxer::Get();
-    if (PERFETTO_UNLIKELY(!tls_state_))
+    if (PERFETTO_UNLIKELY(!tls_state_)) {
+      // If the TLS hasn't been obtained yet, it's possible that this thread
+      // hasn't observed the initialization of global state like the muxer yet.
+      // To ensure that the thread "sees" the effects of such initialization,
+      // we have to reload |instances| with an acquire fence, ensuring that any
+      // initialization performed before instances was updated is visible
+      // in this thread.
+      instances &= Traits::GetActiveInstances(trace_point_data)
+                       ->load(std::memory_order_acquire);
+      if (!instances)
+        return;
       tls_state_ = GetOrCreateDataSourceTLS(&static_state_);
+    }
+
+    // |tls_state_| is valid, which means that the current thread must have
+    // observed the initialization of the muxer, and obtaining it without a
+    // fence is safe.
+    auto* tracing_impl = internal::TracingMuxer::Get();
 
     // Avoid re-entering the trace point recursively.
     if (PERFETTO_UNLIKELY(tls_state_->root_tls->is_in_trace_point))
@@ -435,10 +456,11 @@
         // Here we need an acquire barrier, which matches the release-store made
         // by TracingMuxerImpl::SetupDataSource(), to ensure that the backend_id
         // and buffer_id are consistent.
-        instances = Traits::GetActiveInstances(trace_point_data)
-                        ->load(std::memory_order_acquire);
+        instances &= Traits::GetActiveInstances(trace_point_data)
+                         ->load(std::memory_order_acquire);
         instance_state = static_state_.TryGetCached(instances, i);
-        if (!instance_state || !instance_state->trace_lambda_enabled)
+        if (!instance_state || !instance_state->trace_lambda_enabled.load(
+                                   std::memory_order_relaxed))
           continue;
         tls_inst.muxer_id_for_testing = instance_state->muxer_id_for_testing;
         tls_inst.backend_id = instance_state->backend_id;
diff --git a/include/perfetto/tracing/internal/data_source_internal.h b/include/perfetto/tracing/internal/data_source_internal.h
index 9d9c6a2..8cfe5e6 100644
--- a/include/perfetto/tracing/internal/data_source_internal.h
+++ b/include/perfetto/tracing/internal/data_source_internal.h
@@ -59,7 +59,7 @@
   // Keep this flag as the first field. This allows the compiler to directly
   // dereference the DataSourceState* pointer in the trace fast-path without
   // doing extra pointr arithmetic.
-  bool trace_lambda_enabled = false;
+  std::atomic<bool> trace_lambda_enabled = false;
 
   // The overall TracingMuxerImpl instance id, which gets incremented by
   // ResetForTesting.
diff --git a/include/perfetto/tracing/track_event.h b/include/perfetto/tracing/track_event.h
index 2651927..7366b85 100644
--- a/include/perfetto/tracing/track_event.h
+++ b/include/perfetto/tracing/track_event.h
@@ -17,7 +17,6 @@
 #ifndef INCLUDE_PERFETTO_TRACING_TRACK_EVENT_H_
 #define INCLUDE_PERFETTO_TRACING_TRACK_EVENT_H_
 
-#include "perfetto/base/time.h"
 #include "perfetto/tracing/internal/track_event_data_source.h"
 #include "perfetto/tracing/internal/track_event_internal.h"
 #include "perfetto/tracing/internal/track_event_macros.h"
diff --git a/protos/perfetto/metrics/android/android_frame_timeline_metric.proto b/protos/perfetto/metrics/android/android_frame_timeline_metric.proto
index d6be2ec..d0f4d50 100644
--- a/protos/perfetto/metrics/android/android_frame_timeline_metric.proto
+++ b/protos/perfetto/metrics/android/android_frame_timeline_metric.proto
@@ -35,6 +35,10 @@
     optional int64 frame_dur_p90 = 11;
     optional int64 frame_dur_p95 = 12;
     optional int64 frame_dur_p99 = 13;
+    optional double frame_dur_ms_p50 = 14;
+    optional double frame_dur_ms_p90 = 15;
+    optional double frame_dur_ms_p95 = 16;
+    optional double frame_dur_ms_p99 = 17;
 
     reserved 1, 2;
   }
diff --git a/protos/perfetto/metrics/android/binder_metric.proto b/protos/perfetto/metrics/android/binder_metric.proto
index f60d022..feb478b 100644
--- a/protos/perfetto/metrics/android/binder_metric.proto
+++ b/protos/perfetto/metrics/android/binder_metric.proto
@@ -18,8 +18,12 @@
 
 package perfetto.protos;
 
-// This metric provides per-process Binder statistics for traces with binder_driver enabled
-// Specifically, transactions are categorized and counted
+// This metric provides the following:
+// 1. Per-process Binder statistics for traces with binder_driver enabled.
+//    Specifically, transactions are categorized and counted
+// 2. Unaggregated binder txn durations with per-txn aggregated thread state and
+// blocked function
+//    durations
 message AndroidBinderMetric {
   message PerProcessBreakdown {
     optional string process_name = 1;
@@ -28,5 +32,41 @@
     optional uint32 count = 4;
   }
 
+  message UnaggregatedTxnBreakdown {
+    // General
+    optional string aidl_name = 1;
+    // Client
+    optional uint32 binder_txn_id = 2;
+    optional string client_process = 3;
+    optional string client_thread = 4;
+    optional bool is_main_thread = 5;
+    optional int64 client_ts = 6;
+    optional int64 client_dur = 7;
+    // Server
+    optional uint32 binder_reply_id = 8;
+    optional string server_process = 9;
+    optional string server_thread = 10;
+    optional int64 server_ts = 11;
+    optional int64 server_dur = 12;
+    // Aggregations
+    repeated ThreadStateBreakdown thread_states = 13;
+    repeated BlockedFunctionBreakdown blocked_functions = 14;
+  }
+
+  message ThreadStateBreakdown {
+    optional string thread_state_type = 1;
+    optional string thread_state = 2;
+    optional int64 thread_state_dur = 3;
+    optional int64 thread_state_count = 4;
+  }
+
+  message BlockedFunctionBreakdown {
+    optional string thread_state_type = 1;
+    optional string blocked_function = 2;
+    optional int64 blocked_function_dur = 3;
+    optional int64 blocked_function_count = 4;
+  }
+
   repeated PerProcessBreakdown process_breakdown = 1;
-}
\ No newline at end of file
+  repeated UnaggregatedTxnBreakdown unaggregated_txn_breakdown = 2;
+}
diff --git a/protos/perfetto/metrics/android/jank_cuj_metric.proto b/protos/perfetto/metrics/android/jank_cuj_metric.proto
index a2bb50d..10bb9a7 100644
--- a/protos/perfetto/metrics/android/jank_cuj_metric.proto
+++ b/protos/perfetto/metrics/android/jank_cuj_metric.proto
@@ -78,7 +78,7 @@
     optional bool sf_missed = 6;
   }
 
-  // Next id: 12
+  // Next id: 16
   message Metrics {
     // Overall number of frames within the CUJ.
     optional int64 total_frames = 1;
@@ -96,28 +96,43 @@
     // Not available in timeline_metrics and trace_metrics.
     optional int64 missed_frames_max_successive = 5;
 
-    // Max frame duration.
-    // Not available in counter_metrics.
+    // Max frame duration in nanoseconds.
     optional int64 frame_dur_max = 6;
 
-    // Average frame duration.
+    // Average frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_avg = 7;
 
-    // Median frame duration.
+    // Median frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p50 = 8;
 
-    // P90 frame duration.
+    // P90 frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p90 = 9;
 
-    // P95 frame duration.
+    // P95 frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p95 = 10;
 
-    // P99 frame duration.
+    // P99 frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p99 = 11;
+
+    // Median frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p50 = 12;
+
+    // P90 frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p90 = 13;
+
+    // P95 frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p95 = 14;
+
+    // P99 frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p99 = 15;
   }
 }
diff --git a/protos/perfetto/metrics/perfetto_merged_metrics.proto b/protos/perfetto/metrics/perfetto_merged_metrics.proto
index d4507af..4db6c88 100644
--- a/protos/perfetto/metrics/perfetto_merged_metrics.proto
+++ b/protos/perfetto/metrics/perfetto_merged_metrics.proto
@@ -64,6 +64,10 @@
     optional int64 frame_dur_p90 = 11;
     optional int64 frame_dur_p95 = 12;
     optional int64 frame_dur_p99 = 13;
+    optional double frame_dur_ms_p50 = 14;
+    optional double frame_dur_ms_p90 = 15;
+    optional double frame_dur_ms_p95 = 16;
+    optional double frame_dur_ms_p99 = 17;
 
     reserved 1, 2;
   }
@@ -133,8 +137,12 @@
 
 // Begin of protos/perfetto/metrics/android/binder_metric.proto
 
-// This metric provides per-process Binder statistics for traces with binder_driver enabled
-// Specifically, transactions are categorized and counted
+// This metric provides the following:
+// 1. Per-process Binder statistics for traces with binder_driver enabled.
+//    Specifically, transactions are categorized and counted
+// 2. Unaggregated binder txn durations with per-txn aggregated thread state and
+// blocked function
+//    durations
 message AndroidBinderMetric {
   message PerProcessBreakdown {
     optional string process_name = 1;
@@ -143,8 +151,45 @@
     optional uint32 count = 4;
   }
 
+  message UnaggregatedTxnBreakdown {
+    // General
+    optional string aidl_name = 1;
+    // Client
+    optional uint32 binder_txn_id = 2;
+    optional string client_process = 3;
+    optional string client_thread = 4;
+    optional bool is_main_thread = 5;
+    optional int64 client_ts = 6;
+    optional int64 client_dur = 7;
+    // Server
+    optional uint32 binder_reply_id = 8;
+    optional string server_process = 9;
+    optional string server_thread = 10;
+    optional int64 server_ts = 11;
+    optional int64 server_dur = 12;
+    // Aggregations
+    repeated ThreadStateBreakdown thread_states = 13;
+    repeated BlockedFunctionBreakdown blocked_functions = 14;
+  }
+
+  message ThreadStateBreakdown {
+    optional string thread_state_type = 1;
+    optional string thread_state = 2;
+    optional int64 thread_state_dur = 3;
+    optional int64 thread_state_count = 4;
+  }
+
+  message BlockedFunctionBreakdown {
+    optional string thread_state_type = 1;
+    optional string blocked_function = 2;
+    optional int64 blocked_function_dur = 3;
+    optional int64 blocked_function_count = 4;
+  }
+
   repeated PerProcessBreakdown process_breakdown = 1;
+  repeated UnaggregatedTxnBreakdown unaggregated_txn_breakdown = 2;
 }
+
 // End of protos/perfetto/metrics/android/binder_metric.proto
 
 // Begin of protos/perfetto/metrics/android/camera_metric.proto
@@ -744,7 +789,7 @@
     optional bool sf_missed = 6;
   }
 
-  // Next id: 12
+  // Next id: 16
   message Metrics {
     // Overall number of frames within the CUJ.
     optional int64 total_frames = 1;
@@ -762,29 +807,44 @@
     // Not available in timeline_metrics and trace_metrics.
     optional int64 missed_frames_max_successive = 5;
 
-    // Max frame duration.
-    // Not available in counter_metrics.
+    // Max frame duration in nanoseconds.
     optional int64 frame_dur_max = 6;
 
-    // Average frame duration.
+    // Average frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_avg = 7;
 
-    // Median frame duration.
+    // Median frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p50 = 8;
 
-    // P90 frame duration.
+    // P90 frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p90 = 9;
 
-    // P95 frame duration.
+    // P95 frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p95 = 10;
 
-    // P99 frame duration.
+    // P99 frame duration in nanoseconds.
     // Not available in counter_metrics.
     optional int64 frame_dur_p99 = 11;
+
+    // Median frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p50 = 12;
+
+    // P90 frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p90 = 13;
+
+    // P95 frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p95 = 14;
+
+    // P99 frame duration in milliseconds.
+    // Not available in counter_metrics.
+    optional double frame_dur_ms_p99 = 15;
   }
 }
 
diff --git a/protos/perfetto/trace/chrome/chrome_metadata.proto b/protos/perfetto/trace/chrome/chrome_metadata.proto
index 8882593..d2c46e4 100644
--- a/protos/perfetto/trace/chrome/chrome_metadata.proto
+++ b/protos/perfetto/trace/chrome/chrome_metadata.proto
@@ -85,4 +85,7 @@
 
   // List of all active triggers in current session, when trace was triggered.
   repeated TriggerRule active_rules = 2;
+
+  // Hash of the scenario name.
+  optional fixed32 scenario_name_hash = 3;
 }
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 5f3473a..a215592 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -3823,6 +3823,9 @@
 
   // List of all active triggers in current session, when trace was triggered.
   repeated TriggerRule active_rules = 2;
+
+  // Hash of the scenario name.
+  optional fixed32 scenario_name_hash = 3;
 }
 
 // End of protos/perfetto/trace/chrome/chrome_metadata.proto
diff --git a/protos/third_party/chromium/chrome_track_event.proto b/protos/third_party/chromium/chrome_track_event.proto
index fb35740..911dbe0 100644
--- a/protos/third_party/chromium/chrome_track_event.proto
+++ b/protos/third_party/chromium/chrome_track_event.proto
@@ -728,6 +728,7 @@
     TASK_TYPE_INTERNAL_POST_MESSAGE_FORWARDING = 79;
     TASK_TYPE_INTERNAL_NAVIGATION_CANCELLATION = 80;
     TASK_TYPE_LOW_PRIORITY_SCRIPT_EXECUTION = 81;
+    TASK_TYPE_STORAGE = 82;
   }
 
   enum FrameType {
diff --git a/python/generators/diff_tests/runner.py b/python/generators/diff_tests/runner.py
index dab06d1..c6eb14e 100644
--- a/python/generators/diff_tests/runner.py
+++ b/python/generators/diff_tests/runner.py
@@ -21,7 +21,7 @@
 import sys
 import tempfile
 from dataclasses import dataclass
-from typing import Dict, List, Tuple
+from typing import List, Tuple, Optional
 
 from google.protobuf import text_format
 from python.generators.diff_tests.testing import TestCase, TestType
@@ -63,7 +63,7 @@
   passed: bool
   stderr: str
   exit_code: int
-  perf_result: PerfResult
+  perf_result: Optional[PerfResult]
 
   def __init__(self, test: TestCase, gen_trace_path: str, cmd: List[str],
                expected_text: str, actual_text: str, stderr: str,
@@ -88,7 +88,10 @@
     actual_content = self.actual.replace('\r\n', '\n')
     self.passed = (expected_content == actual_content)
 
-    self.perf_result = PerfResult(self.test, perf_lines)
+    if self.exit_code == 0:
+      self.perf_result = PerfResult(self.test, perf_lines)
+    else:
+      self.perf_result = None
 
   def write_diff(self):
     expected_lines = self.expected.splitlines(True)
diff --git a/python/generators/diff_tests/testing.py b/python/generators/diff_tests/testing.py
index 81e4dcf..aeef2b0 100644
--- a/python/generators/diff_tests/testing.py
+++ b/python/generators/diff_tests/testing.py
@@ -16,7 +16,7 @@
 import inspect
 import os
 from dataclasses import dataclass
-from typing import Dict, List, Union
+from typing import List, Union
 from enum import Enum
 import re
 
@@ -29,6 +29,11 @@
 
 
 @dataclass
+class DataPath(Path):
+  filename: str
+
+
+@dataclass
 class Metric:
   name: str
 
@@ -64,9 +69,9 @@
 @dataclass
 class DiffTestBlueprint:
 
-  trace: Union[Path, Json, Systrace, TextProto]
-  query: Union[str, Path, Metric]
-  out: Union[Path, Json, Csv, TextProto]
+  trace: Union[Path, DataPath, Json, Systrace, TextProto]
+  query: Union[str, Path, DataPath, Metric]
+  out: Union[Path, DataPath, Json, Csv, TextProto]
 
   def is_trace_file(self):
     return isinstance(self.trace, Path)
@@ -105,39 +110,66 @@
 # script.
 class TestCase:
 
+  def __get_query_path(self) -> str:
+    if not self.blueprint.is_query_file():
+      return None
+
+    if isinstance(self.blueprint.query, DataPath):
+      path = os.path.join(self.test_dir, 'data', self.blueprint.query.filename)
+    else:
+      path = os.path.abspath(
+          os.path.join(self.index_dir, self.blueprint.query.filename))
+
+    if not os.path.exists(path):
+      raise AssertionError(
+          f"Query file ({path}) for test '{self.name}' does not exist.")
+    return path
+
+  def __get_trace_path(self) -> str:
+    if not self.blueprint.is_trace_file():
+      return None
+
+    if isinstance(self.blueprint.trace, DataPath):
+      path = os.path.join(self.test_dir, 'data', self.blueprint.trace.filename)
+    else:
+      path = os.path.abspath(
+          os.path.join(self.index_dir, self.blueprint.trace.filename))
+
+    if not os.path.exists(path):
+      raise AssertionError(
+          f"Trace file ({path}) for test '{self.name}' does not exist.")
+    return path
+
+  def __get_out_path(self) -> str:
+    if not self.blueprint.is_out_file():
+      return None
+
+    if isinstance(self.blueprint.out, DataPath):
+      path = os.path.join(self.test_dir, 'data', self.blueprint.out.filename)
+    else:
+      path = os.path.abspath(
+          os.path.join(self.index_dir, self.blueprint.out.filename))
+
+    if not os.path.exists(path):
+      raise AssertionError(
+          f"Out file ({path}) for test '{self.name}' does not exist.")
+    return path
+
   def __init__(self, name: str, blueprint: DiffTestBlueprint,
                index_dir: str) -> None:
     self.name = name
     self.blueprint = blueprint
+    self.index_dir = index_dir
+    self.test_dir = os.path.dirname(os.path.dirname(os.path.dirname(index_dir)))
 
     if blueprint.is_metric():
       self.type = TestType.METRIC
     else:
       self.type = TestType.QUERY
 
-    if blueprint.is_query_file():
-      self.query_path = os.path.abspath(
-          os.path.join(index_dir, blueprint.query.filename))
-      if not os.path.exists(self.query_path):
-        raise AssertionError(f"Query file for {self.name} does not exist.")
-    else:
-      self.query_path = None
-
-    if blueprint.is_trace_file():
-      self.trace_path = os.path.abspath(
-          os.path.join(index_dir, blueprint.trace.filename))
-      if not os.path.exists(self.trace_path):
-        raise AssertionError(f"Trace file for {self.name} does not exist.")
-    else:
-      self.trace_path = None
-
-    if blueprint.is_out_file():
-      self.expected_path = os.path.abspath(
-          os.path.join(index_dir, blueprint.out.filename))
-      if not os.path.exists(self.expected_path):
-        raise AssertionError(f"Out file for {self.name} does not exist.")
-    else:
-      self.expected_path = None
+    self.query_path = self.__get_query_path()
+    self.trace_path = self.__get_trace_path()
+    self.expected_path = self.__get_out_path()
 
   # Verifies that the test should be in test suite. If False, test will not be
   # executed.
@@ -149,7 +181,7 @@
 # Virtual class responsible for fetching diff tests.
 # All functions with name starting with `test_` have to return
 # DiffTestBlueprint and function name is a test name. All DiffTestModules have
-# to be included in `test/trace_processor/include_index.py`.
+# to be included in `test/diff_tests/trace_processor/include_index.py`.
 # `fetch_diff_test` function should not be overwritten.
 class TestSuite:
 
diff --git a/python/generators/diff_tests/utils.py b/python/generators/diff_tests/utils.py
index 9f88555..cb447fd 100644
--- a/python/generators/diff_tests/utils.py
+++ b/python/generators/diff_tests/utils.py
@@ -151,7 +151,7 @@
 
 def read_all_tests(name_filter: str, root_dir: str) -> List[testing.TestCase]:
   # Import
-  INCLUDE_PATH = os.path.join(root_dir, 'test', 'trace_processor')
+  INCLUDE_PATH = os.path.join(root_dir, 'test', 'trace_processor', 'diff_tests')
   sys.path.append(INCLUDE_PATH)
   from include_index import fetch_all_diff_tests
   sys.path.pop()
diff --git a/python/perfetto/prebuilts/manifests/trace_processor_shell.py b/python/perfetto/prebuilts/manifests/trace_processor_shell.py
index 8510090..1ea60ef 100755
--- a/python/perfetto/prebuilts/manifests/trace_processor_shell.py
+++ b/python/perfetto/prebuilts/manifests/trace_processor_shell.py
@@ -1,15 +1,15 @@
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACE_PROCESSOR_SHELL_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8516960,
+        8566376,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/trace_processor_shell',
     'sha256':
-        'e15e409929d3c140ce82f69ad3f0b0634a4d9b765a1a61f03d8ff29d87cb8f7f',
+        'e918db13f3068de751bacd15fb8b3ff920cc6290508512e820186eed0150731b',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -19,11 +19,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        7270264,
+        7286792,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/trace_processor_shell',
     'sha256':
-        'd500226e1d53c3e8db4f29f44df463139f8fbc81ba2364934f6a69e76d9d065d',
+        'e98902c678b642773e867b9308e041ef9c37d07199077c4903e586ddb3ac6b7c',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -33,11 +33,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8944032,
+        8976816,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/trace_processor_shell',
     'sha256':
-        '5a2303c36e852f044962c502b9e24d1f5ffb468f25c4672cbe8e5dd9c345906c',
+        'da6a99374f04cc10fd19dd5247a5d6ea9a0e6572a12b6f77de5c64827bc7c98c',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -47,11 +47,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        7110964,
+        7109580,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/trace_processor_shell',
     'sha256':
-        '4646a44ccab1f28c29c045edda338ebbde2880d5431cc151a6003daf8efe8ddb',
+        'd996276bb125c2d95b677e0c3326f8822947f9d2bedcdfec82581da36c50fa90',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -61,11 +61,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8380416,
+        8395080,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/trace_processor_shell',
     'sha256':
-        '130c60bebbbb338d8e9c250a5fbd526296d4cab49af08680fef5134cb6831130',
+        'cd9d4dec964223549eb3e6580e1d4f72aa0dd8467ad0da22fcdf8b6c6b39ff34',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -75,55 +75,55 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        5807408,
+        5807400,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/trace_processor_shell',
     'sha256':
-        '5d13bc0d37f3379a6fd0d66d8f98c36ec8bf80c133b7660ae8b7cbcfe41284f4'
+        'a691c3b8c4f62dc73bd9e0538e812abe6b340b0ab7c8516d3395d7d726725305'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        7458752,
+        7471024,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/trace_processor_shell',
     'sha256':
-        '3e038732d0ee77875e6376ddf0f804271c4e5337b76977e939c91a553621587a'
+        'a2269b32897bc7c16426b0af6f213994b67df439386b5acd19fe67da56e574ad'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8404228,
+        8400124,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/trace_processor_shell',
     'sha256':
-        '1a04a4d888dfa16a5baa36073df50f28ea9f5ed688fb59fe8ef24a9f3341ad77'
+        'd4d999cd23b3fb3d288227bbb6c42ebed9ea664efda65c03bf1b3d527126517e'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8744960,
+        8757232,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/trace_processor_shell',
     'sha256':
-        '45fe2744b60baac964c636304b4b83853405f7f4f7329b2764cf921d3d90a2b1'
+        '5ac30fa1e290a5d6a5f1ae648d0d2e42ebc4abd6be3594a9f8aa843841e26593'
 }, {
     'arch':
         'windows-amd64',
     'file_name':
         'trace_processor_shell.exe',
     'file_size':
-        8152064,
+        8189952,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/windows-amd64/trace_processor_shell.exe',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/windows-amd64/trace_processor_shell.exe',
     'sha256':
-        '6d5e873b65ea68ec5ddf51a02a049f350e9da4f5f78cc7294d0bbf95f7673ea9',
+        'f11b220447ecf9a7b6f4394443c915f1dea92a2316b3c35da823e6e42dfacd9d',
     'platform':
         'win32',
     'machine': ['amd64']
diff --git a/python/perfetto/prebuilts/manifests/tracebox.py b/python/perfetto/prebuilts/manifests/tracebox.py
index 50a74de..9c707a5 100755
--- a/python/perfetto/prebuilts/manifests/tracebox.py
+++ b/python/perfetto/prebuilts/manifests/tracebox.py
@@ -1,15 +1,15 @@
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACEBOX_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'tracebox',
     'file_size':
-        1431944,
+        1464912,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/tracebox',
     'sha256':
-        '9ba2bd56eac2464060158fc6a972709663102fd79e210036558a79e0450a39a7',
+        '453523bcbdde071447192afbd30bb3479bf7b5a6c82759eedad7228760ba91de',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -19,11 +19,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        1325592,
+        1358808,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/tracebox',
     'sha256':
-        '2bc59074dc169bd3ca0b58fc8e6536b5a8d35f99ef6d44ce467719b888f5f65e',
+        '2b843df989889e728a002f9829b18d1ce3ce5a7bb4b267ee3ea108f1d67606ad',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -33,11 +33,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        2140080,
+        2176672,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/tracebox',
     'sha256':
-        'ee12c839586f19d024c6de78825b416fcb7d9a6d4fe6e9266e239812ec63e188',
+        '8ecb2d40b77d846f8d849913ddf5c6629d67a55c4891984d4cd236822d3655a8',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -47,11 +47,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        1286400,
+        1306960,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/tracebox',
     'sha256':
-        'e4b76213b71d192a6155f576ccf265b9f2605090eff01444216fa49e3f06c40c',
+        '023c81e41ea8d7548f2e749bbbaaf4d19036d719d66033036a54aa0c2b14f8d4',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -61,11 +61,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        2070760,
+        2105360,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/tracebox',
     'sha256':
-        '653469e497c7f021c51220b2b3f0a70efce35dcb4ca897bbf09e24a89af92aea',
+        '1ae9264b304a6336dcdaa938c7eb0aeffd3689149fcd1e10ac67c6d995c8e54f',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -75,42 +75,42 @@
     'file_name':
         'tracebox',
     'file_size':
-        1157076,
+        1181652,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/tracebox',
     'sha256':
-        '6f610486d0ee1d052a21d6c16491a2c373634bbfa5374fed01026eb2767c05f7'
+        'f7704023112300f74d351cc62c5c3d1fa386e749013b8cdf74678dfd9731c066'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'tracebox',
     'file_size':
-        1768104,
+        1800872,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/tracebox',
     'sha256':
-        'b30ca03fa0cb1261386b5d6b01161c275bf68026e894bf5d74781abf8f78acef'
+        '18ae4f02caac24282111dc605d287f29470c2af5f93e49fdb7ca9fe1282b392a'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'tracebox',
     'file_size':
-        1755052,
+        1787820,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/tracebox',
     'sha256':
-        '781ed489fe91aad98fc72f9d0faf69c62323feaac8ae0ce813fbfe0274789144'
+        '50a00e310e16f087b508ef96ff2ca0f6c49b90190ec07fa68953203419507ced'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'tracebox',
     'file_size':
-        2038440,
+        2071208,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/tracebox',
     'sha256':
-        'e58167092e4ec060efc152ace675175f04af57c564ec2ca38704fa65af8a7b25'
+        '84d6c3996dfe0728d4a8df974fd17ccee08aea91edd46724914e45ba6f1b95bd'
 }]
diff --git a/python/perfetto/prebuilts/manifests/traceconv.py b/python/perfetto/prebuilts/manifests/traceconv.py
index e17cd91..c2cf45a 100755
--- a/python/perfetto/prebuilts/manifests/traceconv.py
+++ b/python/perfetto/prebuilts/manifests/traceconv.py
@@ -1,15 +1,15 @@
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACECONV_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'traceconv',
     'file_size':
-        7772872,
+        7805800,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/traceconv',
     'sha256':
-        'a987cfd2e722994a5911032d046ec2d0b912845a83b093226c3fccd5e316ed01',
+        '0ea0a025cedab2b6cfe605f127daa2a12c98f051f9314c9ab8a59c55306b36c2',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -19,11 +19,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6554552,
+        6587480,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/traceconv',
     'sha256':
-        '972610d249990d4b03de50bece4a7adf03ebd6b3cc3c2c10feb7bb6561c1fce1',
+        '85bb771be931fe90c9da122f412efb884ff8bd2bd2eaa3f083c2c6ea5dd9205a',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -33,11 +33,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        8073432,
+        8100352,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/traceconv',
     'sha256':
-        'e34f6ddd91ad0de62bfbef76303f2a94136470fe5a4f679af2f5b8898548ac13',
+        'c201fe1c30a00c0e7a1eac169ab91f05d6468a485b0791db3c439888e9334fde',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -47,11 +47,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6677612,
+        6674592,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/traceconv',
     'sha256':
-        '55c9cd6e5c5bc65210068a173b0c16ad3323faaba0fccec20247dca5bd3b913d',
+        '5a0bc650e39a289b2051a55ac3e7e2c05cb56f053e2b8dc31bb183e75892be28',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -61,11 +61,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        7543648,
+        7554976,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/traceconv',
     'sha256':
-        '2477857470f613410f6151acb06b6b6a067ef8612d619eee86dd2a3b8aac2a3e',
+        'f2a3d4c3a7e6af760a4a03fe70e6c32479260bd6487f4b89d49412231c42e197',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -75,55 +75,55 @@
     'file_name':
         'traceconv',
     'file_size':
-        5360020,
+        5355916,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/traceconv',
     'sha256':
-        '60cecbd8d9b6357bb89929fa5afa1eba6c1d46d621e62ee558509424d88bd53d'
+        '58101b41d4930abfebef729d2657252ca6f2c3cff4ebcb838165d606808ff0ad'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'traceconv',
     'file_size':
-        6769184,
+        6773264,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/traceconv',
     'sha256':
-        'e373cbed4502977290abe3e246132ced538fca33881058e6049676ef9c613dd9'
+        'a7fc9fb02e94c92821d36cd0fb90bff75cbe32688e5f2678426b796a5f86ba53'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'traceconv',
     'file_size':
-        7682412,
+        7670116,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/traceconv',
     'sha256':
-        'dcaa5d156247433537d59ad33238feb23dc0f97ba64c51581360f25ac0fc16a8'
+        '1a64a26516b5a0db710532b4a6f495d4f83153df56b2847093d1b6d17e749b6b'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'traceconv',
     'file_size':
-        7903832,
+        7916104,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/traceconv',
     'sha256':
-        'b73b8d398019b2a349d3748b4fe4096a069c6362697375d3c2668cf79ef1bb38'
+        '9badc970a3573a038977a7fef59b4d57797ef57e2e4e2d5f23804a0bfcdf1585'
 }, {
     'arch':
         'windows-amd64',
     'file_name':
         'traceconv.exe',
     'file_size':
-        7188992,
+        7217664,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/windows-amd64/traceconv.exe',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/windows-amd64/traceconv.exe',
     'sha256':
-        '9cbdfcad3b5f2164d0c9e79d4f8b749db693814ae97fba038385d2e6f0111f72',
+        'd2b9c3ca448c9815c2393716758e85d4d2c8033ce0531b4551703a2b7e3d43a0',
     'platform':
         'win32',
     'machine': ['amd64']
diff --git a/python/perfetto/trace_processor/metrics.descriptor b/python/perfetto/trace_processor/metrics.descriptor
index bafcbbc..bf8b56e 100644
--- a/python/perfetto/trace_processor/metrics.descriptor
+++ b/python/perfetto/trace_processor/metrics.descriptor
Binary files differ
diff --git a/python/tools/cpu_profile.py b/python/tools/cpu_profile.py
index 5a142c0..8968bb9 100644
--- a/python/tools/cpu_profile.py
+++ b/python/tools/cpu_profile.py
@@ -79,7 +79,7 @@
   traces if requested.
 
   For usage instructions, please see:
-  https://perfetto.dev/docs/quickstart/cpu-profiling
+  https://perfetto.dev/docs/quickstart/callstack-sampling
   """
   parser = argparse.ArgumentParser(description=DESCRIPTION)
   parser.add_argument(
@@ -98,6 +98,25 @@
       metavar="DURATION",
       type=int,
       default=0)
+  # Profiling using hardware counters.
+  parser.add_argument(
+      "-e",
+      "--event",
+      help="Use the specified hardware counter event for sampling.",
+      metavar="EVENT",
+      action="append",
+      # See: '//perfetto/protos/perfetto/trace/perfetto_trace.proto'.
+      choices=['HW_CPU_CYCLES', 'HW_INSTRUCTIONS', 'HW_CACHE_REFERENCES',
+               'HW_CACHE_MISSES', 'HW_BRANCH_INSTRUCTIONS', 'HW_BRANCH_MISSES',
+               'HW_BUS_CYCLES', 'HW_STALLED_CYCLES_FRONTEND',
+               'HW_STALLED_CYCLES_BACKEND'],
+      default=[])
+  parser.add_argument(
+      "-k",
+      "--kernel-frames",
+      help="Collect kernel frames.  Default: false.",
+      action="store_true",
+      default=False)
   parser.add_argument(
       "-n",
       "--name",
@@ -109,7 +128,8 @@
       "--partial-matching",
       help="If set, enables \"partial matching\" on the strings in --names/-n."
       "Processes that are already running when profiling is started, and whose "
-      "names include any of the values in --names/-n as substrings will be profiled.",
+      "names include any of the values in --names/-n as substrings will be "
+      "profiled.",
       action="store_true")
   parser.add_argument(
       "-c",
@@ -135,8 +155,11 @@
       default=None)
 
   args = parser.parse_args()
-  if args.config is not None and args.name is not None:
-    sys.exit("--name/-n should not be provided when --config/-c is provided.")
+  if args.config is not None:
+    if args.name is not None:
+      sys.exit("--name/-n should not be specified with --config/-c.")
+    elif args.event is not None:
+      sys.exit("-e/--event should not be specified with --config/-c.")
   elif args.config is None and args.name is None:
     sys.exit("One of --names/-n or --config/-c is required.")
 
@@ -144,7 +167,8 @@
 
 
 def get_matching_processes(args, names_to_match):
-  """Returns a list of currently-running processes whose names match `names_to_match`.
+  """Returns a list of currently-running processes whose names match
+  `names_to_match`.
 
   Args:
     args: The command-line arguments provided to this script.
@@ -171,7 +195,8 @@
 
 
 def get_perfetto_config(args):
-  """Returns a Perfetto config with CPU profiling enabled for the selected processes.
+  """Returns a Perfetto config with CPU profiling enabled for the selected
+  processes.
 
   Args:
     args: The command-line arguments provided to this script.
@@ -183,7 +208,7 @@
     except IOError as error:
       sys.exit("Unable to read config file: {}".format(error))
 
-  CONFIG_INDENT = '      '
+  CONFIG_INDENT = '          '
   CONFIG = textwrap.dedent('''\
   buffers {{
     size_kb: 2048
@@ -203,18 +228,6 @@
     }}
   }}
 
-  data_sources {{
-    config {{
-      name: "linux.perf"
-      target_buffer: 1
-      perf_event_config {{
-        all_cpus: true
-        sampling_frequency: {frequency}
-  {target_config}
-      }}
-    }}
-  }}
-
   duration_ms: {duration}
   write_into_file: true
   flush_timeout_ms: 30000
@@ -232,6 +245,35 @@
   target_config = "\n".join(
       [f'{CONFIG_INDENT}target_cmdline: "{p}"' for p in matching_processes])
 
+  events = args.event or ['SW_CPU_CLOCK']
+  for event in events:
+    CONFIG += (textwrap.dedent('''
+    data_sources {{
+      config {{
+        name: "linux.perf"
+        target_buffer: 1
+        perf_event_config {{
+          timebase {{
+            counter: %s
+            frequency: {frequency}
+            timestamp_clock: PERF_CLOCK_MONOTONIC
+          }}
+          callstack_sampling {{
+            scope {{
+    {target_config}
+            }}
+            kernel_frames: {kernel_config}
+          }}
+        }}
+      }}
+    }}
+    ''') % (event))
+
+  if args.kernel_frames:
+    kernel_config = "true"
+  else:
+    kernel_config = "false"
+
   if not args.print_config:
     print("Configured profiling for these processes:\n")
     for matching_process in matching_processes:
@@ -241,7 +283,8 @@
   config = CONFIG.format(
       frequency=args.frequency,
       duration=args.duration,
-      target_config=target_config)
+      target_config=target_config,
+      kernel_config=kernel_config)
 
   return config
 
@@ -261,7 +304,8 @@
 
 
 def get_and_prepare_profile_target(args):
-  """Returns the target where the trace/profile will be output. Creates a new directory if necessary.
+  """Returns the target where the trace/profile will be output.  Creates a
+  new directory if necessary.
 
   Args:
     args: The command-line arguments provided to this script.
@@ -293,14 +337,23 @@
   }
   if not release_or_newer('R'):
     sys.exit("This tool requires Android R+ to run.")
+
+  # Push configuration to the device.
+  tf = tempfile.NamedTemporaryFile()
+  tf.file.write(config.encode('utf-8'))
+  tf.file.flush()
+  profile_config_path = '/data/misc/perfetto-configs/config-' + UUID
+  adb_check_output(['adb', 'push', tf.name, profile_config_path])
+  tf.close()
+
+
   profile_device_path = '/data/misc/perfetto-traces/profile-' + UUID
-  perfetto_command = ('CONFIG=\'{}\'; echo ${{CONFIG}} | '
-                      'perfetto --txt -c - -o {} -d')
+  perfetto_command = ('perfetto --txt -c {} -o {} -d')
   try:
     perfetto_pid = int(
         adb_check_output([
             'adb', 'exec-out',
-            perfetto_command.format(config, profile_device_path)
+            perfetto_command.format(profile_config_path, profile_device_path)
         ]).strip())
   except ValueError as error:
     sys.exit("Unable to start profiling: {}".format(error))
@@ -330,6 +383,7 @@
 
   profile_host_path = os.path.join(profile_target, 'raw-trace')
   adb_check_output(['adb', 'pull', profile_device_path, profile_host_path])
+  adb_check_output(['adb', 'shell', 'rm', profile_config_path])
   adb_check_output(['adb', 'shell', 'rm', profile_device_path])
 
 
@@ -360,7 +414,8 @@
 
 
 def symbolize_trace(traceconv, profile_target):
-  """Attempts symbolization of the recorded trace/profile, if symbols are available.
+  """Attempts symbolization of the recorded trace/profile, if symbols are
+  available.
 
   Args:
     traceconv: The path to the `traceconv` binary used for symbolization.
diff --git a/src/profiling/common/producer_support.cc b/src/profiling/common/producer_support.cc
index 8ab0b42..a160149 100644
--- a/src/profiling/common/producer_support.cc
+++ b/src/profiling/common/producer_support.cc
@@ -110,10 +110,25 @@
     return true;
   }
 
+  bool trusted_initiator = ds_config.session_initiator() ==
+                           DataSourceConfig::SESSION_INITIATOR_TRUSTED_SYSTEM;
+
   uint64_t uid_without_profile = uid % kAidUserOffset;
   uint64_t uid_for_lookup = 0;
-  if (uid_without_profile >= kAidAppStart &&
-      uid_without_profile <= kAidAppEnd) {
+  if (uid_without_profile < kAidAppStart) {
+    // Platform processes are considered profileable by the platform itself.
+    // This includes platform UIDs from other profiles, e.g. "u10_system".
+    // It's possible that this is an app (e.g. com.android.settings runs as
+    // AID_SYSTEM), but we will skip checking packages.list for the profileable
+    // manifest flags, as running under a platform UID is considered sufficient.
+    // Minor consequence: shell cannot profile platform apps, even if their
+    // manifest flags opt into profiling from shell. Resolving this would
+    // require definitively disambiguating native processes from apps if both
+    // can run as the same platform UID.
+    return trusted_initiator;
+
+  } else if (uid_without_profile >= kAidAppStart &&
+             uid_without_profile <= kAidAppEnd) {
     // normal app
     uid_for_lookup = uid_without_profile;
 
@@ -133,8 +148,6 @@
     // even be the package in which the service was defined).
     // TODO(rsavitski): find a way for the platform to tell native services
     // about isolated<->app relations.
-    bool trusted_initiator = ds_config.session_initiator() ==
-                             DataSourceConfig::SESSION_INITIATOR_TRUSTED_SYSTEM;
     return trusted_initiator &&
            AllPackagesProfileableByTrustedInitiator(packages_list_path);
 
diff --git a/src/protozero/BUILD.gn b/src/protozero/BUILD.gn
index dcb85d3..d553aac 100644
--- a/src/protozero/BUILD.gn
+++ b/src/protozero/BUILD.gn
@@ -31,6 +31,7 @@
   ]
   sources = [
     "field.cc",
+    "gen_field_helpers.cc",
     "message.cc",
     "message_arena.cc",
     "message_handle.cc",
diff --git a/src/protozero/gen_field_helpers.cc b/src/protozero/gen_field_helpers.cc
new file mode 100644
index 0000000..85a41f7
--- /dev/null
+++ b/src/protozero/gen_field_helpers.cc
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "perfetto/protozero/gen_field_helpers.h"
+
+namespace protozero {
+namespace internal {
+namespace gen_helpers {
+
+void DeserializeString(const protozero::Field& field, std::string* dst) {
+  field.get(dst);
+}
+
+template bool DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt,
+                                        uint64_t>(const protozero::Field& field,
+                                                  std::vector<uint64_t>* dst);
+
+template bool DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt,
+                                        int64_t>(const protozero::Field& field,
+                                                 std::vector<int64_t>* dst);
+
+template bool DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt,
+                                        uint32_t>(const protozero::Field& field,
+                                                  std::vector<uint32_t>* dst);
+
+template bool DeserializePackedRepeated<proto_utils::ProtoWireType::kVarInt,
+                                        int32_t>(const protozero::Field& field,
+                                                 std::vector<int32_t>* dst);
+
+void SerializeTinyVarInt(uint32_t field_id, bool value, Message* msg) {
+  msg->AppendTinyVarInt(field_id, value);
+}
+
+template void SerializeExtendedVarInt<uint64_t>(uint32_t field_id,
+                                                uint64_t value,
+                                                Message* msg);
+
+template void SerializeExtendedVarInt<uint32_t>(uint32_t field_id,
+                                                uint32_t value,
+                                                Message* msg);
+
+template void SerializeFixed<double>(uint32_t field_id,
+                                     double value,
+                                     Message* msg);
+
+template void SerializeFixed<float>(uint32_t field_id,
+                                    float value,
+                                    Message* msg);
+
+template void SerializeFixed<uint64_t>(uint32_t field_id,
+                                       uint64_t value,
+                                       Message* msg);
+
+template void SerializeFixed<int64_t>(uint32_t field_id,
+                                      int64_t value,
+                                      Message* msg);
+
+template void SerializeFixed<uint32_t>(uint32_t field_id,
+                                       uint32_t value,
+                                       Message* msg);
+
+template void SerializeFixed<int32_t>(uint32_t field_id,
+                                      int32_t value,
+                                      Message* msg);
+
+void SerializeString(uint32_t field_id,
+                     const std::string& value,
+                     Message* msg) {
+  msg->AppendString(field_id, value);
+}
+
+void SerializeUnknownFields(const std::string& unknown_fields, Message* msg) {
+  msg->AppendRawProtoBytes(unknown_fields.data(), unknown_fields.size());
+}
+
+MessageSerializer::MessageSerializer() = default;
+
+MessageSerializer::~MessageSerializer() = default;
+
+std::vector<uint8_t> MessageSerializer::SerializeAsArray() {
+  return msg_.SerializeAsArray();
+}
+
+std::string MessageSerializer::SerializeAsString() {
+  return msg_.SerializeAsString();
+}
+
+}  // namespace gen_helpers
+}  // namespace internal
+}  // namespace protozero
diff --git a/src/protozero/protoc_plugin/cppgen_plugin.cc b/src/protozero/protoc_plugin/cppgen_plugin.cc
index a963910..eadc23a 100644
--- a/src/protozero/protoc_plugin/cppgen_plugin.cc
+++ b/src/protozero/protoc_plugin/cppgen_plugin.cc
@@ -46,6 +46,7 @@
 using perfetto::base::StripSuffix;
 using perfetto::base::ToUpper;
 
+static constexpr auto TYPE_STRING = FieldDescriptor::TYPE_STRING;
 static constexpr auto TYPE_MESSAGE = FieldDescriptor::TYPE_MESSAGE;
 static constexpr auto TYPE_SINT32 = FieldDescriptor::TYPE_SINT32;
 static constexpr auto TYPE_SINT64 = FieldDescriptor::TYPE_SINT64;
@@ -147,6 +148,7 @@
   h_printer.Print("#include \"perfetto/protozero/copyable_ptr.h\"\n");
   h_printer.Print("#include \"perfetto/base/export.h\"\n\n");
 
+  cc_printer.Print("#include \"perfetto/protozero/gen_field_helpers.h\"\n");
   cc_printer.Print("#include \"perfetto/protozero/message.h\"\n");
   cc_printer.Print(
       "#include \"perfetto/protozero/packed_repeated_fields.h\"\n");
@@ -388,26 +390,26 @@
     const FieldDescriptor* field) const {
   switch (field->type()) {
     case FieldDescriptor::TYPE_BOOL:
-      return "AppendTinyVarInt";
+      return "::protozero::internal::gen_helpers::SerializeTinyVarInt";
     case FieldDescriptor::TYPE_INT32:
     case FieldDescriptor::TYPE_INT64:
     case FieldDescriptor::TYPE_UINT32:
     case FieldDescriptor::TYPE_UINT64:
     case FieldDescriptor::TYPE_ENUM:
-      return "AppendVarInt";
+      return "::protozero::internal::gen_helpers::SerializeVarInt";
     case FieldDescriptor::TYPE_SINT32:
     case FieldDescriptor::TYPE_SINT64:
-      return "AppendSignedVarInt";
+      return "::protozero::internal::gen_helpers::SerializeSignedVarInt";
     case FieldDescriptor::TYPE_FIXED32:
     case FieldDescriptor::TYPE_FIXED64:
     case FieldDescriptor::TYPE_SFIXED32:
     case FieldDescriptor::TYPE_SFIXED64:
     case FieldDescriptor::TYPE_FLOAT:
     case FieldDescriptor::TYPE_DOUBLE:
-      return "AppendFixed";
+      return "::protozero::internal::gen_helpers::SerializeFixed";
     case FieldDescriptor::TYPE_STRING:
     case FieldDescriptor::TYPE_BYTES:
-      return "AppendString";
+      return "::protozero::internal::gen_helpers::SerializeString";
     case FieldDescriptor::TYPE_GROUP:
     case FieldDescriptor::TYPE_MESSAGE:
       abort();
@@ -755,7 +757,10 @@
              "n", field->lowercase_name());
     p->Indent();
     if (field->options().lazy()) {
-      p->Print("$n$_ = field.as_std_string();\n", "n", field->lowercase_name());
+      p->Print(
+          "::protozero::internal::gen_helpers::DeserializeString(field, "
+          "&$n$_);\n",
+          "n", field->lowercase_name());
     } else {
       std::string statement;
       if (field->type() == TYPE_MESSAGE) {
@@ -764,6 +769,10 @@
         if (field->type() == TYPE_SINT32 || field->type() == TYPE_SINT64) {
           // sint32/64 fields are special and need to be zig-zag-decoded.
           statement = "field.get_signed(&$rval$);\n";
+        } else if (field->type() == TYPE_STRING) {
+          statement =
+              "::protozero::internal::gen_helpers::DeserializeString(field, "
+              "&$rval$);\n";
         } else {
           statement = "field.get(&$rval$);\n";
         }
@@ -774,10 +783,12 @@
           PERFETTO_FATAL("packed signed (zigzag) fields are not supported");
         }
         p->Print(
-            "for (::protozero::PackedRepeatedFieldIterator<$w$, $c$> "
-            "rep(field.data(), field.size(), &packed_error); rep; ++rep) {\n",
-            "w", GetPackedWireType(field), "c", GetCppType(field, false));
-        p->Print("  $n$_.emplace_back(*rep);\n", "n", field->lowercase_name());
+            "if "
+            "(!::protozero::internal::gen_helpers::DeserializePackedRepeated"
+            "<$w$, $c$>(field, &$n$_)) {\n",
+            "w", GetPackedWireType(field), "c", GetCppType(field, false), "n",
+            field->lowercase_name());
+        p->Print("  packed_error = true;");
         p->Print("}\n");
       } else if (field->is_repeated()) {
         p->Print("$n$_.emplace_back();\n", "n", field->lowercase_name());
@@ -807,7 +818,7 @@
   // Generate the SerializeAsString() method definition.
   p->Print("std::string $f$::SerializeAsString() const {\n", "f", full_name);
   p->Indent();
-  p->Print("::protozero::HeapBuffered<::protozero::Message> msg;\n");
+  p->Print("::protozero::internal::gen_helpers::MessageSerializer msg;\n");
   p->Print("Serialize(msg.get());\n");
   p->Print("return msg.SerializeAsString();\n");
   p->Outdent();
@@ -817,7 +828,7 @@
   p->Print("std::vector<uint8_t> $f$::SerializeAsArray() const {\n", "f",
            full_name);
   p->Indent();
-  p->Print("::protozero::HeapBuffered<::protozero::Message> msg;\n");
+  p->Print("::protozero::internal::gen_helpers::MessageSerializer msg;\n");
   p->Print("Serialize(msg.get());\n");
   p->Print("return msg.SerializeAsArray();\n");
   p->Outdent();
@@ -863,7 +874,7 @@
                  "msg->BeginNestedMessage<::protozero::Message>($id$));\n");
       } else {
         args["setter"] = GetProtozeroSetter(field);
-        p->Print(args, "msg->$setter$($id$, $rvalue$);\n");
+        p->Print(args, "$setter$($id$, $rvalue$, msg);\n");
       }
       p->Outdent();
       p->Print("}\n");
@@ -872,8 +883,8 @@
     p->Print("\n");
   }  // for (field)
   p->Print(
-      "msg->AppendRawProtoBytes(unknown_fields_.data(), "
-      "unknown_fields_.size());\n");
+      "protozero::internal::gen_helpers::SerializeUnknownFields(unknown_fields_"
+      ", msg);\n");
   p->Outdent();
   p->Print("}\n\n");
 }
diff --git a/src/protozero/test/cppgen_conformance_unittest.cc b/src/protozero/test/cppgen_conformance_unittest.cc
index 933c74f..5ac43aa 100644
--- a/src/protozero/test/cppgen_conformance_unittest.cc
+++ b/src/protozero/test/cppgen_conformance_unittest.cc
@@ -62,7 +62,8 @@
   msg->set_big_enum(decltype(msg->big_enum())::BEGIN);
 
   msg->set_field_string("FizzBuzz");
-  msg->set_field_bytes(reinterpret_cast<const uint8_t*>("\x11\x00\xBE\xEF"), 4);
+  msg->set_field_bytes(reinterpret_cast<const uint8_t*>("\x11\x00\xBE\xEF"),
+                       4u);
   msg->add_repeated_int32(1);
   msg->add_repeated_int32(-1);
   msg->add_repeated_int32(100);
@@ -100,7 +101,7 @@
   pbgold::EveryField gold_msg;
   gold_msg.ParseFromString(serialized);
   CheckTestingFields(gold_msg);
-  EXPECT_EQ(serialized.size(), static_cast<size_t>(gold_msg.ByteSize()));
+  EXPECT_EQ(serialized.size(), static_cast<size_t>(gold_msg.ByteSizeLong()));
 }
 
 TEST(ProtoCppConformanceTest, GoldEncode_GenDecode) {
diff --git a/src/protozero/test/protozero_conformance_unittest.cc b/src/protozero/test/protozero_conformance_unittest.cc
index bdb15fa..7a73b69 100644
--- a/src/protozero/test/protozero_conformance_unittest.cc
+++ b/src/protozero/test/protozero_conformance_unittest.cc
@@ -94,7 +94,7 @@
   EXPECT_EQ(-1, gold_msg.repeated_int32(1));
   EXPECT_EQ(100, gold_msg.repeated_int32(2));
   EXPECT_EQ(2000000, gold_msg.repeated_int32(3));
-  EXPECT_EQ(serialized.size(), static_cast<size_t>(gold_msg.ByteSize()));
+  EXPECT_EQ(serialized.size(), static_cast<size_t>(gold_msg.ByteSizeLong()));
 }
 
 TEST(ProtoZeroConformanceTest, NestedMessages) {
diff --git a/src/trace_processor/dynamic/experimental_annotated_stack_generator.cc b/src/trace_processor/dynamic/experimental_annotated_stack_generator.cc
index a346653..1527295 100644
--- a/src/trace_processor/dynamic/experimental_annotated_stack_generator.cc
+++ b/src/trace_processor/dynamic/experimental_annotated_stack_generator.cc
@@ -267,10 +267,12 @@
     // Mixed callstack, tag libart frames as uninteresting (common-frame).
     // Special case a subset of interpreter implementation frames as
     // "common-frame-interp" using frame name prefixes. Those functions are
-    // actually executed, whereas the managed "interp" frames are synthesised
-    // as their caller by the unwinding library (based on the dex_pc virtual
-    // register restored using the libart's DWARF info). Example:
+    // actually executed, whereas the managed "interp" frames are synthesised as
+    // their caller by the unwinding library (based on the dex_pc virtual
+    // register restored using the libart's DWARF info). The heuristic covers
+    // the "nterp" and "switch" interpreter implementations.
     //
+    // Example:
     //  <towards root>
     //  android.view.WindowLayout.computeFrames [interp]
     //  nterp_op_iget_object_slow_path [common-frame-interp]
@@ -279,11 +281,16 @@
     // process in?" based on the leaf frame of the callstack. As we want to
     // classify such cases as interpreted, even though the leaf frame is
     // libart.so.
+    //
+    // For "switch" interpreter, we match any frame starting with
+    // "art::interpreter::" according to itanium mangling.
     if (annotation_state == State::kEraseLibart &&
         map_type == MapType::kNativeLibart) {
       NullTermStringView fname = context_->storage->GetString(fname_id);
       if (fname.StartsWith("nterp_") || fname.StartsWith("Nterp") ||
-          fname.StartsWith("ExecuteNterp")) {
+          fname.StartsWith("ExecuteNterp") ||
+          fname.StartsWith("ExecuteSwitchImpl") ||
+          fname.StartsWith("_ZN3art11interpreter")) {
         annotations_reversed.push_back(common_frame_interp);
         continue;
       }
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.cc b/src/trace_processor/importers/ftrace/ftrace_parser.cc
index 29582c9..6e57384 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.cc
@@ -1702,6 +1702,8 @@
   proc_tracker->UpdateThreadNameByUtid(new_utid, new_comm,
                                        ThreadNamePriority::kFtrace);
   proc_tracker->AssociateThreads(source_utid, new_utid);
+
+  ThreadStateTracker::GetOrCreate(context_)->PushNewTaskEvent(timestamp, new_utid, source_utid);
 }
 
 void FtraceParser::ParseTaskRename(ConstBytes blob) {
diff --git a/src/trace_processor/importers/ftrace/thread_state_tracker.cc b/src/trace_processor/importers/ftrace/thread_state_tracker.cc
index 9ff75e3..227a90a 100644
--- a/src/trace_processor/importers/ftrace/thread_state_tracker.cc
+++ b/src/trace_processor/importers/ftrace/thread_state_tracker.cc
@@ -70,6 +70,12 @@
   AddOpenState(event_ts, utid, runnable_string_id_, base::nullopt, waker_utid);
 }
 
+void ThreadStateTracker::PushNewTaskEvent(int64_t event_ts,
+                                         UniqueTid utid,
+                                         UniqueTid waker_utid) {
+  AddOpenState(event_ts, utid, runnable_string_id_, base::nullopt, waker_utid);
+}
+
 void ThreadStateTracker::PushBlockedReason(
     UniqueTid utid,
     base::Optional<bool> io_wait,
diff --git a/src/trace_processor/importers/ftrace/thread_state_tracker.h b/src/trace_processor/importers/ftrace/thread_state_tracker.h
index af3ad4c..3f8b7a5 100644
--- a/src/trace_processor/importers/ftrace/thread_state_tracker.h
+++ b/src/trace_processor/importers/ftrace/thread_state_tracker.h
@@ -51,6 +51,10 @@
   // Will add a runnable state for utid and close the previously blocked one.
   void PushWakingEvent(int64_t event_ts, UniqueTid utid, UniqueTid waker_utid);
 
+  // Will add a runnable state for utid. For a new task there are no previous
+  // states to close.
+  void PushNewTaskEvent(int64_t event_ts, UniqueTid utid, UniqueTid waker_utid);
+
   // Updates the current blocked state for utid with blocked reason.
   void PushBlockedReason(UniqueTid utid,
                          base::Optional<bool> io_wait,
diff --git a/src/trace_processor/importers/fuchsia/fuchsia_trace_parser.cc b/src/trace_processor/importers/fuchsia/fuchsia_trace_parser.cc
index e36da64..a4dc251 100644
--- a/src/trace_processor/importers/fuchsia/fuchsia_trace_parser.cc
+++ b/src/trace_processor/importers/fuchsia/fuchsia_trace_parser.cc
@@ -270,6 +270,11 @@
               procs->GetOrCreateProcess(static_cast<uint32_t>(tinfo.pid));
           std::string name_str =
               context_->storage->GetString(name).ToStdString();
+          uint64_t counter_id;
+          if (!cursor.ReadUint64(&counter_id)) {
+            context_->storage->IncrementStats(stats::fuchsia_invalid_event);
+            return;
+          }
           // Note: In the Fuchsia trace format, counter values are stored in the
           // arguments for the record, with the data series defined by both the
           // record name and the argument name. In Perfetto, counters only have
@@ -278,6 +283,7 @@
             std::string counter_name_str = name_str + ":";
             counter_name_str +=
                 context_->storage->GetString(arg.name).ToStdString();
+            counter_name_str += ":" + std::to_string(counter_id);
             bool is_valid_value = false;
             double counter_value = -1;
             switch (arg.value.Type()) {
diff --git a/src/trace_processor/importers/fuchsia/fuchsia_trace_utils.cc b/src/trace_processor/importers/fuchsia/fuchsia_trace_utils.cc
index d7879be..47de0f8 100644
--- a/src/trace_processor/importers/fuchsia/fuchsia_trace_utils.cc
+++ b/src/trace_processor/importers/fuchsia/fuchsia_trace_utils.cc
@@ -80,7 +80,7 @@
     case ArgType::kString:
       return Variadic::String(string_);
     case ArgType::kPointer:
-      return Variadic::Integer(static_cast<int64_t>(pointer_));
+      return Variadic::Pointer(pointer_);
     case ArgType::kKoid:
       return Variadic::Integer(static_cast<int64_t>(koid_));
     case ArgType::kUnknown:
diff --git a/src/trace_processor/importers/proto/android_probes_parser.cc b/src/trace_processor/importers/proto/android_probes_parser.cc
index 8712c19..d4018e3 100644
--- a/src/trace_processor/importers/proto/android_probes_parser.cc
+++ b/src/trace_processor/importers/proto/android_probes_parser.cc
@@ -77,6 +77,8 @@
           context->storage->InternString("batt.current.avg_ua")),
       screen_state_id_(context->storage->InternString("ScreenState")),
       device_state_id_(context->storage->InternString("DeviceStateChanged")),
+      battery_status_id_(context->storage->InternString("BatteryStatus")),
+      plug_type_id_(context->storage->InternString("PlugType")),
       net_arg_length_(context->storage->InternString("packet_length")),
       net_arg_ip_proto_(context->storage->InternString("packet_transport")),
       net_arg_tcp_flags_(context->storage->InternString("packet_tcp_flags")),
@@ -408,15 +410,9 @@
   for (auto it = properties.values(); it; ++it) {
     protos::pbzero::AndroidSystemProperty::PropertyValue::Decoder kv(*it);
     base::StringView name(kv.name());
-    if (name == "debug.tracing.screen_state") {
-      base::Optional<int32_t> state =
-          base::StringToInt32(kv.value().ToStdString());
-      if (state) {
-        TrackId track =
-            context_->track_tracker->InternGlobalCounterTrack(screen_state_id_);
-        context_->event_tracker->PushCounter(ts, *state, track);
-      }
-    } else if (name == "debug.tracing.device_state") {
+    base::Optional<StringId> mapped_name_id;
+
+    if (name == "debug.tracing.device_state") {
       auto state = kv.value();
 
       StringId state_id = context_->storage->InternString(state);
@@ -437,6 +433,21 @@
             context_->track_tracker->InternGlobalCounterTrack(name_id);
         context_->event_tracker->PushCounter(ts, *state, track);
       }
+    } else if (name == "debug.tracing.screen_state") {
+      mapped_name_id = screen_state_id_;
+    } else if (name == "debug.tracing.battery_status") {
+      mapped_name_id = battery_status_id_;
+    } else if (name == "debug.tracing.plug_type") {
+      mapped_name_id = plug_type_id_;
+    }
+    if (mapped_name_id) {
+      base::Optional<int32_t> state =
+          base::StringToInt32(kv.value().ToStdString());
+      if (state) {
+        TrackId track =
+            context_->track_tracker->InternGlobalCounterTrack(*mapped_name_id);
+        context_->event_tracker->PushCounter(ts, *state, track);
+      }
     }
   }
 }
diff --git a/src/trace_processor/importers/proto/android_probes_parser.h b/src/trace_processor/importers/proto/android_probes_parser.h
index 001a8e8..420ffb8 100644
--- a/src/trace_processor/importers/proto/android_probes_parser.h
+++ b/src/trace_processor/importers/proto/android_probes_parser.h
@@ -55,6 +55,8 @@
   const StringId batt_current_avg_id_;
   const StringId screen_state_id_;
   const StringId device_state_id_;
+  const StringId battery_status_id_;
+  const StringId plug_type_id_;
 
   const StringId net_arg_length_;
   const StringId net_arg_ip_proto_;
diff --git a/src/trace_processor/metrics/sql/android/android_binder.sql b/src/trace_processor/metrics/sql/android/android_binder.sql
index 5c2e464..71dd9de 100644
--- a/src/trace_processor/metrics/sql/android/android_binder.sql
+++ b/src/trace_processor/metrics/sql/android/android_binder.sql
@@ -34,5 +34,44 @@
       )
     )
     FROM android_binder_metrics_by_process
+  ),
+  'unaggregated_txn_breakdown', (
+    SELECT RepeatedField(
+      AndroidBinderMetric_UnaggregatedTxnBreakdown(
+        'aidl_name', aidl_name,
+        'binder_txn_id', binder_txn_id,
+        'client_process', client_process,
+        'client_thread', client_thread,
+        'is_main_thread', is_main_thread,
+        'client_ts', client_ts,
+        'client_dur', client_dur,
+        'binder_reply_id', binder_reply_id,
+        'server_process', server_process,
+        'server_thread', server_thread,
+        'server_ts', server_ts,
+        'server_dur', server_dur,
+        'thread_states', (
+          SELECT RepeatedField(
+            AndroidBinderMetric_ThreadStateBreakdown(
+              'thread_state_type', thread_state_type,
+              'thread_state', thread_state,
+              'thread_state_dur', thread_state_dur,
+              'thread_state_count', thread_state_count
+            )
+          ) FROM android_sync_binder_thread_state_by_txn t WHERE t.binder_txn_id = android_sync_binder_metrics_by_txn.binder_txn_id
+        ),
+        'blocked_functions', (
+          SELECT RepeatedField(
+            AndroidBinderMetric_BlockedFunctionBreakdown(
+              'thread_state_type', thread_state_type,
+              'blocked_function', blocked_function,
+              'blocked_function_dur', blocked_function_dur,
+              'blocked_function_count', blocked_function_count
+            )
+          ) FROM android_sync_binder_blocked_functions_by_txn b WHERE b.binder_txn_id = android_sync_binder_metrics_by_txn.binder_txn_id
+        )
+      )
+    )
+    FROM android_sync_binder_metrics_by_txn
   )
 );
diff --git a/src/trace_processor/metrics/sql/android/android_frame_timeline_metric.sql b/src/trace_processor/metrics/sql/android/android_frame_timeline_metric.sql
index bbccaa8..44a55a2 100644
--- a/src/trace_processor/metrics/sql/android/android_frame_timeline_metric.sql
+++ b/src/trace_processor/metrics/sql/android/android_frame_timeline_metric.sql
@@ -35,6 +35,10 @@
   CAST(PERCENTILE(dur, 90) AS INTEGER) AS frame_dur_p90,
   CAST(PERCENTILE(dur, 95) AS INTEGER) AS frame_dur_p95,
   CAST(PERCENTILE(dur, 99) AS INTEGER) AS frame_dur_p99,
+  PERCENTILE(dur / 1e6, 50) AS frame_dur_ms_p50,
+  PERCENTILE(dur / 1e6, 90) AS frame_dur_ms_p90,
+  PERCENTILE(dur / 1e6, 95) AS frame_dur_ms_p95,
+  PERCENTILE(dur / 1e6, 99) AS frame_dur_ms_p99,
   CAST(AVG(dur) AS INTEGER) AS frame_dur_avg,
   MAX(dur) AS frame_dur_max
 FROM actual_frame_timeline_slice
diff --git a/src/trace_processor/metrics/sql/android/android_jank_cuj.sql b/src/trace_processor/metrics/sql/android/android_jank_cuj.sql
index caaac19..eec6435 100644
--- a/src/trace_processor/metrics/sql/android/android_jank_cuj.sql
+++ b/src/trace_processor/metrics/sql/android/android_jank_cuj.sql
@@ -115,7 +115,11 @@
               'frame_dur_p50', CAST(PERCENTILE(f.dur, 50) AS INTEGER),
               'frame_dur_p90', CAST(PERCENTILE(f.dur, 90) AS INTEGER),
               'frame_dur_p95', CAST(PERCENTILE(f.dur, 95) AS INTEGER),
-              'frame_dur_p99', CAST(PERCENTILE(f.dur, 99) AS INTEGER))
+              'frame_dur_p99', CAST(PERCENTILE(f.dur, 99) AS INTEGER),
+              'frame_dur_ms_p50', PERCENTILE(f.dur / 1e6, 50),
+              'frame_dur_ms_p90', PERCENTILE(f.dur / 1e6, 90),
+              'frame_dur_ms_p95', PERCENTILE(f.dur / 1e6, 95),
+              'frame_dur_ms_p99', PERCENTILE(f.dur / 1e6, 99))
             FROM android_jank_cuj_frame f
             WHERE f.cuj_id = cuj.cuj_id),
           'timeline_metrics', (
@@ -129,7 +133,11 @@
               'frame_dur_p50', CAST(PERCENTILE(f.dur, 50) AS INTEGER),
               'frame_dur_p90', CAST(PERCENTILE(f.dur, 90) AS INTEGER),
               'frame_dur_p95', CAST(PERCENTILE(f.dur, 95) AS INTEGER),
-              'frame_dur_p99', CAST(PERCENTILE(f.dur, 99) AS INTEGER))
+              'frame_dur_p99', CAST(PERCENTILE(f.dur, 99) AS INTEGER),
+              'frame_dur_ms_p50', PERCENTILE(f.dur / 1e6, 50),
+              'frame_dur_ms_p90', PERCENTILE(f.dur / 1e6, 90),
+              'frame_dur_ms_p95', PERCENTILE(f.dur / 1e6, 95),
+              'frame_dur_ms_p99', PERCENTILE(f.dur / 1e6, 99))
             FROM android_jank_cuj_frame_timeline f
             WHERE f.cuj_id = cuj.cuj_id),
           'frame', (
diff --git a/src/trace_processor/metrics/sql/android/android_startup.sql b/src/trace_processor/metrics/sql/android/android_startup.sql
index 634e908..bd80e8a 100644
--- a/src/trace_processor/metrics/sql/android/android_startup.sql
+++ b/src/trace_processor/metrics/sql/android/android_startup.sql
@@ -151,7 +151,7 @@
           MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'Running'), 0
         ),
         'runnable_dur_ns', IFNULL(
-          MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'R'), 0
+          MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'R*'), 0
         ),
         'uninterruptible_sleep_dur_ns', IFNULL(
           MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'D*'), 0
@@ -320,7 +320,7 @@
         UNION ALL
         SELECT 'Main Thread - Time spent in Runnable state'
           AS slow_cause
-        WHERE MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'R') > 1e8
+        WHERE MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'R*') > 100e6
 
         UNION ALL
         SELECT 'Main Thread - Time spent in interruptible sleep state'
@@ -358,6 +358,13 @@
         WHERE ANDROID_SUM_DUR_FOR_STARTUP_AND_SLICE(launches.startup_id, 'VerifyClass*') > 10e6
 
         UNION ALL
+        SELECT 'Potential CPU contention with '
+          || MOST_ACTIVE_PROCESS_FOR_LAUNCH(launches.startup_id)
+          AS slow_cause
+        WHERE MAIN_THREAD_TIME_FOR_LAUNCH_AND_STATE(launches.startup_id, 'R*') > 100e6
+          AND MOST_ACTIVE_PROCESS_FOR_LAUNCH(launches.startup_id) IS NOT NULL
+
+        UNION ALL
         SELECT 'JIT Activity'
           AS slow_cause
         WHERE THREAD_TIME_FOR_LAUNCH_STATE_AND_THREAD(
diff --git a/src/trace_processor/metrics/sql/android/startup/mcycles_per_launch.sql b/src/trace_processor/metrics/sql/android/startup/mcycles_per_launch.sql
index 993d61e..b47381e 100644
--- a/src/trace_processor/metrics/sql/android/startup/mcycles_per_launch.sql
+++ b/src/trace_processor/metrics/sql/android/startup/mcycles_per_launch.sql
@@ -111,3 +111,16 @@
     );
   '
 );
+
+-- Given a launch id, returns the most active process name.
+SELECT CREATE_FUNCTION(
+  'MOST_ACTIVE_PROCESS_FOR_LAUNCH(startup_id INT)',
+  'STRING',
+  '
+    SELECT process.name AS process_name
+    FROM top_mcyles_process_excluding_started_per_launch
+    JOIN process USING (upid)
+    WHERE startup_id = $startup_id
+    ORDER BY mcycles DESC LIMIT 1;
+  '
+);
diff --git a/src/trace_processor/metrics/sql/chrome/chrome_long_tasks.sql b/src/trace_processor/metrics/sql/chrome/chrome_long_tasks.sql
index ec05765..3bd052b 100644
--- a/src/trace_processor/metrics/sql/chrome/chrome_long_tasks.sql
+++ b/src/trace_processor/metrics/sql/chrome/chrome_long_tasks.sql
@@ -24,6 +24,12 @@
   'function_prefix', ''
 );
 
+SELECT CREATE_FUNCTION(
+  'IS_LONG_CHOREOGRAPHER_TASK(dur LONG)',
+  'BOOL',
+  'SELECT $dur >= 4 * 1e6'
+);
+
 -- Note that not all slices will be mojo slices; filter on interface_name IS
 -- NOT NULL for mojo slices specifically.
 DROP TABLE IF EXISTS long_tasks_extracted_slices;
@@ -72,7 +78,7 @@
     SELECT *
     FROM SELECT_BEGIN_MAIN_FRAME_JAVA_SLICES('LongTaskTracker')
     UNION ALL
-    SELECT * FROM chrome_choreographer_tasks
+    SELECT * FROM chrome_choreographer_tasks WHERE IS_LONG_CHOREOGRAPHER_TASK(dur)
   ),
   -- Intermediate step to allow us to sort java view names.
   root_slice_and_java_view_not_grouped AS (
@@ -101,6 +107,7 @@
       GET_JAVA_VIEWS_TASK_TYPE(kind) AS task_type,
       id
     FROM long_task_slices_with_java_views
+    WHERE kind = "SingleThreadProxy::BeginMainFrame"
   ),
   scheduler_tasks_with_mojo AS (
     SELECT
@@ -129,7 +136,16 @@
 FROM long_tasks_internal_tbl s1
 LEFT JOIN scheduler_tasks_with_mojo s2 ON s2.id = s1.id
 LEFT JOIN java_views_tasks s3 ON s3.id = s1.id
-LEFT JOIN navigation_tasks s4 ON s4.id = s1.id;
+LEFT JOIN navigation_tasks s4 ON s4.id = s1.id
+UNION ALL
+-- Choreographer slices won't necessarily be associated with an overlying
+-- LongTaskTracker slice, so join them separately.
+SELECT
+  printf('%s(java_views=%s)', kind, java_views) as full_name,
+  GET_JAVA_VIEWS_TASK_TYPE(kind) AS task_type,
+  id
+FROM long_task_slices_with_java_views
+WHERE kind = "Choreographer";
 
 DROP VIEW IF EXISTS chrome_long_tasks;
 CREATE VIEW chrome_long_tasks AS
diff --git a/src/trace_processor/metrics/sql/chrome/chrome_reliable_range.sql b/src/trace_processor/metrics/sql/chrome/chrome_reliable_range.sql
index 0a74953..20edb1e 100644
--- a/src/trace_processor/metrics/sql/chrome/chrome_reliable_range.sql
+++ b/src/trace_processor/metrics/sql/chrome/chrome_reliable_range.sql
@@ -121,7 +121,7 @@
   USING (upid)
   WHERE
     EXTRACT_ARG(process.arg_set_id, 'chrome.process_type')
-      IN ('Browser', 'Renderer')
+      IN ('Browser', 'Renderer', 'Gpu')
 )
 WHERE utid is NULL;
 
diff --git a/src/trace_processor/sorter/trace_sorter.cc b/src/trace_processor/sorter/trace_sorter.cc
index d855512..6ecbb04 100644
--- a/src/trace_processor/sorter/trace_sorter.cc
+++ b/src/trace_processor/sorter/trace_sorter.cc
@@ -106,42 +106,44 @@
 
     // This loop identifies the queue which starts with the earliest event and
     // also remembers the earliest event of the 2nd queue (in min_queue_ts[1]).
-    bool has_queues_with_expired_events = false;
+    bool all_queues_empty = true;
     for (size_t i = 0; i < queues_.size(); i++) {
       auto& queue = queues_[i];
       if (queue.events_.empty())
         continue;
-      PERFETTO_DCHECK(queue.min_ts_ >= global_min_ts_);
-      PERFETTO_DCHECK(queue.max_ts_ <= global_max_ts_);
-      if (!has_queues_with_expired_events || queue.min_ts_ < min_queue_ts[0]) {
+      all_queues_empty = false;
+
+      PERFETTO_DCHECK(queue.max_ts_ <= append_max_ts_);
+      if (queue.min_ts_ < min_queue_ts[0]) {
         min_queue_ts[1] = min_queue_ts[0];
         min_queue_ts[0] = queue.min_ts_;
         min_queue_idx = i;
-        has_queues_with_expired_events = true;
       } else if (queue.min_ts_ < min_queue_ts[1]) {
         min_queue_ts[1] = queue.min_ts_;
       }
     }
-    if (!has_queues_with_expired_events) {
-      // All the queues have events that start after the window (i.e. they are
-      // too recent and not eligible to be extracted given the current window).
+    if (all_queues_empty)
       break;
-    }
 
     Queue& queue = queues_[min_queue_idx];
     auto& events = queue.events_;
     if (queue.needs_sorting())
       queue.Sort();
     PERFETTO_DCHECK(queue.min_ts_ == events.front().ts);
-    PERFETTO_DCHECK(queue.min_ts_ == global_min_ts_);
 
     // Now that we identified the min-queue, extract all events from it until
     // we hit either: (1) the min-ts of the 2nd queue or (2) the packet index
     // limit, whichever comes first.
     size_t num_extracted = 0;
     for (auto& event : events) {
-      if (event.descriptor.offset() >= limit_offset ||
-          event.ts > min_queue_ts[1]) {
+      if (event.descriptor.offset() >= limit_offset) {
+        break;
+      }
+
+      if (event.ts > min_queue_ts[1]) {
+        // We should never hit this condition on the first extraction as by
+        // the algorithm above (event.ts =) min_queue_ts[0] <= min_queue[1].
+        PERFETTO_DCHECK(num_extracted > 0);
         break;
       }
 
@@ -149,11 +151,9 @@
       MaybePushAndEvictEvent(min_queue_idx, event);
     }  // for (event: events)
 
-    if (!num_extracted) {
-      // No events can be extracted from any of the queues. This means that
-      // either we hit the window or all queues are empty.
+    // The earliest event cannot be extracted without going past the limit.
+    if (!num_extracted)
       break;
-    }
 
     // Now remove the entries from the event buffer and update the queue-local
     // and global time bounds.
@@ -163,35 +163,14 @@
     // queue.
     variadic_queue_.FreeMemory();
 
-    // Update the global_{min,max}_ts to reflect the bounds after extraction.
+    // Update the queue timestamps to reflect the bounds after extraction.
     if (events.empty()) {
       queue.min_ts_ = kTsMax;
       queue.max_ts_ = 0;
-      global_min_ts_ = min_queue_ts[1];
-
-      // If we extraced the max entry from a queue (i.e. we emptied the queue)
-      // we need to recompute the global max, because it might have been the one
-      // just extracted.
-      global_max_ts_ = 0;
-      for (auto& q : queues_)
-        global_max_ts_ = std::max(global_max_ts_, q.max_ts_);
     } else {
       queue.min_ts_ = queue.events_.front().ts;
-      global_min_ts_ = std::min(queue.min_ts_, min_queue_ts[1]);
     }
   }  // for(;;)
-
-#if PERFETTO_DCHECK_IS_ON()
-  // Check that the global min/max are consistent.
-  int64_t dbg_min_ts = kTsMax;
-  int64_t dbg_max_ts = 0;
-  for (auto& q : queues_) {
-    dbg_min_ts = std::min(dbg_min_ts, q.min_ts_);
-    dbg_max_ts = std::max(dbg_max_ts, q.max_ts_);
-  }
-  PERFETTO_DCHECK(global_min_ts_ == dbg_min_ts);
-  PERFETTO_DCHECK(global_max_ts_ == dbg_max_ts);
-#endif
 }
 
 void TraceSorter::EvictVariadic(const TimestampedDescriptor& ts_desc) {
diff --git a/src/trace_processor/sorter/trace_sorter.h b/src/trace_processor/sorter/trace_sorter.h
index 87f259b..215194d 100644
--- a/src/trace_processor/sorter/trace_sorter.h
+++ b/src/trace_processor/sorter/trace_sorter.h
@@ -154,7 +154,7 @@
         TracePacketData{std::move(event), std::move(state)});
     queue->Append(TimestampedDescriptor{
         timestamp, Descriptor(offset, EventType::kFtraceEvent)});
-    UpdateGlobalTs(queue);
+    UpdateAppendMaxTs(queue);
   }
   inline void PushInlineFtraceEvent(uint32_t cpu,
                                     int64_t timestamp,
@@ -170,7 +170,7 @@
     uint32_t offset = variadic_queue_.Append(inline_sched_switch);
     queue->Append(TimestampedDescriptor{
         timestamp, Descriptor(offset, EventType::kInlineSchedSwitch)});
-    UpdateGlobalTs(queue);
+    UpdateAppendMaxTs(queue);
   }
   inline void PushInlineFtraceEvent(uint32_t cpu,
                                     int64_t timestamp,
@@ -180,7 +180,7 @@
     uint32_t offset = variadic_queue_.Append(inline_sched_waking);
     queue->Append(TimestampedDescriptor{
         timestamp, Descriptor(offset, EventType::kInlineSchedWaking)});
-    UpdateGlobalTs(queue);
+    UpdateAppendMaxTs(queue);
   }
 
   void ExtractEventsForced() {
@@ -205,7 +205,7 @@
     flushes_since_extraction_ = 0;
   }
 
-  int64_t max_timestamp() const { return global_max_ts_; }
+  int64_t max_timestamp() const { return append_max_ts_; }
 
  private:
   // Stores offset and type of metadata.
@@ -316,12 +316,11 @@
                                    EventType type) {
     Queue* queue = GetQueue(0);
     queue->Append(TimestampedDescriptor{ts, Descriptor{offset, type}});
-    UpdateGlobalTs(queue);
+    UpdateAppendMaxTs(queue);
   }
 
-  inline void UpdateGlobalTs(Queue* queue) {
-    global_min_ts_ = std::min(global_min_ts_, queue->min_ts_);
-    global_max_ts_ = std::max(global_max_ts_, queue->max_ts_);
+  inline void UpdateAppendMaxTs(Queue* queue) {
+    append_max_ts_ = std::max(append_max_ts_, queue->max_ts_);
   }
 
   void ParseTracePacket(const TimestampedDescriptor& ts_desc);
@@ -361,11 +360,8 @@
   // queues_[x] is the ftrace queue for CPU(x - 1).
   std::vector<Queue> queues_;
 
-  // max(e.timestamp for e in queues_).
-  int64_t global_max_ts_ = 0;
-
-  // min(e.timestamp for e in queues_).
-  int64_t global_min_ts_ = std::numeric_limits<int64_t>::max();
+  // max(e.ts for e appended to the sorter)
+  int64_t append_max_ts_ = 0;
 
   // Used for performance tests. True when setting
   // TRACE_PROCESSOR_SORT_ONLY=1.
diff --git a/src/trace_processor/stdlib/android/binder.sql b/src/trace_processor/stdlib/android/binder.sql
index d62d7d8..7fb9611 100644
--- a/src/trace_processor/stdlib/android/binder.sql
+++ b/src/trace_processor/stdlib/android/binder.sql
@@ -14,6 +14,8 @@
 -- limitations under the License.
 --
 
+SELECT IMPORT('common.timestamps');
+
 -- Count Binder transactions per process.
 --
 -- @column process_name  Name of the process that started the binder transaction.
@@ -35,3 +37,230 @@
 GROUP BY
   process_name,
   slice_name;
+
+-- Breakdown synchronous binder transactions per txn.
+--
+-- @column aidl_name name of the binder interface if existing
+-- @column binder_txn_id slice id of the binder txn
+-- @column client_process name of the client process
+-- @column client_thread name of the client thread
+-- @column client_upid name of the client upid
+-- @column client_utid name of the client utid
+-- @column client_ts timestamp of the client txn
+-- @column client_dur dur of the client txn
+-- @column is_main_thread Whether the txn was initiated from the main thread of the client process
+-- @column binder_reply_id slice id of the binder reply
+-- @column server_process name of the server process
+-- @column server_thread  name of the server thread
+-- @column server_upid name of the server upid
+-- @column server_utid name of the server utid
+-- @column server_ts timestamp of the server txn
+-- @column server_dur dur of the server txn
+CREATE VIEW android_sync_binder_metrics_by_txn AS
+WITH
+  binder_txn AS (
+    SELECT
+      slice.id AS binder_txn_id,
+      process.name AS process_name,
+      thread.name AS thread_name,
+      thread.utid AS utid,
+      process.upid AS upid,
+      slice.ts,
+      slice.dur,
+      thread.is_main_thread
+    FROM slice
+    INNER JOIN thread_track
+      ON slice.track_id = thread_track.id
+    INNER JOIN thread
+      USING (utid)
+    INNER JOIN process
+      USING (upid)
+    LEFT JOIN slice non_existent ON non_existent.parent_id = slice.id
+    WHERE slice.name = 'binder transaction'
+    AND non_existent.depth IS NULL
+  ),
+  binder_reply AS (
+    SELECT
+      binder_txn.*,
+      binder_reply.ts AS server_ts,
+      binder_reply.dur AS server_dur,
+      binder_reply.id AS binder_reply_id,
+      IIF(aidl.name LIKE 'AIDL::%' AND aidl.depth = binder_reply.depth + 1, aidl.name, NULL) AS aidl_name,
+      reply_thread.name AS server_thread,
+      reply_process.name AS server_process,
+      reply_thread.utid AS server_utid,
+      reply_process.upid AS server_upid
+    FROM binder_txn
+    INNER JOIN flow binder_flow
+      ON binder_txn.binder_txn_id = binder_flow.slice_out
+    INNER JOIN slice binder_reply
+      ON binder_flow.slice_in = binder_reply.id
+    INNER JOIN thread_track reply_thread_track ON binder_reply.track_id = reply_thread_track.id
+    INNER JOIN thread reply_thread ON reply_thread.utid = reply_thread_track.utid
+    INNER JOIN process reply_process ON reply_process.upid = reply_thread.upid
+    LEFT JOIN slice aidl ON aidl.parent_id = binder_reply.id
+  )
+SELECT
+  MIN(aidl_name) AS aidl_name,
+  binder_txn_id,
+  process_name AS client_process,
+  thread_name AS client_thread,
+  upid AS client_upid,
+  utid AS client_utid,
+  is_main_thread,
+  ts AS client_ts,
+  dur AS client_dur,
+  binder_reply_id,
+  server_process,
+  server_thread,
+  server_upid,
+  server_utid,
+  server_ts,
+  server_dur
+FROM binder_reply
+WHERE client_dur >= 0 AND server_dur >= 0 AND client_dur >= server_dur
+GROUP BY
+  process_name,
+  thread_name,
+  binder_txn_id,
+  binder_reply_id;
+
+-- Breakdown synchronous binder transactions per txn.
+--
+-- @column aidl_name name of the binder interface if existing
+-- @column binder_txn_id slice id of the binder txn
+-- @column client_process name of the client process
+-- @column client_thread name of the client thread
+-- @column client_upid name of the client upid
+-- @column client_utid name of the client utid
+-- @column client_ts timestamp of the client txn
+-- @column client_dur dur of the client txn
+-- @column is_main_thread Whether the txn was initiated from the main thread of the client process
+-- @column binder_reply_id slice id of the binder reply
+-- @column server_process name of the server process
+-- @column server_thread  name of the server thread
+-- @column server_upid name of the server upid
+-- @column server_utid name of the server utid
+-- @column server_ts timestamp of the server txn
+-- @column server_dur dur of the server txn
+-- @column thread_state_type whether thread state is on the txn or reply side
+-- @column thread_state_ts ts of the txn thread_state
+-- @column thread_state_dur dur of the txn thread_state
+-- @column thread_state actual thread state of the txn thread_state
+-- @column blocked_function blocked kernel function in the txn thread_state
+CREATE VIEW android_sync_binder_txn_thread_state_by_txn
+AS
+SELECT
+  binder.*,
+  'binder_txn' AS thread_state_type,
+  txn_state.state AS thread_state,
+  SPANS_OVERLAPPING_DUR(txn_state.ts, txn_state.dur, client_ts, client_dur) AS thread_state_dur,
+  blocked_function
+FROM android_sync_binder_metrics_by_txn binder
+INNER JOIN thread_state txn_state
+  ON (
+    txn_state.utid = binder.client_utid)
+    AND (
+      (txn_state.ts + txn_state.dur BETWEEN client_ts AND client_ts + client_dur)
+      OR (client_ts + client_dur BETWEEN txn_state.ts AND txn_state.ts + txn_state.dur));
+
+-- Breakdown synchronous binder transactions per reply.
+--
+-- @column aidl_name name of the binder interface if existing
+-- @column binder_txn_id slice id of the binder txn
+-- @column client_process name of the client process
+-- @column client_thread name of the client thread
+-- @column client_upid name of the client upid
+-- @column client_utid name of the client utid
+-- @column client_ts timestamp of the client txn
+-- @column client_dur dur of the client txn
+-- @column is_main_thread Whether the txn was initiated from the main thread of the client process
+-- @column binder_reply_id slice id of the binder reply
+-- @column server_process name of the server process
+-- @column server_thread  name of the server thread
+-- @column server_upid name of the server upid
+-- @column server_utid name of the server utid
+-- @column server_ts timestamp of the server txn
+-- @column server_dur dur of the server txn
+-- @column thread_state_type whether thread state is on the txn or reply side
+-- @column thread_state_ts ts of the reply thread_state
+-- @column thread_state_dur dur of the reply thread_state
+-- @column thread_state actual thread state of the reply thread_state
+-- @column blocked_function blocked kernel function in the reply thread_state
+CREATE VIEW android_sync_binder_reply_thread_state_by_txn
+AS
+SELECT
+  binder.*,
+  'binder_reply' AS thread_state_type,
+  reply_state.state AS thread_state,
+  SPANS_OVERLAPPING_DUR(reply_state.ts, reply_state.dur, server_ts, server_dur) AS thread_state_dur,
+  blocked_function
+FROM android_sync_binder_metrics_by_txn binder
+INNER JOIN thread_state reply_state
+  ON (
+    reply_state.utid = binder.server_utid)
+    AND (
+      (reply_state.ts + reply_state.dur BETWEEN server_ts AND server_ts + server_dur)
+      OR (server_ts + server_dur BETWEEN reply_state.ts AND reply_state.ts + reply_state.dur));
+
+-- Aggregated thread_states on the client and server side per binder txn
+--
+-- @column binder_txn_id slice id of the binder txn
+-- @column binder_reply_id slice id of the binder reply
+-- @column thread_state_type whether thread state is on the txn or reply side
+-- @column thread_state a thread_state that occurred in the txn
+-- @column thread_state_dur aggregated dur of the |thread_state| in the txn
+-- @column thread_state_count aggregated count of the |thread_state| in the txn
+CREATE VIEW android_sync_binder_thread_state_by_txn
+AS
+SELECT
+  binder_txn_id,
+  binder_reply_id,
+  thread_state_type,
+  thread_state,
+  SUM(thread_state_dur) AS thread_state_dur,
+  COUNT(thread_state_dur) AS thread_state_count
+FROM android_sync_binder_txn_thread_state_by_txn
+GROUP BY binder_txn_id, binder_reply_id, thread_state_type, thread_state
+UNION ALL
+SELECT
+  binder_txn_id,
+  binder_reply_id,
+  thread_state_type,
+  thread_state,
+  SUM(thread_state_dur) AS thread_state_dur,
+  COUNT(thread_state_dur) AS thread_state_count
+FROM android_sync_binder_reply_thread_state_by_txn
+GROUP BY binder_txn_id, binder_reply_id, thread_state_type, thread_state;
+
+-- Aggregated blocked_functions on the client and server side per binder txn
+--
+-- @column binder_txn_id slice id of the binder txn
+-- @column binder_reply_id slice id of the binder reply
+-- @column thread_state_type whether thread state is on the txn or reply side
+-- @column blocked_function blocked kernel function in a thread state
+-- @column blocked_function_dur aggregated dur of the |blocked_function| in the txn
+-- @column blocked_function_count aggregated count of the |blocked_function| in the txn
+CREATE VIEW android_sync_binder_blocked_functions_by_txn
+AS
+SELECT
+  binder_txn_id,
+  binder_reply_id,
+  thread_state_type,
+  blocked_function,
+  SUM(thread_state_dur) AS blocked_function_dur,
+  COUNT(thread_state_dur) AS blocked_function_count
+FROM android_sync_binder_txn_thread_state_by_txn
+WHERE blocked_function IS NOT NULL
+GROUP BY binder_txn_id, binder_reply_id, blocked_function
+UNION ALL
+SELECT
+  binder_txn_id,
+  binder_reply_id,
+  thread_state_type,
+  blocked_function,
+  SUM(thread_state_dur) AS blocked_function_dur,
+  COUNT(thread_state_dur) AS blocked_function_count
+FROM android_sync_binder_reply_thread_state_by_txn
+WHERE blocked_function IS NOT NULL
+GROUP BY binder_txn_id, binder_reply_id, blocked_function;
diff --git a/src/trace_processor/stdlib/common/timestamps.sql b/src/trace_processor/stdlib/common/timestamps.sql
index c1088b8..e3958ed 100644
--- a/src/trace_processor/stdlib/common/timestamps.sql
+++ b/src/trace_processor/stdlib/common/timestamps.sql
@@ -55,4 +55,28 @@
     SELECT (IIF($ts1 < $ts2, $ts2, $ts1)
       < IIF($ts_end1 < $ts_end2, $ts_end1, $ts_end2))
   '
-);
\ No newline at end of file
+);
+
+--Return the overlapping duration between two spans.
+--If either duration is less than 0 or there's no intersection, 0 is returned
+--
+-- @arg ts1 LONG Timestamp of first slice start.
+-- @arg dur1 LONG Duration of first slice.
+-- @arg ts2 LONG Timestamp of second slice start.
+-- @arg dur2 LONG Duration of second slice.
+-- @ret INT               Overlapping duration
+SELECT CREATE_FUNCTION(
+  'SPANS_OVERLAPPING_DUR(ts1 LONG, dur1 LONG, ts2 LONG, dur2 LONG)',
+  'INT',
+  '
+  SELECT
+  CASE
+    WHEN $dur1 = -1 OR $dur2 = -1 THEN 0
+    WHEN $ts1 + $dur1 < $ts2 OR $ts2 + $dur2 < $ts1 THEN 0
+    WHEN ($ts1 >= $ts2) AND ($ts1 + $dur1 <= $ts2 + $dur2) THEN $dur1
+    WHEN ($ts1 < $ts2) AND ($ts1 + $dur1 < $ts2 + $dur2) THEN $ts1 + $dur1 - $ts2
+    WHEN ($ts1 > $ts2) AND ($ts1 + $dur1 > $ts2 + $dur2) THEN $ts2 + $dur2 - $ts1
+    ELSE $dur2
+  END
+  '
+);
diff --git a/src/trace_processor/trace_processor_shell.cc b/src/trace_processor/trace_processor_shell.cc
index e3581e6..0a0ba23 100644
--- a/src/trace_processor/trace_processor_shell.cc
+++ b/src/trace_processor/trace_processor_shell.cc
@@ -18,6 +18,7 @@
 #include <stdio.h>
 #include <sys/stat.h>
 
+#include <cctype>
 #include <cinttypes>
 #include <functional>
 #include <iostream>
diff --git a/src/trace_processor/util/BUILD.gn b/src/trace_processor/util/BUILD.gn
index af28c16..98ff445 100644
--- a/src/trace_processor/util/BUILD.gn
+++ b/src/trace_processor/util/BUILD.gn
@@ -34,6 +34,17 @@
   sources = [ "sql_modules.h" ]
 }
 
+source_set("bump_allocator") {
+  sources = [
+    "bump_allocator.cc",
+    "bump_allocator.h",
+  ]
+  deps = [
+    "../../../gn:default_deps",
+    "../../base",
+  ]
+}
+
 source_set("gzip") {
   sources = [
     "gzip_utils.cc",
@@ -206,6 +217,7 @@
 
 source_set("unittests") {
   sources = [
+    "bump_allocator_unittest.cc",
     "debug_annotation_parser_unittest.cc",
     "glob_unittest.cc",
     "proto_profiler_unittest.cc",
@@ -217,6 +229,7 @@
   ]
   testonly = true
   deps = [
+    ":bump_allocator",
     ":descriptors",
     ":glob",
     ":gzip",
diff --git a/src/trace_processor/util/annotated_callsites.cc b/src/trace_processor/util/annotated_callsites.cc
index 7d33088..5e23130 100644
--- a/src/trace_processor/util/annotated_callsites.cc
+++ b/src/trace_processor/util/annotated_callsites.cc
@@ -104,10 +104,12 @@
   // Mixed callstack, tag libart frames as uninteresting (common-frame).
   // Special case a subset of interpreter implementation frames as
   // "common-frame-interp" using frame name prefixes. Those functions are
-  // actually executed, whereas the managed "interp" frames are synthesised
-  // as their caller by the unwinding library (based on the dex_pc virtual
-  // register restored using the libart's DWARF info). Example:
+  // actually executed, whereas the managed "interp" frames are synthesised as
+  // their caller by the unwinding library (based on the dex_pc virtual
+  // register restored using the libart's DWARF info). The heuristic covers
+  // the "nterp" and "switch" interpreter implementations.
   //
+  // Example:
   //  <towards root>
   //  android.view.WindowLayout.computeFrames [interp]
   //  nterp_op_iget_object_slow_path [common-frame-interp]
@@ -116,10 +118,15 @@
   // process in?" based on the leaf frame of the callstack. As we want to
   // classify such cases as interpreted, even though the leaf frame is
   // libart.so.
+  //
+  // For "switch" interpreter, we match any frame starting with
+  // "art::interpreter::" according to itanium mangling.
   if (state == State::kEraseLibart && map_type == MapType::kNativeLibart) {
     NullTermStringView fname = context_.storage->GetString(frame.name());
     if (fname.StartsWith("nterp_") || fname.StartsWith("Nterp") ||
-        fname.StartsWith("ExecuteNterp")) {
+        fname.StartsWith("ExecuteNterp") ||
+        fname.StartsWith("ExecuteSwitchImpl") ||
+        fname.StartsWith("_ZN3art11interpreter")) {
       return {state, CallsiteAnnotation::kCommonFrameInterp};
     }
     return {state, CallsiteAnnotation::kCommonFrame};
diff --git a/src/trace_processor/util/bump_allocator.cc b/src/trace_processor/util/bump_allocator.cc
new file mode 100644
index 0000000..1c00a8c
--- /dev/null
+++ b/src/trace_processor/util/bump_allocator.cc
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "src/trace_processor/util/bump_allocator.h"
+
+#include "perfetto/base/compiler.h"
+#include "perfetto/base/logging.h"
+#include "perfetto/ext/base/optional.h"
+#include "perfetto/ext/base/utils.h"
+
+namespace perfetto {
+namespace trace_processor {
+namespace {
+
+// TODO(b/266983484): consider using base::PagedMemory unless a) we are on a
+// platform where that doesn't make sense (WASM) b) we are trying to do heap
+// profiling.
+base::AlignedUniquePtr<uint8_t[]> Allocate(uint32_t size) {
+  uint8_t* ptr = static_cast<uint8_t*>(base::AlignedAlloc(8, size));
+  // Poison the region to try and catch out of bound accesses.
+  PERFETTO_ASAN_POISON(ptr, size);
+  return base::AlignedUniquePtr<uint8_t[]>(ptr);
+}
+
+}  // namespace
+
+BumpAllocator::BumpAllocator() = default;
+
+BumpAllocator::~BumpAllocator() {
+  for (const auto& chunk : chunks_) {
+    PERFETTO_CHECK(chunk.unfreed_allocations == 0);
+  }
+}
+
+BumpAllocator::AllocId BumpAllocator::Alloc(uint32_t size) {
+  // Size is required to be a multiple of 8 to avoid needing to deal with
+  // alignment. It must also be at most kChunkSize as we do not support cross
+  // chunk spanning allocations.
+  PERFETTO_DCHECK(size % 8 == 0);
+  PERFETTO_DCHECK(size <= kChunkSize);
+
+  // Fast path: check if we have space to service this allocation in the current
+  // chunk.
+  base::Optional<AllocId> alloc_id = TryAllocInLastChunk(size);
+  if (alloc_id) {
+    return *alloc_id;
+  }
+
+  // Slow path: we don't have enough space in the last chunk so we create one.
+  Chunk chunk;
+  chunk.allocation = Allocate(kChunkSize);
+  chunks_.emplace_back(std::move(chunk));
+
+  // Ensure that we haven't exceeded the maximum number of chunks.
+  PERFETTO_CHECK(LastChunkIndex() < kMaxChunkCount);
+
+  // This time the allocation should definitely succeed in the last chunk (which
+  // we just added).
+  alloc_id = TryAllocInLastChunk(size);
+  PERFETTO_CHECK(alloc_id);
+  return *alloc_id;
+}
+
+void BumpAllocator::Free(AllocId id) {
+  Chunk& chunk = chunks_.at(ChunkIndexToQueueIndex(id.chunk_index));
+  PERFETTO_DCHECK(chunk.unfreed_allocations > 0);
+  chunk.unfreed_allocations--;
+}
+
+void* BumpAllocator::GetPointer(AllocId id) {
+  uint32_t queue_index = ChunkIndexToQueueIndex(id.chunk_index);
+  return chunks_.at(queue_index).allocation.get() + id.chunk_offset;
+}
+
+uint32_t BumpAllocator::EraseFrontFreeChunks() {
+  uint32_t to_erase_chunks = 0;
+  for (; to_erase_chunks < chunks_.size(); ++to_erase_chunks) {
+    // Break on the first chunk which still has unfreed allocations.
+    if (chunks_.at(to_erase_chunks).unfreed_allocations > 0) {
+      break;
+    }
+  }
+  chunks_.erase_front(to_erase_chunks);
+  erased_front_chunks_count_ += to_erase_chunks;
+  return to_erase_chunks;
+}
+
+uint32_t BumpAllocator::PastEndSerializedId() {
+  if (chunks_.empty()) {
+    return AllocId{erased_front_chunks_count_, 0}.Serialize();
+  }
+  return AllocId{LastChunkIndex(), chunks_.back().bump_offset}.Serialize();
+}
+
+base::Optional<BumpAllocator::AllocId> BumpAllocator::TryAllocInLastChunk(
+    uint32_t size) {
+  if (chunks_.empty()) {
+    return base::nullopt;
+  }
+
+  // TODO(266983484): consider switching this to bump downwards instead of
+  // upwards for more efficient code generation.
+  Chunk& chunk = chunks_.back();
+
+  // Verify some invariants:
+  // 1) The allocation must exist
+  // 2) The bump must be in the bounds of the chunk.
+  PERFETTO_DCHECK(chunk.allocation);
+  PERFETTO_DCHECK(chunk.bump_offset <= kChunkSize);
+
+  // If the end of the allocation ends up after this chunk, we cannot service it
+  // in this chunk.
+  uint32_t alloc_offset = chunk.bump_offset;
+  uint32_t new_bump_offset = chunk.bump_offset + size;
+  if (new_bump_offset > kChunkSize) {
+    return base::nullopt;
+  }
+
+  // Set the new offset equal to the end of this allocation and increment the
+  // unfreed allocation counter.
+  chunk.bump_offset = new_bump_offset;
+  chunk.unfreed_allocations++;
+
+  // Unpoison the allocation range to allow access to it on ASAN builds.
+  PERFETTO_ASAN_UNPOISON(chunk.allocation.get() + alloc_offset, size);
+
+  return AllocId{LastChunkIndex(), alloc_offset};
+}
+
+}  // namespace trace_processor
+}  // namespace perfetto
diff --git a/src/trace_processor/util/bump_allocator.h b/src/trace_processor/util/bump_allocator.h
new file mode 100644
index 0000000..cd5e593
--- /dev/null
+++ b/src/trace_processor/util/bump_allocator.h
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SRC_TRACE_PROCESSOR_UTIL_BUMP_ALLOCATOR_H_
+#define SRC_TRACE_PROCESSOR_UTIL_BUMP_ALLOCATOR_H_
+
+#include <cmath>
+#include <cstdint>
+#include <cstring>
+#include <limits>
+#include <memory>
+#include "perfetto/ext/base/circular_queue.h"
+#include "perfetto/ext/base/optional.h"
+#include "perfetto/ext/base/utils.h"
+
+namespace perfetto {
+namespace trace_processor {
+
+// A simple memory allocator which "bumps" a pointer to service allocations.
+// See [1] for more details for an overview of bump allocators.
+//
+// This implementation works by obtaining a large chunk of memory from the
+// system allocator (i.e. from malloc). Every allocation uses that chunk as long
+// as there is free space inside. Once an allocation is requested which does not
+// fit in that chunk, a new chunk is requested from the system.
+//
+// IMPORTANT: all allocations returned from this allocator are 8-aligned and
+// all allocation sizes must be a multiple of 8.
+//
+// IMPORTANT: this allocator can allocate a total of 4GB of memory (2^32). Once
+// this is exhausted, any further allocation will cause a CHECK.
+//
+// IMPORTANT: all allocations *must* be explicitly freed before destroying this
+// object. The destructor will CHECK if it detects any allocation which is
+// unfreed.
+//
+// [1] https://rust-hosted-langs.github.io/book/chapter-simple-bump.html
+class BumpAllocator {
+ public:
+  // The limit on the total amount of memory which can be allocated. Required
+  // as we can only address 4GB of memory with AllocId.
+  static constexpr uint64_t kAllocLimit = 4ull * 1024 * 1024 * 1024;  // 4GB
+
+  // The size of the "large chunk" requested from the system allocator.
+  // The size of this value trades-off between unused memory use vs CPU cost
+  // of going to the system allocator. 64KB feels a good trade-off there.
+  static constexpr uint32_t kChunkSize = 64u * 1024;  // 64KB
+
+  // The maximum number of chunks which this allocator can have.
+  static constexpr uint32_t kMaxChunkCount = kAllocLimit / kChunkSize;
+
+  // The number of bits used to represent the offset the chunk in AllocId.
+  //
+  // This is simply log2(kChunkSize): we have a separate constant as log2 is
+  // not a constexpr function: the static assets below verify this stays in
+  // sync.
+  static constexpr uint32_t kChunkOffsetAllocIdBits = 16u;
+
+  // The number of bits used to represent the chunk index in AllocId.
+  static constexpr uint32_t kChunkIndexAllocIdBits =
+      32u - kChunkOffsetAllocIdBits;
+
+  // Represents an allocation returned from the allocator. We return this
+  // instead of just returning a pointer to allow looking up a chunk an
+  // allocation belongs to without needing having to scan chunks.
+  struct AllocId {
+    uint32_t chunk_index : kChunkIndexAllocIdBits;
+    uint32_t chunk_offset : kChunkOffsetAllocIdBits;
+
+    uint32_t Serialize() const {
+      return static_cast<uint32_t>(chunk_index) << kChunkOffsetAllocIdBits |
+             chunk_offset;
+    }
+
+    static AllocId FromSerialized(uint32_t serialized) {
+      AllocId id;
+      id.chunk_index = serialized >> kChunkOffsetAllocIdBits;
+      id.chunk_offset = serialized;
+      return id;
+    }
+  };
+  static_assert(sizeof(AllocId) == sizeof(uint32_t),
+                "AllocId should be 32-bit in size to allow serialization");
+  static_assert(
+      kMaxChunkCount == (1 << kChunkIndexAllocIdBits),
+      "Max chunk count must match the number of bits used for chunk indices");
+  static_assert(
+      kChunkSize == (1 << kChunkOffsetAllocIdBits),
+      "Chunk size must match the number of bits used for offset within chunk");
+  static_assert(kAllocLimit == 1ull << sizeof(AllocId) * 8,
+                "Total limit on allocations must be equal to the number of "
+                "bits used for AllocId");
+
+  BumpAllocator();
+
+  // Verifies that all calls to |Alloc| were paired with matching calls to
+  // |Free|.
+  ~BumpAllocator();
+
+  BumpAllocator(BumpAllocator&&) noexcept = default;
+  BumpAllocator& operator=(BumpAllocator&&) noexcept = default;
+
+  // Allocates |size| bytes of memory. |size| must be a multiple of 8 and less
+  // than or equal to |kChunkSize|.
+  //
+  // Returns an |AllocId| which can be converted to a pointer using
+  // |GetPointer|.
+  AllocId Alloc(uint32_t size);
+
+  // Frees an allocation previously allocated by |Alloc|. This function is *not*
+  // idempotent.
+  //
+  // Once this function returns, |id| is no longer valid for any use. Trying
+  // to use it further (e.g. to passing to other methods including Free itself)
+  // will cause undefined behaviour.
+  void Free(AllocId id);
+
+  // Given an AllocId, returns a pointer which can be read from/written to.
+  //
+  // The caller is only allowed to access up to |size| bytes, where |size| ==
+  // the |size| argument to Alloc.
+  void* GetPointer(AllocId);
+
+  // Removes chunks from the start of this allocator where all the allocations
+  // in the chunks have been freed. This releases the memory back to the system.
+  //
+  // Returns the number of chunks freed.
+  uint32_t EraseFrontFreeChunks();
+
+  // Returns a "past the end" serialized AllocId i.e. a serialized value
+  // greater than all previously returned AllocIds.
+  uint32_t PastEndSerializedId();
+
+  // Returns the number of erased chunks from the start of this allocator.
+  //
+  // This value may change any time |EraseFrontFreeChunks| is called but is
+  // constant otherwise.
+  uint32_t erased_front_chunks_count() const {
+    return erased_front_chunks_count_;
+  }
+
+ private:
+  struct Chunk {
+    // The allocation from the system for this chunk. Because all allocations
+    // need to be 8 byte aligned, the chunk also needs to be 8-byte aligned.
+    // base::AlignedUniquePtr ensures this is the case.
+    base::AlignedUniquePtr<uint8_t[]> allocation;
+
+    // The bump offset relative to |allocation.data|. Incremented to service
+    // Alloc requests.
+    uint32_t bump_offset = 0;
+
+    // The number of unfreed allocations in this chunk.
+    uint32_t unfreed_allocations = 0;
+  };
+
+  // Tries to allocate |size| bytes in the final chunk in |chunks_|. Returns
+  // an AllocId if this was successful or base::nullopt otherwise.
+  base::Optional<AllocId> TryAllocInLastChunk(uint32_t size);
+
+  uint32_t ChunkIndexToQueueIndex(uint32_t chunk_index) const {
+    return chunk_index - erased_front_chunks_count_;
+  }
+  uint32_t QueueIndexToChunkIndex(uint32_t index_in_chunks_vec) const {
+    return erased_front_chunks_count_ + index_in_chunks_vec;
+  }
+  uint32_t LastChunkIndex() const {
+    PERFETTO_DCHECK(!chunks_.empty());
+    return QueueIndexToChunkIndex(static_cast<uint32_t>(chunks_.size() - 1));
+  }
+
+  base::CircularQueue<Chunk> chunks_;
+  uint32_t erased_front_chunks_count_ = 0;
+};
+
+}  // namespace trace_processor
+}  // namespace perfetto
+
+#endif  // SRC_TRACE_PROCESSOR_UTIL_BUMP_ALLOCATOR_H_
diff --git a/src/trace_processor/util/bump_allocator_unittest.cc b/src/trace_processor/util/bump_allocator_unittest.cc
new file mode 100644
index 0000000..4608be6
--- /dev/null
+++ b/src/trace_processor/util/bump_allocator_unittest.cc
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "src/trace_processor/util/bump_allocator.h"
+
+#include <limits>
+#include <random>
+#include <vector>
+
+#include "perfetto/ext/base/utils.h"
+#include "test/gtest_and_gmock.h"
+
+namespace perfetto {
+namespace trace_processor {
+
+class BumpAllocatorUnittest : public ::testing::Test {
+ public:
+  // Allocates |size| bytes of memory with aligned to |align|, writes |size|
+  // bytes in the region, reads |size| bytes and then frees the memory.
+  //
+  // Very useful to check that none of the internal DCHECKs of the allocator
+  // fire.
+  void AllocateWriteReadAndFree(uint32_t size) {
+    BumpAllocator::AllocId id = allocator_.Alloc(size);
+    uint8_t* ptr = static_cast<uint8_t*>(allocator_.GetPointer(id));
+
+    std::vector<uint8_t> data(size);
+    for (uint32_t i = 0; i < size; ++i) {
+      data[i] = static_cast<uint8_t>(rnd_engine_() &
+                                     std::numeric_limits<uint8_t>::max());
+    }
+    memcpy(ptr, data.data(), size);
+    ASSERT_EQ(memcmp(ptr, data.data(), size), 0);
+    allocator_.Free(id);
+  }
+
+ protected:
+  std::minstd_rand0 rnd_engine_;
+  BumpAllocator allocator_;
+};
+
+TEST_F(BumpAllocatorUnittest, AllocSmoke) {
+  AllocateWriteReadAndFree(8);
+  AllocateWriteReadAndFree(16);
+  AllocateWriteReadAndFree(24);
+  AllocateWriteReadAndFree(64);
+  AllocateWriteReadAndFree(1024);
+  AllocateWriteReadAndFree(BumpAllocator::kChunkSize);
+
+  allocator_.EraseFrontFreeChunks();
+}
+
+TEST_F(BumpAllocatorUnittest, EraseFrontAtAnyTime) {
+  BumpAllocator::AllocId id = allocator_.Alloc(8);
+  allocator_.EraseFrontFreeChunks();
+  allocator_.Free(id);
+  allocator_.EraseFrontFreeChunks();
+}
+
+TEST_F(BumpAllocatorUnittest, Serialize) {
+  BumpAllocator::AllocId id = allocator_.Alloc(8);
+  ASSERT_EQ(id.Serialize(), 0u);
+  ASSERT_EQ(allocator_.PastEndSerializedId(), 8u);
+  allocator_.Free(id);
+
+  id = allocator_.Alloc(8);
+  ASSERT_EQ(id.Serialize(), 8u);
+  allocator_.Free(id);
+
+  id = allocator_.Alloc(BumpAllocator::kChunkSize);
+  ASSERT_EQ(id.Serialize(), BumpAllocator::kChunkSize);
+  allocator_.Free(id);
+}
+
+TEST_F(BumpAllocatorUnittest, HighNumberSerialize) {
+  BumpAllocator::AllocId id = BumpAllocator::AllocId::FromSerialized(1138352);
+  ASSERT_EQ(id.chunk_index, 1138352 / BumpAllocator::kChunkSize);
+  ASSERT_EQ(id.chunk_offset, 1138352 % BumpAllocator::kChunkSize);
+  ASSERT_EQ(id.Serialize(), 1138352u);
+}
+
+TEST_F(BumpAllocatorUnittest, EraseFrontAccounting) {
+  AllocateWriteReadAndFree(8);
+  ASSERT_EQ(allocator_.EraseFrontFreeChunks(), 1u);
+  ASSERT_EQ(allocator_.erased_front_chunks_count(), 1u);
+  AllocateWriteReadAndFree(8);
+  ASSERT_EQ(allocator_.EraseFrontFreeChunks(), 1u);
+  ASSERT_EQ(allocator_.erased_front_chunks_count(), 2u);
+}
+
+TEST_F(BumpAllocatorUnittest, EraseFrontFreeChunk) {
+  AllocateWriteReadAndFree(8);
+  allocator_.EraseFrontFreeChunks();
+
+  auto past_id =
+      BumpAllocator::AllocId::FromSerialized(allocator_.PastEndSerializedId());
+  ASSERT_EQ(past_id.chunk_index, 1u);
+  ASSERT_EQ(past_id.chunk_offset, 0u);
+
+  auto id = allocator_.Alloc(8);
+  ASSERT_EQ(id.chunk_index, past_id.chunk_index);
+  ASSERT_EQ(id.chunk_offset, past_id.chunk_offset);
+  allocator_.Free(id);
+}
+
+TEST_F(BumpAllocatorUnittest, StressTest) {
+  std::minstd_rand0 rnd_engine;
+  for (int i = 0; i < 1000; i++) {
+    uint32_t size =
+        static_cast<uint32_t>((rnd_engine() * 8) % BumpAllocator::kChunkSize);
+    AllocateWriteReadAndFree(size);
+  }
+}
+
+}  // namespace trace_processor
+}  // namespace perfetto
diff --git a/src/traced/probes/ftrace/ftrace_config_muxer.cc b/src/traced/probes/ftrace/ftrace_config_muxer.cc
index 5b0ad79..61a26dd 100644
--- a/src/traced/probes/ftrace/ftrace_config_muxer.cc
+++ b/src/traced/probes/ftrace/ftrace_config_muxer.cc
@@ -585,40 +585,56 @@
     FtraceProcfs* ftrace,
     ProtoTranslationTable* table,
     SyscallTable syscalls,
-    std::map<std::string, std::vector<GroupAndName>> vendor_events)
+    std::map<std::string, std::vector<GroupAndName>> vendor_events,
+    bool secondary_instance)
     : ftrace_(ftrace),
       table_(table),
       syscalls_(std::move(syscalls)),
       current_state_(),
       ds_configs_(),
-      vendor_events_(vendor_events) {}
+      vendor_events_(vendor_events),
+      secondary_instance_(secondary_instance) {}
 FtraceConfigMuxer::~FtraceConfigMuxer() = default;
 
-FtraceConfigId FtraceConfigMuxer::SetupConfig(const FtraceConfig& request,
-                                              FtraceSetupErrors* errors) {
+bool FtraceConfigMuxer::SetupConfig(FtraceConfigId id,
+                                    const FtraceConfig& request,
+                                    FtraceSetupErrors* errors) {
   EventFilter filter;
-  bool is_ftrace_enabled = ftrace_->IsTracingEnabled();
   if (ds_configs_.empty()) {
     PERFETTO_DCHECK(active_configs_.empty());
 
-    // If someone outside of perfetto is using ftrace give up now.
-    if (!request.preserve_ftrace_buffer() && is_ftrace_enabled &&
-        !IsOldAtrace()) {
-      PERFETTO_ELOG("ftrace in use by non-Perfetto.");
-      return 0;
+    // If someone outside of perfetto is using a non-nop tracer, yield. We can't
+    // realistically figure out all notions of "in use" even if we look at
+    // set_event or events/enable, so this is all we check for.
+    if (!request.preserve_ftrace_buffer() && !ftrace_->IsTracingAvailable()) {
+      PERFETTO_ELOG(
+          "ftrace in use by non-Perfetto. Check that %s current_tracer is nop.",
+          ftrace_->GetRootPath().c_str());
+      return false;
     }
 
-    // Setup ftrace, without starting it. Setting buffers can be quite slow
-    // (up to hundreds of ms).
-    if (!request.preserve_ftrace_buffer())
-      SetupClock(request);
-    SetupBufferSize(request);
-  } else {
-    // Did someone turn ftrace off behind our back? If so give up.
-    if (!active_configs_.empty() && !is_ftrace_enabled && !IsOldAtrace()) {
-      PERFETTO_ELOG("ftrace disabled by non-Perfetto.");
-      return 0;
+    // Clear tracefs state, remembering which value of "tracing_on" to restore
+    // to after we're done, though we won't restore the rest of the tracefs
+    // state.
+    current_state_.saved_tracing_on = ftrace_->GetTracingOn();
+    if (!request.preserve_ftrace_buffer()) {
+      ftrace_->SetTracingOn(false);
+      // This will fail on release ("user") builds due to ACLs, but that's
+      // acceptable since the per-event enabling/disabling should still be
+      // balanced.
+      ftrace_->DisableAllEvents();
+      ftrace_->ClearTrace();
     }
+
+    // Set up the rest of the tracefs state, without starting it.
+    // Notes:
+    // * resizing buffers can be quite slow (up to hundreds of ms).
+    // * resizing buffers doesn't clear their existing contents, which matters
+    // to the preserve_ftrace_buffer option.
+    if (!request.preserve_ftrace_buffer()) {
+      SetupClock(request);
+    }
+    SetupBufferSize(request);
   }
 
   std::set<GroupAndName> events = GetFtraceEvents(request, table_);
@@ -636,11 +652,17 @@
   }
 
   if (RequiresAtrace(request)) {
+    if (secondary_instance_) {
+      PERFETTO_ELOG(
+          "Secondary ftrace instances do not support atrace_categories and "
+          "atrace_apps options as they affect global state");
+      return false;
+    }
     if (IsOldAtrace() && !ds_configs_.empty()) {
       PERFETTO_ELOG(
           "Concurrent atrace sessions are not supported before Android P, "
           "bailing out.");
-      return 0;
+      return false;
     }
     UpdateAtrace(request, errors ? &errors->atrace_errors : nullptr);
   }
@@ -686,7 +708,7 @@
   EventFilter syscall_filter = BuildSyscallFilter(filter, request);
   if (!SetSyscallEventFilter(syscall_filter)) {
     PERFETTO_ELOG("Failed to set raw_syscall ftrace filter in SetupConfig");
-    return 0;
+    return false;
   }
 
   // Kernel function tracing (function_graph).
@@ -702,19 +724,19 @@
   // through a trace (but some might get added).
   if (request.enable_function_graph()) {
     if (!current_state_.funcgraph_on && !ftrace_->ClearFunctionFilters())
-      return 0;
+      return false;
     if (!current_state_.funcgraph_on && !ftrace_->ClearFunctionGraphFilters())
-      return 0;
+      return false;
     if (!ftrace_->AppendFunctionFilters(request.function_filters()))
-      return 0;
+      return false;
     if (!ftrace_->AppendFunctionGraphFilters(request.function_graph_roots()))
-      return 0;
+      return false;
     if (!current_state_.funcgraph_on &&
         !ftrace_->SetCurrentTracer("function_graph")) {
       PERFETTO_LOG(
           "Unable to enable function_graph tracing since a concurrent ftrace "
           "data source is using a different tracer");
-      return 0;
+      return false;
     }
     current_state_.funcgraph_on = true;
   }
@@ -736,7 +758,6 @@
 
   std::vector<std::string> apps(request.atrace_apps());
   std::vector<std::string> categories(request.atrace_categories());
-  FtraceConfigId id = ++last_id_;
   ds_configs_.emplace(
       std::piecewise_construct, std::forward_as_tuple(id),
       std::forward_as_tuple(std::move(filter), std::move(syscall_filter),
@@ -745,7 +766,7 @@
                             request.symbolize_ksyms(),
                             request.preserve_ftrace_buffer(),
                             GetSyscallsReturningFds(syscalls_)));
-  return id;
+  return true;
 }
 
 bool FtraceConfigMuxer::ActivateConfig(FtraceConfigId id) {
@@ -754,14 +775,10 @@
     return false;
   }
 
+  // Enable tracing_on to activate ftrace ring buffer before activate the first
+  // config.
   if (active_configs_.empty()) {
-    if (!ds_configs_.at(id).preserve_ftrace_buffer &&
-        ftrace_->IsTracingEnabled() && !IsOldAtrace()) {
-      // If someone outside of perfetto is using ftrace give up now.
-      PERFETTO_ELOG("ftrace in use by non-Perfetto.");
-      return false;
-    }
-    if (!ftrace_->EnableTracing()) {
+    if (!ftrace_->SetTracingOn(true)) {
       PERFETTO_ELOG("Failed to enable ftrace.");
       return false;
     }
@@ -816,14 +833,14 @@
       current_state_.ftrace_events.DisableEvent(event->ftrace_event_id);
   }
 
-  // If there aren't any more active configs, disable ftrace.
   auto active_it = active_configs_.find(config_id);
   if (active_it != active_configs_.end()) {
     active_configs_.erase(active_it);
     if (active_configs_.empty()) {
-      // This was the last active config, disable ftrace.
-      if (!ftrace_->DisableTracing())
-        PERFETTO_ELOG("Failed to disable ftrace.");
+      // This was the last active config for now, but potentially more dormant
+      // configs need to be activated. We are not interested in reading while no
+      // active configs so diasble tracing_on here.
+      ftrace_->SetTracingOn(false);
     }
   }
 
@@ -835,6 +852,7 @@
       current_state_.cpu_buffer_size_pages = 1;
     ftrace_->DisableAllEvents();
     ftrace_->ClearTrace();
+    ftrace_->SetTracingOn(current_state_.saved_tracing_on);
   }
 
   if (current_state_.atrace_on) {
diff --git a/src/traced/probes/ftrace/ftrace_config_muxer.h b/src/traced/probes/ftrace/ftrace_config_muxer.h
index 4247af1..2a2fca8 100644
--- a/src/traced/probes/ftrace/ftrace_config_muxer.h
+++ b/src/traced/probes/ftrace/ftrace_config_muxer.h
@@ -108,19 +108,20 @@
       FtraceProcfs* ftrace,
       ProtoTranslationTable* table,
       SyscallTable syscalls,
-      std::map<std::string, std::vector<GroupAndName>> vendor_events);
+      std::map<std::string, std::vector<GroupAndName>> vendor_events,
+      bool secondary_instance = false);
   virtual ~FtraceConfigMuxer();
 
   // Ask FtraceConfigMuxer to adjust ftrace procfs settings to
-  // match the requested config. Returns an id to manage this
-  // config or zero on failure.
+  // match the requested config. Returns true on success and false on failure.
   // This is best effort. FtraceConfigMuxer may not be able to adjust the
   // buffer size right now. Events may be missing or there may be extra events
   // (if you enable an atrace category we try to give you the matching events).
   // If someone else is tracing we won't touch atrace (since it resets the
   // buffer).
-  FtraceConfigId SetupConfig(const FtraceConfig& request,
-                             FtraceSetupErrors* = nullptr);
+  bool SetupConfig(FtraceConfigId id,
+                   const FtraceConfig& request,
+                   FtraceSetupErrors* = nullptr);
 
   // Activate ftrace for the given config (if not already active).
   bool ActivateConfig(FtraceConfigId);
@@ -185,6 +186,7 @@
     bool atrace_on = false;
     std::vector<std::string> atrace_apps;
     std::vector<std::string> atrace_categories;
+    bool saved_tracing_on;  // Backup for the original tracing_on.
   };
 
   FtraceConfigMuxer(const FtraceConfigMuxer&) = delete;
@@ -220,9 +222,6 @@
   // so the filter can be updated before ds_configs_.
   bool SetSyscallEventFilter(const EventFilter& extra_syscalls);
 
-  FtraceConfigId GetNextId();
-
-  FtraceConfigId last_id_ = 1;
   FtraceProcfs* ftrace_;
   ProtoTranslationTable* table_;
   SyscallTable syscalls_;
@@ -235,11 +234,17 @@
   // sizes and events, but don't enable ftrace (i.e. tracing_on).
   std::map<FtraceConfigId, FtraceDataSourceConfig> ds_configs_;
 
-  std::map<std::string, std::vector<GroupAndName>> vendor_events_;
-
   // Subset of |ds_configs_| that are currently active. At any time ftrace is
   // enabled iff |active_configs_| is not empty.
   std::set<FtraceConfigId> active_configs_;
+
+  std::map<std::string, std::vector<GroupAndName>> vendor_events_;
+
+  // If true, this muxer is for a secondary ftrace instance
+  // (tracefs/instances/<name>). At the moment, we only support basic ftrace
+  // event recording in such instances. So only |ftrace_events| and
+  // |ftrace_buffer_size| options are guaranteed to work.
+  bool secondary_instance_;
 };
 
 size_t ComputeCpuBufferSizeInPages(size_t requested_buffer_size_kb);
diff --git a/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc b/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc
index 96c8da6..69c96d3 100644
--- a/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc
+++ b/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc
@@ -237,13 +237,22 @@
 
   FtraceConfigMuxer model(&ftrace, fake_table.get(), GetSyscallTable(), {});
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
+      .WillByDefault(Return("[local] global boot"));
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
+      .Times(AnyNumber());
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("nop"));
+  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+      .WillOnce(Return('1'));
   EXPECT_CALL(ftrace, WriteToFile(_, _)).WillRepeatedly(Return(true));
   EXPECT_CALL(ftrace, WriteToFile("/root/events/raw_syscalls/sys_enter/filter",
                                   "id == 0 || id == 1"));
   EXPECT_CALL(ftrace, WriteToFile("/root/events/raw_syscalls/sys_exit/filter",
                                   "id == 0 || id == 1"));
 
-  FtraceConfigId id = model.SetupConfig(config);
+  FtraceConfigId id = 37;
+  ASSERT_TRUE(model.SetupConfig(id, config));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const std::set<size_t>& filter = model.GetSyscallFilterForTesting();
@@ -259,8 +268,17 @@
   config.add_syscall_events("sys_open");
   config.add_syscall_events("sys_not_a_call");
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
+      .WillByDefault(Return("[local] global boot"));
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
+      .Times(AnyNumber());
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("nop"));
+  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+      .WillOnce(Return('1'));
+
   // Unknown syscall is ignored.
-  ASSERT_TRUE(model.SetupConfig(config));
+  ASSERT_TRUE(model.SetupConfig(/*id = */ 73, config));
   ASSERT_THAT(model.GetSyscallFilterForTesting(), UnorderedElementsAre(0));
 }
 
@@ -280,16 +298,21 @@
   FtraceConfig syscall_read_config = syscall_config;
   syscall_read_config.add_syscall_events("sys_read");
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+
   // Expect no filter for non-syscall config.
-  model.SetupConfig(empty_config);
+  ASSERT_TRUE(model.SetupConfig(/* id= */ 179239, empty_config));
   ASSERT_THAT(model.GetSyscallFilterForTesting(), UnorderedElementsAre());
 
   // Expect no filter for syscall config with no specified events.
-  FtraceConfigId syscall_id = model.SetupConfig(syscall_config);
+  FtraceConfigId syscall_id = 73;
+  ASSERT_TRUE(model.SetupConfig(syscall_id, syscall_config));
   ASSERT_THAT(model.GetSyscallFilterForTesting(), UnorderedElementsAre());
 
   // Still expect no filter to satisfy this and the above.
-  FtraceConfigId syscall_open_id = model.SetupConfig(syscall_open_config);
+  FtraceConfigId syscall_open_id = 101;
+  ASSERT_TRUE(model.SetupConfig(syscall_open_id, syscall_open_config));
   ASSERT_THAT(model.GetSyscallFilterForTesting(), UnorderedElementsAre());
 
   // After removing the generic syscall trace, only the one with filter is left.
@@ -297,7 +320,8 @@
   ASSERT_THAT(model.GetSyscallFilterForTesting(), UnorderedElementsAre(0));
 
   // With sys_read and sys_open traced separately, filter includes both.
-  FtraceConfigId syscall_read_id = model.SetupConfig(syscall_read_config);
+  FtraceConfigId syscall_read_id = 57;
+  ASSERT_TRUE(model.SetupConfig(syscall_read_id, syscall_read_config));
   ASSERT_THAT(model.GetSyscallFilterForTesting(), UnorderedElementsAre(0, 1));
 
   // After removing configs with filters, filter is reset to empty.
@@ -314,17 +338,20 @@
 
   FtraceConfigMuxer model(&ftrace, mock_table.get(), GetSyscallTable(), {});
 
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("nop"));
+  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+      .WillOnce(Return('1'));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(ftrace, ClearFile("/root/trace"));
+  EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
   ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .WillByDefault(Return("[local] global boot"));
   EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .Times(AnyNumber());
-
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .Times(2)
-      .WillRepeatedly(Return('0'));
   EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", _));
   EXPECT_CALL(ftrace, WriteToFile("/root/trace_clock", "boot"));
-  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   EXPECT_CALL(ftrace,
               WriteToFile("/root/events/power/cpu_frequency/enable", "1"));
   EXPECT_CALL(*mock_table, GetEvent(GroupAndName("power", "cpu_frequency")))
@@ -340,7 +367,10 @@
   EXPECT_CALL(*mock_table,
               GetOrCreateEvent(GroupAndName("power", "cpu_frequency")));
 
-  FtraceConfigId id = model.SetupConfig(config);
+  FtraceConfigId id = 7;
+  ASSERT_TRUE(model.SetupConfig(id, config));
+
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
@@ -379,7 +409,13 @@
       .WillByDefault(Return(&event2));
   EXPECT_CALL(*mock_table, GetOrCreateEvent(GroupAndName("group_two", "foo")));
 
-  FtraceConfigId id = model.SetupConfig(config);
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
+
+  FtraceConfigId id = 5;
+  ASSERT_TRUE(model.SetupConfig(id, config));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
@@ -397,17 +433,20 @@
 
   FtraceConfig config = CreateFtraceConfig({"sched/*"});
 
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("nop"));
+  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+      .WillOnce(Return('1'));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(ftrace, ClearFile("/root/trace"));
+  EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
   ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .WillByDefault(Return("[local] global boot"));
   EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .Times(AnyNumber());
-
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .Times(2)
-      .WillRepeatedly(Return('0'));
   EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", _));
   EXPECT_CALL(ftrace, WriteToFile("/root/trace_clock", "boot"));
-  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   EXPECT_CALL(ftrace,
               WriteToFile("/root/events/sched/sched_switch/enable", "1"));
   EXPECT_CALL(ftrace,
@@ -441,8 +480,11 @@
   EXPECT_CALL(*mock_table,
               GetOrCreateEvent(GroupAndName("sched", "sched_new_event")));
 
-  FtraceConfigId id = model.SetupConfig(config);
+  FtraceConfigId id = 13;
+  ASSERT_TRUE(model.SetupConfig(id, config));
   ASSERT_TRUE(id);
+
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
@@ -492,7 +534,13 @@
       .WillByDefault(Return(&event2));
   EXPECT_CALL(*mock_table, GetOrCreateEvent(GroupAndName("group_two", "foo")));
 
-  FtraceConfigId id = model.SetupConfig(config);
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
+
+  FtraceConfigId id = 23;
+  ASSERT_TRUE(model.SetupConfig(id, config));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
@@ -512,22 +560,27 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("nop"));
+  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+      .WillOnce(Return('1'));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(ftrace, ClearFile("/root/trace"));
+  EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
   ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .WillByDefault(Return("[local] global boot"));
   EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .Times(AnyNumber());
-
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .Times(2)
-      .WillRepeatedly(Return('0'));
   EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", _));
   EXPECT_CALL(ftrace, WriteToFile("/root/trace_clock", "boot"));
-  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   EXPECT_CALL(ftrace,
               WriteToFile("/root/events/sched/sched_switch/enable", "1"));
 
-  FtraceConfigId id = model.SetupConfig(config);
-  ASSERT_TRUE(id);
+  FtraceConfigId id = 97;
+  ASSERT_TRUE(model.SetupConfig(id, config));
+
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
@@ -542,13 +595,14 @@
   ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&ftrace));
   EXPECT_CALL(ftrace, NumberOfCpus()).Times(AnyNumber());
 
+  EXPECT_CALL(ftrace,
+              WriteToFile("/root/events/sched/sched_switch/enable", "0"));
   EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
   EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", "4"));
   EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
-  EXPECT_CALL(ftrace,
-              WriteToFile("/root/events/sched/sched_switch/enable", "0"));
   EXPECT_CALL(ftrace, ClearFile("/root/trace"));
   EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
 
   ASSERT_TRUE(model.RemoveConfig(id));
 }
@@ -561,10 +615,9 @@
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
   // If someone is using ftrace already don't stomp on what they are doing.
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .WillOnce(Return('1'));
-  FtraceConfigId id = model.SetupConfig(config);
-  ASSERT_FALSE(id);
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("function"));
+  ASSERT_FALSE(model.SetupConfig(/* id= */ 123, config));
 }
 
 TEST_F(FtraceConfigMuxerTest, Atrace) {
@@ -576,15 +629,17 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .WillOnce(Return('0'));
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
   EXPECT_CALL(atrace, RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                                   "--only_userspace", "sched"}),
                                 _))
       .WillOnce(Return(true));
 
-  FtraceConfigId id = model.SetupConfig(config);
-  ASSERT_TRUE(id);
+  FtraceConfigId id = 57;
+  ASSERT_TRUE(model.SetupConfig(id, config));
 
   // "ftrace" group events are always enabled, and therefore the "print" event
   // will show up in the per data source event filter (as we want to record it),
@@ -618,8 +673,10 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .WillOnce(Return('0'));
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
   EXPECT_CALL(
       atrace,
       RunAtrace(
@@ -629,8 +686,8 @@
           _))
       .WillOnce(Return(true));
 
-  FtraceConfigId id = model.SetupConfig(config);
-  ASSERT_TRUE(id);
+  FtraceConfigId id = 97;
+  ASSERT_TRUE(model.SetupConfig(id, config));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
   ASSERT_TRUE(ds_config);
@@ -663,13 +720,17 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
   EXPECT_CALL(atrace, RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                                   "--only_userspace", "cat_a",
                                                   "-a", "app_a"}),
                                 _))
       .WillOnce(Return(true));
-  FtraceConfigId id_a = model.SetupConfig(config_a);
-  ASSERT_TRUE(id_a);
+  FtraceConfigId id_a = 3;
+  ASSERT_TRUE(model.SetupConfig(id_a, config_a));
 
   EXPECT_CALL(
       atrace,
@@ -677,8 +738,8 @@
                                   "cat_a", "cat_b", "-a", "app_a,app_b"}),
                 _))
       .WillOnce(Return(true));
-  FtraceConfigId id_b = model.SetupConfig(config_b);
-  ASSERT_TRUE(id_b);
+  FtraceConfigId id_b = 13;
+  ASSERT_TRUE(model.SetupConfig(id_b, config_b));
 
   EXPECT_CALL(atrace,
               RunAtrace(ElementsAreArray({"atrace", "--async_start",
@@ -686,8 +747,8 @@
                                           "cat_c", "-a", "app_a,app_b,app_c"}),
                         _))
       .WillOnce(Return(true));
-  FtraceConfigId id_c = model.SetupConfig(config_c);
-  ASSERT_TRUE(id_c);
+  FtraceConfigId id_c = 23;
+  ASSERT_TRUE(model.SetupConfig(id_c, config_c));
 
   EXPECT_CALL(
       atrace,
@@ -734,14 +795,18 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
   EXPECT_CALL(
       atrace,
       RunAtrace(ElementsAreArray({"atrace", "--async_start", "--only_userspace",
                                   "cat_1", "cat_2", "-a", "app_1,app_2"}),
                 _))
       .WillOnce(Return(true));
-  FtraceConfigId id_a = model.SetupConfig(config_a);
-  ASSERT_TRUE(id_a);
+  FtraceConfigId id_a = 7;
+  ASSERT_TRUE(model.SetupConfig(id_a, config_a));
 
   EXPECT_CALL(atrace, RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                                   "--only_userspace", "cat_1",
@@ -749,8 +814,8 @@
                                                   "app_1,app_2,app_fail"}),
                                 _))
       .WillOnce(Return(false));
-  FtraceConfigId id_b = model.SetupConfig(config_b);
-  ASSERT_TRUE(id_b);
+  FtraceConfigId id_b = 17;
+  ASSERT_TRUE(model.SetupConfig(id_b, config_b));
 
   EXPECT_CALL(atrace,
               RunAtrace(ElementsAreArray({"atrace", "--async_start",
@@ -758,8 +823,8 @@
                                           "cat_3", "-a", "app_1,app_2,app_3"}),
                         _))
       .WillOnce(Return(true));
-  FtraceConfigId id_c = model.SetupConfig(config_c);
-  ASSERT_TRUE(id_c);
+  FtraceConfigId id_c = 47;
+  ASSERT_TRUE(model.SetupConfig(id_c, config_c));
 
   EXPECT_CALL(
       atrace,
@@ -795,16 +860,20 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
   EXPECT_CALL(atrace, RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                                   "--only_userspace", "cat_1",
                                                   "-a", "app_1"}),
                                 _))
       .WillOnce(Return(true));
-  FtraceConfigId id_a = model.SetupConfig(config_a);
-  ASSERT_TRUE(id_a);
+  FtraceConfigId id_a = 19;
+  ASSERT_TRUE(model.SetupConfig(id_a, config_a));
 
-  FtraceConfigId id_b = model.SetupConfig(config_b);
-  ASSERT_TRUE(id_b);
+  FtraceConfigId id_b = 29;
+  ASSERT_TRUE(model.SetupConfig(id_b, config_b));
 
   ASSERT_TRUE(model.RemoveConfig(id_a));
 
@@ -832,26 +901,30 @@
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
-  FtraceConfigId id_a = model.SetupConfig(config_a);
-  ASSERT_TRUE(id_a);
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
+  FtraceConfigId id_a = 179;
+  ASSERT_TRUE(model.SetupConfig(id_a, config_a));
 
   EXPECT_CALL(atrace, RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                                   "--only_userspace", "b"}),
                                 _))
       .WillOnce(Return(true));
-  FtraceConfigId id_b = model.SetupConfig(config_b);
-  ASSERT_TRUE(id_b);
+  FtraceConfigId id_b = 239;
+  ASSERT_TRUE(model.SetupConfig(id_b, config_b));
 
-  FtraceConfigId id_c = model.SetupConfig(config_c);
-  ASSERT_TRUE(id_c);
+  FtraceConfigId id_c = 101;
+  ASSERT_TRUE(model.SetupConfig(id_c, config_c));
 
   EXPECT_CALL(atrace,
               RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                           "--only_userspace", "b", "d"}),
                         _))
       .WillOnce(Return(true));
-  FtraceConfigId id_d = model.SetupConfig(config_d);
-  ASSERT_TRUE(id_d);
+  FtraceConfigId id_d = 47;
+  ASSERT_TRUE(model.SetupConfig(id_d, config_d));
 
   EXPECT_CALL(atrace, RunAtrace(ElementsAreArray({"atrace", "--async_start",
                                                   "--only_userspace", "b"}),
@@ -879,8 +952,10 @@
   *config.add_atrace_categories() = "cat_1";
   *config.add_atrace_categories() = "cat_2";
 
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .WillRepeatedly(Return('0'));
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
 
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
@@ -896,8 +971,8 @@
       }));
 
   FtraceSetupErrors errors{};
-  FtraceConfigId id_a = model.SetupConfig(config, &errors);
-  ASSERT_TRUE(id_a);
+  FtraceConfigId id_a = 23;
+  ASSERT_TRUE(model.SetupConfig(id_a, config, &errors));
   EXPECT_EQ(errors.atrace_errors, "foo\nbar\n");
 }
 
@@ -990,17 +1065,20 @@
       CreateFtraceConfig({"sched/sched_switch", "cgroup/cgroup_mkdir"});
   FtraceConfigMuxer model(&ftrace, table_.get(), GetSyscallTable(), {});
 
+  EXPECT_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillOnce(Return("nop"));
+  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+      .WillOnce(Return('1'));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(ftrace, ClearFile("/root/trace"));
+  EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
   ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .WillByDefault(Return("[local] global boot"));
   EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
       .Times(AnyNumber());
-
-  EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
-      .Times(2)
-      .WillRepeatedly(Return('0'));
   EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", _));
   EXPECT_CALL(ftrace, WriteToFile("/root/trace_clock", "boot"));
-  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   EXPECT_CALL(ftrace,
               WriteToFile("/root/events/sched/sched_switch/enable", "1"));
   EXPECT_CALL(ftrace,
@@ -1008,8 +1086,10 @@
       .WillOnce(Return(false));
   EXPECT_CALL(ftrace, AppendToFile("/root/set_event", "cgroup:cgroup_mkdir"))
       .WillOnce(Return(true));
-  FtraceConfigId id = model.SetupConfig(config);
-  ASSERT_TRUE(id);
+  FtraceConfigId id = 97;
+  ASSERT_TRUE(model.SetupConfig(id, config));
+
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   ASSERT_TRUE(model.ActivateConfig(id));
 
   const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
@@ -1025,9 +1105,6 @@
   EXPECT_THAT(central_filter->GetEnabledEvents(),
               Contains(kCgroupMkdirEventId));
 
-  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
-  EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", "4"));
-  EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
   EXPECT_CALL(ftrace,
               WriteToFile("/root/events/sched/sched_switch/enable", "0"));
   EXPECT_CALL(ftrace,
@@ -1035,8 +1112,12 @@
       .WillOnce(Return(false));
   EXPECT_CALL(ftrace, AppendToFile("/root/set_event", "!cgroup:cgroup_mkdir"))
       .WillOnce(Return(true));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", "4"));
+  EXPECT_CALL(ftrace, WriteToFile("/root/events/enable", "0"));
   EXPECT_CALL(ftrace, ClearFile("/root/trace"));
   EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
+  EXPECT_CALL(ftrace, WriteToFile("/root/tracing_on", "1"));
   ASSERT_TRUE(model.RemoveConfig(id));
 }
 
@@ -1058,9 +1139,14 @@
   // Second data source - no compact encoding (default).
   FtraceConfig config_disabled = CreateFtraceConfig({"sched/sched_switch"});
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
+
   {
-    FtraceConfigId id = model.SetupConfig(config_enabled);
-    ASSERT_TRUE(id);
+    FtraceConfigId id = 73;
+    ASSERT_TRUE(model.SetupConfig(id, config_enabled));
     const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
     ASSERT_TRUE(ds_config);
     EXPECT_THAT(ds_config->event_filter.GetEnabledEvents(),
@@ -1068,8 +1154,8 @@
     EXPECT_TRUE(ds_config->compact_sched.enabled);
   }
   {
-    FtraceConfigId id = model.SetupConfig(config_disabled);
-    ASSERT_TRUE(id);
+    FtraceConfigId id = 87;
+    ASSERT_TRUE(model.SetupConfig(id, config_disabled));
     const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
     ASSERT_TRUE(ds_config);
     EXPECT_THAT(ds_config->event_filter.GetEnabledEvents(),
@@ -1086,8 +1172,13 @@
   FtraceConfig config = CreateFtraceConfig({"sched/sched_switch"});
   config.mutable_compact_sched()->set_enabled(true);
 
-  FtraceConfigId id = model.SetupConfig(config);
-  ASSERT_TRUE(id);
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
+
+  FtraceConfigId id = 67;
+  ASSERT_TRUE(model.SetupConfig(id, config));
 
   // The translation table says that the scheduling events' format didn't match
   // compile-time assumptions, so we won't enable compact events even if
@@ -1124,9 +1215,14 @@
       CreateFtraceConfig({"sched/sched_switch", "sched/generic"});
   config_with_disable.set_disable_generic_events(true);
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+  ON_CALL(ftrace, ReadFileIntoString("/root/events/enable"))
+      .WillByDefault(Return("0"));
+
   {
-    FtraceConfigId id = model.SetupConfig(config_default);
-    ASSERT_TRUE(id);
+    FtraceConfigId id = 123;
+    ASSERT_TRUE(model.SetupConfig(id, config_default));
     const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
     ASSERT_TRUE(ds_config);
     // Both events enabled for the data source by default.
@@ -1135,8 +1231,8 @@
         UnorderedElementsAre(kFakeSchedSwitchEventId, kFtraceGenericEventId));
   }
   {
-    FtraceConfigId id = model.SetupConfig(config_with_disable);
-    ASSERT_TRUE(id);
+    FtraceConfigId id = 321;
+    ASSERT_TRUE(model.SetupConfig(id, config_with_disable));
     const FtraceDataSourceConfig* ds_config = model.GetDataSourceConfig(id);
     ASSERT_TRUE(ds_config);
     // Only the statically known event is enabled.
@@ -1158,8 +1254,14 @@
   *config.add_function_graph_roots() = "sched*";
   *config.add_function_graph_roots() = "*mm_fault";
 
+  ON_CALL(ftrace, ReadFileIntoString("/root/current_tracer"))
+      .WillByDefault(Return("nop"));
+
   EXPECT_CALL(ftrace, WriteToFile(_, _)).WillRepeatedly(Return(true));
 
+  EXPECT_CALL(ftrace, ClearFile("/root/trace"));
+  EXPECT_CALL(ftrace, ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
+
   // Set up config, assert that the tracefs writes happened:
   EXPECT_CALL(ftrace, ClearFile("/root/set_ftrace_filter"));
   EXPECT_CALL(ftrace, ClearFile("/root/set_graph_function"));
@@ -1171,7 +1273,8 @@
       .WillOnce(Return(true));
   EXPECT_CALL(ftrace, WriteToFile("/root/current_tracer", "function_graph"))
       .WillOnce(Return(true));
-  FtraceConfigId id = model.SetupConfig(config);
+  FtraceConfigId id = 43;
+  ASSERT_TRUE(model.SetupConfig(id, config));
   ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&ftrace));
   // Toggle config on and off, tracer won't be reset yet:
   ASSERT_TRUE(model.ActivateConfig(id));
@@ -1188,5 +1291,17 @@
   ASSERT_TRUE(testing::Mock::VerifyAndClearExpectations(&ftrace));
 }
 
+TEST_F(FtraceConfigMuxerTest, SecondaryInstanceDoNotSupportAtrace) {
+  auto fake_table = CreateFakeTable();
+  NiceMock<MockFtraceProcfs> ftrace;
+  FtraceConfigMuxer model(&ftrace, fake_table.get(), GetSyscallTable(), {},
+                          /* secondary_instance= */ true);
+
+  FtraceConfig config = CreateFtraceConfig({"sched/sched_switch"});
+  *config.add_atrace_categories() = "sched";
+
+  ASSERT_FALSE(model.SetupConfig(/* id= */ 73, config));
+}
+
 }  // namespace
 }  // namespace perfetto
diff --git a/src/traced/probes/ftrace/ftrace_controller.cc b/src/traced/probes/ftrace/ftrace_controller.cc
index d7eb5e6..3aee056 100644
--- a/src/traced/probes/ftrace/ftrace_controller.cc
+++ b/src/traced/probes/ftrace/ftrace_controller.cc
@@ -40,7 +40,6 @@
 #include "src/traced/probes/ftrace/atrace_hal_wrapper.h"
 #include "src/traced/probes/ftrace/cpu_reader.h"
 #include "src/traced/probes/ftrace/cpu_stats_parser.h"
-#include "src/traced/probes/ftrace/vendor_tracepoints.h"
 #include "src/traced/probes/ftrace/event_info.h"
 #include "src/traced/probes/ftrace/ftrace_config_muxer.h"
 #include "src/traced/probes/ftrace/ftrace_data_source.h"
@@ -48,6 +47,7 @@
 #include "src/traced/probes/ftrace/ftrace_procfs.h"
 #include "src/traced/probes/ftrace/ftrace_stats.h"
 #include "src/traced/probes/ftrace/proto_translation_table.h"
+#include "src/traced/probes/ftrace/vendor_tracepoints.h"
 
 namespace perfetto {
 namespace {
@@ -175,32 +175,36 @@
   std::unique_ptr<FtraceConfigMuxer> model =
       std::unique_ptr<FtraceConfigMuxer>(new FtraceConfigMuxer(
           ftrace_procfs.get(), table.get(), std::move(syscalls), vendor_evts));
-  return std::unique_ptr<FtraceController>(new FtraceController(
-      std::move(ftrace_procfs), std::move(table), std::move(model), runner,
-      observer, preserve_ftrace_buffer));
+  return std::unique_ptr<FtraceController>(
+      new FtraceController(std::move(ftrace_procfs), std::move(table),
+                           std::move(model), runner, observer));
 }
 
+FtraceController::FtraceInstanceState::FtraceInstanceState(
+    std::unique_ptr<FtraceProcfs> ftrace_procfs,
+    std::unique_ptr<ProtoTranslationTable> table,
+    std::unique_ptr<FtraceConfigMuxer> ftrace_config_muxer)
+    : ftrace_procfs_(std::move(ftrace_procfs)),
+      table_(std::move(table)),
+      ftrace_config_muxer_(std::move(ftrace_config_muxer)) {}
+
 FtraceController::FtraceController(std::unique_ptr<FtraceProcfs> ftrace_procfs,
                                    std::unique_ptr<ProtoTranslationTable> table,
                                    std::unique_ptr<FtraceConfigMuxer> model,
                                    base::TaskRunner* task_runner,
-                                   Observer* observer,
-                                   bool preserve_ftrace_buffer)
+                                   Observer* observer)
     : task_runner_(task_runner),
       observer_(observer),
       symbolizer_(new LazyKernelSymbolizer()),
-      ftrace_procfs_(std::move(ftrace_procfs)),
-      table_(std::move(table)),
-      ftrace_config_muxer_(std::move(model)),
+      primary_(std::move(ftrace_procfs), std::move(table), std::move(model)),
       ftrace_clock_snapshot_(new FtraceClockSnapshot()),
-      preserve_ftrace_buffer_(preserve_ftrace_buffer),
       weak_factory_(this) {}
 
 FtraceController::~FtraceController() {
   for (const auto* data_source : data_sources_)
-    ftrace_config_muxer_->RemoveConfig(data_source->config_id());
+    primary_.ftrace_config_muxer_->RemoveConfig(data_source->config_id());
   data_sources_.clear();
-  started_data_sources_.clear();
+  primary_.started_data_sources_.clear();
   StopIfNeeded();
 }
 
@@ -210,10 +214,10 @@
 
 void FtraceController::StartIfNeeded() {
   using FtraceClock = protos::pbzero::FtraceClock;
-  if (started_data_sources_.size() > 1)
+  if (primary_.started_data_sources_.size() > 1)
     return;
-  PERFETTO_DCHECK(!started_data_sources_.empty());
-  PERFETTO_DCHECK(per_cpu_.empty());
+  PERFETTO_DCHECK(!primary_.started_data_sources_.empty());
+  PERFETTO_DCHECK(primary_.per_cpu_.empty());
 
   // Lazily allocate the memory used for reading & parsing ftrace.
   if (!parsing_mem_.IsValid()) {
@@ -222,21 +226,23 @@
   }
 
   // If we're not using the boot clock, snapshot the ftrace clock.
-  FtraceClock clock = ftrace_config_muxer_->ftrace_clock();
+  FtraceClock clock = primary_.ftrace_config_muxer_->ftrace_clock();
   if (clock != FtraceClock::FTRACE_CLOCK_UNSPECIFIED) {
-    cpu_zero_stats_fd_ = ftrace_procfs_->OpenCpuStats(0 /* cpu */);
+    cpu_zero_stats_fd_ = primary_.ftrace_procfs_->OpenCpuStats(0 /* cpu */);
     MaybeSnapshotFtraceClock();
   }
 
-  size_t num_cpus = ftrace_procfs_->NumberOfCpus();
-  per_cpu_.clear();
-  per_cpu_.reserve(num_cpus);
-  size_t period_page_quota = ftrace_config_muxer_->GetPerCpuBufferSizePages();
+  size_t num_cpus = primary_.ftrace_procfs_->NumberOfCpus();
+  primary_.per_cpu_.clear();
+  primary_.per_cpu_.reserve(num_cpus);
+  size_t period_page_quota =
+      primary_.ftrace_config_muxer_->GetPerCpuBufferSizePages();
   for (size_t cpu = 0; cpu < num_cpus; cpu++) {
-    auto reader = std::unique_ptr<CpuReader>(new CpuReader(
-        cpu, table_.get(), symbolizer_.get(), ftrace_clock_snapshot_.get(),
-        ftrace_procfs_->OpenPipeForCpu(cpu)));
-    per_cpu_.emplace_back(std::move(reader), period_page_quota);
+    auto reader = std::unique_ptr<CpuReader>(
+        new CpuReader(cpu, primary_.table_.get(), symbolizer_.get(),
+                      ftrace_clock_snapshot_.get(),
+                      primary_.ftrace_procfs_->OpenPipeForCpu(cpu)));
+    primary_.per_cpu_.emplace_back(std::move(reader), period_page_quota);
   }
 
   // Start the repeating read tasks.
@@ -277,14 +283,14 @@
 void FtraceController::ReadTick(int generation) {
   metatrace::ScopedEvent evt(metatrace::TAG_FTRACE,
                              metatrace::FTRACE_READ_TICK);
-  if (started_data_sources_.empty() || generation != generation_) {
+  if (primary_.started_data_sources_.empty() || generation != generation_) {
     return;
   }
 
 #if PERFETTO_DCHECK_IS_ON()
   // The OnFtraceDataWrittenIntoDataSourceBuffers() below is supposed to clear
   // all metadata, including the |kernel_addrs| map for symbolization.
-  for (FtraceDataSource* ds : started_data_sources_) {
+  for (FtraceDataSource* ds : primary_.started_data_sources_) {
     FtraceMetadata* ftrace_metadata = ds->mutable_metadata();
     PERFETTO_DCHECK(ftrace_metadata->kernel_addrs.empty());
     PERFETTO_DCHECK(ftrace_metadata->last_kernel_addr_index_written == 0);
@@ -294,20 +300,21 @@
   // Read all cpu buffers with remaining per-period quota.
   bool all_cpus_done = true;
   uint8_t* parsing_buf = reinterpret_cast<uint8_t*>(parsing_mem_.Get());
-  const auto ftrace_clock = ftrace_config_muxer_->ftrace_clock();
-  for (size_t i = 0; i < per_cpu_.size(); i++) {
-    size_t orig_quota = per_cpu_[i].period_page_quota;
+  const auto ftrace_clock = primary_.ftrace_config_muxer_->ftrace_clock();
+  for (size_t i = 0; i < primary_.per_cpu_.size(); i++) {
+    size_t orig_quota = primary_.per_cpu_[i].period_page_quota;
     if (orig_quota == 0)
       continue;
 
     size_t max_pages = std::min(orig_quota, kMaxPagesPerCpuPerReadTick);
-    CpuReader& cpu_reader = *per_cpu_[i].reader;
+    CpuReader& cpu_reader = *primary_.per_cpu_[i].reader;
     cpu_reader.set_ftrace_clock(ftrace_clock);
-    size_t pages_read = cpu_reader.ReadCycle(
-        parsing_buf, kParsingBufferSizePages, max_pages, started_data_sources_);
+    size_t pages_read =
+        cpu_reader.ReadCycle(parsing_buf, kParsingBufferSizePages, max_pages,
+                             primary_.started_data_sources_);
 
     size_t new_quota = (pages_read >= orig_quota) ? 0 : orig_quota - pages_read;
-    per_cpu_[i].period_page_quota = new_quota;
+    primary_.per_cpu_[i].period_page_quota = new_quota;
 
     // Reader got stopped by the cap on the number of pages (to not do too much
     // work on the shared thread at once), but can read more in this drain
@@ -332,8 +339,9 @@
     });
   } else {
     // Done until next drain period.
-    size_t period_page_quota = ftrace_config_muxer_->GetPerCpuBufferSizePages();
-    for (auto& per_cpu : per_cpu_)
+    size_t period_page_quota =
+        primary_.ftrace_config_muxer_->GetPerCpuBufferSizePages();
+    for (auto& per_cpu : primary_.per_cpu_)
       per_cpu.period_page_quota = period_page_quota;
 
     // Snapshot the clock so the data in the next period will be clock synced as
@@ -362,11 +370,11 @@
 }
 
 void FtraceController::ClearTrace() {
-  ftrace_procfs_->ClearTrace();
+  primary_.ftrace_procfs_->ClearTrace();
 }
 
-void FtraceController::DisableAllEvents() {
-  ftrace_procfs_->DisableAllEvents();
+bool FtraceController::IsTracingAvailable() {
+  return primary_.ftrace_procfs_->IsTracingAvailable();
 }
 
 void FtraceController::Flush(FlushRequestID flush_id) {
@@ -377,33 +385,33 @@
   // don't get stuck chasing the writer if there's a very high bandwidth of
   // events.
   size_t per_cpu_buf_size_pages =
-      ftrace_config_muxer_->GetPerCpuBufferSizePages();
+      primary_.ftrace_config_muxer_->GetPerCpuBufferSizePages();
   uint8_t* parsing_buf = reinterpret_cast<uint8_t*>(parsing_mem_.Get());
-  for (size_t i = 0; i < per_cpu_.size(); i++) {
-    per_cpu_[i].reader->ReadCycle(parsing_buf, kParsingBufferSizePages,
-                                  per_cpu_buf_size_pages,
-                                  started_data_sources_);
+  for (size_t i = 0; i < primary_.per_cpu_.size(); i++) {
+    primary_.per_cpu_[i].reader->ReadCycle(parsing_buf, kParsingBufferSizePages,
+                                           per_cpu_buf_size_pages,
+                                           primary_.started_data_sources_);
   }
   observer_->OnFtraceDataWrittenIntoDataSourceBuffers();
 
-  for (FtraceDataSource* data_source : started_data_sources_)
+  for (FtraceDataSource* data_source : primary_.started_data_sources_)
     data_source->OnFtraceFlushComplete(flush_id);
 }
 
 void FtraceController::StopIfNeeded() {
-  if (!started_data_sources_.empty())
+  if (!primary_.started_data_sources_.empty())
     return;
 
   // We are not implicitly flushing on Stop. The tracing service is supposed to
   // ask for an explicit flush before stopping, unless it needs to perform a
   // non-graceful stop.
 
-  per_cpu_.clear();
+  primary_.per_cpu_.clear();
   cpu_zero_stats_fd_.reset();
 
   // Muxer cannot change the current_tracer until we close the trace pipe fds
   // (i.e. per_cpu_). Hence an explicit request here.
-  ftrace_config_muxer_->ResetCurrentTracer();
+  primary_.ftrace_config_muxer_->ResetCurrentTracer();
 
   if (!retain_ksyms_on_stop_) {
     symbolizer_->Destroy();
@@ -419,13 +427,15 @@
   if (!ValidConfig(data_source->config()))
     return false;
 
-  auto config_id = ftrace_config_muxer_->SetupConfig(
-      data_source->config(), data_source->mutable_setup_errors());
-  if (!config_id)
+  FtraceConfigId config_id = next_cfg_id_++;
+  if (!primary_.ftrace_config_muxer_->SetupConfig(
+          config_id, data_source->config(),
+          data_source->mutable_setup_errors())) {
     return false;
+  }
 
   const FtraceDataSourceConfig* ds_config =
-      ftrace_config_muxer_->GetDataSourceConfig(config_id);
+      primary_.ftrace_config_muxer_->GetDataSourceConfig(config_id);
   auto it_and_inserted = data_sources_.insert(data_source);
   PERFETTO_DCHECK(it_and_inserted.second);
   data_source->Initialize(config_id, ds_config);
@@ -438,10 +448,10 @@
   FtraceConfigId config_id = data_source->config_id();
   PERFETTO_CHECK(config_id);
 
-  if (!ftrace_config_muxer_->ActivateConfig(config_id))
+  if (!primary_.ftrace_config_muxer_->ActivateConfig(config_id))
     return false;
 
-  started_data_sources_.insert(data_source);
+  primary_.started_data_sources_.insert(data_source);
   StartIfNeeded();
 
   // Parse kernel symbols if required by the config. This can be an expensive
@@ -464,16 +474,16 @@
 }
 
 void FtraceController::RemoveDataSource(FtraceDataSource* data_source) {
-  started_data_sources_.erase(data_source);
+  primary_.started_data_sources_.erase(data_source);
   size_t removed = data_sources_.erase(data_source);
   if (!removed)
     return;  // Can happen if AddDataSource failed (e.g. too many sessions).
-  ftrace_config_muxer_->RemoveConfig(data_source->config_id());
+  primary_.ftrace_config_muxer_->RemoveConfig(data_source->config_id());
   StopIfNeeded();
 }
 
 void FtraceController::DumpFtraceStats(FtraceStats* stats) {
-  DumpAllCpuStats(ftrace_procfs_.get(), stats);
+  DumpAllCpuStats(primary_.ftrace_procfs_.get(), stats);
   if (symbolizer_ && symbolizer_->is_valid()) {
     auto* symbol_map = symbolizer_->GetOrCreateKernelSymbolMap();
     stats->kernel_symbols_parsed =
@@ -487,7 +497,7 @@
   if (!cpu_zero_stats_fd_)
     return;
 
-  auto ftrace_clock = ftrace_config_muxer_->ftrace_clock();
+  auto ftrace_clock = primary_.ftrace_config_muxer_->ftrace_clock();
   PERFETTO_DCHECK(ftrace_clock != protos::pbzero::FTRACE_CLOCK_UNSPECIFIED);
 
   // Snapshot the boot clock *before* reading CPU stats so that
diff --git a/src/traced/probes/ftrace/ftrace_controller.h b/src/traced/probes/ftrace/ftrace_controller.h
index 9a8ec2b..6cc6b79 100644
--- a/src/traced/probes/ftrace/ftrace_controller.h
+++ b/src/traced/probes/ftrace/ftrace_controller.h
@@ -77,8 +77,8 @@
                                                   bool preserve_ftrace_buffer);
   virtual ~FtraceController();
 
-  void DisableAllEvents();
   void ClearTrace();
+  bool IsTracingAvailable();
 
   bool AddDataSource(FtraceDataSource*) PERFETTO_WARN_UNUSED_RESULT;
   bool StartDataSource(FtraceDataSource*);
@@ -100,8 +100,7 @@
                    std::unique_ptr<ProtoTranslationTable>,
                    std::unique_ptr<FtraceConfigMuxer>,
                    base::TaskRunner*,
-                   Observer*,
-                   bool);
+                   Observer*);
 
   // Protected and virtual for testing.
   virtual uint64_t NowMs() const;
@@ -116,6 +115,18 @@
     size_t period_page_quota = 0;
   };
 
+  struct FtraceInstanceState {
+    FtraceInstanceState(std::unique_ptr<FtraceProcfs> ftrace_procfs,
+                        std::unique_ptr<ProtoTranslationTable> table_,
+                        std::unique_ptr<FtraceConfigMuxer> ftrace_config_muxer);
+
+    std::unique_ptr<FtraceProcfs> ftrace_procfs_;
+    std::unique_ptr<ProtoTranslationTable> table_;
+    std::unique_ptr<FtraceConfigMuxer> ftrace_config_muxer_;
+    std::vector<PerCpuState> per_cpu_;  // empty if tracing isn't active
+    std::set<FtraceDataSource*> started_data_sources_;
+  };
+
   FtraceController(const FtraceController&) = delete;
   FtraceController& operator=(const FtraceController&) = delete;
 
@@ -134,17 +145,12 @@
   base::PagedMemory parsing_mem_;
   base::ScopedFile cpu_zero_stats_fd_;
   std::unique_ptr<LazyKernelSymbolizer> symbolizer_;
-  std::unique_ptr<FtraceProcfs> ftrace_procfs_;
-  std::unique_ptr<ProtoTranslationTable> table_;
-  std::unique_ptr<FtraceConfigMuxer> ftrace_config_muxer_;
+  FtraceInstanceState primary_;
   std::unique_ptr<FtraceClockSnapshot> ftrace_clock_snapshot_;
   int generation_ = 0;
-  bool atrace_running_ = false;
   bool retain_ksyms_on_stop_ = false;
-  bool preserve_ftrace_buffer_ = false;
-  std::vector<PerCpuState> per_cpu_;  // empty if tracing isn't active
   std::set<FtraceDataSource*> data_sources_;
-  std::set<FtraceDataSource*> started_data_sources_;
+  FtraceConfigId next_cfg_id_ = 1;
   base::WeakPtrFactory<FtraceController> weak_factory_;  // Keep last.
 };
 
diff --git a/src/traced/probes/ftrace/ftrace_controller_unittest.cc b/src/traced/probes/ftrace/ftrace_controller_unittest.cc
index 01e075f..16861ca 100644
--- a/src/traced/probes/ftrace/ftrace_controller_unittest.cc
+++ b/src/traced/probes/ftrace/ftrace_controller_unittest.cc
@@ -132,6 +132,13 @@
         .WillByDefault(Invoke(this, &MockFtraceProcfs::ReadTracingOn));
     EXPECT_CALL(*this, ReadOneCharFromFile("/root/tracing_on"))
         .Times(AnyNumber());
+
+    ON_CALL(*this, WriteToFile("/root/current_tracer", _))
+        .WillByDefault(Invoke(this, &MockFtraceProcfs::WriteCurrentTracer));
+    ON_CALL(*this, ReadFileIntoString("/root/current_tracer"))
+        .WillByDefault(Invoke(this, &MockFtraceProcfs::ReadCurrentTracer));
+    EXPECT_CALL(*this, ReadFileIntoString("/root/current_tracer"))
+        .Times(AnyNumber());
   }
 
   bool WriteTracingOn(const std::string& /*path*/, const std::string& value) {
@@ -144,6 +151,16 @@
     return tracing_on_ ? '1' : '0';
   }
 
+  bool WriteCurrentTracer(const std::string& /*path*/,
+                          const std::string& value) {
+    current_tracer_ = value;
+    return true;
+  }
+
+  std::string ReadCurrentTracer(const std::string& /*path*/) {
+    return current_tracer_;
+  }
+
   base::ScopedFile OpenPipeForCpu(size_t /*cpu*/) override {
     return base::ScopedFile(base::OpenFile("/dev/null", O_RDONLY));
   }
@@ -159,7 +176,8 @@
   bool is_tracing_on() { return tracing_on_; }
 
  private:
-  bool tracing_on_ = false;
+  bool tracing_on_ = true;
+  std::string current_tracer_ = "nop";
 };
 
 }  // namespace
@@ -176,8 +194,7 @@
                          std::move(table),
                          std::move(model),
                          runner.get(),
-                         /*observer=*/this,
-                         false),
+                         /*observer=*/this),
         runner_(std::move(runner)),
         procfs_(raw_procfs) {}
 
@@ -261,8 +278,16 @@
 
   FtraceConfig config = CreateFtraceConfig({"group/foo"});
 
-  EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "1"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"))
+      .WillOnce(Return(true));
+  EXPECT_CALL(*controller->procfs(),
+              ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")))
+      .WillRepeatedly(Return(true));
   EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", _));
+  EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "1"));
+
   auto data_source = controller->AddFakeDataSource(config);
   ASSERT_TRUE(data_source);
 
@@ -279,19 +304,19 @@
   Mock::VerifyAndClearExpectations(controller->runner());
 
   // State clearing on tracing teardown.
+  EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
   EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", "4"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
   EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"))
       .WillOnce(Return(true));
   EXPECT_CALL(*controller->procfs(),
               ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")))
       .WillRepeatedly(Return(true));
-  EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "0"));
-  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
-  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
-  EXPECT_TRUE(controller->procfs()->is_tracing_on());
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "1"));
 
   data_source.reset();
-  EXPECT_FALSE(controller->procfs()->is_tracing_on());
+  EXPECT_TRUE(controller->procfs()->is_tracing_on());
 }
 
 TEST(FtraceControllerTest, MultipleSinks) {
@@ -303,6 +328,13 @@
   // No read tasks posted as part of adding the data sources.
   EXPECT_CALL(*controller->runner(), PostDelayedTask(_, _)).Times(0);
 
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"))
+      .WillOnce(Return(true));
+  EXPECT_CALL(*controller->procfs(),
+              ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")))
+      .WillRepeatedly(Return(true));
   EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", _));
   EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "1"));
   auto data_sourceA = controller->AddFakeDataSource(configA);
@@ -323,17 +355,22 @@
   Mock::VerifyAndClearExpectations(controller->runner());
 
   data_sourceA.reset();
+  EXPECT_TRUE(controller->procfs()->is_tracing_on());
 
   // State clearing on tracing teardown.
   EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "0"));
   EXPECT_CALL(*controller->procfs(), WriteToFile(kBarEnablePath, "0"));
-  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", "4"));
   EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", "4"));
   EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
-  EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"));
+  EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"))
+      .WillOnce(Return(true));
   EXPECT_CALL(*controller->procfs(),
-              ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")));
+              ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")))
+      .WillRepeatedly(Return(true));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "1"));
   data_sourceB.reset();
+  EXPECT_TRUE(controller->procfs()->is_tracing_on());
 }
 
 TEST(FtraceControllerTest, ControllerMayDieFirst) {
@@ -341,6 +378,13 @@
 
   FtraceConfig config = CreateFtraceConfig({"group/foo"});
 
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"))
+      .WillOnce(Return(true));
+  EXPECT_CALL(*controller->procfs(),
+              ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")))
+      .WillRepeatedly(Return(true));
   EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", _));
   EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "1"));
   auto data_source = controller->AddFakeDataSource(config);
@@ -350,14 +394,15 @@
 
   // State clearing on tracing teardown.
   EXPECT_CALL(*controller->procfs(), WriteToFile(kFooEnablePath, "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", "4"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
   EXPECT_CALL(*controller->procfs(), ClearFile("/root/trace"))
       .WillOnce(Return(true));
   EXPECT_CALL(*controller->procfs(),
               ClearFile(MatchesRegex("/root/per_cpu/cpu[0-9]/trace")))
       .WillRepeatedly(Return(true));
-  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "0"));
-  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/buffer_size_kb", "4"));
-  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/events/enable", "0"));
+  EXPECT_CALL(*controller->procfs(), WriteToFile("/root/tracing_on", "1"));
   controller.reset();
   data_source.reset();
 }
diff --git a/src/traced/probes/ftrace/ftrace_procfs.cc b/src/traced/probes/ftrace/ftrace_procfs.cc
index 9865512..bd1c60c 100644
--- a/src/traced/probes/ftrace/ftrace_procfs.cc
+++ b/src/traced/probes/ftrace/ftrace_procfs.cc
@@ -180,6 +180,12 @@
   return ReadFileIntoString(path);
 }
 
+std::string FtraceProcfs::GetCurrentTracer() {
+  std::string path = root_ + "current_tracer";
+  std::string current_tracer = ReadFileIntoString(path);
+  return base::StripSuffix(current_tracer, "\n");
+}
+
 bool FtraceProcfs::SetCurrentTracer(const std::string& tracer) {
   std::string path = root_ + "current_tracer";
   return WriteToFile(path, tracer);
@@ -407,25 +413,7 @@
   return WriteNumberToFile(path, pages * (base::kPageSize / 1024ul));
 }
 
-bool FtraceProcfs::EnableTracing() {
-  KernelLogWrite("perfetto: enabled ftrace\n");
-  PERFETTO_LOG("enabled ftrace in %s", root_.c_str());
-  std::string path = root_ + "tracing_on";
-  return WriteToFile(path, "1");
-}
-
-bool FtraceProcfs::DisableTracing() {
-  KernelLogWrite("perfetto: disabled ftrace\n");
-  PERFETTO_LOG("disabled ftrace in %s", root_.c_str());
-  std::string path = root_ + "tracing_on";
-  return WriteToFile(path, "0");
-}
-
-bool FtraceProcfs::SetTracingOn(bool enable) {
-  return enable ? EnableTracing() : DisableTracing();
-}
-
-bool FtraceProcfs::IsTracingEnabled() {
+bool FtraceProcfs::GetTracingOn() {
   std::string path = root_ + "tracing_on";
   char tracing_on = ReadOneCharFromFile(path);
   if (tracing_on == '\0')
@@ -433,6 +421,37 @@
   return tracing_on == '1';
 }
 
+bool FtraceProcfs::SetTracingOn(bool on) {
+  std::string path = root_ + "tracing_on";
+  if (!WriteToFile(path, on ? "1" : "0")) {
+    PERFETTO_PLOG("Failed to write %s", path.c_str());
+    return false;
+  }
+  if (on) {
+    KernelLogWrite("perfetto: enabled ftrace\n");
+    PERFETTO_LOG("enabled ftrace in %s", root_.c_str());
+  } else {
+    KernelLogWrite("perfetto: disabled ftrace\n");
+    PERFETTO_LOG("disabled ftrace in %s", root_.c_str());
+  }
+
+  return true;
+}
+
+bool FtraceProcfs::IsTracingAvailable() {
+  std::string current_tracer = GetCurrentTracer();
+
+  // Ftrace tracing is available if current_tracer == "nop".
+  // events/enable could be 0, 1, X or 0*. 0* means events would be
+  // dynamically enabled so we need to treat as event tracing is in use.
+  // However based on the discussion in asop/2328817, on Android events/enable
+  // is "X" after boot up. To avoid causing more problem, the decision is just
+  // look at current_tracer.
+  // As the discussion in asop/2328817, if GetCurrentTracer failed to
+  // read file and return "", we treat it as tracing is available.
+  return current_tracer == "nop" || current_tracer == "";
+}
+
 bool FtraceProcfs::SetClock(const std::string& clock_name) {
   std::string path = root_ + "trace_clock";
   return WriteToFile(path, clock_name);
diff --git a/src/traced/probes/ftrace/ftrace_procfs.h b/src/traced/probes/ftrace/ftrace_procfs.h
index 115d300..40a7da9 100644
--- a/src/traced/probes/ftrace/ftrace_procfs.h
+++ b/src/traced/probes/ftrace/ftrace_procfs.h
@@ -68,6 +68,7 @@
 
   virtual std::string ReadPageHeaderFormat() const;
 
+  std::string GetCurrentTracer();
   // Sets the "current_tracer". Might fail with EBUSY if tracing pipes have
   // already been opened for reading.
   bool SetCurrentTracer(const std::string& tracer);
@@ -134,19 +135,17 @@
   // Writes the string |str| as an event into the trace buffer.
   bool WriteTraceMarker(const std::string& str);
 
-  // Enable tracing.
-  bool EnableTracing();
+  // Read tracing_on and return true if tracing_on is 1, otherwise return false.
+  bool GetTracingOn();
 
-  // Disables tracing, does not clear the buffer.
-  bool DisableTracing();
+  // Write 1 to tracing_on if |on| is true, otherwise write 0.
+  bool SetTracingOn(bool on);
 
-  // Enables/disables tracing, does not clear the buffer.
-  bool SetTracingOn(bool enable);
-
-  // Returns true iff tracing is enabled.
-  // Necessarily racy: another program could enable/disable tracing at any
-  // point.
-  bool IsTracingEnabled();
+  // Returns true if ftrace tracing is available.
+  // Ftrace tracing is available iff "/current_tracer" is "nop", indicates
+  // function tracing is not in use. Necessarily
+  // racy: another program could enable/disable tracing at any point.
+  bool IsTracingAvailable();
 
   // Set the clock. |clock_name| should be one of the names returned by
   // AvailableClocks. Setting the clock clears the buffer.
diff --git a/src/traced/probes/ftrace/ftrace_procfs_integrationtest.cc b/src/traced/probes/ftrace/ftrace_procfs_integrationtest.cc
index 25e1aa7..24ad32a 100644
--- a/src/traced/probes/ftrace/ftrace_procfs_integrationtest.cc
+++ b/src/traced/probes/ftrace/ftrace_procfs_integrationtest.cc
@@ -81,19 +81,18 @@
 void FtraceProcfsIntegrationTest::SetUp() {
   ftrace_ = FtraceProcfs::Create(GetFtracePath());
   ASSERT_TRUE(ftrace_);
-  if (ftrace_->IsTracingEnabled()) {
+  if (!ftrace_->IsTracingAvailable()) {
     GTEST_SKIP() << "Something else is using ftrace, skipping";
   }
 
-  ftrace_->DisableAllEvents();
   ftrace_->ClearTrace();
-  ftrace_->EnableTracing();
+  ftrace_->SetTracingOn(true);
 }
 
 void FtraceProcfsIntegrationTest::TearDown() {
   ftrace_->DisableAllEvents();
   ftrace_->ClearTrace();
-  ftrace_->DisableTracing();
+  ftrace_->SetTracingOn(false);
 }
 
 TEST_F(FtraceProcfsIntegrationTest, ANDROID_ONLY_TEST(CreateWithBadPath)) {
@@ -123,20 +122,30 @@
   EXPECT_THAT(GetTraceOutput(), Not(HasSubstr("sched_switch")));
 }
 
-TEST_F(FtraceProcfsIntegrationTest, ANDROID_ONLY_TEST(EnableDisableTracing)) {
-  EXPECT_TRUE(ftrace_->IsTracingEnabled());
+TEST_F(FtraceProcfsIntegrationTest,
+       ANDROID_ONLY_TEST(EnableDisableTraceBuffer)) {
   ftrace_->WriteTraceMarker("Before");
-  ftrace_->DisableTracing();
-  EXPECT_FALSE(ftrace_->IsTracingEnabled());
+  ftrace_->SetTracingOn(false);
   ftrace_->WriteTraceMarker("During");
-  ftrace_->EnableTracing();
-  EXPECT_TRUE(ftrace_->IsTracingEnabled());
+  ftrace_->SetTracingOn(true);
   ftrace_->WriteTraceMarker("After");
   EXPECT_THAT(GetTraceOutput(), HasSubstr("Before"));
   EXPECT_THAT(GetTraceOutput(), Not(HasSubstr("During")));
   EXPECT_THAT(GetTraceOutput(), HasSubstr("After"));
 }
 
+TEST_F(FtraceProcfsIntegrationTest, ANDROID_ONLY_TEST(IsTracingAvailable)) {
+  EXPECT_TRUE(ftrace_->IsTracingAvailable());
+  ftrace_->SetCurrentTracer("function");
+  EXPECT_FALSE(ftrace_->IsTracingAvailable());
+  ftrace_->SetCurrentTracer("nop");
+  EXPECT_TRUE(ftrace_->IsTracingAvailable());
+  ASSERT_TRUE(ftrace_->EnableEvent("sched", "sched_switch"));
+  EXPECT_FALSE(ftrace_->IsTracingAvailable());
+  ftrace_->DisableAllEvents();
+  EXPECT_TRUE(ftrace_->IsTracingAvailable());
+}
+
 TEST_F(FtraceProcfsIntegrationTest, ANDROID_ONLY_TEST(ReadFormatFile)) {
   std::string format = ftrace_->ReadEventFormat("ftrace", "print");
   EXPECT_THAT(format, HasSubstr("name: print"));
@@ -168,7 +177,6 @@
 TEST_F(FtraceProcfsIntegrationTest,
        ANDROID_ONLY_TEST(FtraceControllerHardReset)) {
   ftrace_->SetCpuBufferSizeInPages(4ul);
-  ftrace_->EnableTracing();
   ftrace_->EnableEvent("sched", "sched_switch");
   ftrace_->WriteTraceMarker("Hello, World!");
 
diff --git a/src/traced/probes/kmem_activity_trigger.cc b/src/traced/probes/kmem_activity_trigger.cc
index b30108c..7e29a96 100644
--- a/src/traced/probes/kmem_activity_trigger.cc
+++ b/src/traced/probes/kmem_activity_trigger.cc
@@ -52,7 +52,7 @@
 KmemActivityTrigger::WorkerData::~WorkerData() {
   PERFETTO_DCHECK_THREAD(thread_checker_);
   if (ftrace_procfs_) {
-    ftrace_procfs_->DisableTracing();
+    ftrace_procfs_->SetTracingOn(false);
     ftrace_procfs_->ClearTrace();
   }
   DisarmFtraceFDWatches();
@@ -79,7 +79,7 @@
   ftrace_procfs_->DisableAllEvents();
   ftrace_procfs_->EnableEvent("vmscan", "mm_vmscan_direct_reclaim_begin");
   ftrace_procfs_->EnableEvent("compaction", "mm_compaction_begin");
-  ftrace_procfs_->EnableTracing();
+  ftrace_procfs_->SetTracingOn(true);
 
   num_cpus_ = ftrace_procfs_->NumberOfCpus();
   for (size_t cpu = 0; cpu < num_cpus_; cpu++) {
diff --git a/src/traced/probes/probes_producer.cc b/src/traced/probes/probes_producer.cc
index 04e5248..0d2573a 100644
--- a/src/traced/probes/probes_producer.cc
+++ b/src/traced/probes/probes_producer.cc
@@ -137,11 +137,6 @@
       ftrace_creation_failed_ = true;
       return nullptr;
     }
-
-    if (!ftrace_config.preserve_ftrace_buffer()) {
-      ftrace_->DisableAllEvents();
-      ftrace_->ClearTrace();
-    }
   }
 
   PERFETTO_LOG("Ftrace setup (target_buf=%" PRIu32 ")", config.target_buffer());
diff --git a/src/tracing/internal/tracing_muxer_impl.cc b/src/tracing/internal/tracing_muxer_impl.cc
index 463d0d4..38cd239 100644
--- a/src/tracing/internal/tracing_muxer_impl.cc
+++ b/src/tracing/internal/tracing_muxer_impl.cc
@@ -1314,7 +1314,8 @@
   std::unique_lock<std::recursive_mutex> lock(ds.internal_state->lock);
   if (ds.internal_state->interceptor)
     ds.internal_state->interceptor->OnStart({});
-  ds.internal_state->trace_lambda_enabled = true;
+  ds.internal_state->trace_lambda_enabled.store(true,
+                                                std::memory_order_relaxed);
   PERFETTO_DCHECK(ds.internal_state->data_source != nullptr);
 
   if (!ds.requires_callbacks_under_lock)
@@ -1408,7 +1409,8 @@
   TracingSessionGlobalID startup_session_id;
   {
     std::lock_guard<std::recursive_mutex> guard(ds.internal_state->lock);
-    ds.internal_state->trace_lambda_enabled = false;
+    ds.internal_state->trace_lambda_enabled.store(false,
+                                                  std::memory_order_relaxed);
     ds.internal_state->data_source.reset();
     ds.internal_state->interceptor.reset();
     startup_buffer_reservation =
diff --git a/src/tracing/test/aligned_buffer_test.cc b/src/tracing/test/aligned_buffer_test.cc
index 6a603ea..082e130 100644
--- a/src/tracing/test/aligned_buffer_test.cc
+++ b/src/tracing/test/aligned_buffer_test.cc
@@ -20,8 +20,10 @@
 
 namespace perfetto {
 
+#if !PERFETTO_IS_AT_LEAST_CPP17()
 // static
 constexpr size_t AlignedBufferTest::kNumPages;
+#endif
 
 void AlignedBufferTest::SetUp() {
   page_size_ = GetParam();
diff --git a/src/tracing/test/api_integrationtest.cc b/src/tracing/test/api_integrationtest.cc
index 0e131dd..583d281 100644
--- a/src/tracing/test/api_integrationtest.cc
+++ b/src/tracing/test/api_integrationtest.cc
@@ -45,6 +45,7 @@
 #include "src/tracing/test/api_test_support.h"
 #include "src/tracing/test/tracing_module.h"
 
+#include "perfetto/base/time.h"
 #include "perfetto/protozero/scattered_heap_buffer.h"
 #include "perfetto/tracing/core/data_source_descriptor.h"
 #include "perfetto/tracing/core/trace_config.h"
@@ -200,12 +201,15 @@
 using perfetto::internal::TrackEventIncrementalState;
 using perfetto::internal::TrackEventInternal;
 using ::testing::_;
+using ::testing::AllOf;
 using ::testing::ContainerEq;
 using ::testing::Contains;
+using ::testing::Each;
 using ::testing::ElementsAre;
 using ::testing::HasSubstr;
 using ::testing::Invoke;
 using ::testing::InvokeWithoutArgs;
+using ::testing::IsEmpty;
 using ::testing::NiceMock;
 using ::testing::Not;
 using ::testing::Property;
@@ -5549,6 +5553,54 @@
                             "trigger1")))));
 }
 
+TEST_P(PerfettoApiTest, StartTracingWhileExecutingTracepoint) {
+  perfetto::TraceConfig cfg;
+  auto* buffer = cfg.add_buffers();
+  buffer->set_size_kb(64);
+  auto* ds_cfg = cfg.add_data_sources()->mutable_config();
+  ds_cfg->set_name("my_data_source");
+
+  std::atomic<bool> quit = false;
+  WaitableTestEvent outside_tracing;
+  WaitableTestEvent tracing;
+  std::thread t([&] {
+    while (!quit) {
+      MockDataSource::Trace([&](MockDataSource::TraceContext ctx) {
+        {
+          auto packet = ctx.NewTracePacket();
+          packet->set_for_testing()->set_str("My String");
+        }
+        { auto packet = ctx.NewTracePacket(); }
+        tracing.Notify();
+      });
+      outside_tracing.Notify();
+      std::this_thread::yield();
+    }
+  });
+  outside_tracing.Wait();
+
+  auto* tracing_session = NewTrace(cfg);
+  tracing_session->get()->StartBlocking();
+  tracing.Wait();
+  tracing_session->get()->StopBlocking();
+
+  // The data source instance should be stopped.
+  auto* data_source = &data_sources_["my_data_source"];
+  data_source->on_stop.Wait();
+
+  quit = true;
+  t.join();
+
+  auto trace = StopSessionAndReturnParsedTrace(tracing_session);
+  std::vector<std::string> test_strings;
+  for (auto& trace_packet : trace.packet()) {
+    if (trace_packet.has_for_testing()) {
+      test_strings.push_back(trace_packet.for_testing().str());
+    }
+  }
+  EXPECT_THAT(test_strings, AllOf(Not(IsEmpty()), Each("My String")));
+}
+
 class PerfettoStartupTracingApiTest : public PerfettoApiTest {
  public:
   using SetupStartupTracingOpts = perfetto::Tracing::SetupStartupTracingOpts;
diff --git a/test/data/android_binder_metric_trace.atr.sha256 b/test/data/android_binder_metric_trace.atr.sha256
new file mode 100644
index 0000000..93a6a92
--- /dev/null
+++ b/test/data/android_binder_metric_trace.atr.sha256
@@ -0,0 +1 @@
+64f323d9561628a1de87372504ffa900b53d6d214319e3c00b083d0ba8a2bfa5
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-android_trace_30s_expand_camera.png.sha256 b/test/data/ui-screenshots/ui-android_trace_30s_expand_camera.png.sha256
index f0f270b..4542096 100644
--- a/test/data/ui-screenshots/ui-android_trace_30s_expand_camera.png.sha256
+++ b/test/data/ui-screenshots/ui-android_trace_30s_expand_camera.png.sha256
@@ -1 +1 @@
-9afd1d1f82d762dc2b2e294bdbd68f834f10ca7c7eab4a9787eaf3e75e8f1bbb
\ No newline at end of file
+42318df513cb597e8eed8f30da87e0d5549e450458ee2a72096617564f1c9641
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-android_trace_30s_load.png.sha256 b/test/data/ui-screenshots/ui-android_trace_30s_load.png.sha256
index de62f0b..435886a 100644
--- a/test/data/ui-screenshots/ui-android_trace_30s_load.png.sha256
+++ b/test/data/ui-screenshots/ui-android_trace_30s_load.png.sha256
@@ -1 +1 @@
-a7da2d0e1f2f20dffad44e554dc5a6998bf70d0128ca900907157b4a2303c63a
\ No newline at end of file
+304307cd023efbd545daa08c981fc8f28f94181eea2229247a217d3379982ce9
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-chrome_missing_track_names_load.png.sha256 b/test/data/ui-screenshots/ui-chrome_missing_track_names_load.png.sha256
index 8528d4c..c2c4480 100644
--- a/test/data/ui-screenshots/ui-chrome_missing_track_names_load.png.sha256
+++ b/test/data/ui-screenshots/ui-chrome_missing_track_names_load.png.sha256
@@ -1 +1 @@
-d10161589d43cb6a0bc1df341581db5489f3ac6efcdf254894a5851178165a13
\ No newline at end of file
+a74598d5e5bfc01edc3893310ee565d951634caa48408e7909d57c2ef9112df0
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-chrome_rendering_desktop_expand_browser_proc.png.sha256 b/test/data/ui-screenshots/ui-chrome_rendering_desktop_expand_browser_proc.png.sha256
index e223d72..0bf5879 100644
--- a/test/data/ui-screenshots/ui-chrome_rendering_desktop_expand_browser_proc.png.sha256
+++ b/test/data/ui-screenshots/ui-chrome_rendering_desktop_expand_browser_proc.png.sha256
@@ -1 +1 @@
-0f3c280c0b44ed4e9d4a0849512ca3f21914cd86581cde1bb5e6f1dce4ea7843
\ No newline at end of file
+be9aed5344f35089cc633006ccdd695073a34cc74064cd89235521c9d7787aca
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-chrome_rendering_desktop_load.png.sha256 b/test/data/ui-screenshots/ui-chrome_rendering_desktop_load.png.sha256
index b4eb4f7..8d20ae2 100644
--- a/test/data/ui-screenshots/ui-chrome_rendering_desktop_load.png.sha256
+++ b/test/data/ui-screenshots/ui-chrome_rendering_desktop_load.png.sha256
@@ -1 +1 @@
-77ad6a3f90b414957bd1fd78d39ceb380b28f384b4d4a0a3ed1e11e394f635be
\ No newline at end of file
+a1719fb24ddb802efd12be5dcd33ca6936ab8c1bb952bb5c5458f1e26bce9625
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-chrome_rendering_desktop_select_slice_with_flows.png.sha256 b/test/data/ui-screenshots/ui-chrome_rendering_desktop_select_slice_with_flows.png.sha256
index 98195eb..4a2f0c4 100644
--- a/test/data/ui-screenshots/ui-chrome_rendering_desktop_select_slice_with_flows.png.sha256
+++ b/test/data/ui-screenshots/ui-chrome_rendering_desktop_select_slice_with_flows.png.sha256
@@ -1 +1 @@
-b4e711f0c25cea261c84ec594ac0939887d81687a70a47e291075c8bb24ff1f1
\ No newline at end of file
+7306700e0412cdb55390941b3d52e986414e2acbb2e74c32a93f8d9a4de1d43a
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_navigate_open_trace_from_url.png.sha256 b/test/data/ui-screenshots/ui-routing_navigate_open_trace_from_url.png.sha256
index fd28c9c..11e6f1f 100644
--- a/test/data/ui-screenshots/ui-routing_navigate_open_trace_from_url.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_navigate_open_trace_from_url.png.sha256
@@ -1 +1 @@
-21d088add5542b38703452ac16600f878f865bc220baad0d912bc56d982ab207
\ No newline at end of file
+6e57bf0534cd22c5452d49580451043f9bedaa5fa560beea334a451daea96e42
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_access_subpage_then_go_back.png.sha256 b/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_access_subpage_then_go_back.png.sha256
index 32cf9b1..556052a 100644
--- a/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_access_subpage_then_go_back.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_access_subpage_then_go_back.png.sha256
@@ -1 +1 @@
-6bb4ec59ccea148ed9ddd2878dad220dcdeb0264a3a61334c9ee66d57cd8094d
\ No newline at end of file
+b74e614897b9c0fc652b36c8c2cc025f6ea3d54754edbcf828d137275921c89c
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_first_trace_from_url.png.sha256 b/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_first_trace_from_url.png.sha256
index fd28c9c..11e6f1f 100644
--- a/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_first_trace_from_url.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_first_trace_from_url.png.sha256
@@ -1 +1 @@
-21d088add5542b38703452ac16600f878f865bc220baad0d912bc56d982ab207
\ No newline at end of file
+6e57bf0534cd22c5452d49580451043f9bedaa5fa560beea334a451daea96e42
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_second_trace_from_url.png.sha256 b/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_second_trace_from_url.png.sha256
index 32cf9b1..556052a 100644
--- a/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_second_trace_from_url.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_open_two_traces_then_go_back_open_second_trace_from_url.png.sha256
@@ -1 +1 @@
-6bb4ec59ccea148ed9ddd2878dad220dcdeb0264a3a61334c9ee66d57cd8094d
\ No newline at end of file
+b74e614897b9c0fc652b36c8c2cc025f6ea3d54754edbcf828d137275921c89c
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_start_from_no_trace_go_back_to_first_trace.png.sha256 b/test/data/ui-screenshots/ui-routing_start_from_no_trace_go_back_to_first_trace.png.sha256
index 651681e..890256b 100644
--- a/test/data/ui-screenshots/ui-routing_start_from_no_trace_go_back_to_first_trace.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_start_from_no_trace_go_back_to_first_trace.png.sha256
@@ -1 +1 @@
-d8c9876668f6f0673d99adf2ad7ee30dad0ffafe60bd0faa9fb709e49addba20
\ No newline at end of file
+f6d364436cb58281efdca972d3645ab3e95408f6aecfaaf286217fa55f40bcca
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_second_trace.png.sha256 b/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_second_trace.png.sha256
index fd28c9c..11e6f1f 100644
--- a/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_second_trace.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_second_trace.png.sha256
@@ -1 +1 @@
-21d088add5542b38703452ac16600f878f865bc220baad0d912bc56d982ab207
\ No newline at end of file
+6e57bf0534cd22c5452d49580451043f9bedaa5fa560beea334a451daea96e42
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_trace_.png.sha256 b/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_trace_.png.sha256
index 32cf9b1..556052a 100644
--- a/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_trace_.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_start_from_no_trace_open_trace_.png.sha256
@@ -1 +1 @@
-6bb4ec59ccea148ed9ddd2878dad220dcdeb0264a3a61334c9ee66d57cd8094d
\ No newline at end of file
+b74e614897b9c0fc652b36c8c2cc025f6ea3d54754edbcf828d137275921c89c
\ No newline at end of file
diff --git a/test/data/ui-screenshots/ui-routing_start_from_no_trace_refresh.png.sha256 b/test/data/ui-screenshots/ui-routing_start_from_no_trace_refresh.png.sha256
index 32cf9b1..556052a 100644
--- a/test/data/ui-screenshots/ui-routing_start_from_no_trace_refresh.png.sha256
+++ b/test/data/ui-screenshots/ui-routing_start_from_no_trace_refresh.png.sha256
@@ -1 +1 @@
-6bb4ec59ccea148ed9ddd2878dad220dcdeb0264a3a61334c9ee66d57cd8094d
\ No newline at end of file
+b74e614897b9c0fc652b36c8c2cc025f6ea3d54754edbcf828d137275921c89c
\ No newline at end of file
diff --git a/test/ftrace_integrationtest.cc b/test/ftrace_integrationtest.cc
index 42d251f..068ebf7 100644
--- a/test/ftrace_integrationtest.cc
+++ b/test/ftrace_integrationtest.cc
@@ -173,7 +173,7 @@
   helper.StartTracing(trace_config);
 
   // Wait for traced_probes to start.
-  helper.WaitFor([&] { return ftrace_procfs_->IsTracingEnabled(); }, "ftrace");
+  helper.WaitFor([&] { return ftrace_procfs_->GetTracingOn(); }, "ftrace");
 
   // Do a first flush just to synchronize with the producer. The problem here
   // is that, on a Linux workstation, the producer can take several seconds just
diff --git a/test/stress_test/stress_test.cc b/test/stress_test/stress_test.cc
index 513b4bb..213017e 100644
--- a/test/stress_test/stress_test.cc
+++ b/test/stress_test/stress_test.cc
@@ -27,6 +27,7 @@
 
 #include "perfetto/base/build_config.h"
 #include "perfetto/base/compiler.h"
+#include "perfetto/base/time.h"
 #include "perfetto/ext/base/ctrl_c_handler.h"
 #include "perfetto/ext/base/file_utils.h"
 #include "perfetto/ext/base/scoped_file.h"
diff --git a/test/trace_processor/android/tests.py b/test/trace_processor/android/tests.py
deleted file mode 100644
index 1b45a2d..0000000
--- a/test/trace_processor/android/tests.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2023 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License a
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from python.generators.diff_tests.testing import Path, Metric
-from python.generators.diff_tests.testing import Csv, Json, TextProto
-from python.generators.diff_tests.testing import DiffTestBlueprint
-from python.generators.diff_tests.testing import TestSuite
-
-
-class Android(TestSuite):
-
-  def test_android_system_property_counter(self):
-    return DiffTestBlueprint(
-        trace=TextProto(r"""
-        packet {
-          timestamp: 1000
-          android_system_property {
-            values {
-              name: "debug.tracing.screen_state"
-              value: "2"
-            }
-            values {
-              name: "debug.tracing.device_state"
-              value: "some_state_from_sysprops"
-            }
-          }
-        }
-        packet {
-          ftrace_events {
-            cpu: 1
-            event {
-              timestamp: 2000
-              pid: 1
-              print {
-                buf: "C|1000|ScreenState|1\n"
-              }
-            }
-            event {
-              timestamp: 3000
-              pid: 1
-              print {
-                buf: "N|1000|DeviceStateChanged|some_state_from_atrace\n"
-              }
-            }
-          }
-        }
-        """),
-        query="""
-        SELECT t.id, t.type, t.name, c.id, c.ts, c.type, c.value
-        FROM counter_track t JOIN counter c ON t.id = c.track_id
-        WHERE name = 'ScreenState';
-        """,
-        out=Csv("""
-        "id","type","name","id","ts","type","value"
-        0,"counter_track","ScreenState",0,1000,"counter",2.000000
-        0,"counter_track","ScreenState",1,2000,"counter",1.000000
-        """))
-
-  def test_android_system_property_slice(self):
-    return DiffTestBlueprint(
-        trace=TextProto(r"""
-        packet {
-          timestamp: 1000
-          android_system_property {
-            values {
-              name: "debug.tracing.screen_state"
-              value: "2"
-            }
-            values {
-              name: "debug.tracing.device_state"
-              value: "some_state_from_sysprops"
-            }
-          }
-        }
-        packet {
-          ftrace_events {
-            cpu: 1
-            event {
-              timestamp: 2000
-              pid: 1
-              print {
-                buf: "C|1000|ScreenState|1\n"
-              }
-            }
-            event {
-              timestamp: 3000
-              pid: 1
-              print {
-                buf: "N|1000|DeviceStateChanged|some_state_from_atrace\n"
-              }
-            }
-          }
-        }
-        """),
-        query="""
-        SELECT t.id, t.type, t.name, s.id, s.ts, s.dur, s.type, s.name
-        FROM track t JOIN slice s ON s.track_id = t.id
-        WHERE t.name = 'DeviceStateChanged';
-        """,
-        out=Path('android_system_property_slice.out'))
diff --git a/test/trace_processor/diff_tests/android/android_binder_metric.out b/test/trace_processor/diff_tests/android/android_binder_metric.out
new file mode 100644
index 0000000..5c02398
--- /dev/null
+++ b/test/trace_processor/diff_tests/android/android_binder_metric.out
@@ -0,0 +1,39582 @@
+android_binder {
+  process_breakdown {
+    process_name: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    pid: 481
+    slice_name: "binder reply"
+    count: 29
+  }
+  process_breakdown {
+    process_name: "/apex/com.android.os.statsd/bin/statsd"
+    pid: 415
+    slice_name: "binder async rcv"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "/apex/com.android.os.statsd/bin/statsd"
+    pid: 415
+    slice_name: "binder reply"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "/apex/com.android.os.statsd/bin/statsd"
+    pid: 415
+    slice_name: "binder transaction"
+    count: 7
+  }
+  process_breakdown {
+    process_name: "/system/bin/apexd"
+    pid: 317
+    slice_name: "binder async rcv"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "/system/bin/audioserver"
+    pid: 492
+    slice_name: "binder transaction"
+    count: 158
+  }
+  process_breakdown {
+    process_name: "/system/bin/audioserver"
+    pid: 492
+    slice_name: "binder transaction async"
+    count: 2
+  }
+  process_breakdown {
+    process_name: "/system/bin/bootanimation"
+    pid: 581
+    slice_name: "binder async rcv"
+    count: 57
+  }
+  process_breakdown {
+    process_name: "/system/bin/bootanimation"
+    pid: 581
+    slice_name: "binder transaction async"
+    count: 57
+  }
+  process_breakdown {
+    process_name: "/system/bin/cameraserver"
+    pid: 537
+    slice_name: "binder async rcv"
+    count: 3
+  }
+  process_breakdown {
+    process_name: "/system/bin/cameraserver"
+    pid: 537
+    slice_name: "binder transaction"
+    count: 168
+  }
+  process_breakdown {
+    process_name: "/system/bin/hwservicemanager"
+    pid: 247
+    slice_name: "binder reply"
+    count: 6
+  }
+  process_breakdown {
+    process_name: "/system/bin/idmap2d"
+    pid: 541
+    slice_name: "binder reply"
+    count: 53
+  }
+  process_breakdown {
+    process_name: "/system/bin/installd"
+    pid: 548
+    slice_name: "binder reply"
+    count: 108
+  }
+  process_breakdown {
+    process_name: "/system/bin/servicemanager"
+    pid: 243
+    slice_name: "binder reply"
+    count: 601
+  }
+  process_breakdown {
+    process_name: "/system/bin/servicemanager"
+    pid: 243
+    slice_name: "binder transaction async"
+    count: 2
+  }
+  process_breakdown {
+    process_name: "/system/bin/storaged"
+    pid: 555
+    slice_name: "binder async rcv"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "/system/bin/storaged"
+    pid: 555
+    slice_name: "binder transaction"
+    count: 39
+  }
+  process_breakdown {
+    process_name: "/system/bin/surfaceflinger"
+    pid: 496
+    slice_name: "binder async rcv"
+    count: 244
+  }
+  process_breakdown {
+    process_name: "/system/bin/surfaceflinger"
+    pid: 496
+    slice_name: "binder reply"
+    count: 60
+  }
+  process_breakdown {
+    process_name: "/system/bin/surfaceflinger"
+    pid: 496
+    slice_name: "binder transaction"
+    count: 181
+  }
+  process_breakdown {
+    process_name: "/system/bin/surfaceflinger"
+    pid: 496
+    slice_name: "binder transaction async"
+    count: 58
+  }
+  process_breakdown {
+    process_name: "/system/bin/vold"
+    pid: 255
+    slice_name: "binder reply"
+    count: 2
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    pid: 446
+    slice_name: "binder reply"
+    count: 180
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    pid: 446
+    slice_name: "binder transaction async"
+    count: 180
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.health-service.cuttlefish"
+    pid: 431
+    slice_name: "binder reply"
+    count: 2
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.health-service.cuttlefish"
+    pid: 431
+    slice_name: "binder transaction"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.health-service.cuttlefish"
+    pid: 431
+    slice_name: "binder transaction async"
+    count: 3
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    pid: 447
+    slice_name: "binder reply"
+    count: 9
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.lights-service.example"
+    pid: 448
+    slice_name: "binder reply"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.sensors-service.example"
+    pid: 458
+    slice_name: "binder reply"
+    count: 4
+  }
+  process_breakdown {
+    process_name: "/vendor/bin/hw/android.hardware.sensors-service.example"
+    pid: 458
+    slice_name: "binder transaction"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "kworker/0:2-virtio_vsock"
+    pid: 146
+    slice_name: "binder_deferred_func"
+    count: 1
+  }
+  process_breakdown {
+    process_name: "media.metrics"
+    pid: 550
+    slice_name: "binder async rcv"
+    count: 2
+  }
+  process_breakdown {
+    process_name: "system_server"
+    pid: 641
+    slice_name: "binder async rcv"
+    count: 4
+  }
+  process_breakdown {
+    process_name: "system_server"
+    pid: 641
+    slice_name: "binder reply"
+    count: 14
+  }
+  process_breakdown {
+    process_name: "system_server"
+    pid: 641
+    slice_name: "binder transaction"
+    count: 515
+  }
+  process_breakdown {
+    process_name: "system_server"
+    pid: 641
+    slice_name: "binder transaction async"
+    count: 11
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36932
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 25827352153
+    client_dur: 86322
+    binder_reply_id: 36933
+    server_process: "system_server"
+    server_thread: "binder:641_5"
+    server_ts: 25827417672
+    server_dur: 11316
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11316
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4197
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10488
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 71637
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36935
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 25827531554
+    client_dur: 41057
+    binder_reply_id: 36936
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25827545050
+    server_dur: 18590
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18590
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6262
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8551
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26244
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37992
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 25927698833
+    client_dur: 43619
+    binder_reply_id: 37993
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25927713489
+    server_dur: 18478
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18478
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6587
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9084
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27948
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38855
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 26027844321
+    client_dur: 76502
+    binder_reply_id: 38856
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 26027869620
+    server_dur: 38328
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38328
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7886
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13944
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54672
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39760
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 26128022950
+    client_dur: 93620
+    binder_reply_id: 39761
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 26128060441
+    server_dur: 42549
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42549
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9275
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12113
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72232
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 40843
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 26228226807
+    client_dur: 92197
+    binder_reply_id: 40844
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 26228257962
+    server_dur: 47691
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47691
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9430
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14131
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 68636
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 41614
+    client_process: "/apex/com.android.os.statsd/bin/statsd"
+    client_thread: "binder:415_3"
+    is_main_thread: false
+    client_ts: 26328427074
+    client_dur: 88516
+    binder_reply_id: 41615
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 26328457296
+    server_dur: 45253
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45253
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8807
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14713
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 64996
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 78
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21625430256
+    client_dur: 106084
+    binder_reply_id: 79
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21625451288
+    server_dur: 25329
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25329
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 54823
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13955
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37306
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 184
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21651104412
+    client_dur: 1553854
+    binder_reply_id: 185
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21651127883
+    server_dur: 24255
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24255
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1500261
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13419
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40174
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 773
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21681078075
+    client_dur: 6957581
+    binder_reply_id: 774
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21681097331
+    server_dur: 20398
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20398
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6912350
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11911
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33320
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 818
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21713184564
+    client_dur: 1238385
+    binder_reply_id: 820
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21713209886
+    server_dur: 8733
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8733
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1200529
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6320
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31536
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 877
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21745330426
+    client_dur: 2415345
+    binder_reply_id: 878
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21745354167
+    server_dur: 24535
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24535
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 2360609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15864
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38872
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1424
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21772841582
+    client_dur: 60073
+    binder_reply_id: 1425
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21772864934
+    server_dur: 21372
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21372
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9111
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14396
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36566
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1455
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21797991492
+    client_dur: 58946
+    binder_reply_id: 1456
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21798015547
+    server_dur: 20885
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20885
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7996
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14722
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36228
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1481
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21823141587
+    client_dur: 61370
+    binder_reply_id: 1482
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21823167028
+    server_dur: 21656
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21656
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8234
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15111
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38025
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1497
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21848290804
+    client_dur: 60709
+    binder_reply_id: 1498
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21848316259
+    server_dur: 20391
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20391
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8688
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14729
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37292
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2017
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21873440775
+    client_dur: 55934
+    binder_reply_id: 2018
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21873461764
+    server_dur: 21136
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21136
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7541
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14337
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34056
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2065
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21898589558
+    client_dur: 58875
+    binder_reply_id: 2066
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21898611789
+    server_dur: 20494
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20494
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9715
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15312
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33848
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2135
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21923738957
+    client_dur: 64169
+    binder_reply_id: 2136
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21923761253
+    server_dur: 25784
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25784
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9461
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16260
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38448
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2196
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21948891420
+    client_dur: 64699
+    binder_reply_id: 2197
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21948920277
+    server_dur: 20540
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20540
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9162
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12849
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42688
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2636
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21974296208
+    client_dur: 104989
+    binder_reply_id: 2637
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21974341636
+    server_dur: 25187
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25187
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19693
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 48420
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36876
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2673
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 21999539011
+    client_dur: 71202
+    binder_reply_id: 2674
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21999568501
+    server_dur: 20357
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20357
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12476
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27311
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31415
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2726
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22024711257
+    client_dur: 328183
+    binder_reply_id: 2727
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22024736108
+    server_dur: 25338
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25338
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 260919
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27372
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39892
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2761
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22050132357
+    client_dur: 59459
+    binder_reply_id: 2762
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22050156562
+    server_dur: 20679
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20679
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8573
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15568
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35318
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3272
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22075288214
+    client_dur: 58461
+    binder_reply_id: 3273
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22075311405
+    server_dur: 20809
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20809
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8226
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18334
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31901
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3305
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22100443015
+    client_dur: 66715
+    binder_reply_id: 3306
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22100466870
+    server_dur: 19761
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19761
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16790
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16723
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33202
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3325
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22125600618
+    client_dur: 65545
+    binder_reply_id: 3326
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22125623322
+    server_dur: 20702
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20702
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7254
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15487
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42804
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3379
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22150759363
+    client_dur: 56369
+    binder_reply_id: 3380
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22150779993
+    server_dur: 22255
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22255
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7557
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14217
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34595
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3922
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22175906178
+    client_dur: 63847
+    binder_reply_id: 3923
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22175929226
+    server_dur: 25370
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25370
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9181
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16228
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38438
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3949
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22201561660
+    client_dur: 209987
+    binder_reply_id: 3950
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22201735902
+    server_dur: 20781
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20781
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9071
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12291
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 188625
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3964
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22227603566
+    client_dur: 61556
+    binder_reply_id: 3965
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22227627247
+    server_dur: 19354
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19354
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11425
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20107
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30024
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4011
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22252767831
+    client_dur: 65418
+    binder_reply_id: 4012
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22252793033
+    server_dur: 24322
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24322
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9532
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16695
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39191
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4590
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22277925922
+    client_dur: 297059
+    binder_reply_id: 4591
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22278187629
+    server_dur: 20875
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20875
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8032
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13622
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 275405
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4681
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22303375651
+    client_dur: 55580
+    binder_reply_id: 4682
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22303396802
+    server_dur: 20656
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20656
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7541
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15865
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32174
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4789
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22328804156
+    client_dur: 83145
+    binder_reply_id: 4790
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22328852158
+    server_dur: 21212
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21212
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7428
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12713
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 63004
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4912
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22354003523
+    client_dur: 56819
+    binder_reply_id: 4913
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22354025291
+    server_dur: 20568
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20568
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16651
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32451
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5344
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22379156345
+    client_dur: 66779
+    binder_reply_id: 5345
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22379180900
+    server_dur: 25632
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25632
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9606
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16243
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40930
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5480
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22404448968
+    client_dur: 67438
+    binder_reply_id: 5481
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22404473541
+    server_dur: 24816
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24816
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10691
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16730
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40017
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5608
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22429616334
+    client_dur: 74108
+    binder_reply_id: 5609
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22429639907
+    server_dur: 32292
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 32292
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13271
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14730
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46107
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5747
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22455238568
+    client_dur: 55788
+    binder_reply_id: 5748
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22455259634
+    server_dur: 20555
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20555
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7809
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16028
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31951
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6304
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22480383875
+    client_dur: 56554
+    binder_reply_id: 6305
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22480404678
+    server_dur: 20572
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20572
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8832
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14625
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33097
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6443
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22505531489
+    client_dur: 59218
+    binder_reply_id: 6444
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22505553139
+    server_dur: 22859
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22859
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7802
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16504
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34912
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6611
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22531090402
+    client_dur: 56749
+    binder_reply_id: 6612
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22531111630
+    server_dur: 20210
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8856
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15572
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32321
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6785
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22556242635
+    client_dur: 57252
+    binder_reply_id: 6786
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22556262293
+    server_dur: 20917
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20917
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9697
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14521
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33034
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7409
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22581426858
+    client_dur: 266380
+    binder_reply_id: 7433
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22581641694
+    server_dur: 31182
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31182
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13421
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 5204
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12458
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 235297
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7623
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22606961662
+    client_dur: 557886
+    binder_reply_id: 7624
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22606985795
+    server_dur: 21756
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21756
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 504854
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12479
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40553
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7798
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22632616662
+    client_dur: 57814
+    binder_reply_id: 7799
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22632638644
+    server_dur: 20728
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20728
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8302
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16765
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32747
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7953
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22657890096
+    client_dur: 63825
+    binder_reply_id: 7954
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22657912861
+    server_dur: 22058
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22058
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13576
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15710
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34539
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8572
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22683093531
+    client_dur: 80792
+    binder_reply_id: 8575
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22683116244
+    server_dur: 21278
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21278
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16273
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 12328
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23857
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28334
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8751
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22708307977
+    client_dur: 67445
+    binder_reply_id: 8752
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22708332522
+    server_dur: 26370
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26370
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9819
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17290
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40336
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8919
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22733506276
+    client_dur: 119221
+    binder_reply_id: 8921
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22733593661
+    server_dur: 19257
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19257
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8050
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9268
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 101903
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9084
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22758727072
+    client_dur: 446508
+    binder_reply_id: 9090
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22759138073
+    server_dur: 20676
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20676
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7674
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12230
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 426604
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9710
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22784311059
+    client_dur: 161051
+    binder_reply_id: 9722
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22784409798
+    server_dur: 20874
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20874
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 28504
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16032
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 116515
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9919
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22809748047
+    client_dur: 57852
+    binder_reply_id: 9920
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22809770020
+    server_dur: 20538
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20538
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8315
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17220
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32317
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10091
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22834902012
+    client_dur: 93361
+    binder_reply_id: 10092
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22834959559
+    server_dur: 21369
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21369
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7188
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13187
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72986
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10267
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22860898758
+    client_dur: 82717
+    binder_reply_id: 10268
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22860942436
+    server_dur: 21910
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21910
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9754
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14077
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 58886
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10786
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22886110503
+    client_dur: 99316
+    binder_reply_id: 10793
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22886176653
+    server_dur: 20849
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20849
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5259
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9751
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 84306
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10993
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22911318220
+    client_dur: 66992
+    binder_reply_id: 10994
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22911345648
+    server_dur: 22362
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22362
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9951
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16399
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40642
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11133
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22936549304
+    client_dur: 58969
+    binder_reply_id: 11134
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22936570719
+    server_dur: 21297
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21297
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8912
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15559
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34498
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11312
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22961701152
+    client_dur: 676548
+    binder_reply_id: 11317
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22962339912
+    server_dur: 22166
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22166
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8225
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13487
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 654836
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11876
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 22987512708
+    client_dur: 79649
+    binder_reply_id: 11880
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22987551432
+    server_dur: 24288
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24288
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8989
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 4929
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16919
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48812
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12114
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23013143578
+    client_dur: 61635
+    binder_reply_id: 12115
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23013168634
+    server_dur: 20531
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20531
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8959
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16647
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36029
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12206
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23038642421
+    client_dur: 137175
+    binder_reply_id: 12207
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23038736570
+    server_dur: 20651
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20651
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15907
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10104
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 111164
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12351
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23063886880
+    client_dur: 55663
+    binder_reply_id: 12352
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23063908358
+    server_dur: 16544
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16544
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10316
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20800
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 24547
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12865
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23089198686
+    client_dur: 68926
+    binder_reply_id: 12868
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23089221371
+    server_dur: 23561
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23561
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15559
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 4839
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18925
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 29603
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13030
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23114443451
+    client_dur: 64468
+    binder_reply_id: 13031
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23114469373
+    server_dur: 23341
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8842
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16621
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39005
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13199
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23139601722
+    client_dur: 78228
+    binder_reply_id: 13200
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23139640251
+    server_dur: 21320
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21320
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11718
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13289
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53221
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13321
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23164771069
+    client_dur: 91260
+    binder_reply_id: 13323
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23164821900
+    server_dur: 21423
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21423
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12675
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12113
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 66472
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13863
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23189996807
+    client_dur: 214050
+    binder_reply_id: 13881
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23190162200
+    server_dur: 20825
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20825
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15173
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 5003
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17377
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 176497
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14138
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23215317200
+    client_dur: 57982
+    binder_reply_id: 14139
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23215338281
+    server_dur: 21069
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21069
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8920
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15546
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33516
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14283
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23240472994
+    client_dur: 61104
+    binder_reply_id: 14284
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23240494382
+    server_dur: 22737
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22737
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9723
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16372
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35009
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14457
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23265633084
+    client_dur: 257686
+    binder_reply_id: 14459
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23265855074
+    server_dur: 21119
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21119
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7423
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20395
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 229868
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14910
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23294001031
+    client_dur: 68360
+    binder_reply_id: 14911
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23294024310
+    server_dur: 25000
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25000
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13225
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16261
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38874
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15096
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23319166709
+    client_dur: 255922
+    binder_reply_id: 15099
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23319381423
+    server_dur: 24946
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24946
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8881
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13040
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 234001
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15275
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23344525034
+    client_dur: 66275
+    binder_reply_id: 15276
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23344548135
+    server_dur: 25737
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25737
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9780
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16796
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39699
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15488
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23369688943
+    client_dur: 61329
+    binder_reply_id: 15489
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23369711803
+    server_dur: 22061
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22061
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8625
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17286
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35418
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15935
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23394850079
+    client_dur: 540888
+    binder_reply_id: 15938
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23395351729
+    server_dur: 22192
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22192
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9023
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12585
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 519280
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16118
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23420492464
+    client_dur: 65743
+    binder_reply_id: 16119
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23420518127
+    server_dur: 22480
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22480
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9719
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17259
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38765
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16308
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23451713078
+    client_dur: 68421
+    binder_reply_id: 16309
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23451738606
+    server_dur: 24478
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24478
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10971
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17526
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39924
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16505
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23476881893
+    client_dur: 64782
+    binder_reply_id: 16506
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23476905553
+    server_dur: 24602
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24602
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9518
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15734
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39530
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17180
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23502042821
+    client_dur: 820095
+    binder_reply_id: 17187
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23502825079
+    server_dur: 23414
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23414
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6727
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12388
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 800980
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17329
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23527974198
+    client_dur: 845116
+    binder_reply_id: 17338
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23528782089
+    server_dur: 23126
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23126
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6348
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18058
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 820710
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17455
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23553917567
+    client_dur: 59738
+    binder_reply_id: 17456
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23553940355
+    server_dur: 21362
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21362
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8102
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15817
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35819
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17570
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23579071838
+    client_dur: 411519
+    binder_reply_id: 17573
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23579443790
+    server_dur: 25365
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25365
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6992
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12937
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 391590
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18208
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23604582593
+    client_dur: 210023
+    binder_reply_id: 18211
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23604751577
+    server_dur: 24165
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24165
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9225
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13882
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 186916
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18316
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23629892322
+    client_dur: 194538
+    binder_reply_id: 18318
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23630049856
+    server_dur: 21631
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21631
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8691
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12138
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 173709
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18414
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23655179880
+    client_dur: 142025
+    binder_reply_id: 18416
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23655273690
+    server_dur: 30591
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 30591
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10169
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14396
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 117460
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18496
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23680421874
+    client_dur: 72852
+    binder_reply_id: 18497
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23680450743
+    server_dur: 26736
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26736
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10066
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15850
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46936
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19127
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23705597440
+    client_dur: 470856
+    binder_reply_id: 19130
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23706033599
+    server_dur: 21348
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21348
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6561
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12626
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 451669
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19266
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23731172177
+    client_dur: 184006
+    binder_reply_id: 19268
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23731318438
+    server_dur: 21088
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21088
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9165
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16769
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 158072
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19360
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23757576836
+    client_dur: 69175
+    binder_reply_id: 19361
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23757598859
+    server_dur: 22748
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22748
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8592
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25079
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35504
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19429
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23782737996
+    client_dur: 59451
+    binder_reply_id: 19430
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23782758417
+    server_dur: 25123
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25123
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7644
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14757
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37050
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20019
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23807891211
+    client_dur: 62509
+    binder_reply_id: 20020
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23807914516
+    server_dur: 23582
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23582
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9525
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14853
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38131
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20089
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23833055418
+    client_dur: 163286
+    binder_reply_id: 20091
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23833182220
+    server_dur: 22315
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22315
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7294
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12073
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 143919
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20157
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23858313038
+    client_dur: 57714
+    binder_reply_id: 20158
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23858335729
+    server_dur: 20454
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20454
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8354
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15536
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33824
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20178
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23883462809
+    client_dur: 59212
+    binder_reply_id: 20179
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23883487934
+    server_dur: 19666
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19666
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8403
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16308
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34501
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20563
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23908617410
+    client_dur: 67454
+    binder_reply_id: 20564
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23908643220
+    server_dur: 25095
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25095
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9772
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16210
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41472
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20574
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23933826058
+    client_dur: 54993
+    binder_reply_id: 20575
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23933846583
+    server_dur: 19834
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19834
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8695
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14947
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31351
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20583
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23958974344
+    client_dur: 56757
+    binder_reply_id: 20584
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23958997349
+    server_dur: 19668
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19668
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8495
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15900
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32362
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20605
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 23984212731
+    client_dur: 65425
+    binder_reply_id: 20606
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23984244337
+    server_dur: 18760
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18760
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9563
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9977
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45885
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21028
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24009326493
+    client_dur: 55937
+    binder_reply_id: 21029
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24009348026
+    server_dur: 20878
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20878
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7497
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15501
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32939
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21134
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24034474905
+    client_dur: 323973
+    binder_reply_id: 21139
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24034762131
+    server_dur: 21724
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21724
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8553
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12191
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 303229
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21225
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24059888481
+    client_dur: 269355
+    binder_reply_id: 21226
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24060121507
+    server_dur: 21099
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21099
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8385
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12535
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 248435
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21344
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24085507070
+    client_dur: 65864
+    binder_reply_id: 21345
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24085532155
+    server_dur: 24607
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24607
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9483
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16276
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40105
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21890
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24110668836
+    client_dur: 62135
+    binder_reply_id: 21891
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24110692176
+    server_dur: 23546
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23546
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8945
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15014
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38176
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21953
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24135822325
+    client_dur: 55790
+    binder_reply_id: 21954
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24135843301
+    server_dur: 20745
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20745
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8082
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14930
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32778
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22007
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24160973601
+    client_dur: 64296
+    binder_reply_id: 22008
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24160998105
+    server_dur: 24373
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24373
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8916
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16157
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39223
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22109
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24186129350
+    client_dur: 61214
+    binder_reply_id: 22110
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24186153807
+    server_dur: 21100
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21100
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9046
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15505
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36663
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22493
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24211335205
+    client_dur: 99239
+    binder_reply_id: 22494
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24211379278
+    server_dur: 25032
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25032
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16225
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 44023
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38991
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22570
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24236559912
+    client_dur: 85757
+    binder_reply_id: 22571
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24236597491
+    server_dur: 27319
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27319
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12613
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20260
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52884
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22681
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24261743662
+    client_dur: 72120
+    binder_reply_id: 22682
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24261771646
+    server_dur: 25209
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25209
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10989
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18505
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42626
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22850
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24286913419
+    client_dur: 330217
+    binder_reply_id: 22852
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24287198196
+    server_dur: 22848
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22848
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13147
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16123
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 300947
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23523
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24312358034
+    client_dur: 69020
+    binder_reply_id: 23525
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24312388724
+    server_dur: 21476
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21476
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9169
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 3934
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22232
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33685
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23776
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24337574519
+    client_dur: 104255
+    binder_reply_id: 23777
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24337613079
+    server_dur: 33967
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 33967
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 18488
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 46482
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39285
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23976
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24362804629
+    client_dur: 58822
+    binder_reply_id: 23977
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24362826557
+    server_dur: 20783
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20783
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8866
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18502
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31454
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24148
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24387968494
+    client_dur: 63171
+    binder_reply_id: 24149
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24387991414
+    server_dur: 24460
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24460
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9482
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23183
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30506
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24737
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24414399633
+    client_dur: 3357310
+    binder_reply_id: 24738
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24414422286
+    server_dur: 20459
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20459
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 3308782
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13321
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35207
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24941
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24443111092
+    client_dur: 63218
+    binder_reply_id: 24942
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24443132289
+    server_dur: 23717
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13455
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11913
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37850
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25032
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24468268772
+    client_dur: 63940
+    binder_reply_id: 25033
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24468295057
+    server_dur: 21634
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21634
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9468
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15478
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38994
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25049
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24493507908
+    client_dur: 75072
+    binder_reply_id: 25050
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24493536500
+    server_dur: 22590
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22590
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 18655
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27922
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28495
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25570
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24518715570
+    client_dur: 83147
+    binder_reply_id: 25571
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24518746589
+    server_dur: 20133
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20133
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 25817
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 30564
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26766
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25577
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24544028919
+    client_dur: 105487
+    binder_reply_id: 25578
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24544069334
+    server_dur: 24026
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24026
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 34411
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 45393
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 25683
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25612
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24569328112
+    client_dur: 106610
+    binder_reply_id: 25613
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24569369501
+    server_dur: 41826
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 41826
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16549
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28261
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 61800
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25695
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24594543032
+    client_dur: 45871
+    binder_reply_id: 25696
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24594558488
+    server_dur: 20382
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20382
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 35829
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10042
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26250
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24619690623
+    client_dur: 58336
+    binder_reply_id: 26251
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24619710131
+    server_dur: 25779
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25779
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46077
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12259
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26280
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24644930551
+    client_dur: 105892
+    binder_reply_id: 26281
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24644975052
+    server_dur: 34388
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 34388
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19919
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 36362
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49611
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26427
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24670207638
+    client_dur: 54225
+    binder_reply_id: 26428
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24670224041
+    server_dur: 26208
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26208
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 44872
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9353
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26627
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24695363832
+    client_dur: 47347
+    binder_reply_id: 26628
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24695380382
+    server_dur: 19885
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19885
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 36449
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10898
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27303
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24720504163
+    client_dur: 41635
+    binder_reply_id: 27304
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24720517121
+    server_dur: 18951
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18951
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 32352
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9283
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27397
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24745651155
+    client_dur: 50201
+    binder_reply_id: 27398
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24745667169
+    server_dur: 21953
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21953
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 39920
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10281
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27564
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24770795510
+    client_dur: 45248
+    binder_reply_id: 27565
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24770810644
+    server_dur: 19730
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19730
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 35397
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9851
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27717
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24795949562
+    client_dur: 44458
+    binder_reply_id: 27718
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24795964339
+    server_dur: 19474
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19474
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 34869
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9589
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28119
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24821098319
+    client_dur: 45736
+    binder_reply_id: 28120
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24821113887
+    server_dur: 19916
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19916
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 35672
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10064
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28309
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24846533416
+    client_dur: 52565
+    binder_reply_id: 28310
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24846550147
+    server_dur: 20978
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20978
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 41767
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10798
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28508
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24871959612
+    client_dur: 33762
+    binder_reply_id: 28509
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24871969021
+    server_dur: 15109
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15109
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 26946
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6816
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28695
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24897089502
+    client_dur: 36235
+    binder_reply_id: 28696
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24897101194
+    server_dur: 15306
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15306
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 27063
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9172
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29392
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24922327702
+    client_dur: 47487
+    binder_reply_id: 29393
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24922343062
+    server_dur: 20895
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20895
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 37169
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10318
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29708
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24947478390
+    client_dur: 50011
+    binder_reply_id: 29709
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24947495490
+    server_dur: 21244
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21244
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 38490
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11521
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29826
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24972625739
+    client_dur: 46864
+    binder_reply_id: 29827
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24972642054
+    server_dur: 20460
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20460
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 35943
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10921
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29925
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 24997766928
+    client_dur: 105830
+    binder_reply_id: 29926
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24997800832
+    server_dur: 45031
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45031
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16322
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15284
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 74224
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30443
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25023405381
+    client_dur: 86423
+    binder_reply_id: 30444
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25023438732
+    server_dur: 29757
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29757
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16596
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17720
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52107
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30598
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25048609139
+    client_dur: 56222
+    binder_reply_id: 30599
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25048631235
+    server_dur: 16655
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16655
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12493
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20090
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23639
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30745
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25073875780
+    client_dur: 84120
+    binder_reply_id: 30746
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25073898205
+    server_dur: 15854
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15854
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 38036
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24143
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21941
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30907
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25099064916
+    client_dur: 204188
+    binder_reply_id: 30908
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25099198462
+    server_dur: 49025
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49025
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13087
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10305
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 180796
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31465
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25124642124
+    client_dur: 68889
+    binder_reply_id: 31466
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25124666670
+    server_dur: 29243
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29243
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 52869
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16020
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31607
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25149891522
+    client_dur: 60500
+    binder_reply_id: 31608
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25149912505
+    server_dur: 27000
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27000
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 47837
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12663
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31797
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25175121734
+    client_dur: 65293
+    binder_reply_id: 31798
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25175141892
+    server_dur: 23570
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23570
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16586
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12587
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36120
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31960
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25200283959
+    client_dur: 44045
+    binder_reply_id: 31961
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25200298152
+    server_dur: 19339
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19339
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 34937
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9108
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32621
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25225419452
+    client_dur: 43144
+    binder_reply_id: 32622
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25225434070
+    server_dur: 18615
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18615
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 33553
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9591
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32735
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25250561510
+    client_dur: 82814
+    binder_reply_id: 32736
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25250589325
+    server_dur: 36944
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 36944
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11495
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11883
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59436
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32757
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25275837002
+    client_dur: 111602
+    binder_reply_id: 32758
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25275893327
+    server_dur: 33040
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 33040
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15712
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20492
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75398
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32900
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25301779154
+    client_dur: 81058
+    binder_reply_id: 32901
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25301805031
+    server_dur: 24119
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24119
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 23577
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17334
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40147
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33247
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25327028096
+    client_dur: 144639
+    binder_reply_id: 33248
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25327077936
+    server_dur: 53753
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 53753
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 22462
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 46910
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75267
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33290
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25352301178
+    client_dur: 837973
+    binder_reply_id: 33292
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25353047151
+    server_dur: 48734
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48734
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 29697
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22013
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 786263
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33320
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25378250275
+    client_dur: 77754
+    binder_reply_id: 33321
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25378276198
+    server_dur: 28616
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 28616
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16079
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17879
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 43796
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33425
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25403423456
+    client_dur: 65101
+    binder_reply_id: 33426
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25403445450
+    server_dur: 23191
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23191
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9148
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14483
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41470
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::IActivityManager::registerUidObserver::server"
+    binder_txn_id: 33427
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25403532822
+    client_dur: 243238
+    binder_reply_id: 33428
+    server_process: "system_server"
+    server_thread: "binder:641_4"
+    server_ts: 25403547799
+    server_dur: 210707
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 62120
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 148587
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11931
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16554
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 214753
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33431
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25403800150
+    client_dur: 77678
+    binder_reply_id: 33432
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25403821750
+    server_dur: 43829
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43829
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8383
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15372
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53923
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34122
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25429003446
+    client_dur: 55342
+    binder_reply_id: 34123
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25429021995
+    server_dur: 20582
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20582
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11420
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11916
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32006
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34277
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25454157095
+    client_dur: 68221
+    binder_reply_id: 34278
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25454182918
+    server_dur: 20352
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20352
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16203
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16059
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35959
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34330
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25479325945
+    client_dur: 157863
+    binder_reply_id: 34331
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25479422370
+    server_dur: 35765
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 35765
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16634
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16400
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 124829
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34378
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25504631134
+    client_dur: 1082750
+    binder_reply_id: 34379
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25505253998
+    server_dur: 109396
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 109396
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 332679
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 31846
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 718225
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::ISensorPrivacyManager::isSensorPrivacyEnabled::server"
+    binder_txn_id: 34382
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25505818197
+    client_dur: 3125407
+    binder_reply_id: 34383
+    server_process: "system_server"
+    server_thread: "binder:641_4"
+    server_ts: 25505891588
+    server_dur: 3000749
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 864664
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 1592392
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 10030
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 533663
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 38947
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26597
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 3059863
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 864664
+      blocked_function_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::ISensorPrivacyManager::addSensorPrivacyListener::server"
+    binder_txn_id: 34400
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25508998675
+    client_dur: 379026
+    binder_reply_id: 34401
+    server_process: "system_server"
+    server_thread: "binder:641_4"
+    server_ts: 25509052778
+    server_dur: 272193
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 272193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 43617
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 36041
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 299368
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34431
+    client_process: "/system/bin/audioserver"
+    client_thread: "audioserver"
+    is_main_thread: true
+    client_ts: 25512878756
+    client_dur: 151351
+    binder_reply_id: 34432
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25512939518
+    server_dur: 62943
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62943
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19646
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 46833
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 84872
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 51
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21612276580
+    client_dur: 39977
+    binder_reply_id: 52
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21612292301
+    server_dur: 14064
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14064
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5557
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14565
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19855
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 119
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21637405403
+    client_dur: 60035
+    binder_reply_id: 120
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21637427285
+    server_dur: 24550
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24550
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8089
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13004
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38942
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 422
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21662560974
+    client_dur: 372941
+    binder_reply_id: 457
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21662897046
+    server_dur: 22907
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22907
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8607
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10909
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 353425
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 784
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21688024281
+    client_dur: 59297
+    binder_reply_id: 785
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21688047484
+    server_dur: 21173
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21173
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9993
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11115
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38189
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 813
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21713127573
+    client_dur: 63596
+    binder_reply_id: 814
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21713152373
+    server_dur: 21155
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21155
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12575
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13519
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37502
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 874
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21738283156
+    client_dur: 60407
+    binder_reply_id: 875
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21738305184
+    server_dur: 24886
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24886
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8769
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14319
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37319
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 963
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21763445363
+    client_dur: 70801
+    binder_reply_id: 967
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21763467940
+    server_dur: 30748
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 30748
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15145
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45047
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1452
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21788612931
+    client_dur: 57076
+    binder_reply_id: 1453
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21788635008
+    server_dur: 21359
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21359
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7813
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15147
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34116
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1464
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21813762065
+    client_dur: 61236
+    binder_reply_id: 1465
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21813783295
+    server_dur: 25042
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25042
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8506
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15555
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37175
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1488
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21838919344
+    client_dur: 59886
+    binder_reply_id: 1489
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21838943470
+    server_dur: 20686
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20686
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8768
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16027
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35091
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1502
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21864144722
+    client_dur: 71604
+    binder_reply_id: 1503
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21864171886
+    server_dur: 25966
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25966
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11339
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28839
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31426
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2036
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21889317261
+    client_dur: 517889
+    binder_reply_id: 2038
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21889524828
+    server_dur: 21638
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21638
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 282329
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11971
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 223589
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2102
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21914927560
+    client_dur: 59832
+    binder_reply_id: 2103
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21914949348
+    server_dur: 23104
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23104
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8331
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14266
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37235
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2170
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21940080190
+    client_dur: 63873
+    binder_reply_id: 2171
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21940103851
+    server_dur: 24784
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24784
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9061
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15765
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39047
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2221
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21965236304
+    client_dur: 87480
+    binder_reply_id: 2222
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21965262841
+    server_dur: 47604
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 5393
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42211
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6996
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16680
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 63804
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2662
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 21990454958
+    client_dur: 89222
+    binder_reply_id: 2663
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21990491103
+    server_dur: 25934
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25934
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15158
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 40183
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33881
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2702
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22015656850
+    client_dur: 62246
+    binder_reply_id: 2703
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22015682089
+    server_dur: 21161
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21161
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9579
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15452
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37215
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2737
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22040814163
+    client_dur: 64221
+    binder_reply_id: 2738
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22040838835
+    server_dur: 24377
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24377
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8553
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16839
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38829
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2799
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22066737714
+    client_dur: 128820
+    binder_reply_id: 2801
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22066831151
+    server_dur: 19563
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19563
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9331
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11643
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 107846
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3302
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22091960087
+    client_dur: 58325
+    binder_reply_id: 3303
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22091982875
+    server_dur: 21344
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21344
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8051
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15091
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35183
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3322
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22117113923
+    client_dur: 63410
+    binder_reply_id: 3323
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22117137718
+    server_dur: 23868
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23868
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9413
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16313
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37684
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3342
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22142267357
+    client_dur: 59986
+    binder_reply_id: 3343
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22142291376
+    server_dur: 21134
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21134
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8675
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15993
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35318
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3398
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22167423522
+    client_dur: 59967
+    binder_reply_id: 3399
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22167445520
+    server_dur: 22511
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22511
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8810
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15006
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36151
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3944
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22192579344
+    client_dur: 60820
+    binder_reply_id: 3945
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22192603786
+    server_dur: 21006
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21006
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9037
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16131
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35652
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3957
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22217730341
+    client_dur: 55283
+    binder_reply_id: 3958
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22217750903
+    server_dur: 20680
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20680
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8129
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14320
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32834
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3990
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22242880300
+    client_dur: 71100
+    binder_reply_id: 3991
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22242905309
+    server_dur: 26682
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26682
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14397
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13624
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 43079
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4043
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22268043393
+    client_dur: 409558
+    binder_reply_id: 4045
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22268414904
+    server_dur: 21405
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21405
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9953
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12953
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 386652
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4633
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22293548146
+    client_dur: 63871
+    binder_reply_id: 4634
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22293572042
+    server_dur: 22980
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22980
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10126
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15356
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38389
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4744
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22318716098
+    client_dur: 339826
+    binder_reply_id: 4746
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22318736854
+    server_dur: 23010
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23010
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 291156
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12880
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35790
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4851
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22344146679
+    client_dur: 110188
+    binder_reply_id: 4852
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22344218394
+    server_dur: 24011
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24011
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7484
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12715
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 89989
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4983
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22369334226
+    client_dur: 94388
+    binder_reply_id: 4985
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22369355609
+    server_dur: 48856
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48856
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16893
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16704
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 60791
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5432
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22394536230
+    client_dur: 62982
+    binder_reply_id: 5433
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22394561551
+    server_dur: 22059
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22059
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9958
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16665
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36359
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5563
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22419697576
+    client_dur: 61323
+    binder_reply_id: 5564
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22419722756
+    server_dur: 21994
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21994
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7691
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15191
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38441
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5695
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22445031509
+    client_dur: 50515
+    binder_reply_id: 5696
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22445050820
+    server_dur: 17128
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17128
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7892
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17049
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 25574
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5813
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22470174653
+    client_dur: 55822
+    binder_reply_id: 5814
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22470196239
+    server_dur: 21286
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21286
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6971
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14509
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34342
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6375
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22495325972
+    client_dur: 68180
+    binder_reply_id: 6376
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22495350975
+    server_dur: 26711
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26711
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9856
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17949
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40375
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6561
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22521360985
+    client_dur: 234231
+    binder_reply_id: 6563
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22521382730
+    server_dur: 21186
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21186
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 186574
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14023
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33634
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6719
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22546697891
+    client_dur: 98444
+    binder_reply_id: 6720
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22546761058
+    server_dur: 19881
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19881
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8290
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12860
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 77294
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6903
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22571892907
+    client_dur: 66101
+    binder_reply_id: 6904
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22571916881
+    server_dur: 25795
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25795
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9466
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16260
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40375
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7574
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22597062070
+    client_dur: 259462
+    binder_reply_id: 7575
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22597272531
+    server_dur: 34173
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 34173
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7034
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14842
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 237586
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7723
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22622418577
+    client_dur: 59816
+    binder_reply_id: 7724
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22622443274
+    server_dur: 21430
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21430
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7031
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16096
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36689
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7910
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22650180912
+    client_dur: 473997
+    binder_reply_id: 7912
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22650255041
+    server_dur: 19254
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19254
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 375676
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9818
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 88503
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8060
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22675764005
+    client_dur: 70615
+    binder_reply_id: 8064
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22675789713
+    server_dur: 25069
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25069
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14282
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18926
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37407
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8696
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22701432879
+    client_dur: 450491
+    binder_reply_id: 8703
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22701762194
+    server_dur: 23978
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23978
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 91965
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11943
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 346583
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8871
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22726978606
+    client_dur: 401005
+    binder_reply_id: 8874
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22727339544
+    server_dur: 23475
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23475
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9364
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13170
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 378471
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9057
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22752478293
+    client_dur: 586574
+    binder_reply_id: 9062
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22753025360
+    server_dur: 21422
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21422
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10672
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13025
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 562877
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9212
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22778161650
+    client_dur: 349397
+    binder_reply_id: 9215
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22778472830
+    server_dur: 22980
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22980
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8067
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13219
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 328111
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9880
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22803612048
+    client_dur: 67634
+    binder_reply_id: 9882
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22803636072
+    server_dur: 23917
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23917
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12736
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16701
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38197
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10057
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22828777874
+    client_dur: 318230
+    binder_reply_id: 10059
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22828822556
+    server_dur: 26877
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26877
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 239363
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14416
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 64451
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10228
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22854196228
+    client_dur: 561632
+    binder_reply_id: 10232
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22854720488
+    server_dur: 21460
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21460
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9001
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12707
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 539924
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10376
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22879856680
+    client_dur: 63364
+    binder_reply_id: 10377
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22879882339
+    server_dur: 22238
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22238
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8305
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16548
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38511
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10937
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22905018627
+    client_dur: 66122
+    binder_reply_id: 10938
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22905041577
+    server_dur: 26326
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26326
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9506
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15718
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40898
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11104
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22930183511
+    client_dur: 67161
+    binder_reply_id: 11105
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22930213119
+    server_dur: 23605
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23605
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8499
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13836
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44826
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11258
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22955349414
+    client_dur: 156341
+    binder_reply_id: 11261
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22955463649
+    server_dur: 24599
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24599
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9328
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14352
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 132661
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11429
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 22980607439
+    client_dur: 65794
+    binder_reply_id: 11430
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22980629549
+    server_dur: 26192
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26192
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9826
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16908
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39060
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12057
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23005774838
+    client_dur: 62936
+    binder_reply_id: 12058
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23005798704
+    server_dur: 23801
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23801
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7899
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16084
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38953
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12168
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23030941978
+    client_dur: 89285
+    binder_reply_id: 12169
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23030973182
+    server_dur: 37855
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37855
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11326
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18246
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59713
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12300
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23056174448
+    client_dur: 200618
+    binder_reply_id: 12301
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23056329883
+    server_dur: 23980
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23980
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15488
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12093
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 173037
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12443
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23081467052
+    client_dur: 59125
+    binder_reply_id: 12444
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23081486828
+    server_dur: 24680
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24680
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8329
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14922
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35874
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12986
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23106620846
+    client_dur: 61616
+    binder_reply_id: 12987
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23106642188
+    server_dur: 24012
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24012
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9323
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15968
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36325
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13145
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23131777328
+    client_dur: 123447
+    binder_reply_id: 13146
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23131861232
+    server_dur: 22637
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22637
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9840
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12638
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 100969
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13280
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23157002672
+    client_dur: 79156
+    binder_reply_id: 13283
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23157030248
+    server_dur: 27226
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27226
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19423
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15188
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44545
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13431
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23182173903
+    client_dur: 376646
+    binder_reply_id: 13434
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23182500065
+    server_dur: 21132
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21132
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10957
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24276
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 341413
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14086
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23207650439
+    client_dur: 67278
+    binder_reply_id: 14087
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23207680535
+    server_dur: 23155
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23155
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6990
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17164
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 43124
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14230
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23233851428
+    client_dur: 892848
+    binder_reply_id: 14231
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23233871293
+    server_dur: 23312
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23312
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 844258
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13087
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35503
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14429
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23259841421
+    client_dur: 63174
+    binder_reply_id: 14430
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23259863994
+    server_dur: 23889
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23889
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9006
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16013
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38155
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14599
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23284999517
+    client_dur: 56437
+    binder_reply_id: 14600
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23285019554
+    server_dur: 21307
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21307
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8195
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14722
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33520
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15034
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23310151865
+    client_dur: 642229
+    binder_reply_id: 15040
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23310751409
+    server_dur: 26103
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26103
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8826
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13505
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 619898
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15212
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23335905400
+    client_dur: 357982
+    binder_reply_id: 15215
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23336222503
+    server_dur: 25821
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25821
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8217
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11836
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 337929
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15414
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23361328882
+    client_dur: 63784
+    binder_reply_id: 15415
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23361351852
+    server_dur: 24700
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24700
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8647
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17108
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38029
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15619
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23386869959
+    client_dur: 66376
+    binder_reply_id: 15620
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23386894766
+    server_dur: 25613
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25613
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8350
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17460
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40566
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16049
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23412468379
+    client_dur: 144242
+    binder_reply_id: 16050
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23412492591
+    server_dur: 28309
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 28309
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 86170
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15983
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42089
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16251
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23437712307
+    client_dur: 61646
+    binder_reply_id: 16252
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23437733692
+    server_dur: 21877
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21877
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12024
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13942
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35680
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16396
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23462870779
+    client_dur: 64694
+    binder_reply_id: 16398
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23462898239
+    server_dur: 21829
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21829
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8391
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16659
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39644
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16595
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23488042638
+    client_dur: 69970
+    binder_reply_id: 16596
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23488068942
+    server_dur: 26303
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26303
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9774
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17490
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42706
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17254
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23513211192
+    client_dur: 57998
+    binder_reply_id: 17255
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23513232838
+    server_dur: 22355
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22355
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8638
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14380
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34980
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17394
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23538364057
+    client_dur: 90805
+    binder_reply_id: 17396
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23538417034
+    server_dur: 21543
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21543
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9281
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12396
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69128
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17505
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23563555747
+    client_dur: 62301
+    binder_reply_id: 17506
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23563577896
+    server_dur: 23477
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23477
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10106
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17027
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35168
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17632
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23588716088
+    client_dur: 122069
+    binder_reply_id: 17634
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23588796199
+    server_dur: 21803
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21803
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13101
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13448
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 95520
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18260
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23613942195
+    client_dur: 406560
+    binder_reply_id: 18262
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23614311041
+    server_dur: 21665
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21665
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8991
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11695
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 385874
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18372
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23639449764
+    client_dur: 297834
+    binder_reply_id: 18375
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23639707345
+    server_dur: 24585
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24585
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8229
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13424
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 276181
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18447
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23664840926
+    client_dur: 64026
+    binder_reply_id: 18448
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23664863549
+    server_dur: 25828
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25828
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9120
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15951
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38955
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18539
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23689999571
+    client_dur: 60667
+    binder_reply_id: 18540
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23690020989
+    server_dur: 24039
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24039
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8754
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15791
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36122
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19166
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23715668567
+    client_dur: 55651
+    binder_reply_id: 19167
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23715687865
+    server_dur: 20534
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20534
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9561
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15563
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30527
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19303
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23740820398
+    client_dur: 69779
+    binder_reply_id: 19304
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23740846289
+    server_dur: 26005
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26005
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10777
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16279
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42723
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19382
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23765983216
+    client_dur: 63111
+    binder_reply_id: 19383
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23766008333
+    server_dur: 22489
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22489
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8790
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17083
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37238
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19458
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23791142714
+    client_dur: 62184
+    binder_reply_id: 19459
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23791165515
+    server_dur: 24176
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24176
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9231
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15606
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37347
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20037
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23816748979
+    client_dur: 97527
+    binder_reply_id: 20038
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23816810994
+    server_dur: 19216
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19216
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9955
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11348
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 76224
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20114
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23841937008
+    client_dur: 265351
+    binder_reply_id: 20116
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23842045870
+    server_dur: 21030
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21030
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 129029
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12524
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 123798
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20167
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23867298197
+    client_dur: 65269
+    binder_reply_id: 20168
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23867323342
+    server_dur: 24762
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24762
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9144
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16186
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39939
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20181
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23892458661
+    client_dur: 61895
+    binder_reply_id: 20182
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23892481485
+    server_dur: 23511
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23511
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9424
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15805
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36666
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20570
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23917612205
+    client_dur: 60756
+    binder_reply_id: 20571
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23917632161
+    server_dur: 27790
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27790
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7172
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15193
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38391
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20580
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23942767445
+    client_dur: 56639
+    binder_reply_id: 20581
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23942789248
+    server_dur: 20150
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20150
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8851
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16225
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31563
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20586
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23967917345
+    client_dur: 61714
+    binder_reply_id: 20587
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23967941212
+    server_dur: 23677
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23677
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8639
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15525
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37550
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20609
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 23993073217
+    client_dur: 61426
+    binder_reply_id: 20610
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23993098746
+    server_dur: 21011
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21011
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9162
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16343
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35921
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21074
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24018227157
+    client_dur: 154788
+    binder_reply_id: 21077
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24018346321
+    server_dur: 21354
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21354
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8072
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12163
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 134553
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21173
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24043472861
+    client_dur: 56072
+    binder_reply_id: 21174
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24043492721
+    server_dur: 20952
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20952
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8817
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14727
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32528
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21282
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24068623147
+    client_dur: 61422
+    binder_reply_id: 21283
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24068647003
+    server_dur: 23307
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23307
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7892
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14931
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38599
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21381
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24094174551
+    client_dur: 60440
+    binder_reply_id: 21382
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24094198265
+    server_dur: 20963
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20963
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9741
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16421
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34278
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21895
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24119330336
+    client_dur: 62796
+    binder_reply_id: 21896
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24119353765
+    server_dur: 24014
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24014
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9261
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15581
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37954
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21968
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24144486541
+    client_dur: 57521
+    binder_reply_id: 21969
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24144507336
+    server_dur: 20651
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20651
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9760
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15741
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32020
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22044
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24169644272
+    client_dur: 59318
+    binder_reply_id: 22045
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24169667507
+    server_dur: 21848
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21848
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8155
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14106
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37057
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22132
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24194796993
+    client_dur: 61133
+    binder_reply_id: 22134
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24194818919
+    server_dur: 24981
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24981
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9553
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13816
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37764
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22535
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24219976971
+    client_dur: 80874
+    binder_reply_id: 22536
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24220009018
+    server_dur: 24029
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24029
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15353
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 30282
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35239
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22605
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24245182141
+    client_dur: 75715
+    binder_reply_id: 22606
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24245212188
+    server_dur: 24869
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24869
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12976
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18093
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44646
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22736
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24270354623
+    client_dur: 72978
+    binder_reply_id: 22737
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24270381508
+    server_dur: 24460
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24460
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13754
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18622
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40602
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22954
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24296497808
+    client_dur: 74119
+    binder_reply_id: 22955
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24296524147
+    server_dur: 25619
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25619
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13970
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20071
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40078
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23605
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24321677437
+    client_dur: 1068351
+    binder_reply_id: 23619
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24322701227
+    server_dur: 22458
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22458
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13373
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15664
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1039314
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23875
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24349464998
+    client_dur: 600120
+    binder_reply_id: 23876
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24349498235
+    server_dur: 21721
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21721
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 538437
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28871
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32812
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24063
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24375203138
+    client_dur: 200814
+    binder_reply_id: 24069
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24375371665
+    server_dur: 20774
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20774
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6689
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11685
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 182440
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24195
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24400499298
+    client_dur: 1655381
+    binder_reply_id: 24196
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24400525814
+    server_dur: 20740
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20740
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1601604
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16472
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37305
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24805
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24427255856
+    client_dur: 74073
+    binder_reply_id: 24806
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24427281368
+    server_dur: 33400
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 33400
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10045
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13148
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 50880
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24991
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24452425092
+    client_dur: 66019
+    binder_reply_id: 24992
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24452453488
+    server_dur: 22713
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22713
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8009
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15972
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42038
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25036
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24477584081
+    client_dur: 77570
+    binder_reply_id: 25037
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24477603311
+    server_dur: 20359
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20359
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 32090
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14927
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30553
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25062
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24502766882
+    client_dur: 85030
+    binder_reply_id: 25063
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24502792394
+    server_dur: 34540
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 34540
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19555
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22566
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42909
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25574
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24528063792
+    client_dur: 88744
+    binder_reply_id: 25575
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24528100762
+    server_dur: 19035
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19035
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 26645
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 42946
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19153
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25580
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24553269933
+    client_dur: 102641
+    binder_reply_id: 25581
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24553320732
+    server_dur: 19753
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19753
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 25759
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 61089
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 15793
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25637
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24578496582
+    client_dur: 75733
+    binder_reply_id: 25638
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24578522139
+    server_dur: 31879
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31879
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12741
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16238
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46754
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25722
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24603666160
+    client_dur: 32902
+    binder_reply_id: 25723
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24603676548
+    server_dur: 13734
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13734
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5562
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7859
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19481
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26255
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24628827055
+    client_dur: 77433
+    binder_reply_id: 26256
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24628855199
+    server_dur: 31376
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31376
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12475
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17814
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47144
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26303
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24654016554
+    client_dur: 82862
+    binder_reply_id: 26304
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24654047419
+    server_dur: 27392
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27392
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13718
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27480
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41664
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26498
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24679300128
+    client_dur: 51067
+    binder_reply_id: 26499
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24679317330
+    server_dur: 23251
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23251
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7018
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9865
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34184
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26703
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24704445330
+    client_dur: 53313
+    binder_reply_id: 26704
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24704463794
+    server_dur: 20543
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20543
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7424
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14915
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30974
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27351
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24729604221
+    client_dur: 73960
+    binder_reply_id: 27353
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24729643378
+    server_dur: 19819
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19819
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10152
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10183
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53625
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27453
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24754787089
+    client_dur: 79191
+    binder_reply_id: 27454
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24754812563
+    server_dur: 21216
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21216
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 22836
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23483
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32872
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27639
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24779973546
+    client_dur: 61655
+    binder_reply_id: 27640
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24779997866
+    server_dur: 21840
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21840
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9255
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14596
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37804
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27743
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24805151631
+    client_dur: 65179
+    binder_reply_id: 27744
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24805176625
+    server_dur: 24502
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24502
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8737
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16281
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40161
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28208
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24830317956
+    client_dur: 66289
+    binder_reply_id: 28209
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24830344368
+    server_dur: 21990
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21990
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12267
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13259
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40763
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28391
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24855481377
+    client_dur: 65228
+    binder_reply_id: 28392
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24855502595
+    server_dur: 27360
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27360
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8884
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16266
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40078
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28574
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24880648226
+    client_dur: 55511
+    binder_reply_id: 28575
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24880667129
+    server_dur: 21590
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21590
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7654
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14520
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33337
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28819
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24909335836
+    client_dur: 55761
+    binder_reply_id: 28821
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24909354477
+    server_dur: 24104
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24104
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7405
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12906
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35450
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29543
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24934490094
+    client_dur: 58244
+    binder_reply_id: 29544
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24934509872
+    server_dur: 22084
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22084
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8716
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15386
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34142
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29763
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24959652634
+    client_dur: 81523
+    binder_reply_id: 29764
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24959684793
+    server_dur: 28526
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 28526
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12630
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17355
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51538
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29885
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 24984851591
+    client_dur: 68470
+    binder_reply_id: 29886
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24984877747
+    server_dur: 26966
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26966
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9994
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18086
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40390
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29943
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25010040890
+    client_dur: 90947
+    binder_reply_id: 29944
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25010071568
+    server_dur: 37280
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37280
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14634
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19657
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56656
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30532
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25035275877
+    client_dur: 59761
+    binder_reply_id: 30533
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25035296221
+    server_dur: 25210
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9456
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12850
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37455
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30668
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25060426543
+    client_dur: 81204
+    binder_reply_id: 30669
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25060443769
+    server_dur: 22941
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22941
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 36151
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11288
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33765
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30818
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25085672790
+    client_dur: 95011
+    binder_reply_id: 30821
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25085716849
+    server_dur: 37413
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37413
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12739
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75062
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30934
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25110861456
+    client_dur: 53363
+    binder_reply_id: 30935
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25110879022
+    server_dur: 22707
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22707
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8544
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10892
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33927
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31541
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25136012642
+    client_dur: 51978
+    binder_reply_id: 31542
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25136030960
+    server_dur: 22166
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22166
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7961
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11485
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32532
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31702
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25161156360
+    client_dur: 68046
+    binder_reply_id: 31703
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25161174689
+    server_dur: 37221
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37221
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8762
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11214
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48070
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31878
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25186325904
+    client_dur: 37128
+    binder_reply_id: 31879
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25186338341
+    server_dur: 14526
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14526
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6646
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8595
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21887
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32070
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25211748648
+    client_dur: 44699
+    binder_reply_id: 32071
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25211763861
+    server_dur: 18676
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18676
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10060
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27531
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32684
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25236887649
+    client_dur: 51265
+    binder_reply_id: 32685
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25236905107
+    server_dur: 21519
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21519
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8405
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11439
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31421
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32745
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25262053873
+    client_dur: 82396
+    binder_reply_id: 32746
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25262085792
+    server_dur: 26917
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26917
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17532
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25561
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39303
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32860
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25287387704
+    client_dur: 103899
+    binder_reply_id: 32862
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25287423221
+    server_dur: 43908
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43908
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17246
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14487
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72166
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32910
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25312712971
+    client_dur: 248879
+    binder_reply_id: 32911
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25312865501
+    server_dur: 53943
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 53943
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 30345
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 40122
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 178412
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33264
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25338145653
+    client_dur: 118734
+    binder_reply_id: 33265
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25338183347
+    server_dur: 50843
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50843
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 20241
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23812
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 74681
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33305
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25363427959
+    client_dur: 127185
+    binder_reply_id: 33306
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25363473345
+    server_dur: 52393
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52393
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 20652
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28294
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 78239
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33374
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25388666272
+    client_dur: 311561
+    binder_reply_id: 33376
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25388926887
+    server_dur: 27556
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27556
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9320
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20653
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 281588
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33377
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25389019468
+    client_dur: 2257654
+    binder_reply_id: 33378
+    server_process: "system_server"
+    server_thread: "binder:641_2"
+    server_ts: 25389272037
+    server_dur: 1993270
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 932507
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 251637
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 387534
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 421592
+      thread_state_count: 7
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 3762
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12347
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2241545
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 932507
+      blocked_function_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::IActivityManager::registerUidObserver::server"
+    binder_txn_id: 33393
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25391362853
+    client_dur: 2138663
+    binder_reply_id: 33394
+    server_process: "system_server"
+    server_thread: "binder:641_1"
+    server_ts: 25391432268
+    server_dur: 2057673
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 426529
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 861373
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 112712
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 657059
+      thread_state_count: 6
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4668
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18399
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2115596
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 426529
+      blocked_function_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33404
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25393529331
+    client_dur: 72907
+    binder_reply_id: 33405
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25393544112
+    server_dur: 48279
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48279
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7139
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8607
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 57161
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33530
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25418715954
+    client_dur: 46115
+    binder_reply_id: 33533
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25418731360
+    server_dur: 20385
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20385
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7069
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9081
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 29965
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34206
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25443850387
+    client_dur: 44974
+    binder_reply_id: 34207
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25443866014
+    server_dur: 19042
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19042
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6807
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9340
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28827
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34325
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25469057379
+    client_dur: 66877
+    binder_reply_id: 34326
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25469081511
+    server_dur: 26836
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26836
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10913
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15075
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 40889
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34343
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25494306485
+    client_dur: 127198
+    binder_reply_id: 34344
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25494352512
+    server_dur: 49015
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49015
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 22704
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 29539
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 74955
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34481
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25519756306
+    client_dur: 101379
+    binder_reply_id: 34482
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25519800487
+    server_dur: 31778
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31778
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13503
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16564
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 71312
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::ISensorPrivacyManager::supportsSensorToggle::server"
+    binder_txn_id: 34486
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25519893501
+    client_dur: 154940
+    binder_reply_id: 34487
+    server_process: "system_server"
+    server_thread: "binder:641_4"
+    server_ts: 25519915012
+    server_dur: 115492
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 115492
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8657
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16881
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 129402
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::ISensorPrivacyManager::addSensorPrivacyListener::server"
+    binder_txn_id: 34490
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25520078379
+    client_dur: 176159
+    binder_reply_id: 34491
+    server_process: "system_server"
+    server_thread: "binder:641_1"
+    server_ts: 25520102430
+    server_dur: 134309
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 134309
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7962
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24992
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 143205
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::ISensorPrivacyManager::isSensorPrivacyEnabled::server"
+    binder_txn_id: 34496
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25520281012
+    client_dur: 123400
+    binder_reply_id: 34497
+    server_process: "system_server"
+    server_thread: "binder:641_2"
+    server_ts: 25520299524
+    server_dur: 88243
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 88243
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7860
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18347
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 97193
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34499
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25520423828
+    client_dur: 343243
+    binder_reply_id: 34500
+    server_process: "system_server"
+    server_thread: "binder:641_3"
+    server_ts: 25520612948
+    server_dur: 123445
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 123445
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 20080
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18075
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 305088
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34505
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25520890215
+    client_dur: 293220
+    binder_reply_id: 34507
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25521075472
+    server_dur: 82900
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 82900
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14542
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15450
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 263228
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::java::IAppOpsService::setCameraAudioRestriction::server"
+    binder_txn_id: 34508
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25521216286
+    client_dur: 489554
+    binder_reply_id: 34509
+    server_process: "system_server"
+    server_thread: "binder:641_3"
+    server_ts: 25521243526
+    server_dur: 435659
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 46465
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 389194
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15197
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18545
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 455812
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34563
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25523480228
+    client_dur: 2277042
+    binder_reply_id: 34581
+    server_process: "/system/bin/hwservicemanager"
+    server_thread: "hwservicemanage"
+    server_ts: 25523653053
+    server_dur: 2085804
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 399859
+      thread_state_count: 23
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 816967
+      thread_state_count: 39
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 868978
+      thread_state_count: 63
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4802
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27907
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2244333
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34776
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25525828575
+    client_dur: 674113
+    binder_reply_id: 34797
+    server_process: "/system/bin/hwservicemanager"
+    server_thread: "hwservicemanage"
+    server_ts: 25526007038
+    server_dur: 466892
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 131308
+      thread_state_count: 16
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 56775
+      thread_state_count: 7
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 278809
+      thread_state_count: 24
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 3766
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26104
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 644243
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35034
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25529470300
+    client_dur: 103937
+    binder_reply_id: 35035
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25529493228
+    server_dur: 62956
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62956
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12711
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13493
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 77733
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35037
+    client_process: "/system/bin/cameraserver"
+    client_thread: "cameraserver"
+    is_main_thread: true
+    client_ts: 25529642910
+    client_dur: 106592
+    binder_reply_id: 35038
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25529669348
+    server_dur: 64544
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 64544
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10767
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20950
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 74875
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 48
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 21610888219
+    client_dur: 1404460
+    binder_reply_id: 49
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21610912981
+    server_dur: 24345
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24345
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1348770
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23698
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31992
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 816
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 21713165109
+    client_dur: 1236372
+    binder_reply_id: 819
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21713185409
+    server_dur: 12103
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12103
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1197658
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8231
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30483
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1475
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 21817588572
+    client_dur: 329198
+    binder_reply_id: 1478
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21817646283
+    server_dur: 29874
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29874
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 235645
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10533
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 83020
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2123
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 21918044833
+    client_dur: 54295
+    binder_reply_id: 2124
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 21918066018
+    server_dur: 22515
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4956
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15264
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34075
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2708
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22018230040
+    client_dur: 4199277
+    binder_reply_id: 2709
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22018253018
+    server_dur: 20817
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20817
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4147506
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16606
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35165
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3328
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22128615818
+    client_dur: 66352
+    binder_reply_id: 3329
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22128641106
+    server_dur: 21332
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21332
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14367
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15683
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36302
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3971
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22231107021
+    client_dur: 6202865
+    binder_reply_id: 3972
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22231126269
+    server_dur: 21216
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21216
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6153299
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16139
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33427
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4827
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22338230784
+    client_dur: 5927748
+    binder_reply_id: 4828
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22338257085
+    server_dur: 22271
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22271
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5872081
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18271
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37396
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5686
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22444315008
+    client_dur: 360477
+    binder_reply_id: 5687
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22444338001
+    server_dur: 22884
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22884
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 307361
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17297
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35819
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6708
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22545342573
+    client_dur: 1367091
+    binder_reply_id: 6709
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22545364958
+    server_dur: 22936
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22936
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1314882
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14826
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37383
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7884
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22646870376
+    client_dur: 61414
+    binder_reply_id: 7885
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22646893001
+    server_dur: 24570
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24570
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7898
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14066
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39450
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9014
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22747766863
+    client_dur: 1605566
+    binder_reply_id: 9026
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22749199929
+    server_dur: 25123
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25123
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 140583
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10423
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1454560
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10202
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22849527732
+    client_dur: 3775048
+    binder_reply_id: 10204
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22849787260
+    server_dur: 22559
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22559
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 3484172
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14879
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 275997
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11260
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 22955387074
+    client_dur: 5918097
+    binder_reply_id: 11262
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 22955504595
+    server_dur: 12187
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12187
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5780094
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10408
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 127595
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12346
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23063243768
+    client_dur: 1153069
+    binder_reply_id: 12349
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23063268117
+    server_dur: 21864
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21864
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1099308
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15760
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38001
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13368
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23171834613
+    client_dur: 468230
+    binder_reply_id: 13371
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23171888187
+    server_dur: 23659
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23659
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 385080
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11869
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 71281
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14513
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23274482309
+    client_dur: 56450
+    binder_reply_id: 14514
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23274502428
+    server_dur: 22204
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22204
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8238
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13622
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34590
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15526
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23375517889
+    client_dur: 2282317
+    binder_reply_id: 15550
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23377319838
+    server_dur: 23748
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23748
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 447880
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13360
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1821077
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16517
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23479410599
+    client_dur: 60331
+    binder_reply_id: 16518
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23479434099
+    server_dur: 24056
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24056
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7016
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15827
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37488
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17587
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23581096165
+    client_dur: 380036
+    binder_reply_id: 17589
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23581329034
+    server_dur: 23039
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23039
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 118310
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9835
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 251891
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18504
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23683521915
+    client_dur: 66608
+    binder_reply_id: 18505
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23683548740
+    server_dur: 23628
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23628
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8628
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18506
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39474
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19454
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23788017588
+    client_dur: 110886
+    binder_reply_id: 19455
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23788091294
+    server_dur: 22793
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22793
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8896
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11517
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 90473
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20184
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23892497829
+    client_dur: 5298146
+    binder_reply_id: 20185
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23892520529
+    server_dur: 12354
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12354
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5251837
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13660
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 32649
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20623
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 23997916363
+    client_dur: 128256
+    binder_reply_id: 20624
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 23997934258
+    server_dur: 22034
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22034
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 81419
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13387
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33450
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21388
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24100588444
+    client_dur: 79761
+    binder_reply_id: 21393
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24100613596
+    server_dur: 21941
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21941
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 25886
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14101
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39774
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22159
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24203608109
+    client_dur: 1476962
+    binder_reply_id: 22160
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24203662175
+    server_dur: 25824
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25824
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1380274
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 63248
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33440
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23177
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24305487641
+    client_dur: 69000
+    binder_reply_id: 23181
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24305515718
+    server_dur: 25348
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25348
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6963
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19864
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42173
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24224
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24405940362
+    client_dur: 114844
+    binder_reply_id: 24228
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24405962114
+    server_dur: 22212
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22212
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 65750
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12359
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36735
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25067
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24506183075
+    client_dur: 76130
+    binder_reply_id: 25068
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24506212466
+    server_dur: 21817
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21817
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 18373
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28422
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 29335
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25734
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24606672569
+    client_dur: 71411
+    binder_reply_id: 25735
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24606692709
+    server_dur: 37402
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37402
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8565
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13236
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49610
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26722
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24706847915
+    client_dur: 77826
+    binder_reply_id: 26723
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24706871511
+    server_dur: 21505
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21505
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 25448
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15515
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36863
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27754
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24807614065
+    client_dur: 142762
+    binder_reply_id: 27755
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24807635682
+    server_dur: 20956
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20956
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 95308
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12621
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34833
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28823
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 24909374599
+    client_dur: 3171973
+    binder_reply_id: 28824
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24909393940
+    server_dur: 10997
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 10997
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 3135191
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8500
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28282
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29971
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 25012679868
+    client_dur: 112287
+    binder_reply_id: 29972
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25012708944
+    server_dur: 35550
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 35550
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 40560
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18629
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53098
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30937
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 25112924292
+    client_dur: 43230
+    binder_reply_id: 30938
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25112938063
+    server_dur: 18263
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18263
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7101
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8959
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27170
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32075
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 25213072326
+    client_dur: 33395
+    binder_reply_id: 32076
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25213083753
+    server_dur: 13289
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13289
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5039
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8733
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19623
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32913
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 25313259127
+    client_dur: 150680
+    binder_reply_id: 32914
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25313317394
+    server_dur: 52236
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52236
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 29452
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 34428
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 86800
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33473
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 25415404685
+    client_dur: 1470768
+    binder_reply_id: 33482
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25416823355
+    server_dur: 22986
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22986
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17713
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11378
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1441677
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33492
+    client_process: "/system/bin/storaged"
+    client_thread: "storaged"
+    is_main_thread: false
+    client_ts: 25417416478
+    client_dur: 321332
+    binder_reply_id: 33493
+    server_process: "system_server"
+    server_thread: "binder:641_4"
+    server_ts: 25417428728
+    server_dur: 140719
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 140719
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 163195
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11351
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 146786
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37690
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "binder:496_2"
+    is_main_thread: false
+    client_ts: 25867907972
+    client_dur: 68305
+    binder_reply_id: 37691
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25867933710
+    server_dur: 25394
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25394
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5734
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11935
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 50636
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 167
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21648847518
+    client_dur: 138863
+    binder_reply_id: 168
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21648864955
+    server_dur: 110424
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 110424
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7185
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14617
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 117061
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 169
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21649020222
+    client_dur: 1298536
+    binder_reply_id: 170
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21649025816
+    server_dur: 1271373
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1271373
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8539
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6844
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1283153
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 173
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21650405554
+    client_dur: 21176
+    binder_reply_id: 174
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21650412827
+    server_dur: 7662
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7662
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4190
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6770
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10216
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 858
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21732179696
+    client_dur: 66330
+    binder_reply_id: 859
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21732194327
+    server_dur: 42279
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42279
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5992
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13738
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46600
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 860
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21732276479
+    client_dur: 998493
+    binder_reply_id: 861
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21732281653
+    server_dur: 980816
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 980816
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8083
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6003
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 984407
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 882
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21747805001
+    client_dur: 32253
+    binder_reply_id: 883
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21747815991
+    server_dur: 13234
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13234
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5585
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9883
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 16785
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1466
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21815501160
+    client_dur: 67864
+    binder_reply_id: 1467
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21815515197
+    server_dur: 44624
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44624
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6209
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11975
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49680
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1468
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21815599518
+    client_dur: 1843570
+    binder_reply_id: 1469
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21815604505
+    server_dur: 1825932
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1825932
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7950
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6112
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1829508
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 1470
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21817527536
+    client_dur: 20911
+    binder_reply_id: 1471
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21817534229
+    server_dur: 6822
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 6822
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4959
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5810
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10142
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2067
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21898832978
+    client_dur: 61578
+    binder_reply_id: 2068
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21898846685
+    server_dur: 38670
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38670
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6251
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11722
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 43605
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2069
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21898923783
+    client_dur: 1096630
+    binder_reply_id: 2070
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21898928634
+    server_dur: 1080195
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1080195
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7346
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5512
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1083772
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2099
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21914447745
+    client_dur: 30172
+    binder_reply_id: 2100
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21914458873
+    server_dur: 11417
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11417
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9684
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 15049
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2649
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21982278493
+    client_dur: 137675
+    binder_reply_id: 2650
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21982310594
+    server_dur: 80114
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 80114
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17314
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28178
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 92183
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2651
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21982477699
+    client_dur: 1235182
+    binder_reply_id: 2652
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21982492293
+    server_dur: 1187140
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1187140
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 21998
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16391
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1196793
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2654
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 21983894427
+    client_dur: 56732
+    binder_reply_id: 2656
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 21983913100
+    server_dur: 18080
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18080
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14092
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16645
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 25995
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2791
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22065483496
+    client_dur: 63685
+    binder_reply_id: 2792
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22065497670
+    server_dur: 40803
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40803
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5926
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12354
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45405
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 2793
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22065575735
+    client_dur: 1062604
+    binder_reply_id: 2794
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22065580382
+    server_dur: 1045862
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1045862
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7467
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5577
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1049560
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3278
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22081125903
+    client_dur: 31676
+    binder_reply_id: 3279
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22081137566
+    server_dur: 12008
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12008
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5563
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10309
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 15804
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3360
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22148826292
+    client_dur: 66432
+    binder_reply_id: 3361
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22148840763
+    server_dur: 42889
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42889
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6043
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12344
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48045
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3363
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22148922210
+    client_dur: 1055199
+    binder_reply_id: 3364
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22148927117
+    server_dur: 1037009
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1037009
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8500
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5913
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1040786
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3370
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22150072810
+    client_dur: 21373
+    binder_reply_id: 3371
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22150080025
+    server_dur: 7715
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7715
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4405
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6851
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10117
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3975
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22232166904
+    client_dur: 64562
+    binder_reply_id: 3976
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22232181958
+    server_dur: 40112
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40112
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6284
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13110
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45168
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3977
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22232260319
+    client_dur: 1084947
+    binder_reply_id: 3978
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22232265525
+    server_dur: 1065811
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1065811
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8286
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6870
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1069791
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 3997
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22247787616
+    client_dur: 29515
+    binder_reply_id: 3998
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22247797746
+    server_dur: 12125
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12125
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4884
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9595
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 15036
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4716
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22315503408
+    client_dur: 75460
+    binder_reply_id: 4717
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22315519682
+    server_dur: 49022
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49022
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7091
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13812
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54557
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4718
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22315610938
+    client_dur: 1046448
+    binder_reply_id: 4719
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22315616049
+    server_dur: 1029776
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1029776
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7418
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5735
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1033295
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 4720
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22316735903
+    client_dur: 21152
+    binder_reply_id: 4721
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22316742808
+    server_dur: 7783
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7783
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4149
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6309
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10694
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5453
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22398839076
+    client_dur: 65963
+    binder_reply_id: 5454
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22398854027
+    server_dur: 42248
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42248
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5958
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12898
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47107
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5455
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22398960806
+    client_dur: 1018998
+    binder_reply_id: 5456
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22398966568
+    server_dur: 1000410
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1000410
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8068
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6157
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1004773
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 5534
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22414462930
+    client_dur: 32955
+    binder_reply_id: 5535
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22414474372
+    server_dur: 13302
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13302
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5810
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10071
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17074
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6310
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22482179365
+    client_dur: 71661
+    binder_reply_id: 6311
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22482194253
+    server_dur: 47932
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47932
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6091
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12523
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53047
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6312
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22482282793
+    client_dur: 955159
+    binder_reply_id: 6313
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22482287911
+    server_dur: 938324
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 938324
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7229
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5986
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 941944
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6390
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22497465809
+    client_dur: 39624
+    binder_reply_id: 6392
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22497477915
+    server_dur: 17691
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17691
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6115
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12004
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21505
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6854
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22565521231
+    client_dur: 66993
+    binder_reply_id: 6855
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22565536155
+    server_dur: 42982
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42982
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6171
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12902
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47920
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 6856
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22565618391
+    client_dur: 1026658
+    binder_reply_id: 6857
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22565623264
+    server_dur: 1009748
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1009748
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7593
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5686
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1013379
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7389
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22581241130
+    client_dur: 37185
+    binder_reply_id: 7390
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22581254325
+    server_dur: 15879
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15879
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5578
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11958
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19649
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7900
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22648855410
+    client_dur: 78080
+    binder_reply_id: 7901
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22648872617
+    server_dur: 51463
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 51463
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6163
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14952
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56965
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7902
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22648965876
+    client_dur: 1080456
+    binder_reply_id: 7903
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22648971095
+    server_dur: 1061465
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1061465
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8635
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6276
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1065545
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 7904
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22650134321
+    client_dur: 21145
+    binder_reply_id: 7905
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22650140974
+    server_dur: 7869
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7869
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4614
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6279
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10252
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8909
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22732183976
+    client_dur: 84922
+    binder_reply_id: 8910
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22732199541
+    server_dur: 59268
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59268
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6957
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13605
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 64360
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 8911
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22732300442
+    client_dur: 1084256
+    binder_reply_id: 8912
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22732305487
+    server_dur: 1066498
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1066498
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7813
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5904
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1070539
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9029
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22749316211
+    client_dur: 37389
+    binder_reply_id: 9030
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22749329367
+    server_dur: 15449
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15449
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6084
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11642
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19663
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9959
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22815554390
+    client_dur: 80259
+    binder_reply_id: 9960
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22815571850
+    server_dur: 52908
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52908
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6490
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14972
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 58797
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9962
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22815665677
+    client_dur: 1846724
+    binder_reply_id: 9963
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22815670690
+    server_dur: 1827939
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1827939
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8500
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6274
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1831950
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 9974
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22817599826
+    client_dur: 21169
+    binder_reply_id: 9975
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22817606552
+    server_dur: 8080
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8080
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4076
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6272
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10821
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10907
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22898837991
+    client_dur: 66016
+    binder_reply_id: 10908
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22898853740
+    server_dur: 41111
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 41111
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13664
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46011
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 10909
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22898932620
+    client_dur: 1881472
+    binder_reply_id: 10910
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22898937509
+    server_dur: 1862476
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1862476
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8257
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5821
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1867394
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11008
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22914460532
+    client_dur: 34598
+    binder_reply_id: 11009
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22914472324
+    server_dur: 14518
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14518
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5964
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10634
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 18000
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11436
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22982182870
+    client_dur: 80394
+    binder_reply_id: 11437
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22982200371
+    server_dur: 52999
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52999
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6848
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14593
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 58953
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11438
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22982296391
+    client_dur: 1052212
+    binder_reply_id: 11439
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22982301600
+    server_dur: 1033314
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1033314
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7784
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5911
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1038517
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 11447
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 22983445756
+    client_dur: 23169
+    binder_reply_id: 11448
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 22983452175
+    server_dur: 10357
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 10357
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4431
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5952
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 12786
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12360
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23065513683
+    client_dur: 74423
+    binder_reply_id: 12361
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23065529019
+    server_dur: 49067
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49067
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6975
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13401
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54047
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12362
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23065619219
+    client_dur: 1146958
+    binder_reply_id: 12363
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23065624303
+    server_dur: 1129990
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1129990
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7580
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5807
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1133571
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 12440
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23081285291
+    client_dur: 45213
+    binder_reply_id: 12441
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23081307603
+    server_dur: 14325
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14325
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6077
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20970
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 18166
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13248
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23148835709
+    client_dur: 76791
+    binder_reply_id: 13249
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23148852272
+    server_dur: 50863
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50863
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6457
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13953
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56381
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13252
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23148944247
+    client_dur: 1986947
+    binder_reply_id: 13253
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23148949481
+    server_dur: 1965225
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1965225
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10379
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6992
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1969576
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 13258
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23151027818
+    client_dur: 25087
+    binder_reply_id: 13259
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23151036483
+    server_dur: 9385
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 9385
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4914
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7478
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 12695
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14213
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23232183799
+    client_dur: 75511
+    binder_reply_id: 14214
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23232201226
+    server_dur: 48102
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48102
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6958
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13968
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54585
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14215
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23232290686
+    client_dur: 1140969
+    binder_reply_id: 14216
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23232295646
+    server_dur: 1123404
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1123404
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8095
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5736
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1127138
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 14359
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23249891699
+    client_dur: 37797
+    binder_reply_id: 14360
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23249904526
+    server_dur: 16397
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16397
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5928
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11244
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20625
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15072
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23315566931
+    client_dur: 110557
+    binder_reply_id: 15073
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23315592450
+    server_dur: 69421
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 69421
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10955
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20258
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 79344
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15075
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23315722066
+    client_dur: 2606042
+    binder_reply_id: 15076
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23315729839
+    server_dur: 2583671
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 2583671
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8916
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8663
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2588463
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15084
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23318420005
+    client_dur: 21345
+    binder_reply_id: 15085
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23318427118
+    server_dur: 7958
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7958
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6512
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10394
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15959
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23398873863
+    client_dur: 68770
+    binder_reply_id: 15960
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23398889934
+    server_dur: 41798
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 41798
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7126
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14149
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47495
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 15962
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23398973230
+    client_dur: 1176570
+    binder_reply_id: 15963
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23398978271
+    server_dur: 1158688
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1158688
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7858
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6328
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1162384
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16091
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23416727246
+    client_dur: 33867
+    binder_reply_id: 16092
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23416739503
+    server_dur: 14319
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14319
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5019
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11356
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17492
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16540
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23482185608
+    client_dur: 80279
+    binder_reply_id: 16541
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23482202317
+    server_dur: 53655
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 53655
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6776
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14182
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59321
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16544
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23482297909
+    client_dur: 1040841
+    binder_reply_id: 16545
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23482303086
+    server_dur: 1022859
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1022859
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8389
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6083
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1026369
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 16553
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23483420403
+    client_dur: 20295
+    binder_reply_id: 16554
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23483427104
+    server_dur: 6793
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 6793
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4616
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5929
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 9750
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17517
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23566095373
+    client_dur: 80168
+    binder_reply_id: 17518
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23566112317
+    server_dur: 53405
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 53405
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6919
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14100
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59149
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17520
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23566207004
+    client_dur: 1080032
+    binder_reply_id: 17521
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23566212869
+    server_dur: 1062341
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1062341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7395
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6118
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1066519
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 17591
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23581426699
+    client_dur: 33178
+    binder_reply_id: 17592
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23581438242
+    server_dur: 13572
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13572
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5567
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10146
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17465
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18402
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23648877211
+    client_dur: 74827
+    binder_reply_id: 18403
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23648892093
+    server_dur: 50840
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50840
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6204
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12449
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56174
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18404
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23648984124
+    client_dur: 1869563
+    binder_reply_id: 18405
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23648989106
+    server_dur: 1850394
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1850394
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8926
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6218
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1854419
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 18406
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23650943350
+    client_dur: 22389
+    binder_reply_id: 18407
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23650950419
+    server_dur: 8699
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8699
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6663
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 11009
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19274
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23732162997
+    client_dur: 66948
+    binder_reply_id: 19275
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23732178223
+    server_dur: 42065
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42065
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6714
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13243
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46991
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19276
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23732260275
+    client_dur: 1099825
+    binder_reply_id: 19277
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23732265173
+    server_dur: 1083011
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1083011
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7523
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5579
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1086723
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 19318
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23747796852
+    client_dur: 29683
+    binder_reply_id: 19319
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23747806637
+    server_dur: 12580
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12580
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5173
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8954
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 15556
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20026
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23815516337
+    client_dur: 68846
+    binder_reply_id: 20027
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23815530730
+    server_dur: 44894
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44894
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6499
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12498
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49849
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20028
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23815619259
+    client_dur: 986718
+    binder_reply_id: 20029
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23815623956
+    server_dur: 969888
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 969888
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7448
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6000
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 973270
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20030
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23816691292
+    client_dur: 20206
+    binder_reply_id: 20031
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23816697719
+    server_dur: 7427
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7427
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4378
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6112
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 9716
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20286
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23898849538
+    client_dur: 73093
+    binder_reply_id: 20287
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23898865505
+    server_dur: 44882
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44882
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9037
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14074
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49982
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20288
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23898957000
+    client_dur: 1065096
+    binder_reply_id: 20289
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23898962241
+    server_dur: 1045751
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1045751
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9330
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6316
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1049450
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20567
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23914455173
+    client_dur: 29880
+    binder_reply_id: 20568
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23914466130
+    server_dur: 11108
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5363
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10025
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 14492
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20594
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23982180549
+    client_dur: 85583
+    binder_reply_id: 20595
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23982199040
+    server_dur: 52914
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52914
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9668
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16422
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59493
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20596
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23982305851
+    client_dur: 1744711
+    binder_reply_id: 20597
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23982314504
+    server_dur: 1722762
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1722762
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7953
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9228
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1727530
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 20598
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 23984133705
+    client_dur: 20045
+    binder_reply_id: 20599
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 23984139858
+    server_dur: 7402
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7402
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4308
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5775
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 9962
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21253
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24065542758
+    client_dur: 68668
+    binder_reply_id: 21254
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24065557894
+    server_dur: 43859
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43859
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6566
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13043
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49059
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21255
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24065652205
+    client_dur: 1049759
+    binder_reply_id: 21256
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24065657696
+    server_dur: 1032583
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1032583
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7445
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6150
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1036164
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21338
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24081125997
+    client_dur: 31826
+    binder_reply_id: 21339
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24081137112
+    server_dur: 13041
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13041
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5392
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9278
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17156
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21988
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24148820113
+    client_dur: 68214
+    binder_reply_id: 21989
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24148833979
+    server_dur: 44630
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44630
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6408
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12309
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49497
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21990
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24148918715
+    client_dur: 1009266
+    binder_reply_id: 21991
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24148923375
+    server_dur: 991906
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 991906
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5615
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 995458
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 21997
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24150011467
+    client_dur: 21064
+    binder_reply_id: 21998
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24150018449
+    server_dur: 7359
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7359
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4752
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6031
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10281
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22609
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24247778973
+    client_dur: 34911
+    binder_reply_id: 22610
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24247791507
+    server_dur: 14684
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14684
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5470
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11104
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 18337
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22611
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24248842389
+    client_dur: 66174
+    binder_reply_id: 22612
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24248855559
+    server_dur: 43223
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43223
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6788
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10728
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48658
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22613
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24248937934
+    client_dur: 1130965
+    binder_reply_id: 22614
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24248943066
+    server_dur: 1111247
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1111247
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9078
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6429
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1115458
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 22634
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24250153754
+    client_dur: 21489
+    binder_reply_id: 22635
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24250161172
+    server_dur: 7362
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7362
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4627
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6860
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10002
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23732
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24332164030
+    client_dur: 78622
+    binder_reply_id: 23733
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24332193334
+    server_dur: 39186
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 39186
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7017
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13704
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 57901
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23735
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24332271286
+    client_dur: 1233475
+    binder_reply_id: 23736
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24332276288
+    server_dur: 1215090
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1215090
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8366
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5970
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1219139
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 23886
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24350341616
+    client_dur: 97785
+    binder_reply_id: 23887
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24350364644
+    server_dur: 50768
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50768
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17006
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19906
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 60873
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24745
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24415506341
+    client_dur: 73094
+    binder_reply_id: 24746
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24415521413
+    server_dur: 48860
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48860
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6117
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13047
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53930
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24747
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24415610395
+    client_dur: 1963175
+    binder_reply_id: 24748
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24415614985
+    server_dur: 1944970
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1944970
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8173
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5820
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1949182
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 24756
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24417688619
+    client_dur: 22666
+    binder_reply_id: 24757
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24417696179
+    server_dur: 8868
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8868
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4234
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6917
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 11515
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25053
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24498858408
+    client_dur: 72316
+    binder_reply_id: 25054
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24498874905
+    server_dur: 44364
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44364
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8081
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14445
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49790
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25055
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24498965251
+    client_dur: 2212172
+    binder_reply_id: 25056
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24498971364
+    server_dur: 2189623
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 2189623
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10583
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7144
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2194445
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25567
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24514530326
+    client_dur: 46445
+    binder_reply_id: 25568
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24514545922
+    server_dur: 16967
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16967
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9604
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14181
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22660
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25643
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24582239101
+    client_dur: 102168
+    binder_reply_id: 25644
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24582262241
+    server_dur: 62646
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62646
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11468
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19845
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 70855
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25645
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24582383933
+    client_dur: 1125278
+    binder_reply_id: 25646
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24582393122
+    server_dur: 1094530
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1094530
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13729
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10592
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1100957
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25647
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24583627699
+    client_dur: 36229
+    binder_reply_id: 25648
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24583638897
+    server_dur: 12637
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12637
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8637
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10880
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 16712
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26385
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24665516749
+    client_dur: 77492
+    binder_reply_id: 26386
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24665535013
+    server_dur: 46956
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 46956
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8435
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15547
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53510
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26387
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24665629297
+    client_dur: 1056190
+    binder_reply_id: 26388
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24665650779
+    server_dur: 1018462
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1018462
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10419
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22389
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1023382
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26518
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24681436859
+    client_dur: 36053
+    binder_reply_id: 26519
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24681447493
+    server_dur: 17169
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17169
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5620
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9202
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21231
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27407
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24748868138
+    client_dur: 84885
+    binder_reply_id: 27408
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24748886644
+    server_dur: 54090
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 54090
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8216
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15824
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 60845
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27409
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24748988510
+    client_dur: 1030023
+    binder_reply_id: 27410
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24748994792
+    server_dur: 1007690
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1007690
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10320
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7443
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1012260
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27413
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24750114696
+    client_dur: 25844
+    binder_reply_id: 27414
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24750122620
+    server_dur: 9559
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 9559
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5840
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7465
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 12539
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28222
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24832172264
+    client_dur: 71964
+    binder_reply_id: 28224
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24832186234
+    server_dur: 48177
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48177
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6424
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12387
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53153
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28225
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24832278767
+    client_dur: 2319199
+    binder_reply_id: 28226
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24832284387
+    server_dur: 2299722
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 2299722
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8849
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6891
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2303459
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28327
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24848194066
+    client_dur: 38990
+    binder_reply_id: 28328
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24848207084
+    server_dur: 16882
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16882
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6284
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11173
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21533
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29072
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24915569035
+    client_dur: 92319
+    binder_reply_id: 29073
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24915587307
+    server_dur: 61522
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61522
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8366
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15715
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 68238
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29076
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24915703770
+    client_dur: 1154960
+    binder_reply_id: 29077
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24915710935
+    server_dur: 1133005
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1133005
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8423
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9153
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1137384
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29091
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24916964211
+    client_dur: 24607
+    binder_reply_id: 29092
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24916971111
+    server_dur: 10684
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 10684
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4900
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5967
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 13740
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29927
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24998945706
+    client_dur: 111229
+    binder_reply_id: 29928
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24998970836
+    server_dur: 66036
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 66036
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13838
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21668
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75723
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29929
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 24999109626
+    client_dur: 1079778
+    binder_reply_id: 29930
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 24999121401
+    server_dur: 1042002
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1042002
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16987
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13081
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1049710
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29988
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25014488039
+    client_dur: 70943
+    binder_reply_id: 29989
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25014504840
+    server_dur: 24296
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24296
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 24698
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15242
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31003
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30799
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25082202078
+    client_dur: 73854
+    binder_reply_id: 30800
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25082217860
+    server_dur: 47920
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47920
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6842
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13731
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53281
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30801
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25082306875
+    client_dur: 1782258
+    binder_reply_id: 30802
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25082312116
+    server_dur: 1764384
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1764384
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7856
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5932
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1768470
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30803
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25084166020
+    client_dur: 20222
+    binder_reply_id: 30804
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25084172595
+    server_dur: 7394
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7394
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4419
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5929
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 9874
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31747
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25165504670
+    client_dur: 81307
+    binder_reply_id: 31748
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25165518960
+    server_dur: 55941
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55941
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7811
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12328
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 61168
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31750
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25165619958
+    client_dur: 997114
+    binder_reply_id: 31751
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25165625294
+    server_dur: 978831
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 978831
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8147
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5942
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 983025
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31831
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25181108704
+    client_dur: 38312
+    binder_reply_id: 31832
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25181120018
+    server_dur: 17603
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17603
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6306
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9963
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22043
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32724
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25248839993
+    client_dur: 71834
+    binder_reply_id: 32725
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25248855062
+    server_dur: 47208
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47208
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6386
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13069
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52379
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32726
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25248942032
+    client_dur: 1065822
+    binder_reply_id: 32727
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25248946700
+    server_dur: 1047977
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1047977
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8512
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5782
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1051528
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32728
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25250092465
+    client_dur: 21121
+    binder_reply_id: 32729
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25250099244
+    server_dur: 7872
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7872
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4475
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6335
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10311
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33253
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25332433123
+    client_dur: 129185
+    binder_reply_id: 33254
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25332463293
+    server_dur: 75363
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 75363
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16194
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27446
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 85545
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33255
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25332622145
+    client_dur: 3970213
+    binder_reply_id: 33256
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25332636462
+    server_dur: 3919134
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3919134
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 23585
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16980
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 3929648
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33282
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25347937130
+    client_dur: 63143
+    binder_reply_id: 33283
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25347956107
+    server_dur: 23630
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23630
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17296
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31238
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33474
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25415532955
+    client_dur: 74958
+    binder_reply_id: 33475
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25415548486
+    server_dur: 48910
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48910
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6930
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13469
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54559
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33476
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25415639063
+    client_dur: 1045725
+    binder_reply_id: 33477
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25415643854
+    server_dur: 1028657
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1028657
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7893
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5559
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1032273
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33478
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25416779828
+    client_dur: 22459
+    binder_reply_id: 33479
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25416786530
+    server_dur: 8393
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8393
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4916
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6179
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 11364
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34358
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25499090883
+    client_dur: 135524
+    binder_reply_id: 34359
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25499122517
+    server_dur: 77879
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 77879
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17689
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28182
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 89653
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34360
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25499287661
+    client_dur: 1179689
+    binder_reply_id: 34361
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25499301640
+    server_dur: 1130895
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1130895
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 21282
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17823
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1140584
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34438
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25514592061
+    client_dur: 62604
+    binder_reply_id: 34439
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25514612449
+    server_dur: 22109
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22109
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14020
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19238
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 29346
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35133
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25582338627
+    client_dur: 162705
+    binder_reply_id: 35134
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25582368275
+    server_dur: 92253
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 92253
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 33673
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26483
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 102549
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35135
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25582559609
+    client_dur: 1051443
+    binder_reply_id: 35136
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25582572935
+    server_dur: 992794
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 992794
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 22295
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15761
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1013387
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35137
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25583792668
+    client_dur: 57270
+    binder_reply_id: 35138
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25583811204
+    server_dur: 18520
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18520
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14321
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16357
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26592
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35788
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25665575887
+    client_dur: 98551
+    binder_reply_id: 35789
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25665594994
+    server_dur: 67512
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 67512
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7988
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16922
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 73641
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35790
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25665714191
+    client_dur: 2056246
+    binder_reply_id: 35791
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25665719790
+    server_dur: 2036405
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 2036405
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9097
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6577
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2040572
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35828
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25681400816
+    client_dur: 89610
+    binder_reply_id: 35829
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25681427461
+    server_dur: 37612
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37612
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17669
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23561
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48380
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36400
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25748935127
+    client_dur: 126067
+    binder_reply_id: 36401
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25748964935
+    server_dur: 75428
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 75428
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14504
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25325
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 86238
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36403
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25749129537
+    client_dur: 1130001
+    binder_reply_id: 36404
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25749140148
+    server_dur: 1092654
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1092654
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17304
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12502
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1100195
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36405
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25750403211
+    client_dur: 43991
+    binder_reply_id: 36406
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25750417428
+    server_dur: 15659
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15659
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9809
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13575
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20607
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37341
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25832201262
+    client_dur: 76032
+    binder_reply_id: 37342
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25832217990
+    server_dur: 49551
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49551
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6906
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14816
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54310
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37343
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25832312368
+    client_dur: 1052337
+    binder_reply_id: 37344
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25832317105
+    server_dur: 1035144
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1035144
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8239
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5578
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1038520
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37487
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25847799175
+    client_dur: 40678
+    binder_reply_id: 37488
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25847812958
+    server_dur: 17906
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17906
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6168
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11828
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22682
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37553
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25855749248
+    client_dur: 31727
+    binder_reply_id: 37554
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25855758456
+    server_dur: 14151
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14151
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5859
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7968
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17900
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37647
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25865415841
+    client_dur: 46578
+    binder_reply_id: 37648
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25865424168
+    server_dur: 29991
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29991
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5933
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7031
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33614
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37649
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25865488539
+    client_dur: 1091161
+    binder_reply_id: 37650
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25865493112
+    server_dur: 1074785
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1074785
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7603
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5410
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1078148
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37765
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25882229417
+    client_dur: 49798
+    binder_reply_id: 37766
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25882240791
+    server_dur: 29545
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29545
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6031
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10125
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33642
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37767
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25882302427
+    client_dur: 976002
+    binder_reply_id: 37768
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25882306957
+    server_dur: 960192
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 960192
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7146
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5451
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 963405
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37915
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25915516257
+    client_dur: 67861
+    binder_reply_id: 37916
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25915531128
+    server_dur: 43477
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43477
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6486
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12964
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48411
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37917
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25915614740
+    client_dur: 879798
+    binder_reply_id: 37918
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25915619820
+    server_dur: 861862
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 861862
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8285
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6099
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 865414
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38527
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25947791827
+    client_dur: 36462
+    binder_reply_id: 38528
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25947803365
+    server_dur: 16366
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16366
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5818
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10213
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20431
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38610
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25965634137
+    client_dur: 62809
+    binder_reply_id: 38611
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25965647687
+    server_dur: 39248
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 39248
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6918
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11814
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44077
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38612
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25965727363
+    client_dur: 1082911
+    binder_reply_id: 38613
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25965732380
+    server_dur: 1065715
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1065715
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7319
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6217
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1069375
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38614
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25966880090
+    client_dur: 18647
+    binder_reply_id: 38615
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25966885882
+    server_dur: 6742
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 6742
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4248
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5363
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 9036
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38709
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25998857609
+    client_dur: 68802
+    binder_reply_id: 38710
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25998873383
+    server_dur: 43179
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43179
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6644
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13433
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48725
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38711
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 25998956453
+    client_dur: 896029
+    binder_reply_id: 38712
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 25998961673
+    server_dur: 878692
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 878692
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7393
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6467
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 882169
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39533
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26064480113
+    client_dur: 41059
+    binder_reply_id: 39534
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26064494262
+    server_dur: 17230
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17230
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6332
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12955
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21772
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39601
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26082167007
+    client_dur: 68814
+    binder_reply_id: 39602
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26082181896
+    server_dur: 44307
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44307
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6523
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12985
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49306
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39603
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26082265345
+    client_dur: 984160
+    binder_reply_id: 39604
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26082270124
+    server_dur: 967726
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 967726
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7545
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5363
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 971252
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39605
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26083328041
+    client_dur: 20356
+    binder_reply_id: 39606
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26083334137
+    server_dur: 7873
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7873
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4423
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5760
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10173
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 40489
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26165543672
+    client_dur: 76748
+    binder_reply_id: 40490
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26165564279
+    server_dur: 46139
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 46139
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6914
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18549
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51285
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 40491
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26165664730
+    client_dur: 952016
+    binder_reply_id: 40492
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26165670566
+    server_dur: 934833
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 934833
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7438
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6338
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 938240
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 40608
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26181134030
+    client_dur: 39663
+    binder_reply_id: 40609
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26181147708
+    server_dur: 17312
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17312
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5937
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12083
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21643
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 41435
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26265553005
+    client_dur: 106037
+    binder_reply_id: 41436
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26265570929
+    server_dur: 76133
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 76133
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7963
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15290
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 82784
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 41437
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26265695797
+    client_dur: 1070288
+    binder_reply_id: 41438
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26265701257
+    server_dur: 1051768
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1051768
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7786
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6863
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1055639
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 41439
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26266851930
+    client_dur: 21080
+    binder_reply_id: 41440
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26266858935
+    server_dur: 7493
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7493
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4365
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6552
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 10163
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 42168
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26348993760
+    client_dur: 74635
+    binder_reply_id: 42169
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26349012914
+    server_dur: 45210
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6893
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16680
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51062
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 42170
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26349100408
+    client_dur: 985507
+    binder_reply_id: 42171
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26349105368
+    server_dur: 967525
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 967525
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8367
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5894
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 971246
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 42243
+    client_process: "/system/bin/surfaceflinger"
+    client_thread: "surfaceflinger"
+    is_main_thread: true
+    client_ts: 26364884926
+    client_dur: 48465
+    binder_reply_id: 42244
+    server_process: "/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu"
+    server_thread: "binder:446_1"
+    server_ts: 26364907480
+    server_dur: 16844
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16844
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6065
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11985
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30415
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34944
+    client_process: "/vendor/bin/hw/android.hardware.health-service.cuttlefish"
+    client_thread: "android.hardwar"
+    is_main_thread: true
+    client_ts: 25527594973
+    client_dur: 961513
+    binder_reply_id: 35015
+    server_process: "system_server"
+    server_thread: "system_server"
+    server_ts: 25528486848
+    server_dur: 41164
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 41164
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16500
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22374
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 922639
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34473
+    client_process: "/vendor/bin/hw/android.hardware.sensors-service.example"
+    client_thread: "android.hardwar"
+    is_main_thread: true
+    client_ts: 25519230900
+    client_dur: 67687
+    binder_reply_id: 34474
+    server_process: "system_server"
+    server_thread: "system-server-i"
+    server_ts: 25519257217
+    server_dur: 19303
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19303
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10440
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18453
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38794
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37811
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25887934200
+    client_dur: 73511
+    binder_reply_id: 37812
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25887963950
+    server_dur: 31341
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8085
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12229
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53197
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37961
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25924014206
+    client_dur: 48397
+    binder_reply_id: 37962
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25924032607
+    server_dur: 19471
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19471
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5527
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15282
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27588
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37966
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25924552433
+    client_dur: 51388
+    binder_reply_id: 37967
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25924572649
+    server_dur: 16951
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16951
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9856
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13550
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27982
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37973
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25925236390
+    client_dur: 40800
+    binder_reply_id: 37974
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25925252802
+    server_dur: 11692
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11692
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7826
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14902
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 18072
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37976
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25925312006
+    client_dur: 22098
+    binder_reply_id: 37977
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25925321018
+    server_dur: 4977
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4977
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5466
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8602
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 8030
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37978
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25925340685
+    client_dur: 18485
+    binder_reply_id: 37979
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25925348223
+    server_dur: 3660
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3660
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4947
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7586
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5952
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37980
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 25925364763
+    client_dur: 18634
+    binder_reply_id: 37981
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25925372247
+    server_dur: 3490
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3490
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5003
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7609
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 6022
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39377
+    client_process: "system_server"
+    client_thread: "InputClassifier"
+    is_main_thread: false
+    client_ts: 26046721012
+    client_dur: 137219
+    binder_reply_id: 39378
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 26046826730
+    server_dur: 20407
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20407
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6532
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13018
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 117669
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37492
+    client_process: "system_server"
+    client_thread: "android.anim"
+    is_main_thread: false
+    client_ts: 25848902022
+    client_dur: 109438
+    binder_reply_id: 37493
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25848918031
+    server_dur: 71184
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 71184
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11944
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17219
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 80275
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IDisplayEventConnection::stealReceiveChannel::cppServer"
+    binder_txn_id: 37495
+    client_process: "system_server"
+    client_thread: "android.anim"
+    is_main_thread: false
+    client_ts: 25849035817
+    client_dur: 85138
+    binder_reply_id: 37496
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25849046771
+    server_dur: 23591
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23591
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7084
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12484
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65570
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38606
+    client_process: "system_server"
+    client_thread: "android.anim"
+    is_main_thread: false
+    client_ts: 25965522657
+    client_dur: 87636
+    binder_reply_id: 38607
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25965536704
+    server_dur: 31166
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 8700
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22466
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 73724
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13912
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39373
+    client_process: "system_server"
+    client_thread: "android.anim"
+    is_main_thread: false
+    client_ts: 26046475353
+    client_dur: 139999
+    binder_reply_id: 39374
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 26046494430
+    server_dur: 36023
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 36023
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 122602
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17397
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 39394
+    client_process: "system_server"
+    client_thread: "android.anim"
+    is_main_thread: false
+    client_ts: 26049659202
+    client_dur: 66793
+    binder_reply_id: 39395
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 26049676304
+    server_dur: 21699
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21699
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 50178
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16615
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37520
+    client_process: "system_server"
+    client_thread: "android.anim.lf"
+    is_main_thread: false
+    client_ts: 25852597933
+    client_dur: 72360
+    binder_reply_id: 37521
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25852614647
+    server_dur: 40436
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40436
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7219
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18898
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 46243
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IDisplayEventConnection::stealReceiveChannel::cppServer"
+    binder_txn_id: 37523
+    client_process: "system_server"
+    client_thread: "android.anim.lf"
+    is_main_thread: false
+    client_ts: 25852691734
+    client_dur: 40316
+    binder_reply_id: 37524
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25852702316
+    server_dur: 18235
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18235
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7152
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12109
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21055
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37514
+    client_process: "system_server"
+    client_thread: "android.display"
+    is_main_thread: false
+    client_ts: 25851140935
+    client_dur: 82845
+    binder_reply_id: 37515
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25851157134
+    server_dur: 45749
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45749
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11075
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15703
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56067
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IDisplayEventConnection::stealReceiveChannel::cppServer"
+    binder_txn_id: 37517
+    client_process: "system_server"
+    client_thread: "android.display"
+    is_main_thread: false
+    client_ts: 25851245190
+    client_dur: 40441
+    binder_reply_id: 37518
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25851255329
+    server_dur: 18715
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18715
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7120
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11685
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21636
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::ITunnelModeEnabledListener::onTunnelModeEnabledChanged::cppClient"
+    binder_txn_id: 37532
+    client_process: "system_server"
+    client_thread: "android.display"
+    is_main_thread: false
+    client_ts: 25854136251
+    client_dur: 140850
+    binder_reply_id: 37533
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25854153001
+    server_dur: 42359
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42359
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 78554
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16641
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45655
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38658
+    client_process: "system_server"
+    client_thread: "android.io"
+    is_main_thread: false
+    client_ts: 25982476503
+    client_dur: 71952
+    binder_reply_id: 38659
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25982503060
+    server_dur: 29743
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29743
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6598
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20959
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44395
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37714
+    client_process: "system_server"
+    client_thread: "android.ui"
+    is_main_thread: false
+    client_ts: 25873131715
+    client_dur: 117082
+    binder_reply_id: 37715
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25873153628
+    server_dur: 22969
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22969
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 105865
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11217
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37775
+    client_process: "system_server"
+    client_thread: "android.ui"
+    is_main_thread: false
+    client_ts: 25883734665
+    client_dur: 152980
+    binder_reply_id: 37776
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25883839992
+    server_dur: 25887
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25887
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12161
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11974
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 128845
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35061
+    client_process: "system_server"
+    client_thread: "binder:641_5"
+    is_main_thread: false
+    client_ts: 25537922715
+    client_dur: 260041
+    binder_reply_id: 35062
+    server_process: "/vendor/bin/hw/android.hardware.lights-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25537947459
+    server_dur: 137623
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 137623
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 238582
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21459
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::fixupAppData::cppServer"
+    binder_txn_id: 32835
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25285800698
+    client_dur: 1963972
+    binder_reply_id: 32836
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25285972364
+    server_dur: 1764197
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 284726
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 110633
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 42080
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1326758
+      thread_state_count: 9
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14967
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 33562
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1915443
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "__get_node_page"
+      blocked_function_dur: 284726
+      blocked_function_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::createAppDataBatched::cppServer"
+    binder_txn_id: 33301
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25359359930
+    client_dur: 58056845
+    binder_reply_id: 33302
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25359406757
+    server_dur: 57997245
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 1327838
+      thread_state_count: 27
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 3079729
+      thread_state_count: 15
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 53589678
+      thread_state_count: 43
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4434
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 9923013
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 51802
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48077596
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33494
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25417583831
+    client_dur: 159127
+    binder_reply_id: 33495
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25417600127
+    server_dur: 117766
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 117766
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 18342
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18832
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 121953
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33498
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25417795254
+    client_dur: 84143
+    binder_reply_id: 33499
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25417807548
+    server_dur: 52980
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52980
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15788
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15710
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52645
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33501
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25417900256
+    client_dur: 72685
+    binder_reply_id: 33502
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25417909455
+    server_dur: 47502
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47502
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13072
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9700
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49913
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33504
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25417989778
+    client_dur: 70644
+    binder_reply_id: 33505
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418000174
+    server_dur: 44675
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44675
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12725
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8711
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49208
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33507
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418084967
+    client_dur: 63335
+    binder_reply_id: 33508
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418094122
+    server_dur: 43952
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43952
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7803
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8330
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47202
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33510
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418162868
+    client_dur: 73089
+    binder_reply_id: 33511
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418174366
+    server_dur: 51193
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 51193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7756
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8486
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56847
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33513
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418257945
+    client_dur: 71217
+    binder_reply_id: 33514
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418268205
+    server_dur: 50582
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50582
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7766
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8070
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 55381
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33516
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418344237
+    client_dur: 68933
+    binder_reply_id: 33517
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418354448
+    server_dur: 48033
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48033
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7990
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8085
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52858
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33519
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418434003
+    client_dur: 70051
+    binder_reply_id: 33520
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418444322
+    server_dur: 49218
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49218
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7844
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8346
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53861
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33522
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418523244
+    client_dur: 71860
+    binder_reply_id: 33523
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418533528
+    server_dur: 51097
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 51097
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7808
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8342
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 55710
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33525
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418613235
+    client_dur: 80217
+    binder_reply_id: 33526
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418623429
+    server_dur: 59922
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59922
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7367
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8921
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 63929
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33529
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418707467
+    client_dur: 100848
+    binder_reply_id: 33531
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25418716983
+    server_dur: 80176
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 80176
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5595
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9165
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 86088
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33534
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418859801
+    client_dur: 96287
+    binder_reply_id: 33535
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25418874922
+    server_dur: 66129
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 66129
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10134
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15427
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 70726
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33537
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25418990456
+    client_dur: 73140
+    binder_reply_id: 33538
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419002227
+    server_dur: 50140
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50140
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8499
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10864
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53777
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33540
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419082851
+    client_dur: 69691
+    binder_reply_id: 33541
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419093189
+    server_dur: 48614
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48614
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7874
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8725
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53092
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33543
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419197218
+    client_dur: 97019
+    binder_reply_id: 33544
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419208385
+    server_dur: 75308
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 75308
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7886
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9213
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 79920
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33547
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419309331
+    client_dur: 68503
+    binder_reply_id: 33548
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419319559
+    server_dur: 48070
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48070
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7747
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8191
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52565
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33550
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419402979
+    client_dur: 68957
+    binder_reply_id: 33551
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419413041
+    server_dur: 48592
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48592
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7741
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8200
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53016
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33553
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419490548
+    client_dur: 70455
+    binder_reply_id: 33554
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419500948
+    server_dur: 49673
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49673
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7765
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8581
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54109
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33556
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419576883
+    client_dur: 68126
+    binder_reply_id: 33557
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419587154
+    server_dur: 47213
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47213
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8151
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8194
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51781
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33559
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419662926
+    client_dur: 68985
+    binder_reply_id: 33560
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419673103
+    server_dur: 48313
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48313
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7673
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8910
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52402
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33562
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419747914
+    client_dur: 70204
+    binder_reply_id: 33563
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419758511
+    server_dur: 49425
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49425
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7622
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8342
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54240
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33565
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419838530
+    client_dur: 74294
+    binder_reply_id: 33566
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419851530
+    server_dur: 50943
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50943
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7628
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10028
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56638
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33568
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25419930878
+    client_dur: 71254
+    binder_reply_id: 33569
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25419941349
+    server_dur: 50447
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50447
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7791
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8386
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 55077
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33571
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420022065
+    client_dur: 70064
+    binder_reply_id: 33572
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420034446
+    server_dur: 47514
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47514
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7675
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8509
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53880
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33574
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420107549
+    client_dur: 67997
+    binder_reply_id: 33575
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420117365
+    server_dur: 47959
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47959
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7678
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8179
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52140
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33577
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420191395
+    client_dur: 67798
+    binder_reply_id: 33578
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420201429
+    server_dur: 47599
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47599
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7599
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8116
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52083
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33580
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420275173
+    client_dur: 68378
+    binder_reply_id: 33581
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420285912
+    server_dur: 47561
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47561
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7527
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8398
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52453
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33583
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420359212
+    client_dur: 68447
+    binder_reply_id: 33584
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420369692
+    server_dur: 47721
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47721
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7488
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8244
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52715
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33586
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420458125
+    client_dur: 69217
+    binder_reply_id: 33587
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420468424
+    server_dur: 48683
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48683
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7776
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8280
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53161
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33589
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420542827
+    client_dur: 68982
+    binder_reply_id: 33590
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420553053
+    server_dur: 48593
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48593
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7608
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8252
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53122
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33592
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420642092
+    client_dur: 75336
+    binder_reply_id: 33593
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420652418
+    server_dur: 54692
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 54692
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7665
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8497
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59174
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33595
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420732600
+    client_dur: 66989
+    binder_reply_id: 33596
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420742486
+    server_dur: 46762
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 46762
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7475
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8901
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 50613
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33598
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420814670
+    client_dur: 66733
+    binder_reply_id: 33599
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420824622
+    server_dur: 46663
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 46663
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7574
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8227
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 50932
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33601
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420898454
+    client_dur: 67283
+    binder_reply_id: 33602
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420908490
+    server_dur: 47258
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47258
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7567
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8118
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51598
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33604
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25420980515
+    client_dur: 68119
+    binder_reply_id: 33605
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25420990555
+    server_dur: 47881
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47881
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7644
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8028
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52447
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33607
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421062960
+    client_dur: 67691
+    binder_reply_id: 33608
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421073099
+    server_dur: 47279
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47279
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7541
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8146
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52004
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33610
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421149398
+    client_dur: 67456
+    binder_reply_id: 33611
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421159582
+    server_dur: 46812
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 46812
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7795
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8391
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51270
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33613
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421234249
+    client_dur: 102474
+    binder_reply_id: 33614
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421244402
+    server_dur: 81689
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 81689
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7840
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8330
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 86304
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33616
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421351001
+    client_dur: 68629
+    binder_reply_id: 33617
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421361736
+    server_dur: 50268
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50268
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5126
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8635
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54868
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33619
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421437438
+    client_dur: 78505
+    binder_reply_id: 33620
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421447770
+    server_dur: 60705
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 60705
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4951
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8088
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65466
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33624
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421529017
+    client_dur: 90619
+    binder_reply_id: 33627
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25421536869
+    server_dur: 70139
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 70139
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7356
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8106
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75157
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33641
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421667924
+    client_dur: 93173
+    binder_reply_id: 33642
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421681338
+    server_dur: 67854
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 67854
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7051
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13081
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 73041
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33652
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421792054
+    client_dur: 79868
+    binder_reply_id: 33653
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25421807359
+    server_dur: 55975
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55975
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5930
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11072
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 62866
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33661
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25421889199
+    client_dur: 85495
+    binder_reply_id: 33662
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25421897198
+    server_dur: 65834
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 65834
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6544
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8301
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 70650
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33676
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422008441
+    client_dur: 90387
+    binder_reply_id: 33677
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25422024828
+    server_dur: 62034
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62034
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7260
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14510
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 68617
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33687
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422133767
+    client_dur: 75807
+    binder_reply_id: 33688
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25422147676
+    server_dur: 51244
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 51244
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5734
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10426
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59647
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33695
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422225432
+    client_dur: 98464
+    binder_reply_id: 33697
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25422233734
+    server_dur: 79168
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 79168
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6329
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8507
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 83628
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33709
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422355100
+    client_dur: 93353
+    binder_reply_id: 33712
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25422370044
+    server_dur: 64908
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 64908
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7310
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10931
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75112
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33722
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422488580
+    client_dur: 81077
+    binder_reply_id: 33723
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25422503734
+    server_dur: 56902
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 56902
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6131
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10845
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 64101
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33730
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422585669
+    client_dur: 81637
+    binder_reply_id: 33732
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25422593474
+    server_dur: 62945
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62945
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6138
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7890
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 67609
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33741
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25422698364
+    client_dur: 307058
+    binder_reply_id: 33756
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25422912325
+    server_dur: 72852
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 72852
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14212
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11310
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 281536
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33766
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423038416
+    client_dur: 85760
+    binder_reply_id: 33769
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423050636
+    server_dur: 59617
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59617
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11286
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10133
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 64341
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33777
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423141970
+    client_dur: 65309
+    binder_reply_id: 33779
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423147589
+    server_dur: 46373
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 46373
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9496
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6407
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49406
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33786
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423222741
+    client_dur: 83982
+    binder_reply_id: 33788
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423241349
+    server_dur: 52179
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52179
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10593
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12636
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 60753
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33796
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423321767
+    client_dur: 84883
+    binder_reply_id: 33797
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25423330170
+    server_dur: 64541
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 64541
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6336
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9106
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69441
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33811
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423444205
+    client_dur: 97794
+    binder_reply_id: 33812
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423460614
+    server_dur: 64145
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 64145
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12573
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14996
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 70225
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33822
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423571069
+    client_dur: 79325
+    binder_reply_id: 33823
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423585310
+    server_dur: 56042
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 56042
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6198
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10292
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 62835
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33831
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423667089
+    client_dur: 80196
+    binder_reply_id: 33832
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25423674807
+    server_dur: 61267
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61267
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6315
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8138
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65743
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33844
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423778912
+    client_dur: 85732
+    binder_reply_id: 33847
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423789294
+    server_dur: 63712
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 63712
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7159
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10013
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 68560
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33855
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423899033
+    client_dur: 83874
+    binder_reply_id: 33858
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25423913207
+    server_dur: 61126
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61126
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5881
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12678
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65315
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33865
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25423999018
+    client_dur: 80807
+    binder_reply_id: 33867
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25424006723
+    server_dur: 62351
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62351
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6141
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7616
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 67050
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33875
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424119494
+    client_dur: 90723
+    binder_reply_id: 33876
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25424133267
+    server_dur: 65314
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 65314
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6964
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13942
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69817
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33885
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424244832
+    client_dur: 75424
+    binder_reply_id: 33888
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25424257485
+    server_dur: 54108
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 54108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6028
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9842
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59554
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33895
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424340551
+    client_dur: 68134
+    binder_reply_id: 33896
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25424352371
+    server_dur: 47952
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47952
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5893
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9306
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52935
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33902
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424423268
+    client_dur: 79235
+    binder_reply_id: 33905
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25424430889
+    server_dur: 60700
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 60700
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6277
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7873
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65085
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33917
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424532071
+    client_dur: 132824
+    binder_reply_id: 33918
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25424548055
+    server_dur: 63569
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 63569
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12324
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14037
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 106463
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33932
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424695404
+    client_dur: 78895
+    binder_reply_id: 33933
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25424709439
+    server_dur: 55753
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55753
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6175
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10552
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 62168
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33940
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424790712
+    client_dur: 84106
+    binder_reply_id: 33942
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25424798759
+    server_dur: 65429
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 65429
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6177
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8137
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69792
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33954
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25424904112
+    client_dur: 86631
+    binder_reply_id: 33957
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_3"
+    server_ts: 25424916724
+    server_dur: 62466
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 62466
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7806
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10689
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 68136
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33965
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425012627
+    client_dur: 82418
+    binder_reply_id: 33966
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425020923
+    server_dur: 61511
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61511
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6924
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9920
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65574
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33975
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425134890
+    client_dur: 80492
+    binder_reply_id: 33977
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425151484
+    server_dur: 55304
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55304
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5880
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12175
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 62437
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 33984
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425231522
+    client_dur: 103387
+    binder_reply_id: 33986
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25425239219
+    server_dur: 85661
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 5104
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 80557
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4865
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8201
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 90321
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 34002
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425372618
+    client_dur: 91185
+    binder_reply_id: 34003
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425384448
+    server_dur: 68305
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 68305
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6147
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14029
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 71009
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 34012
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425498321
+    client_dur: 82574
+    binder_reply_id: 34014
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425511999
+    server_dur: 60168
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 60168
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5857
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11452
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65265
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 34021
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425597030
+    client_dur: 96570
+    binder_reply_id: 34023
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25425604832
+    server_dur: 77508
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 77508
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6303
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7901
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 82366
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 34037
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425734906
+    client_dur: 90504
+    binder_reply_id: 34038
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425748243
+    server_dur: 65377
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 65377
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6971
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13693
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69840
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 34047
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425853178
+    client_dur: 75664
+    binder_reply_id: 34048
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425868250
+    server_dur: 50805
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50805
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5844
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10194
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59626
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 34056
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25425949096
+    client_dur: 75914
+    binder_reply_id: 34057
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25425967109
+    server_dur: 49564
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49564
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5912
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11709
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 58293
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34390
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25507770941
+    client_dur: 659345
+    binder_reply_id: 34391
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25507817302
+    server_dur: 493959
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 493959
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 631337
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28008
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34394
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25508483480
+    client_dur: 113431
+    binder_reply_id: 34395
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25508520735
+    server_dur: 37596
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37596
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 88500
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24931
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34422
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25512346526
+    client_dur: 247626
+    binder_reply_id: 34423
+    server_process: "/vendor/bin/hw/android.hardware.sensors-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25512379433
+    server_dur: 68665
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 68665
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 133962
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 30666
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 82998
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34483
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25519832521
+    client_dur: 244039
+    binder_reply_id: 34484
+    server_process: "/vendor/bin/hw/android.hardware.sensors-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25519857925
+    server_dur: 186450
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 186450
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 217892
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26147
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34493
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25520140841
+    client_dur: 73832
+    binder_reply_id: 34494
+    server_process: "/vendor/bin/hw/android.hardware.sensors-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25520164682
+    server_dur: 18571
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18571
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 48555
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25277
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34538
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25523026906
+    client_dur: 340409
+    binder_reply_id: 34541
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25523191948
+    server_dur: 40297
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40297
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 118919
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23930
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 197560
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34637
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25524188687
+    client_dur: 89696
+    binder_reply_id: 34638
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25524226273
+    server_dur: 31748
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31748
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12651
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 31715
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45330
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34680
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25524630643
+    client_dur: 80450
+    binder_reply_id: 34681
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25524666614
+    server_dur: 25632
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25632
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11406
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 29996
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39048
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34700
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25524881306
+    client_dur: 64099
+    binder_reply_id: 34704
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25524906781
+    server_dur: 18982
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18982
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13336
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17503
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33260
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34734
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25525155622
+    client_dur: 182063
+    binder_reply_id: 34738
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25525206343
+    server_dur: 111535
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 111535
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13377
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 43125
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 125561
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37794
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25886972081
+    client_dur: 392512
+    binder_reply_id: 37796
+    server_process: "/system/bin/hwservicemanager"
+    server_thread: "hwservicemanage"
+    server_ts: 25887243579
+    server_dur: 100309
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 100309
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13590
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19459
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 359463
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37801
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25887384160
+    client_dur: 146196
+    binder_reply_id: 37806
+    server_process: "/system/bin/hwservicemanager"
+    server_thread: "hwservicemanage"
+    server_ts: 25887501006
+    server_dur: 15631
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 15631
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9775
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11440
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 124981
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37807
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25887600584
+    client_dur: 263828
+    binder_reply_id: 37810
+    server_process: "/system/bin/hwservicemanager"
+    server_thread: "hwservicemanage"
+    server_ts: 25887779478
+    server_dur: 69332
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 69332
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15240
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 239073
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37814
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25888119355
+    client_dur: 387727
+    binder_reply_id: 37815
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25888158284
+    server_dur: 330571
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 330571
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 356717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 31010
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37816
+    client_process: "system_server"
+    client_thread: "system-server-i"
+    is_main_thread: false
+    client_ts: 25888835343
+    client_dur: 324156
+    binder_reply_id: 37820
+    server_process: "/system/bin/hwservicemanager"
+    server_thread: "hwservicemanage"
+    server_ts: 25888991319
+    server_dur: 112375
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 112375
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 48234
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15111
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 260811
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25594
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24562258099
+    client_dur: 95711
+    binder_reply_id: 25595
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24562294551
+    server_dur: 25989
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25989
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8237
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 35896
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51578
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25630
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24576142302
+    client_dur: 100932
+    binder_reply_id: 25631
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24576178251
+    server_dur: 35440
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 35440
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 80555
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20377
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25633
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24577928034
+    client_dur: 98898
+    binder_reply_id: 25634
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24577965065
+    server_dur: 33433
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 33433
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 76763
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22135
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25639
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24579825258
+    client_dur: 91999
+    binder_reply_id: 25640
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24579857006
+    server_dur: 32771
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 32771
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 74033
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17966
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25667
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24586203617
+    client_dur: 160861
+    binder_reply_id: 25668
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24586241455
+    server_dur: 29609
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 84783
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21505
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 54573
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25677
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24588923637
+    client_dur: 381582
+    binder_reply_id: 25678
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24588962975
+    server_dur: 29095
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29095
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 284802
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 43271
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 53509
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25687
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24592040006
+    client_dur: 240562
+    binder_reply_id: 25688
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24592076186
+    server_dur: 28582
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 28582
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 166882
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23567
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 50113
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25692
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24594213703
+    client_dur: 673648
+    binder_reply_id: 25693
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24594243436
+    server_dur: 22881
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22881
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 613645
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18416
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41587
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25697
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24595958354
+    client_dur: 77980
+    binder_reply_id: 25698
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24595993807
+    server_dur: 22950
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22950
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13233
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17501
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47246
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25701
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24597520537
+    client_dur: 49553
+    binder_reply_id: 25702
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24597542932
+    server_dur: 16294
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16294
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6052
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17497
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26004
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25708
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24598897106
+    client_dur: 68689
+    binder_reply_id: 25709
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24598922372
+    server_dur: 18191
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18191
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19869
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17496
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31324
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25712
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24600413274
+    client_dur: 57521
+    binder_reply_id: 25713
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24600434769
+    server_dur: 13168
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13168
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 18935
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17305
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21281
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25717
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24602399966
+    client_dur: 80715
+    binder_reply_id: 25718
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24602431540
+    server_dur: 23433
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23433
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19401
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16976
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44338
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25724
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24603839586
+    client_dur: 50942
+    binder_reply_id: 25725
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24603864064
+    server_dur: 11482
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11482
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10826
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17489
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22627
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25728
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24605137324
+    client_dur: 53391
+    binder_reply_id: 25729
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24605161847
+    server_dur: 16108
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8718
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13789
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 30884
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25737
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24607833798
+    client_dur: 79225
+    binder_reply_id: 25738
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24607864767
+    server_dur: 25864
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25864
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15705
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13824
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49696
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 25795
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24609098413
+    client_dur: 86504
+    binder_reply_id: 25796
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24609132077
+    server_dur: 29462
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29462
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16706
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12753
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 57045
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26282
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24646418600
+    client_dur: 104600
+    binder_reply_id: 26283
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24646446859
+    server_dur: 25546
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25546
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 88156
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16444
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26436
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24671385803
+    client_dur: 170289
+    binder_reply_id: 26437
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24671409853
+    server_dur: 37825
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37825
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 159649
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10640
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26515
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24681379300
+    client_dur: 57187
+    binder_reply_id: 26517
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24681399705
+    server_dur: 21305
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21305
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 45894
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11293
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26526
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24682251210
+    client_dur: 182307
+    binder_reply_id: 26527
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24682273023
+    server_dur: 20664
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20664
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 170421
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11886
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26533
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24683246275
+    client_dur: 207024
+    binder_reply_id: 26535
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24683267459
+    server_dur: 20968
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20968
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 195402
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11622
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26545
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24685075466
+    client_dur: 189680
+    binder_reply_id: 26546
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24685097014
+    server_dur: 20394
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20394
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 178063
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11617
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26562
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24687047835
+    client_dur: 52825
+    binder_reply_id: 26563
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24687065149
+    server_dur: 20404
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20404
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43783
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9042
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26588
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24690752961
+    client_dur: 1138197
+    binder_reply_id: 26589
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24690773594
+    server_dur: 20275
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20275
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 1126872
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11325
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26606
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24692956765
+    client_dur: 967152
+    binder_reply_id: 26607
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24692973830
+    server_dur: 19601
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19601
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 958676
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8476
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26661
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24699086985
+    client_dur: 2761757
+    binder_reply_id: 26662
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24699105127
+    server_dur: 19717
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1527554
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 34654
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13787
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1185762
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26695
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24704026795
+    client_dur: 151503
+    binder_reply_id: 26697
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24704048621
+    server_dur: 19875
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19875
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 140149
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11354
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 26730
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24707823403
+    client_dur: 418749
+    binder_reply_id: 26731
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24707844258
+    server_dur: 19420
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19420
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 406990
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11759
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27263
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24715413797
+    client_dur: 55453
+    binder_reply_id: 27264
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24715432924
+    server_dur: 20515
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 45345
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10108
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27291
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24718094584
+    client_dur: 396933
+    binder_reply_id: 27292
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24718112985
+    server_dur: 20123
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20123
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 388214
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8719
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27300
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24720389105
+    client_dur: 56955
+    binder_reply_id: 27301
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24720410588
+    server_dur: 19497
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19497
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 44293
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12662
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27311
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24722237372
+    client_dur: 57988
+    binder_reply_id: 27312
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24722254479
+    server_dur: 19636
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19636
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 49260
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8728
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27324
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24724223102
+    client_dur: 52789
+    binder_reply_id: 27325
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24724240486
+    server_dur: 19628
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19628
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43517
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9272
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27343
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24727963525
+    client_dur: 54516
+    binder_reply_id: 27344
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24727983399
+    server_dur: 19277
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19277
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 42947
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11569
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27347
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24729275294
+    client_dur: 69527
+    binder_reply_id: 27348
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24729308987
+    server_dur: 19817
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19817
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 53717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15810
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27354
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24730464621
+    client_dur: 56830
+    binder_reply_id: 27355
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24730486611
+    server_dur: 19083
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19083
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43291
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13539
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27356
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24731541792
+    client_dur: 59775
+    binder_reply_id: 27357
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24731563743
+    server_dur: 19533
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19533
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46204
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13571
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27358
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24732635124
+    client_dur: 62661
+    binder_reply_id: 27359
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24732657580
+    server_dur: 22874
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22874
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 48666
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13995
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27361
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24733694931
+    client_dur: 58749
+    binder_reply_id: 27362
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24733718525
+    server_dur: 19626
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19626
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43933
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14816
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27368
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24734519268
+    client_dur: 56933
+    binder_reply_id: 27369
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24734541289
+    server_dur: 19505
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19505
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43275
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13658
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27370
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24735621739
+    client_dur: 59911
+    binder_reply_id: 27371
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24735644076
+    server_dur: 19698
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19698
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43712
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16199
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27376
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24737578050
+    client_dur: 70375
+    binder_reply_id: 27377
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24737599805
+    server_dur: 19338
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19338
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 56971
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13404
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27378
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24738379435
+    client_dur: 59307
+    binder_reply_id: 27379
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24738401334
+    server_dur: 19247
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19247
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43396
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15911
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27380
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24739381820
+    client_dur: 59860
+    binder_reply_id: 27381
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24739404070
+    server_dur: 19274
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19274
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46066
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13794
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27382
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24740296188
+    client_dur: 60137
+    binder_reply_id: 27383
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24740318642
+    server_dur: 19217
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19217
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46020
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14117
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27384
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24741062753
+    client_dur: 60144
+    binder_reply_id: 27385
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24741084854
+    server_dur: 19235
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19235
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46606
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13538
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27386
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24742188157
+    client_dur: 62717
+    binder_reply_id: 27387
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24742210951
+    server_dur: 22644
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22644
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 48544
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14173
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27388
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24743215720
+    client_dur: 57215
+    binder_reply_id: 27389
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24743238157
+    server_dur: 19299
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19299
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43415
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13800
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27392
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24744310059
+    client_dur: 62304
+    binder_reply_id: 27393
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24744332347
+    server_dur: 22570
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22570
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46924
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15380
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27399
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24745726015
+    client_dur: 42535
+    binder_reply_id: 27400
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24745741462
+    server_dur: 13274
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13274
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 33141
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9394
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27401
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24746812940
+    client_dur: 62487
+    binder_reply_id: 27402
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24746836091
+    server_dur: 21679
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21679
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 46393
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16094
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27403
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24747614390
+    client_dur: 60851
+    binder_reply_id: 27404
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24747636567
+    server_dur: 21322
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21322
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 45378
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15473
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27405
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24748641464
+    client_dur: 98796
+    binder_reply_id: 27406
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24748705431
+    server_dur: 19737
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19737
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 78847
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19949
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27411
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24749789307
+    client_dur: 58174
+    binder_reply_id: 27412
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24749812809
+    server_dur: 19265
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19265
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43211
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14963
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27443
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24753793235
+    client_dur: 285781
+    binder_reply_id: 27446
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24753872138
+    server_dur: 21667
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21667
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 274761
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11020
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27501
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24760573761
+    client_dur: 55871
+    binder_reply_id: 27502
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24760593814
+    server_dur: 19818
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19818
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 44199
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11672
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27506
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24761811419
+    client_dur: 104650
+    binder_reply_id: 27507
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24761830688
+    server_dur: 19717
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19717
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 95005
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9645
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27515
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24763891343
+    client_dur: 52306
+    binder_reply_id: 27516
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24763908905
+    server_dur: 19517
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19517
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43118
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9188
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27522
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24764906537
+    client_dur: 55552
+    binder_reply_id: 27523
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24764927197
+    server_dur: 19435
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19435
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43753
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11799
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27526
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24766255714
+    client_dur: 69186
+    binder_reply_id: 27527
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24766285051
+    server_dur: 22399
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22399
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 56215
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12971
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27530
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24767227873
+    client_dur: 55587
+    binder_reply_id: 27531
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24767248556
+    server_dur: 19425
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19425
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43433
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12154
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27555
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24770081943
+    client_dur: 54467
+    binder_reply_id: 27556
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24770101200
+    server_dur: 19938
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19938
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43918
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10549
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27580
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24773596028
+    client_dur: 197569
+    binder_reply_id: 27581
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24773614039
+    server_dur: 28282
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 28282
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 189146
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8423
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27672
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24785387433
+    client_dur: 2028794
+    binder_reply_id: 27673
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24785409117
+    server_dur: 20078
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20078
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 2016399
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12395
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27684
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24788209976
+    client_dur: 153903
+    binder_reply_id: 27685
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24788233234
+    server_dur: 20622
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20622
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 142686
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11217
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27686
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24789221986
+    client_dur: 57706
+    binder_reply_id: 27687
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24789245188
+    server_dur: 19214
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19214
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43060
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14646
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27690
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24790705709
+    client_dur: 65167
+    binder_reply_id: 27691
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24790730301
+    server_dur: 25107
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25107
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 50439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14728
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27692
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24791500958
+    client_dur: 57742
+    binder_reply_id: 27693
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24791523460
+    server_dur: 19471
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19471
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43368
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14374
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27694
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24792307538
+    client_dur: 58314
+    binder_reply_id: 27695
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24792330556
+    server_dur: 19368
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19368
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43637
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14677
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27697
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24793372795
+    client_dur: 57390
+    binder_reply_id: 27698
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24793395000
+    server_dur: 19464
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19464
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43604
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13786
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27703
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24794492101
+    client_dur: 54114
+    binder_reply_id: 27704
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24794511315
+    server_dur: 19523
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19523
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43100
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11014
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27707
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24795410099
+    client_dur: 54987
+    binder_reply_id: 27708
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24795430573
+    server_dur: 19258
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19258
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 42787
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12200
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27726
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24796677839
+    client_dur: 55067
+    binder_reply_id: 27727
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24796698242
+    server_dur: 19086
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19086
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 42908
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12159
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27731
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24797815386
+    client_dur: 53079
+    binder_reply_id: 27732
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24797833699
+    server_dur: 19213
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19213
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 42587
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10492
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27737
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24799449503
+    client_dur: 56617
+    binder_reply_id: 27738
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24799470930
+    server_dur: 19513
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19513
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43903
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12714
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27746
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24805536696
+    client_dur: 49858
+    binder_reply_id: 27747
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24805554922
+    server_dur: 16943
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16943
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 39369
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10489
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 27758
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24808769073
+    client_dur: 53981
+    binder_reply_id: 27759
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24808788665
+    server_dur: 19040
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19040
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 42554
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11427
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28122
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24821382491
+    client_dur: 48977
+    binder_reply_id: 28123
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24821399252
+    server_dur: 17308
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17308
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 39776
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9201
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28173
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24825799132
+    client_dur: 58481
+    binder_reply_id: 28174
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24825818665
+    server_dur: 20241
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20241
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 48121
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10360
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28239
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24836015985
+    client_dur: 60190
+    binder_reply_id: 28240
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24836036269
+    server_dur: 24240
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24240
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 49503
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10687
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28249
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24838902949
+    client_dur: 155997
+    binder_reply_id: 28250
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24838939369
+    server_dur: 21040
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21040
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 90782
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16709
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48506
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28276
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24842361861
+    client_dur: 70409
+    binder_reply_id: 28277
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24842390226
+    server_dur: 21512
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21512
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14632
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10449
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45328
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28339
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24849556375
+    client_dur: 183165
+    binder_reply_id: 28342
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24849690991
+    server_dur: 24294
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24294
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17710
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10471
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 154984
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28501
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24871639354
+    client_dur: 68462
+    binder_reply_id: 28502
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24871671014
+    server_dur: 22834
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22834
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6884
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12476
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 49102
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28526
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24873845755
+    client_dur: 1096098
+    binder_reply_id: 28527
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24873871989
+    server_dur: 21071
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21071
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 1085223
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10875
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28553
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24877992364
+    client_dur: 187259
+    binder_reply_id: 28554
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24878014368
+    server_dur: 20564
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20564
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 138319
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10947
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37993
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28581
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24881598747
+    client_dur: 82762
+    binder_reply_id: 28583
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24881620007
+    server_dur: 37794
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37794
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17039
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9107
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56616
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28589
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24882762008
+    client_dur: 343179
+    binder_reply_id: 28592
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24883063470
+    server_dur: 18976
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18976
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17525
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8311
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 317343
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28602
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24884363797
+    client_dur: 138909
+    binder_reply_id: 28603
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24884469472
+    server_dur: 19017
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19017
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9081
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9363
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 120465
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28623
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24886610735
+    client_dur: 64238
+    binder_reply_id: 28624
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24886632996
+    server_dur: 20186
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20186
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16029
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9961
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38248
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28636
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24888078440
+    client_dur: 422798
+    binder_reply_id: 28639
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24888463594
+    server_dur: 19313
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19313
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12602
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8831
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 401365
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28664
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24891297979
+    client_dur: 58221
+    binder_reply_id: 28666
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24891321099
+    server_dur: 19916
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19916
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9426
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11601
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37194
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28676
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24893930550
+    client_dur: 54133
+    binder_reply_id: 28678
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24893950723
+    server_dur: 20568
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20568
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7372
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10119
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36642
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28690
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24896595580
+    client_dur: 67589
+    binder_reply_id: 28691
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24896624063
+    server_dur: 20320
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20320
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12645
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13179
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41765
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 28766
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24903024474
+    client_dur: 206934
+    binder_reply_id: 28768
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24903154456
+    server_dur: 20235
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20235
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 50369
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9406
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 147159
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29049
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24915150978
+    client_dur: 62178
+    binder_reply_id: 29052
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24915179748
+    server_dur: 21871
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21871
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5189
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11884
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45105
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29379
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24921237169
+    client_dur: 1189989
+    binder_reply_id: 29383
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24921585066
+    server_dur: 22945
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22945
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 812617
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10170
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 367202
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29419
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24924342216
+    client_dur: 260104
+    binder_reply_id: 29422
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24924548644
+    server_dur: 20604
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20604
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 26881
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9071
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 224152
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29524
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24932907687
+    client_dur: 61496
+    binder_reply_id: 29525
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24932929991
+    server_dur: 21719
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21719
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11237
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38918
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29563
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24936245311
+    client_dur: 89729
+    binder_reply_id: 29564
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24936266250
+    server_dur: 20798
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20798
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 79321
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10408
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29656
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24943311799
+    client_dur: 214359
+    binder_reply_id: 29657
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24943331082
+    server_dur: 20072
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20072
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 205214
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9145
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29804
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 24967426046
+    client_dur: 238772
+    binder_reply_id: 29805
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 24967447878
+    server_dur: 21398
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21398
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 228059
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10713
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 29937
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25003883218
+    client_dur: 324891
+    binder_reply_id: 29938
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25003925054
+    server_dur: 43609
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 300570
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24321
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30445
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25025076994
+    client_dur: 190930
+    binder_reply_id: 30446
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25025118986
+    server_dur: 30435
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 30435
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 106325
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16199
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 68406
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30521
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25034377812
+    client_dur: 271653
+    binder_reply_id: 30522
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25034403338
+    server_dur: 27240
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27240
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 256441
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15212
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30534
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25036622369
+    client_dur: 268217
+    binder_reply_id: 30535
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25036650886
+    server_dur: 26015
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26015
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 250099
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18118
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30595
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25048460597
+    client_dur: 56503
+    binder_reply_id: 30596
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25048480970
+    server_dur: 20752
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20752
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 45112
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11391
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30649
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25056764479
+    client_dur: 56793
+    binder_reply_id: 30650
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25056784331
+    server_dur: 20103
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20103
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 45727
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11066
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30742
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25073721612
+    client_dur: 55061
+    binder_reply_id: 30743
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25073740814
+    server_dur: 20447
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20447
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 45196
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9865
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 30927
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25110161805
+    client_dur: 81154
+    binder_reply_id: 30928
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25110196375
+    server_dur: 24505
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24505
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13381
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22501
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45272
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31106
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25118254173
+    client_dur: 89345
+    binder_reply_id: 31107
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25118275515
+    server_dur: 30281
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 30281
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 78565
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10780
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31472
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25126211905
+    client_dur: 156793
+    binder_reply_id: 31473
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25126252664
+    server_dur: 31152
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31152
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 49871
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21948
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 84974
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31474
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25128591519
+    client_dur: 86261
+    binder_reply_id: 31475
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25128613762
+    server_dur: 22079
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22079
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 73390
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12871
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31547
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25137455943
+    client_dur: 138560
+    binder_reply_id: 31548
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25137492801
+    server_dur: 24108
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 64400
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28867
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45293
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31767
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25171098007
+    client_dur: 86786
+    binder_reply_id: 31768
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25171119721
+    server_dur: 24637
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24637
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 74733
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12053
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31809
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25176666011
+    client_dur: 68313
+    binder_reply_id: 31810
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25176690933
+    server_dur: 22908
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22908
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13750
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 18237
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16312
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20014
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31827
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25180015030
+    client_dur: 119578
+    binder_reply_id: 31828
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25180094139
+    server_dur: 21082
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21082
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13656
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 21087
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19525
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65310
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31875
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25185495297
+    client_dur: 90240
+    binder_reply_id: 31876
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25185546375
+    server_dur: 20903
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20903
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12345
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 21267
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21368
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35260
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31907
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25190169442
+    client_dur: 56523
+    binder_reply_id: 31908
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25190190035
+    server_dur: 19360
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19360
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10218
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11870
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34435
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31913
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25192159947
+    client_dur: 67609
+    binder_reply_id: 31914
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25192191721
+    server_dur: 19584
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19584
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9508
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12439
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 45662
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31922
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25194833721
+    client_dur: 54386
+    binder_reply_id: 31923
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25194853231
+    server_dur: 19541
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19541
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43205
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11181
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31934
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25197865886
+    client_dur: 55290
+    binder_reply_id: 31935
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25197885904
+    server_dur: 19555
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19555
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43794
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11496
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 31997
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25205510080
+    client_dur: 53971
+    binder_reply_id: 31998
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25205529822
+    server_dur: 19108
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 42556
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11415
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32049
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25210682525
+    client_dur: 54427
+    binder_reply_id: 32050
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25210701854
+    server_dur: 19875
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19875
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43499
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10928
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32072
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25212773102
+    client_dur: 143598
+    binder_reply_id: 32073
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25212807375
+    server_dur: 20140
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20140
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 80962
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14033
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48603
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 32176
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25219095678
+    client_dur: 62570
+    binder_reply_id: 32179
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25219117631
+    server_dur: 20590
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20590
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12485
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 5223
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16081
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28781
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::rmdex::cppServer"
+    binder_txn_id: 32636
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25230101202
+    client_dur: 295436
+    binder_reply_id: 32637
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25230125660
+    server_dur: 202423
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 202423
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 61399
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21763
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 212274
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::cleanupInvalidPackageDirs::cppServer"
+    binder_txn_id: 32689
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25243511980
+    client_dur: 489650
+    binder_reply_id: 32690
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25243544499
+    server_dur: 438512
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 222140
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 16168
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 22359
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 177845
+      thread_state_count: 5
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9815
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16493
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 463342
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "__get_node_page"
+      blocked_function_dur: 222140
+      blocked_function_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::createAppDataBatched::cppServer"
+    binder_txn_id: 32700
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25244949065
+    client_dur: 33302645
+    binder_reply_id: 32701
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25244971300
+    server_dur: 33241468
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 2128236
+      thread_state_count: 14
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 319299
+      thread_state_count: 18
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 1032291
+      thread_state_count: 12
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29761642
+      thread_state_count: 31
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 27159
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27652
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 33247834
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "__get_node_page"
+      blocked_function_dur: 643796
+      blocked_function_count: 4
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "do_read_cache_page"
+      blocked_function_dur: 593861
+      blocked_function_count: 5
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "f2fs_write_begin"
+      blocked_function_dur: 99976
+      blocked_function_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 534192
+      blocked_function_count: 2
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_read"
+      blocked_function_dur: 256411
+      blocked_function_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32761
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25279371214
+    client_dur: 141670
+    binder_reply_id: 32762
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25279387389
+    server_dur: 110471
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 110471
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7053
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15170
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 119447
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32764
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25279567724
+    client_dur: 1117204
+    binder_reply_id: 32765
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25279592927
+    server_dur: 1062729
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 520488
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 20467
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 521774
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17104
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23282
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1076818
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "do_read_cache_page"
+      blocked_function_dur: 310660
+      blocked_function_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 209828
+      blocked_function_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32779
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25280736368
+    client_dur: 173449
+    binder_reply_id: 32780
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25280756522
+    server_dur: 131586
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 131586
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16023
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15605
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 141821
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32782
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25280932813
+    client_dur: 166964
+    binder_reply_id: 32783
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25280946041
+    server_dur: 122533
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 122533
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 24163
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12138
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 130663
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32787
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25281131360
+    client_dur: 127300
+    binder_reply_id: 32788
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25281145719
+    server_dur: 98609
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 98609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9607
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13226
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 104467
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32790
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25281273755
+    client_dur: 152610
+    binder_reply_id: 32791
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25281315273
+    server_dur: 97815
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 97815
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7370
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10996
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 134244
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32793
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25281454812
+    client_dur: 120876
+    binder_reply_id: 32794
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25281470206
+    server_dur: 94381
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 94381
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6959
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10729
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 103188
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32796
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25281590129
+    client_dur: 151723
+    binder_reply_id: 32797
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25281611020
+    server_dur: 119089
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 119089
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7527
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9454
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 134742
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32799
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25281756115
+    client_dur: 115379
+    binder_reply_id: 32800
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25281769371
+    server_dur: 91666
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 91666
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6557
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9417
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 99405
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32802
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25281884499
+    client_dur: 116250
+    binder_reply_id: 32803
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25281896268
+    server_dur: 93727
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 93727
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6592
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9027
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 100631
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32805
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282021405
+    client_dur: 113709
+    binder_reply_id: 32806
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282032972
+    server_dur: 91541
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 91541
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6527
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8701
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 98481
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32808
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282147043
+    client_dur: 114363
+    binder_reply_id: 32809
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282159024
+    server_dur: 91525
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 91525
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6581
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9326
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 98456
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32811
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282273296
+    client_dur: 113496
+    binder_reply_id: 32812
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282285050
+    server_dur: 91191
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 91191
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6445
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9132
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 97919
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32814
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282398433
+    client_dur: 133314
+    binder_reply_id: 32815
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282413336
+    server_dur: 107722
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 107722
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6770
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11563
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 114981
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32817
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282543082
+    client_dur: 113069
+    binder_reply_id: 32818
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282556151
+    server_dur: 89003
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 89003
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6861
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10001
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 96207
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32820
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282667987
+    client_dur: 110166
+    binder_reply_id: 32821
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282679437
+    server_dur: 87774
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 87774
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6506
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8742
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 94918
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32823
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282789771
+    client_dur: 113837
+    binder_reply_id: 32824
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282802242
+    server_dur: 90943
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 90943
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6450
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9632
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 97755
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32826
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25282914877
+    client_dur: 111627
+    binder_reply_id: 32827
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25282927602
+    server_dur: 88554
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 88554
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6430
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10001
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 95196
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::prepareAppProfile::cppServer"
+    binder_txn_id: 32829
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25283038152
+    client_dur: 1992379
+    binder_reply_id: 32831
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_2"
+    server_ts: 25284866843
+    server_dur: 141149
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 141149
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16220
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7575
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1968584
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33307
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25374394471
+    client_dur: 2049689
+    binder_reply_id: 33308
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25374452290
+    server_dur: 56976
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 56976
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 2006880
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 42809
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33309
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25376513735
+    client_dur: 1298945
+    binder_reply_id: 33310
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25376552511
+    server_dur: 1229818
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 693114
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 175675
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 361029
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 19686
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 364778
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 37358
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 877123
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 693114
+      blocked_function_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33328
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25380873939
+    client_dur: 94827
+    binder_reply_id: 33329
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25380918552
+    server_dur: 29189
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29189
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 62515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 32312
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33338
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25382555538
+    client_dur: 499495
+    binder_reply_id: 33339
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25382942898
+    server_dur: 73464
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 73464
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 31193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25646
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 442656
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33341
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25383224119
+    client_dur: 475348
+    binder_reply_id: 33342
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25383318022
+    server_dur: 71453
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 71453
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 302290
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23519
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 149539
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33348
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25384246889
+    client_dur: 2183818
+    binder_reply_id: 33351
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25386357038
+    server_dur: 45022
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45022
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 20508
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23223
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2140087
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33354
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25386462748
+    client_dur: 100360
+    binder_reply_id: 33355
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25386487821
+    server_dur: 60382
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 60382
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 80502
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19858
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33356
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25386597595
+    client_dur: 98608
+    binder_reply_id: 33357
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25386619074
+    server_dur: 61591
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61591
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 82369
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16239
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33358
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25386719729
+    client_dur: 86786
+    binder_reply_id: 33359
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25386741757
+    server_dur: 49965
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 49965
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 69901
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16885
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33360
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25386829528
+    client_dur: 89755
+    binder_reply_id: 33361
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25386849083
+    server_dur: 55739
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55739
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 75429
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14326
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33362
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25386948016
+    client_dur: 83210
+    binder_reply_id: 33363
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25386968208
+    server_dur: 48426
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48426
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 68298
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14912
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33364
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25387051427
+    client_dur: 82153
+    binder_reply_id: 33365
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25387070661
+    server_dur: 48379
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 48379
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 67945
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14208
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33366
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25387162195
+    client_dur: 82295
+    binder_reply_id: 33367
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25387182559
+    server_dur: 47439
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 67236
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15059
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33368
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25387268275
+    client_dur: 86930
+    binder_reply_id: 33369
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25387287442
+    server_dur: 52733
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52733
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 72663
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14267
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33413
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25400532103
+    client_dur: 58804
+    binder_reply_id: 33414
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25400550889
+    server_dur: 23976
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23976
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 49660
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9144
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 33415
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25400815946
+    client_dur: 53189
+    binder_reply_id: 33416
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25400833837
+    server_dur: 20666
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 20666
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 43041
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10148
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34110
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25426768392
+    client_dur: 59432
+    binder_reply_id: 34111
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25426787956
+    server_dur: 24158
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24158
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 49644
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9788
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34114
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25428341210
+    client_dur: 87943
+    binder_reply_id: 34115
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25428360065
+    server_dur: 51321
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 51321
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 78007
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9936
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34116
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25428597840
+    client_dur: 1897216
+    binder_reply_id: 34117
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25428614184
+    server_dur: 1721051
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 1002138
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 210685
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 7633
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 500595
+      thread_state_count: 6
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 153757
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 230749
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20959
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1491751
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "__get_node_page"
+      blocked_function_dur: 94971
+      blocked_function_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "do_read_cache_page"
+      blocked_function_dur: 305537
+      blocked_function_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 601630
+      blocked_function_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34136
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25430545529
+    client_dur: 5604165
+    binder_reply_id: 34137
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25430555701
+    server_dur: 5580114
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 574136
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 8066
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 77105
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4920807
+      thread_state_count: 6
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8480
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 2748525
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16863
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2830297
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 574136
+      blocked_function_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34145
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25436197115
+    client_dur: 165295
+    binder_reply_id: 34146
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_2"
+    server_ts: 25436268304
+    server_dur: 84720
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 84720
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6160
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15453
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 143682
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34148
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25436454693
+    client_dur: 101710
+    binder_reply_id: 34149
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25436467750
+    server_dur: 68620
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 24291
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44329
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14279
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14304
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 73127
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34151
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25436579821
+    client_dur: 1131075
+    binder_reply_id: 34152
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_2"
+    server_ts: 25436605605
+    server_dur: 1092472
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1092472
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7917
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12468
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1110690
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34155
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25437807385
+    client_dur: 35309
+    binder_reply_id: 34156
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_2"
+    server_ts: 25437821151
+    server_dur: 13284
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13284
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12930
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 16940
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34158
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25437906939
+    client_dur: 108314
+    binder_reply_id: 34160
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25437930754
+    server_dur: 65111
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 20584
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44527
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13790
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 22725
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16739
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 55060
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34162
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25438037598
+    client_dur: 1231074
+    binder_reply_id: 34163
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25438067211
+    server_dur: 1188167
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 29526
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1158641
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8533
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9483
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1213058
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34165
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25439303208
+    client_dur: 56463
+    binder_reply_id: 34166
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25439340083
+    server_dur: 11933
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11933
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5152
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8671
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42640
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34168
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25439404915
+    client_dur: 28249
+    binder_reply_id: 34169
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25439417069
+    server_dur: 8812
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8812
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4744
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11155
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 12350
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34171
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25439834153
+    client_dur: 149238
+    binder_reply_id: 34172
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25439854310
+    server_dur: 63659
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 23193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40466
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 58701
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20935
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69602
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34174
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25440007897
+    client_dur: 617701
+    binder_reply_id: 34175
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25440026034
+    server_dur: 581007
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 581007
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12958
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14404
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 590339
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34177
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25440650480
+    client_dur: 37954
+    binder_reply_id: 34178
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25440669130
+    server_dur: 11644
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11644
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5290
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10424
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22240
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34180
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25440744629
+    client_dur: 130786
+    binder_reply_id: 34181
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25440759041
+    server_dur: 97590
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 54655
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 42935
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13513
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12765
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 104508
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34183
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25440898977
+    client_dur: 1131318
+    binder_reply_id: 34184
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25440930592
+    server_dur: 1086590
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 29060
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 54132
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1003398
+      thread_state_count: 4
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7617
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13003
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1110698
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34187
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25442065948
+    client_dur: 37271
+    binder_reply_id: 34188
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_1"
+    server_ts: 25442083599
+    server_dur: 12197
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12197
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4950
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12465
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19856
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34190
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25442154751
+    client_dur: 91298
+    binder_reply_id: 34191
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25442164438
+    server_dur: 64020
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 22493
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 41527
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12675
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11489
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 67134
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34193
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25442267983
+    client_dur: 969844
+    binder_reply_id: 34194
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25442291581
+    server_dur: 932552
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 28607
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 903945
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8493
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11817
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 949534
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34196
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25443270028
+    client_dur: 50947
+    binder_reply_id: 34197
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25443301118
+    server_dur: 11975
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11975
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4859
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8381
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 37707
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34199
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25443369306
+    client_dur: 97383
+    binder_reply_id: 34200
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25443387190
+    server_dur: 61382
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 22749
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38633
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13143
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14048
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 70192
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34202
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25443488838
+    client_dur: 710384
+    binder_reply_id: 34203
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25443518308
+    server_dur: 668611
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 76421
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 27544
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 564646
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7928
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9007
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 693449
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34208
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25444231572
+    client_dur: 52027
+    binder_reply_id: 34209
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25444264016
+    server_dur: 12085
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12085
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5028
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7958
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39041
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34211
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25444518761
+    client_dur: 104456
+    binder_reply_id: 34212
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25444539803
+    server_dur: 63755
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 22850
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40905
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14443
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18636
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 71377
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34214
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25444646123
+    client_dur: 413789
+    binder_reply_id: 34215
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25444674530
+    server_dur: 371297
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 371297
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10281
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8381
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 395127
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34217
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25445078459
+    client_dur: 37933
+    binder_reply_id: 34218
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25445097539
+    server_dur: 11521
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11521
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5091
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11823
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21019
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34220
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25445162965
+    client_dur: 98821
+    binder_reply_id: 34221
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25445176700
+    server_dur: 65755
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 25074
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40681
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14361
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11620
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72840
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34223
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25445283998
+    client_dur: 1223250
+    binder_reply_id: 34224
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25445325570
+    server_dur: 1169074
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 29873
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1139201
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8011
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 10229
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24497
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1180513
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34226
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25446539928
+    client_dur: 55845
+    binder_reply_id: 34227
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25446574718
+    server_dur: 12523
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12523
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5817
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8492
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41536
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34229
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25446655842
+    client_dur: 102770
+    binder_reply_id: 34230
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25446673983
+    server_dur: 64748
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 24412
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40336
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14772
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14461
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 73537
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34232
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25446780771
+    client_dur: 484620
+    binder_reply_id: 34233
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25446802921
+    server_dur: 383705
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 25324
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 358381
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7063
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11297
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 466260
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34235
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25447296204
+    client_dur: 32106
+    binder_reply_id: 34236
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25447307403
+    server_dur: 12025
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12025
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6266
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10289
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 15551
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34238
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25447383428
+    client_dur: 99654
+    binder_reply_id: 34239
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25447399103
+    server_dur: 64249
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 23497
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40752
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14820
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11840
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72994
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34241
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25447504358
+    client_dur: 1088603
+    binder_reply_id: 34242
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25447527457
+    server_dur: 1052788
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 53185
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 28077
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 971526
+      thread_state_count: 3
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8242
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14508
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1065853
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34246
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25448618882
+    client_dur: 65160
+    binder_reply_id: 34247
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25448662606
+    server_dur: 12297
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12297
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6078
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7830
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 51252
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34249
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25448732540
+    client_dur: 90622
+    binder_reply_id: 34250
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25448745055
+    server_dur: 61605
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 23323
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38282
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11458
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12606
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 66558
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34252
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25448844089
+    client_dur: 1341222
+    binder_reply_id: 34253
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25448878397
+    server_dur: 1294973
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 26296
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1268677
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7361
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8820
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1325041
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34255
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25450214696
+    client_dur: 132324
+    binder_reply_id: 34256
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25450325232
+    server_dur: 12314
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12314
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6646
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8145
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 117533
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34258
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25450401044
+    client_dur: 34066
+    binder_reply_id: 34259
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25450413421
+    server_dur: 8832
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8832
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5501
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11370
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17195
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34261
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25450477847
+    client_dur: 108090
+    binder_reply_id: 34262
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25450488460
+    server_dur: 82190
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 36332
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45858
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10184
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11682
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 86224
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34264
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25450607703
+    client_dur: 1259215
+    binder_reply_id: 34265
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25450647353
+    server_dur: 1203353
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 31348
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1172005
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11388
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8943
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1238884
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34267
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25451902370
+    client_dur: 111453
+    binder_reply_id: 34268
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25451993380
+    server_dur: 11814
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11814
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6192
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7999
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 97262
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34270
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25452994340
+    client_dur: 109726
+    binder_reply_id: 34271
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25453017159
+    server_dur: 64867
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 24431
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 40436
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16858
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18364
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 74504
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34273
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25453126725
+    client_dur: 1046699
+    binder_reply_id: 34274
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25453215693
+    server_dur: 328275
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 328275
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 623584
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14066
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 409049
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34279
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25454206920
+    client_dur: 37100
+    binder_reply_id: 34280
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25454216327
+    server_dur: 14099
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14099
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8459
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11405
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17236
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::verifyIdmap::cppServer"
+    binder_txn_id: 34282
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25454305892
+    client_dur: 105614
+    binder_reply_id: 34283
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25454321058
+    server_dur: 71322
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 25902
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 45420
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14111
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13951
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 77552
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::createIdmap::cppServer"
+    binder_txn_id: 34285
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25454433615
+    client_dur: 1182599
+    binder_reply_id: 34286
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25454454326
+    server_dur: 1148464
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 30279
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 1118185
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8574
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12854
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1161171
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::getIdmapPath::cppServer"
+    binder_txn_id: 34288
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25455648152
+    client_dur: 89055
+    binder_reply_id: 34289
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25455717688
+    server_dur: 10552
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 10552
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6002
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14032
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 69021
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::acquireFabricatedOverlayIterator::cppServer"
+    binder_txn_id: 34291
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25455783097
+    client_dur: 77504
+    binder_reply_id: 34292
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25455796471
+    server_dur: 53966
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 53966
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6786
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10942
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 59776
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::nextFabricatedOverlayInfos::cppServer"
+    binder_txn_id: 34294
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25455870323
+    client_dur: 183133
+    binder_reply_id: 34295
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25455880236
+    server_dur: 164382
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 164382
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5929
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9250
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 167954
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::releaseFabricatedOverlayIterator::cppServer"
+    binder_txn_id: 34299
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25456454160
+    client_dur: 31893
+    binder_reply_id: 34300
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25456468473
+    server_dur: 7849
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 7849
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6814
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12066
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 13013
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::acquireFabricatedOverlayIterator::cppServer"
+    binder_txn_id: 34302
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25456548523
+    client_dur: 98167
+    binder_reply_id: 34303
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25456560742
+    server_dur: 75793
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 25312
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50481
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6766
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10449
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 80952
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::nextFabricatedOverlayInfos::cppServer"
+    binder_txn_id: 34305
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25456659359
+    client_dur: 202533
+    binder_reply_id: 34306
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25456689304
+    server_dur: 163129
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 163129
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6358
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11947
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 184228
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IIdmap2::releaseFabricatedOverlayIterator::cppServer"
+    binder_txn_id: 34308
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25456872988
+    client_dur: 29135
+    binder_reply_id: 34309
+    server_process: "/system/bin/idmap2d"
+    server_thread: "binder:541_3"
+    server_ts: 25456888657
+    server_dur: 6402
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 6402
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4895
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9632
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 14608
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34345
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25494548191
+    client_dur: 258095
+    binder_reply_id: 34346
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25494622231
+    server_dur: 150527
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 150527
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17890
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 54323
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 185882
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34347
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25495244473
+    client_dur: 325048
+    binder_reply_id: 34348
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25495400405
+    server_dur: 128258
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 128258
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 24364
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 45540
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 255144
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34371
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25504141418
+    client_dur: 297361
+    binder_reply_id: 34372
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25504207270
+    server_dur: 133515
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 133515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 250872
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 46489
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34409
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25511329109
+    client_dur: 678596
+    binder_reply_id: 34414
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25511805543
+    server_dur: 136659
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 136659
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 53941
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 58308
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 566347
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34457
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25517948532
+    client_dur: 163240
+    binder_reply_id: 34461
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25518009843
+    server_dur: 44297
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44297
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 45510
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 29611
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 88119
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34466
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25518739183
+    client_dur: 3265864
+    binder_reply_id: 34467
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25518779467
+    server_dur: 374561
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 374561
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 2842707
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 30774
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 392383
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 34540
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25523067296
+    client_dur: 1153803
+    binder_reply_id: 34555
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25523345752
+    server_dur: 24699
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24699
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 840798
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11969
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 301036
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35031
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25529407157
+    client_dur: 1243348
+    binder_reply_id: 35039
+    server_process: "/vendor/bin/hw/android.hardware.health-service.cuttlefish"
+    server_thread: "android.hardwar"
+    server_ts: 25529886580
+    server_dur: 502254
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 166649
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 335605
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 255692
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18208
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 969448
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35051
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25530820205
+    client_dur: 1517480
+    binder_reply_id: 35052
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25530877699
+    server_dur: 79639
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 79639
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 1374024
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 38520
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 104936
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35063
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25538312793
+    client_dur: 177283
+    binder_reply_id: 35065
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25538360355
+    server_dur: 73011
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 73011
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 49848
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 31977
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 95458
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35066
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25538521832
+    client_dur: 115418
+    binder_reply_id: 35067
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25538557132
+    server_dur: 51687
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 51687
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 23408
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26304
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 65706
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35086
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25555649759
+    client_dur: 401986
+    binder_reply_id: 35087
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25555822535
+    server_dur: 166864
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 166864
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 49376
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 67759
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 284851
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35099
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25562439114
+    client_dur: 360669
+    binder_reply_id: 35100
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25562601598
+    server_dur: 147343
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 147343
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 38501
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 55078
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 267090
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35101
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25564138751
+    client_dur: 227016
+    binder_reply_id: 35102
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25564207677
+    server_dur: 112964
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 112964
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 35570
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 54512
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 136934
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35103
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25564950504
+    client_dur: 216354
+    binder_reply_id: 35104
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25565018623
+    server_dur: 104733
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 104733
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 33671
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 52864
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 129819
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35105
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25565861693
+    client_dur: 154693
+    binder_reply_id: 35106
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25565923809
+    server_dur: 44929
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44929
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 33472
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 37909
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 83312
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::invalidateMounts::cppServer"
+    binder_txn_id: 35107
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25566098278
+    client_dur: 3268381
+    binder_reply_id: 35108
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25566134660
+    server_dur: 2297021
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 2297021
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 917014
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 38253
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2313114
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35123
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25578643057
+    client_dur: 230121
+    binder_reply_id: 35124
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25578709142
+    server_dur: 126093
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 126093
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 185005
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 45116
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35125
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25579716604
+    client_dur: 216367
+    binder_reply_id: 35126
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25579776806
+    server_dur: 121078
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 121078
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 175341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 41026
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35144
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25584224256
+    client_dur: 249444
+    binder_reply_id: 35145
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25584297755
+    server_dur: 135137
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 135137
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 198325
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 51119
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35146
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25585086651
+    client_dur: 284206
+    binder_reply_id: 35147
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25585152822
+    server_dur: 129855
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 129855
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 236531
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 47675
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35156
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25587741520
+    client_dur: 249445
+    binder_reply_id: 35157
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25587810843
+    server_dur: 138515
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 138515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 200350
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 49095
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35158
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25588452300
+    client_dur: 243841
+    binder_reply_id: 35159
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25588512250
+    server_dur: 145542
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 145542
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 203180
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 40661
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35240
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25607046968
+    client_dur: 141541
+    binder_reply_id: 35241
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25607085845
+    server_dur: 83802
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 83802
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 116190
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25351
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35300
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25626771532
+    client_dur: 407539
+    binder_reply_id: 35335
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25627067466
+    server_dur: 61702
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61702
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 29697
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 48333
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 329509
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35356
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25627247935
+    client_dur: 118074
+    binder_reply_id: 35362
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25627290693
+    server_dur: 38186
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38186
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 89917
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28157
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35384
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25627461473
+    client_dur: 244900
+    binder_reply_id: 35391
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25627519338
+    server_dur: 149891
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 149891
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 199584
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 45316
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35542
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25632313567
+    client_dur: 258248
+    binder_reply_id: 35543
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25632388552
+    server_dur: 141000
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 141000
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 205277
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 52971
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35547
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25637260298
+    client_dur: 196517
+    binder_reply_id: 35548
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25637328529
+    server_dur: 88341
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 88341
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 173264
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23253
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35680
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25656975183
+    client_dur: 72577
+    binder_reply_id: 35681
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25656999460
+    server_dur: 31187
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31187
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 60193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12384
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35682
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25657158859
+    client_dur: 49143
+    binder_reply_id: 35683
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25657175302
+    server_dur: 18337
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18337
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 38161
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10982
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35690
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25659444951
+    client_dur: 67480
+    binder_reply_id: 35691
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25659467572
+    server_dur: 27682
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27682
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 55614
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11866
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 35863
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25710903029
+    client_dur: 196994
+    binder_reply_id: 35865
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25710975935
+    server_dur: 69286
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 69286
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 37976
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 47773
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 111245
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36497
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25779384485
+    client_dur: 6404465
+    binder_reply_id: 36498
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25779465833
+    server_dur: 115210
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 115210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6195719
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 72810
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 135936
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36527
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25785903212
+    client_dur: 173175
+    binder_reply_id: 36528
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25785969981
+    server_dur: 74609
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 74609
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17557
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 61497
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 94121
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36529
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25786187023
+    client_dur: 71969
+    binder_reply_id: 36530
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25786216656
+    server_dur: 16443
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16443
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 13449
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 35247
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23273
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36537
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25788338381
+    client_dur: 66978
+    binder_reply_id: 36538
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25788365130
+    server_dur: 26182
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26182
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6597
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15917
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44464
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36539
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25788426430
+    client_dur: 44938
+    binder_reply_id: 36540
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25788444575
+    server_dur: 12371
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12371
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9093
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8089
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27756
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36553
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25794664939
+    client_dur: 125489
+    binder_reply_id: 36554
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25794702859
+    server_dur: 70821
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 70821
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 97866
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27623
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36573
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25803399428
+    client_dur: 125121
+    binder_reply_id: 36575
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25803446233
+    server_dur: 61602
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 61602
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11467
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 33027
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 80627
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36621
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25805561097
+    client_dur: 258904
+    binder_reply_id: 36622
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25805581639
+    server_dur: 24195
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24195
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 247357
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11547
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36634
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25806638177
+    client_dur: 383567
+    binder_reply_id: 36635
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25806656214
+    server_dur: 348438
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 348438
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 373938
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9629
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36643
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25807042562
+    client_dur: 45260
+    binder_reply_id: 36644
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25807056567
+    server_dur: 14991
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14991
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 35762
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9498
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36648
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25807129635
+    client_dur: 626529
+    binder_reply_id: 36649
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25807318058
+    server_dur: 335442
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "D"
+      thread_state_dur: 23125
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 3615
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 308702
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 94234
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28188
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 504107
+      thread_state_count: 1
+    }
+    blocked_functions {
+      thread_state_type: "binder_reply"
+      blocked_function: "filemap_fault"
+      blocked_function_dur: 23125
+      blocked_function_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36654
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25807794682
+    client_dur: 197460
+    binder_reply_id: 36655
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25807808849
+    server_dur: 31598
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 31598
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 144139
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19188
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 34133
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36657
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808041191
+    client_dur: 152874
+    binder_reply_id: 36659
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808112547
+    server_dur: 38477
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38477
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 20705
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19875
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 112294
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36662
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808300543
+    client_dur: 216110
+    binder_reply_id: 36663
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808488934
+    server_dur: 5816
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 5816
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16152
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15469
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 184489
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36665
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808536171
+    client_dur: 29720
+    binder_reply_id: 36666
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808549475
+    server_dur: 6142
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 6142
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7593
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14892
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 7235
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36668
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808580143
+    client_dur: 23193
+    binder_reply_id: 36669
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808589636
+    server_dur: 4653
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4653
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6533
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10607
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 6053
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36671
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808614611
+    client_dur: 24483
+    binder_reply_id: 36673
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808626104
+    server_dur: 4244
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4244
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6304
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11629
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 6550
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36676
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808649459
+    client_dur: 19535
+    binder_reply_id: 36677
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808656163
+    server_dur: 4039
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4039
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7574
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5522
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36679
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808679113
+    client_dur: 22778
+    binder_reply_id: 36680
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808688986
+    server_dur: 3889
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3889
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6334
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9279
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 7165
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36682
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808712146
+    client_dur: 21102
+    binder_reply_id: 36683
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808720606
+    server_dur: 3664
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3664
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6281
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9497
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5324
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36685
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808743343
+    client_dur: 49190
+    binder_reply_id: 36687
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808773138
+    server_dur: 4014
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4014
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12797
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9671
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26722
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36690
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808803408
+    client_dur: 47244
+    binder_reply_id: 36691
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808832840
+    server_dur: 3744
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3744
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11526
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7776
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27942
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36693
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808861280
+    client_dur: 23141
+    binder_reply_id: 36694
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808871693
+    server_dur: 4083
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4083
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6137
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10381
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 6623
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36698
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808894304
+    client_dur: 22212
+    binder_reply_id: 36699
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808903846
+    server_dur: 4193
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5996
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7203
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 9013
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36701
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808927915
+    client_dur: 23489
+    binder_reply_id: 36702
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808938201
+    server_dur: 4441
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4441
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6348
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9948
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 7193
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36704
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808963769
+    client_dur: 21106
+    binder_reply_id: 36705
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25808972274
+    server_dur: 4301
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4301
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5901
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9722
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5483
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36708
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25808996827
+    client_dur: 22150
+    binder_reply_id: 36709
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809006677
+    server_dur: 3852
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3852
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5979
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10074
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 6097
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36712
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809029487
+    client_dur: 30653
+    binder_reply_id: 36713
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809048418
+    server_dur: 3146
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3146
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6278
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 5148
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19227
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36717
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809070927
+    client_dur: 105314
+    binder_reply_id: 36718
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809156958
+    server_dur: 4090
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4090
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 12383
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 7524
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 85407
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36720
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809187458
+    client_dur: 21199
+    binder_reply_id: 36721
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809196575
+    server_dur: 3729
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3729
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5978
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9424
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5797
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36723
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809219112
+    client_dur: 20851
+    binder_reply_id: 36724
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809227683
+    server_dur: 3856
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3856
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6053
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9138
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5660
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36726
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809250949
+    client_dur: 271118
+    binder_reply_id: 36730
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809502291
+    server_dur: 4522
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4522
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8980
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12713
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 249425
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36732
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809543172
+    client_dur: 29191
+    binder_reply_id: 36733
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809555589
+    server_dur: 4714
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 4714
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9215
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14975
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5001
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36735
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809583743
+    client_dur: 23569
+    binder_reply_id: 36736
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809592470
+    server_dur: 3948
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3948
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9955
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 5404
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36739
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809618388
+    client_dur: 38876
+    binder_reply_id: 36740
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809637992
+    server_dur: 8798
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 8798
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7919
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19943
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 11014
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36743
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809757746
+    client_dur: 171172
+    binder_reply_id: 36744
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809770125
+    server_dur: 89637
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 60078
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29559
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 63122
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14112
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 93938
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36750
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25809948987
+    client_dur: 120274
+    binder_reply_id: 36753
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25809967298
+    server_dur: 27536
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27536
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 66961
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14846
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38467
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36757
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25810106019
+    client_dur: 110073
+    binder_reply_id: 36758
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25810132739
+    server_dur: 5193
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 5193
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 72660
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14424
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22989
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36762
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25810239347
+    client_dur: 148792
+    binder_reply_id: 36763
+    server_process: "/apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25810364813
+    server_dur: 3865
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 3865
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 16853
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10168
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 121771
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36766
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25810497904
+    client_dur: 126359
+    binder_reply_id: 36767
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25810531969
+    server_dur: 73542
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 73542
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 103440
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22919
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36768
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25810646589
+    client_dur: 91503
+    binder_reply_id: 36769
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25810669576
+    server_dur: 52662
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52662
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 74180
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17323
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36772
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25810948647
+    client_dur: 113503
+    binder_reply_id: 36773
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25810980358
+    server_dur: 64314
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 64314
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 91463
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22040
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36774
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25811246975
+    client_dur: 366342
+    binder_reply_id: 36775
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25811269261
+    server_dur: 324989
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 324989
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 352962
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13380
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36781
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25811641918
+    client_dur: 83600
+    binder_reply_id: 36782
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25811659549
+    server_dur: 47010
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 22597
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24413
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 71864
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11736
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36787
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25811827364
+    client_dur: 105911
+    binder_reply_id: 36788
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25811855742
+    server_dur: 60946
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 60946
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 84666
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 21245
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36819
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25814468030
+    client_dur: 128573
+    binder_reply_id: 36820
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25814502303
+    server_dur: 75807
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 75807
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 104805
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23768
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36901
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25824457100
+    client_dur: 243653
+    binder_reply_id: 36902
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25824484172
+    server_dur: 202360
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 134238
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 68122
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 225215
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18438
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36923
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: false
+    client_ts: 25826929585
+    client_dur: 134380
+    binder_reply_id: 36925
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25826953314
+    server_dur: 57893
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 57893
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 45352
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16255
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72773
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36926
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: false
+    client_ts: 25827095345
+    client_dur: 59551
+    binder_reply_id: 36927
+    server_process: "/apex/com.android.os.statsd/bin/statsd"
+    server_thread: "binder:415_3"
+    server_ts: 25827112546
+    server_dur: 28045
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 28045
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8837
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14851
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35863
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36967
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25828178041
+    client_dur: 75912
+    binder_reply_id: 36970
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25828192051
+    server_dur: 26713
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26713
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7033
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12542
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 56337
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 36978
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25828289955
+    client_dur: 48095
+    binder_reply_id: 36979
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25828303964
+    server_dur: 23818
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23818
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6875
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14471
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26749
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37348
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25833585425
+    client_dur: 213739
+    binder_reply_id: 37369
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25833674904
+    server_dur: 59579
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59579
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 59967
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19554
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 134218
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37420
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25834911169
+    client_dur: 66864
+    binder_reply_id: 37421
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25834940005
+    server_dur: 22905
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22905
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7389
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20322
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 39153
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37423
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25835009103
+    client_dur: 41035
+    binder_reply_id: 37424
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25835029405
+    server_dur: 9917
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 9917
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5967
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14595
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20473
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37426
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25835084036
+    client_dur: 39828
+    binder_reply_id: 37427
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25835102285
+    server_dur: 11104
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11104
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5720
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12715
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21393
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37430
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25835225817
+    client_dur: 39668
+    binder_reply_id: 37431
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25835244300
+    server_dur: 10401
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 10401
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5850
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14714
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19104
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37433
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25835491757
+    client_dur: 94706
+    binder_reply_id: 37434
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25835523199
+    server_dur: 50044
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 50044
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7933
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25822
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 60951
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37446
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25838116144
+    client_dur: 101371
+    binder_reply_id: 37447
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25838145038
+    server_dur: 57786
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 57786
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 81362
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20009
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37542
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25854689410
+    client_dur: 72379
+    binder_reply_id: 37543
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25854716713
+    server_dur: 29735
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 29735
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10289
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17875
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 44215
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37544
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25854776152
+    client_dur: 84994
+    binder_reply_id: 37545
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25854792697
+    server_dur: 55053
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55053
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8903
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12343
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 63748
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37556
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25856165265
+    client_dur: 41372
+    binder_reply_id: 37557
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25856179451
+    server_dur: 11065
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11065
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8795
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14679
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17898
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37570
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25859386674
+    client_dur: 62804
+    binder_reply_id: 37571
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25859406671
+    server_dur: 23198
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23198
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 51940
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10864
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37576
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25860119896
+    client_dur: 89982
+    binder_reply_id: 37577
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25860140536
+    server_dur: 54911
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 54911
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 77846
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12136
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37588
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25861940989
+    client_dur: 112198
+    binder_reply_id: 37589
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25861960190
+    server_dur: 69698
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 69698
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15017
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 20097
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 77084
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37592
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25862411224
+    client_dur: 72918
+    binder_reply_id: 37593
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25862426577
+    server_dur: 43364
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 43364
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6596
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13545
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 52777
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37594
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25862572364
+    client_dur: 43335
+    binder_reply_id: 37595
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25862583679
+    server_dur: 21214
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21214
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6177
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12578
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 24580
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37596
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25862644016
+    client_dur: 35084
+    binder_reply_id: 37597
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25862653442
+    server_dur: 16522
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16522
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5655
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9856
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19573
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37598
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25862703240
+    client_dur: 43193
+    binder_reply_id: 37599
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25862712076
+    server_dur: 25328
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25328
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9478
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28276
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37602
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25863309305
+    client_dur: 56073
+    binder_reply_id: 37603
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25863321886
+    server_dur: 30965
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 30965
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5850
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11988
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 38235
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37604
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25863414967
+    client_dur: 48999
+    binder_reply_id: 37605
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25863426312
+    server_dur: 27403
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27403
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5751
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11356
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31892
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37608
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864046858
+    client_dur: 61808
+    binder_reply_id: 37609
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864062070
+    server_dur: 32956
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 32956
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6619
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12417
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 42772
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37610
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864143436
+    client_dur: 51337
+    binder_reply_id: 37611
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864153386
+    server_dur: 30980
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 30980
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5670
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10009
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 35658
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37612
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864216828
+    client_dur: 37990
+    binder_reply_id: 37613
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864226073
+    server_dur: 19004
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19004
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5464
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9381
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23145
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37614
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864279759
+    client_dur: 37961
+    binder_reply_id: 37615
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864288819
+    server_dur: 19366
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19366
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5566
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9365
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23030
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37616
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864345023
+    client_dur: 59115
+    binder_reply_id: 37617
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864354391
+    server_dur: 17778
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17778
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 25671
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11232
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22212
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37620
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864449726
+    client_dur: 51629
+    binder_reply_id: 37621
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864460717
+    server_dur: 26406
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26406
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7677
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12120
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31832
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37622
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864530175
+    client_dur: 40230
+    binder_reply_id: 37623
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864539824
+    server_dur: 19580
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19580
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6735
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9617
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23878
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37624
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864603443
+    client_dur: 64958
+    binder_reply_id: 37625
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864612742
+    server_dur: 44603
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44603
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6862
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9401
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48695
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37626
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864687472
+    client_dur: 38679
+    binder_reply_id: 37627
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864696221
+    server_dur: 19520
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19520
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6562
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9099
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23018
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37628
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864748376
+    client_dur: 41144
+    binder_reply_id: 37629
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864757238
+    server_dur: 21548
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21548
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6678
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9163
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 25303
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37630
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864814870
+    client_dur: 37926
+    binder_reply_id: 37631
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864824299
+    server_dur: 17299
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17299
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6540
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9601
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21785
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37632
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864878443
+    client_dur: 41432
+    binder_reply_id: 37633
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864887850
+    server_dur: 21263
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21263
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6613
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9283
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 25536
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37634
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25864943354
+    client_dur: 46446
+    binder_reply_id: 37635
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25864953070
+    server_dur: 26259
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26259
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6778
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9713
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 29955
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37636
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25865010220
+    client_dur: 42768
+    binder_reply_id: 37637
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25865018943
+    server_dur: 22857
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22857
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7070
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8891
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26807
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37638
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25865078882
+    client_dur: 42845
+    binder_reply_id: 37639
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25865088374
+    server_dur: 22790
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 22790
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6604
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9486
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26755
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37640
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25865143746
+    client_dur: 43541
+    binder_reply_id: 37641
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25865152587
+    server_dur: 24329
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24329
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6671
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9137
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27733
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37642
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25865208871
+    client_dur: 37989
+    binder_reply_id: 37643
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25865217954
+    server_dur: 18361
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18361
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6634
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9153
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22202
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37644
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25865269510
+    client_dur: 180816
+    binder_reply_id: 37645
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25865278803
+    server_dur: 44675
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 7227
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37448
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 122102
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10045
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 48669
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37651
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25865509380
+    client_dur: 1204393
+    binder_reply_id: 37654
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25866655580
+    server_dur: 37015
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 37015
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 11126
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11843
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 1181424
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37655
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25866765533
+    client_dur: 52077
+    binder_reply_id: 37656
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25866778140
+    server_dur: 25314
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25314
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10210
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12873
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 28994
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37657
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25866847306
+    client_dur: 36125
+    binder_reply_id: 37658
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25866856611
+    server_dur: 17873
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17873
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5223
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10223
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20679
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37659
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25866907704
+    client_dur: 31809
+    binder_reply_id: 37660
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25866916674
+    server_dur: 14121
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14121
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5068
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9616
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17125
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37661
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25866963934
+    client_dur: 42576
+    binder_reply_id: 37662
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25866972903
+    server_dur: 18950
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18950
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10778
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9686
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22112
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37663
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867031282
+    client_dur: 35871
+    binder_reply_id: 37664
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867040421
+    server_dur: 17984
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17984
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5100
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9503
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21268
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37665
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867092641
+    client_dur: 34611
+    binder_reply_id: 37666
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867101335
+    server_dur: 17329
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17329
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4977
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9293
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20341
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37667
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867155069
+    client_dur: 43809
+    binder_reply_id: 37668
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867163773
+    server_dur: 26243
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26243
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5052
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9697
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 29060
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37669
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867229729
+    client_dur: 32631
+    binder_reply_id: 37670
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867238857
+    server_dur: 14033
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14033
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5515
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9623
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 17493
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37671
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867283252
+    client_dur: 40731
+    binder_reply_id: 37672
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867292366
+    server_dur: 21993
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 21993
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5123
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9226
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 26382
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37673
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867343753
+    client_dur: 34724
+    binder_reply_id: 37674
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867353084
+    server_dur: 16650
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 16650
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5108
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9092
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 20524
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37675
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867401523
+    client_dur: 50745
+    binder_reply_id: 37676
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867410223
+    server_dur: 32741
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 32741
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5176
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9034
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 36535
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37677
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867475251
+    client_dur: 46815
+    binder_reply_id: 37678
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867485001
+    server_dur: 26611
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 26611
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5439
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9800
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 31576
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37679
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867547843
+    client_dur: 36696
+    binder_reply_id: 37680
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867557467
+    server_dur: 18125
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18125
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5127
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9403
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22166
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37681
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867605981
+    client_dur: 37415
+    binder_reply_id: 37682
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867614819
+    server_dur: 19663
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19663
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5033
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9092
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23290
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37683
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867663292
+    client_dur: 35879
+    binder_reply_id: 37684
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867672122
+    server_dur: 17373
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 17373
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5633
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 8969
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21277
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37685
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867751966
+    client_dur: 40848
+    binder_reply_id: 37686
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867761875
+    server_dur: 19072
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19072
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5233
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10135
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 25480
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IServiceManager::getService::cppClient"
+    binder_txn_id: 37687
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25867845030
+    client_dur: 180504
+    binder_reply_id: 37688
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25867860282
+    server_dur: 154468
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R"
+      thread_state_dur: 5734
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 98098
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "S"
+      thread_state_dur: 50636
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 5977
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 17272
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 157255
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37712
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25872260669
+    client_dur: 83399
+    binder_reply_id: 37713
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25872278450
+    server_dur: 47096
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 47096
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8716
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 19044
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 55639
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37779
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25885439966
+    client_dur: 1549817
+    binder_reply_id: 37792
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25886054638
+    server_dur: 24145
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 24145
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 897552
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11727
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 640538
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37782
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: false
+    client_ts: 25885831452
+    client_dur: 1452935
+    binder_reply_id: 37793
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25886206332
+    server_dur: 305512
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 305512
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 768636
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9756
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 674543
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37798
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: false
+    client_ts: 25887309449
+    client_dur: 115655
+    binder_reply_id: 37799
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25887326271
+    server_dur: 18512
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18512
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 108848
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 6807
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37804
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: false
+    client_ts: 25887452954
+    client_dur: 283867
+    binder_reply_id: 37805
+    server_process: "/vendor/bin/hw/android.hardware.input.processor-service.example"
+    server_thread: "android.hardwar"
+    server_ts: 25887467255
+    server_dur: 38055
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 38055
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 273281
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 10586
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37850
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25892252212
+    client_dur: 2274293
+    binder_reply_id: 37853
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25894481596
+    server_dur: 27702
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27702
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7429
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18445
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 2248419
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37936
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25921269728
+    client_dur: 400263
+    binder_reply_id: 37938
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25921599983
+    server_dur: 52448
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 52448
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7353
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 16174
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 376736
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37944
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25921747025
+    client_dur: 209278
+    binder_reply_id: 37946
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25921878602
+    server_dur: 66173
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 66173
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7013
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 28814
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 173451
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37950
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25922308759
+    client_dur: 230930
+    binder_reply_id: 37951
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25922366800
+    server_dur: 58914
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 58914
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 107010
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 25655
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 98265
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 37983
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25926152660
+    client_dur: 106426
+    binder_reply_id: 37984
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25926184604
+    server_dur: 59798
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59798
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 10091
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 24379
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 71956
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38489
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25935520343
+    client_dur: 106898
+    binder_reply_id: 38490
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25935553945
+    server_dur: 59988
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59988
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 8207
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26350
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 72341
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38491
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25936096478
+    client_dur: 38431
+    binder_reply_id: 38492
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25936114070
+    server_dur: 13878
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13878
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 2529
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14455
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21447
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38493
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25936154115
+    client_dur: 304852
+    binder_reply_id: 38494
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25936427202
+    server_dur: 13388
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 13388
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 14741
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 4401
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 285710
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38498
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25939273894
+    client_dur: 44659
+    binder_reply_id: 38499
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25939290557
+    server_dur: 19990
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19990
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 4062
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13441
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 27156
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38501
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25939575552
+    client_dur: 81712
+    binder_reply_id: 38502
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25939602201
+    server_dur: 44933
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 44933
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6940
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 27117
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47655
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38516
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25944988176
+    client_dur: 71994
+    binder_reply_id: 38517
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25945018540
+    server_dur: 25217
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 25217
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 9524
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15032
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47438
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38532
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25948938076
+    client_dur: 82091
+    binder_reply_id: 38533
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25948980882
+    server_dur: 27091
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 27091
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 7533
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26705
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 47853
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38539
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25951851055
+    client_dur: 445134
+    binder_reply_id: 38540
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_3"
+    server_ts: 25951902501
+    server_dur: 183967
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 183967
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 203186
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 54958
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 186990
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38544
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25952609949
+    client_dur: 44997
+    binder_reply_id: 38545
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_2"
+    server_ts: 25952623297
+    server_dur: 18258
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18258
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 31995
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13002
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38552
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25954386897
+    client_dur: 107947
+    binder_reply_id: 38553
+    server_process: "/system/bin/surfaceflinger"
+    server_thread: "binder:496_3"
+    server_ts: 25954404617
+    server_dur: 18018
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 18018
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 66259
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 18434
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 23254
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38555
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25955417145
+    client_dur: 248980
+    binder_reply_id: 38556
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25955442657
+    server_dur: 23870
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 23870
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 192348
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 14646
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 41986
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::invalidateMounts::cppServer"
+    binder_txn_id: 38558
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25955702503
+    client_dur: 1028567
+    binder_reply_id: 38559
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25955716400
+    server_dur: 923564
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 923564
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 1015084
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 13483
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38561
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25957071212
+    client_dur: 244964
+    binder_reply_id: 38562
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25957109467
+    server_dur: 68828
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 68828
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 131523
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 29434
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 84007
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38563
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25957345364
+    client_dur: 86035
+    binder_reply_id: 38564
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25957361868
+    server_dur: 39522
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 39522
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 15894
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12719
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 57422
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38565
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25957477722
+    client_dur: 38342
+    binder_reply_id: 38566
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25957490997
+    server_dur: 14607
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 14607
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6413
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 9866
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 22063
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38567
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25957561902
+    client_dur: 115285
+    binder_reply_id: 38568
+    server_process: "/system/bin/vold"
+    server_thread: "binder:255_2"
+    server_ts: 25957584457
+    server_dur: 69879
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 69879
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 17174
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 22753
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 75358
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38569
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25957701552
+    client_dur: 31673
+    binder_reply_id: 38570
+    server_process: "/system/bin/vold"
+    server_thread: "binder:255_2"
+    server_ts: 25957712540
+    server_dur: 11337
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 11337
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6047
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 12420
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 13206
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38571
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25957917714
+    client_dur: 81359
+    binder_reply_id: 38572
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25957965656
+    server_dur: 19953
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 19953
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6744
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11448
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 63167
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38573
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25958179475
+    client_dur: 57952
+    binder_reply_id: 38574
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25958197817
+    server_dur: 12909
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12909
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 21164
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 15682
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 21106
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38575
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25958259037
+    client_dur: 37816
+    binder_reply_id: 38576
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25958272198
+    server_dur: 12201
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 12201
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6791
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11850
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 19175
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::invalidateMounts::cppServer"
+    binder_txn_id: 38577
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25958323889
+    client_dur: 934386
+    binder_reply_id: 38578
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25958335597
+    server_dur: 816593
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 816593
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 922565
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11821
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    aidl_name: "AIDL::cpp::IInstalld::invalidateMounts::cppServer"
+    binder_txn_id: 38582
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25959279820
+    client_dur: 780373
+    binder_reply_id: 38583
+    server_process: "/system/bin/installd"
+    server_thread: "binder:548_1"
+    server_ts: 25959289960
+    server_dur: 697719
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "R+"
+      thread_state_dur: 7963
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 689756
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R+"
+      thread_state_dur: 768919
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 11454
+      thread_state_count: 2
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38586
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25960212392
+    client_dur: 138312
+    binder_reply_id: 38587
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25960246748
+    server_dur: 59922
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 59922
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 37362
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 26343
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 74607
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38589
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25960703658
+    client_dur: 185272
+    binder_reply_id: 38590
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25960733334
+    server_dur: 55452
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 55452
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 95673
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23394
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 66205
+      thread_state_count: 1
+    }
+  }
+  unaggregated_txn_breakdown {
+    binder_txn_id: 38602
+    client_process: "system_server"
+    client_thread: "system_server"
+    is_main_thread: true
+    client_ts: 25964272455
+    client_dur: 108953
+    binder_reply_id: 38603
+    server_process: "/system/bin/servicemanager"
+    server_thread: "servicemanager"
+    server_ts: 25964304630
+    server_dur: 66130
+    thread_states {
+      thread_state_type: "binder_reply"
+      thread_state: "Running"
+      thread_state_dur: 66130
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "R"
+      thread_state_dur: 6080
+      thread_state_count: 1
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "Running"
+      thread_state_dur: 23787
+      thread_state_count: 2
+    }
+    thread_states {
+      thread_state_type: "binder_txn"
+      thread_state: "S"
+      thread_state_dur: 79086
+      thread_state_count: 1
+    }
+  }
+}
diff --git a/test/trace_processor/android/android_bugreport_dumpstate_test.out b/test/trace_processor/diff_tests/android/android_bugreport_dumpstate_test.out
similarity index 100%
rename from test/trace_processor/android/android_bugreport_dumpstate_test.out
rename to test/trace_processor/diff_tests/android/android_bugreport_dumpstate_test.out
diff --git a/test/trace_processor/android/android_bugreport_dumpsys_test.out b/test/trace_processor/diff_tests/android/android_bugreport_dumpsys_test.out
similarity index 100%
rename from test/trace_processor/android/android_bugreport_dumpsys_test.out
rename to test/trace_processor/diff_tests/android/android_bugreport_dumpsys_test.out
diff --git a/test/trace_processor/android/android_bugreport_logs_test.out b/test/trace_processor/diff_tests/android/android_bugreport_logs_test.out
similarity index 100%
rename from test/trace_processor/android/android_bugreport_logs_test.out
rename to test/trace_processor/diff_tests/android/android_bugreport_logs_test.out
diff --git a/test/trace_processor/android/android_system_property_slice.out b/test/trace_processor/diff_tests/android/android_system_property_slice.out
similarity index 100%
rename from test/trace_processor/android/android_system_property_slice.out
rename to test/trace_processor/diff_tests/android/android_system_property_slice.out
diff --git a/test/trace_processor/android/game_intervention_list_test.out b/test/trace_processor/diff_tests/android/game_intervention_list_test.out
similarity index 100%
rename from test/trace_processor/android/game_intervention_list_test.out
rename to test/trace_processor/diff_tests/android/game_intervention_list_test.out
diff --git a/test/trace_processor/diff_tests/android/tests.py b/test/trace_processor/diff_tests/android/tests.py
new file mode 100644
index 0000000..4127021
--- /dev/null
+++ b/test/trace_processor/diff_tests/android/tests.py
@@ -0,0 +1,198 @@
+#!/usr/bin/env python3
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Path, DataPath, Metric
+from python.generators.diff_tests.testing import Csv, Json, TextProto
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+
+class Android(TestSuite):
+
+  def test_android_system_property_counter(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+        packet {
+          timestamp: 1000
+          android_system_property {
+            values {
+              name: "debug.tracing.screen_state"
+              value: "2"
+            }
+            values {
+              name: "debug.tracing.device_state"
+              value: "some_state_from_sysprops"
+            }
+          }
+        }
+        packet {
+          ftrace_events {
+            cpu: 1
+            event {
+              timestamp: 2000
+              pid: 1
+              print {
+                buf: "C|1000|ScreenState|1\n"
+              }
+            }
+            event {
+              timestamp: 3000
+              pid: 1
+              print {
+                buf: "N|1000|DeviceStateChanged|some_state_from_atrace\n"
+              }
+            }
+          }
+        }
+        """),
+        query="""
+        SELECT t.id, t.type, t.name, c.id, c.ts, c.type, c.value
+        FROM counter_track t JOIN counter c ON t.id = c.track_id
+        WHERE name = 'ScreenState';
+        """,
+        out=Csv("""
+        "id","type","name","id","ts","type","value"
+        0,"counter_track","ScreenState",0,1000,"counter",2.000000
+        0,"counter_track","ScreenState",1,2000,"counter",1.000000
+        """))
+
+  def test_android_system_property_slice(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+        packet {
+          timestamp: 1000
+          android_system_property {
+            values {
+              name: "debug.tracing.screen_state"
+              value: "2"
+            }
+            values {
+              name: "debug.tracing.device_state"
+              value: "some_state_from_sysprops"
+            }
+          }
+        }
+        packet {
+          ftrace_events {
+            cpu: 1
+            event {
+              timestamp: 2000
+              pid: 1
+              print {
+                buf: "C|1000|ScreenState|1\n"
+              }
+            }
+            event {
+              timestamp: 3000
+              pid: 1
+              print {
+                buf: "N|1000|DeviceStateChanged|some_state_from_atrace\n"
+              }
+            }
+          }
+        }
+        """),
+        query="""
+        SELECT t.id, t.type, t.name, s.id, s.ts, s.dur, s.type, s.name
+        FROM track t JOIN slice s ON s.track_id = t.id
+        WHERE t.name = 'DeviceStateChanged';
+        """,
+        out=Path('android_system_property_slice.out'))
+
+  def test_binder_sync_binder_metrics(self):
+    return DiffTestBlueprint(
+        trace=DataPath('android_binder_metric_trace.atr'),
+        query="""
+        SELECT IMPORT('android.binder');
+        SELECT
+          aidl_name,
+          binder_txn_id,
+          client_process,
+          client_thread,
+          client_upid,
+          client_utid,
+          is_main_thread,
+          client_ts,
+          client_dur,
+          binder_reply_id,
+          server_process,
+          server_thread,
+          server_upid,
+          server_utid,
+          server_ts,
+          server_dur
+        FROM android_sync_binder_metrics_by_txn
+        WHERE binder_txn_id = 34382
+        ORDER BY client_ts
+        LIMIT 1;
+      """,
+        out=Csv("""
+      "aidl_name","binder_txn_id","client_process","client_thread","client_upid","client_utid","is_main_thread","client_ts","client_dur","binder_reply_id","server_process","server_thread","server_upid","server_utid","server_ts","server_dur"
+      "AIDL::java::ISensorPrivacyManager::isSensorPrivacyEnabled::server",34382,"/system/bin/audioserver","audioserver",281,281,1,25505818197,3125407,34383,"system_server","binder:641_4",311,539,25505891588,3000749
+      """))
+
+  def test_binder_sync_binder_thread_state(self):
+    return DiffTestBlueprint(
+        trace=DataPath('android_binder_metric_trace.atr'),
+        query="""
+      SELECT IMPORT('android.binder');
+      SELECT
+        binder_txn_id,
+        binder_reply_id,
+        thread_state_type,
+        thread_state,
+        thread_state_dur,
+        thread_state_count
+      FROM android_sync_binder_thread_state_by_txn
+      WHERE binder_txn_id = 34382
+      ORDER BY thread_state_dur;
+      """,
+        out=Csv("""
+      "binder_txn_id","binder_reply_id","thread_state_type","thread_state","thread_state_dur","thread_state_count"
+      34382,34383,"binder_reply","R+",10030,1
+      34382,34383,"binder_txn","Running",26597,2
+      34382,34383,"binder_txn","R",38947,1
+      34382,34383,"binder_reply","Running",533663,3
+      34382,34383,"binder_reply","D",864664,1
+      34382,34383,"binder_reply","R",1592392,1
+      34382,34383,"binder_txn","S",3059863,1
+      """))
+
+  def test_binder_sync_binder_blocked_function(self):
+    return DiffTestBlueprint(
+        trace=DataPath('android_binder_metric_trace.atr'),
+        query="""
+      SELECT IMPORT('android.binder');
+      SELECT
+        binder_txn_id,
+        binder_reply_id,
+        thread_state_type,
+        blocked_function,
+        blocked_function_dur,
+        blocked_function_count
+      FROM android_sync_binder_blocked_functions_by_txn
+      WHERE binder_txn_id = 34382
+      ORDER BY blocked_function_dur;
+      """,
+        out=Csv("""
+      "binder_txn_id","binder_reply_id","thread_state_type","blocked_function","blocked_function_dur","blocked_function_count"
+      34382,34383,"binder_reply","filemap_fault",864664,1
+      """))
+
+  def test_binder_metric(self):
+    return DiffTestBlueprint(
+        trace=DataPath('android_binder_metric_trace.atr'),
+        query=Metric('android_binder'),
+        out=Path('android_binder_metric.out'))
diff --git a/test/trace_processor/android/tests_bugreport.py b/test/trace_processor/diff_tests/android/tests_bugreport.py
similarity index 88%
rename from test/trace_processor/android/tests_bugreport.py
rename to test/trace_processor/diff_tests/android/tests_bugreport.py
index 777a950..790b529 100644
--- a/test/trace_processor/android/tests_bugreport.py
+++ b/test/trace_processor/diff_tests/android/tests_bugreport.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_android_bugreport_logs(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/bugreport-crosshatch-SPB5.zip'),
+        trace=DataPath('bugreport-crosshatch-SPB5.zip'),
         query="""
         WITH
         initial AS (SELECT
@@ -44,7 +44,7 @@
 
   def test_android_bugreport_dumpstate(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/bugreport-crosshatch-SPB5.zip'),
+        trace=DataPath('bugreport-crosshatch-SPB5.zip'),
         query="""
         SELECT section, service, count(line) AS linecount FROM android_dumpstate
         GROUP BY section, service;
@@ -53,7 +53,7 @@
 
   def test_android_bugreport_dumpsys(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/bugreport-crosshatch-SPB5.zip'),
+        trace=DataPath('bugreport-crosshatch-SPB5.zip'),
         query="""
         SELECT section, service, line FROM android_dumpstate
         WHERE service = 'color_display';
diff --git a/test/trace_processor/android/tests_games.py b/test/trace_processor/diff_tests/android/tests_games.py
similarity index 97%
rename from test/trace_processor/android/tests_games.py
rename to test/trace_processor/diff_tests/android/tests_games.py
index 9b674aa..daa9a8d 100644
--- a/test/trace_processor/android/tests_games.py
+++ b/test/trace_processor/diff_tests/android/tests_games.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/android/tests_general.py b/test/trace_processor/diff_tests/android/tests_general.py
similarity index 96%
rename from test/trace_processor/android/tests_general.py
rename to test/trace_processor/diff_tests/android/tests_general.py
index 0c95ccc..fd555a5 100644
--- a/test/trace_processor/android/tests_general.py
+++ b/test/trace_processor/diff_tests/android/tests_general.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import DiffTestModule
diff --git a/test/trace_processor/atrace/android_b2b_async_begin.textproto b/test/trace_processor/diff_tests/atrace/android_b2b_async_begin.textproto
similarity index 100%
rename from test/trace_processor/atrace/android_b2b_async_begin.textproto
rename to test/trace_processor/diff_tests/atrace/android_b2b_async_begin.textproto
diff --git a/test/trace_processor/atrace/async_track_atrace.py b/test/trace_processor/diff_tests/atrace/async_track_atrace.py
similarity index 100%
rename from test/trace_processor/atrace/async_track_atrace.py
rename to test/trace_processor/diff_tests/atrace/async_track_atrace.py
diff --git a/test/trace_processor/atrace/bad_print.systrace b/test/trace_processor/diff_tests/atrace/bad_print.systrace
similarity index 100%
rename from test/trace_processor/atrace/bad_print.systrace
rename to test/trace_processor/diff_tests/atrace/bad_print.systrace
diff --git a/test/trace_processor/atrace/bad_print.textproto b/test/trace_processor/diff_tests/atrace/bad_print.textproto
similarity index 100%
rename from test/trace_processor/atrace/bad_print.textproto
rename to test/trace_processor/diff_tests/atrace/bad_print.textproto
diff --git a/test/trace_processor/atrace/instant_async_atrace.py b/test/trace_processor/diff_tests/atrace/instant_async_atrace.py
similarity index 100%
rename from test/trace_processor/atrace/instant_async_atrace.py
rename to test/trace_processor/diff_tests/atrace/instant_async_atrace.py
diff --git a/test/trace_processor/atrace/instant_atrace.py b/test/trace_processor/diff_tests/atrace/instant_atrace.py
similarity index 100%
rename from test/trace_processor/atrace/instant_atrace.py
rename to test/trace_processor/diff_tests/atrace/instant_atrace.py
diff --git a/test/trace_processor/atrace/process_track_slices_android_async_slice.out b/test/trace_processor/diff_tests/atrace/process_track_slices_android_async_slice.out
similarity index 100%
rename from test/trace_processor/atrace/process_track_slices_android_async_slice.out
rename to test/trace_processor/diff_tests/atrace/process_track_slices_android_async_slice.out
diff --git a/test/trace_processor/atrace/sys_write_and_atrace.py b/test/trace_processor/diff_tests/atrace/sys_write_and_atrace.py
similarity index 100%
rename from test/trace_processor/atrace/sys_write_and_atrace.py
rename to test/trace_processor/diff_tests/atrace/sys_write_and_atrace.py
diff --git a/test/trace_processor/atrace/tests.py b/test/trace_processor/diff_tests/atrace/tests.py
similarity index 97%
rename from test/trace_processor/atrace/tests.py
rename to test/trace_processor/diff_tests/atrace/tests.py
index 80bc378..0f892c8 100644
--- a/test/trace_processor/atrace/tests.py
+++ b/test/trace_processor/diff_tests/atrace/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/atrace/tests_error_handling.py b/test/trace_processor/diff_tests/atrace/tests_error_handling.py
similarity index 97%
rename from test/trace_processor/atrace/tests_error_handling.py
rename to test/trace_processor/diff_tests/atrace/tests_error_handling.py
index 41f3dca..3b215bf 100644
--- a/test/trace_processor/atrace/tests_error_handling.py
+++ b/test/trace_processor/diff_tests/atrace/tests_error_handling.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/atrace/tests_general.py b/test/trace_processor/diff_tests/atrace/tests_general.py
similarity index 96%
rename from test/trace_processor/atrace/tests_general.py
rename to test/trace_processor/diff_tests/atrace/tests_general.py
index c99f050..59417c0 100644
--- a/test/trace_processor/atrace/tests_general.py
+++ b/test/trace_processor/diff_tests/atrace/tests_general.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import DiffTestModule
diff --git a/test/trace_processor/camera/camera-ion-mem-trace_android_camera_unagg.out b/test/trace_processor/diff_tests/camera/camera-ion-mem-trace_android_camera_unagg.out
similarity index 100%
rename from test/trace_processor/camera/camera-ion-mem-trace_android_camera_unagg.out
rename to test/trace_processor/diff_tests/camera/camera-ion-mem-trace_android_camera_unagg.out
diff --git a/test/trace_processor/camera/tests.py b/test/trace_processor/diff_tests/camera/tests.py
similarity index 88%
rename from test/trace_processor/camera/tests.py
rename to test/trace_processor/diff_tests/camera/tests.py
index c9fd353..f08e10a 100644
--- a/test/trace_processor/camera/tests.py
+++ b/test/trace_processor/diff_tests/camera/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_camera_ion_mem_trace_android_camera(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/camera-ion-mem-trace'),
+        trace=DataPath('camera-ion-mem-trace'),
         query=Metric('android_camera'),
         out=TextProto(r"""
         android_camera {
@@ -37,6 +37,6 @@
 
   def test_camera_ion_mem_trace_android_camera_unagg(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/camera-ion-mem-trace'),
+        trace=DataPath('camera-ion-mem-trace'),
         query=Metric('android_camera_unagg'),
         out=Path('camera-ion-mem-trace_android_camera_unagg.out'))
diff --git a/test/trace_processor/camera/tests_general.py b/test/trace_processor/diff_tests/camera/tests_general.py
similarity index 88%
rename from test/trace_processor/camera/tests_general.py
rename to test/trace_processor/diff_tests/camera/tests_general.py
index 57180cb..7277796 100644
--- a/test/trace_processor/camera/tests_general.py
+++ b/test/trace_processor/diff_tests/camera/tests_general.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import DiffTestModule
@@ -23,7 +23,7 @@
 
   def test_camera_ion_mem_trace_android_camera(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/camera-ion-mem-trace'),
+        trace=DataPath('camera-ion-mem-trace'),
         query=Metric('android_camera'),
         out=TextProto(r"""
 android_camera {
@@ -37,6 +37,6 @@
 
   def test_camera_ion_mem_trace_android_camera_unagg(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/camera-ion-mem-trace'),
+        trace=DataPath('camera-ion-mem-trace'),
         query=Metric('android_camera_unagg'),
         out=Path('camera-ion-mem-trace_android_camera_unagg.out'))
diff --git a/test/trace_processor/chrome/actual_power_by_combined_rail_mode.py b/test/trace_processor/diff_tests/chrome/actual_power_by_combined_rail_mode.py
similarity index 100%
rename from test/trace_processor/chrome/actual_power_by_combined_rail_mode.py
rename to test/trace_processor/diff_tests/chrome/actual_power_by_combined_rail_mode.py
diff --git a/test/trace_processor/chrome/chrome_dropped_frames_metric_test.sql b/test/trace_processor/diff_tests/chrome/chrome_dropped_frames_metric_test.sql
similarity index 100%
rename from test/trace_processor/chrome/chrome_dropped_frames_metric_test.sql
rename to test/trace_processor/diff_tests/chrome/chrome_dropped_frames_metric_test.sql
diff --git a/test/trace_processor/chrome/chrome_input_to_browser_intervals.out b/test/trace_processor/diff_tests/chrome/chrome_input_to_browser_intervals.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_input_to_browser_intervals.out
rename to test/trace_processor/diff_tests/chrome/chrome_input_to_browser_intervals.out
diff --git a/test/trace_processor/chrome/chrome_log_message_args_test.sql b/test/trace_processor/diff_tests/chrome/chrome_log_message_args_test.sql
similarity index 100%
rename from test/trace_processor/chrome/chrome_log_message_args_test.sql
rename to test/trace_processor/diff_tests/chrome/chrome_log_message_args_test.sql
diff --git a/test/trace_processor/chrome/chrome_long_tasks_delaying_input_processing_compare_default_test.sql b/test/trace_processor/diff_tests/chrome/chrome_long_tasks_delaying_input_processing_compare_default_test.sql
similarity index 100%
rename from test/trace_processor/chrome/chrome_long_tasks_delaying_input_processing_compare_default_test.sql
rename to test/trace_processor/diff_tests/chrome/chrome_long_tasks_delaying_input_processing_compare_default_test.sql
diff --git a/test/trace_processor/chrome/chrome_processes_android_systrace.out b/test/trace_processor/diff_tests/chrome/chrome_processes_android_systrace.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_processes_android_systrace.out
rename to test/trace_processor/diff_tests/chrome/chrome_processes_android_systrace.out
diff --git a/test/trace_processor/chrome/chrome_processes_type_android_systrace.out b/test/trace_processor/diff_tests/chrome/chrome_processes_type_android_systrace.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_processes_type_android_systrace.out
rename to test/trace_processor/diff_tests/chrome/chrome_processes_type_android_systrace.out
diff --git a/test/trace_processor/chrome/chrome_reliable_range.textproto b/test/trace_processor/diff_tests/chrome/chrome_reliable_range.textproto
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range.textproto
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range.textproto
diff --git a/test/trace_processor/chrome/chrome_reliable_range_cropping.textproto b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_cropping.textproto
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_cropping.textproto
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_cropping.textproto
diff --git a/test/trace_processor/chrome/chrome_reliable_range_missing_browser_main.out b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_browser_main.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_missing_browser_main.out
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_browser_main.out
diff --git a/test/trace_processor/chrome/chrome_reliable_range_missing_browser_main.textproto b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_browser_main.textproto
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_missing_browser_main.textproto
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_browser_main.textproto
diff --git a/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_gpu_main.textproto b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_gpu_main.textproto
new file mode 100644
index 0000000..4465a30
--- /dev/null
+++ b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_gpu_main.textproto
@@ -0,0 +1,50 @@
+# There is a Gpu process, but there's no Gpu main thread.
+# The entire trace is unreliable.
+
+packet {
+  timestamp: 1
+  incremental_state_cleared: true
+  trusted_packet_sequence_id: 1
+  track_descriptor {
+    uuid: 1
+    thread {
+      pid: 1
+      tid: 1
+    }
+    parent_uuid: 0
+  }
+}
+packet {
+    timestamp: 2
+    track_descriptor {
+        uuid: 2
+        process {
+            pid: 1
+        }
+        chrome_process {
+            process_type: PROCESS_GPU
+        }
+    }
+}
+
+# Slice begin event
+packet {
+  trusted_packet_sequence_id: 2
+  timestamp: 11
+  track_event {
+    track_uuid: 1
+    categories: "cat"
+    type: 1
+    name: "slice1"
+  }
+}
+# Slice end event
+packet {
+  trusted_packet_sequence_id: 2
+  timestamp: 1011
+  track_event {
+    track_uuid: 1
+    categories: "cat"
+    type: 2
+  }
+}
diff --git a/test/trace_processor/chrome/chrome_reliable_range_missing_processes.textproto b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_processes.textproto
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_missing_processes.textproto
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_processes.textproto
diff --git a/test/trace_processor/chrome/chrome_reliable_range_missing_renderer_main.out b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_renderer_main.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_missing_renderer_main.out
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_renderer_main.out
diff --git a/test/trace_processor/chrome/chrome_reliable_range_missing_renderer_main.textproto b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_renderer_main.textproto
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_missing_renderer_main.textproto
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_missing_renderer_main.textproto
diff --git a/test/trace_processor/chrome/chrome_reliable_range_non_chrome_process.out b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_non_chrome_process.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_non_chrome_process.out
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_non_chrome_process.out
diff --git a/test/trace_processor/chrome/chrome_reliable_range_test.sql b/test/trace_processor/diff_tests/chrome/chrome_reliable_range_test.sql
similarity index 100%
rename from test/trace_processor/chrome/chrome_reliable_range_test.sql
rename to test/trace_processor/diff_tests/chrome/chrome_reliable_range_test.sql
diff --git a/test/trace_processor/chrome/chrome_scroll_jank_caused_by_scheduling_test.out b/test/trace_processor/diff_tests/chrome/chrome_scroll_jank_caused_by_scheduling_test.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_scroll_jank_caused_by_scheduling_test.out
rename to test/trace_processor/diff_tests/chrome/chrome_scroll_jank_caused_by_scheduling_test.out
diff --git a/test/trace_processor/chrome/chrome_stack_samples_for_task_test.out b/test/trace_processor/diff_tests/chrome/chrome_stack_samples_for_task_test.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_stack_samples_for_task_test.out
rename to test/trace_processor/diff_tests/chrome/chrome_stack_samples_for_task_test.out
diff --git a/test/trace_processor/chrome/chrome_tasks.out b/test/trace_processor/diff_tests/chrome/chrome_tasks.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_tasks.out
rename to test/trace_processor/diff_tests/chrome/chrome_tasks.out
diff --git a/test/trace_processor/chrome/chrome_tasks_delaying_input_processing_test.out b/test/trace_processor/diff_tests/chrome/chrome_tasks_delaying_input_processing_test.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_tasks_delaying_input_processing_test.out
rename to test/trace_processor/diff_tests/chrome/chrome_tasks_delaying_input_processing_test.out
diff --git a/test/trace_processor/chrome/chrome_threads.out b/test/trace_processor/diff_tests/chrome/chrome_threads.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_threads.out
rename to test/trace_processor/diff_tests/chrome/chrome_threads.out
diff --git a/test/trace_processor/chrome/chrome_threads_android_systrace.out b/test/trace_processor/diff_tests/chrome/chrome_threads_android_systrace.out
similarity index 100%
rename from test/trace_processor/chrome/chrome_threads_android_systrace.out
rename to test/trace_processor/diff_tests/chrome/chrome_threads_android_systrace.out
diff --git a/test/trace_processor/chrome/combined_rail_modes.py b/test/trace_processor/diff_tests/chrome/combined_rail_modes.py
similarity index 100%
rename from test/trace_processor/chrome/combined_rail_modes.py
rename to test/trace_processor/diff_tests/chrome/combined_rail_modes.py
diff --git a/test/trace_processor/chrome/cpu_time_by_combined_rail_mode.py b/test/trace_processor/diff_tests/chrome/cpu_time_by_combined_rail_mode.py
similarity index 100%
rename from test/trace_processor/chrome/cpu_time_by_combined_rail_mode.py
rename to test/trace_processor/diff_tests/chrome/cpu_time_by_combined_rail_mode.py
diff --git a/test/trace_processor/chrome/estimated_power_by_combined_rail_mode.py b/test/trace_processor/diff_tests/chrome/estimated_power_by_combined_rail_mode.py
similarity index 100%
rename from test/trace_processor/chrome/estimated_power_by_combined_rail_mode.py
rename to test/trace_processor/diff_tests/chrome/estimated_power_by_combined_rail_mode.py
diff --git a/test/trace_processor/chrome/event_latency_scroll_jank.out b/test/trace_processor/diff_tests/chrome/event_latency_scroll_jank.out
similarity index 100%
rename from test/trace_processor/chrome/event_latency_scroll_jank.out
rename to test/trace_processor/diff_tests/chrome/event_latency_scroll_jank.out
diff --git a/test/trace_processor/chrome/event_latency_scroll_jank_cause.out b/test/trace_processor/diff_tests/chrome/event_latency_scroll_jank_cause.out
similarity index 100%
rename from test/trace_processor/chrome/event_latency_scroll_jank_cause.out
rename to test/trace_processor/diff_tests/chrome/event_latency_scroll_jank_cause.out
diff --git a/test/trace_processor/chrome/event_latency_to_breakdowns.out b/test/trace_processor/diff_tests/chrome/event_latency_to_breakdowns.out
similarity index 100%
rename from test/trace_processor/chrome/event_latency_to_breakdowns.out
rename to test/trace_processor/diff_tests/chrome/event_latency_to_breakdowns.out
diff --git a/test/trace_processor/chrome/experimental_reliable_chrome_tasks_delaying_input_processing_test.out b/test/trace_processor/diff_tests/chrome/experimental_reliable_chrome_tasks_delaying_input_processing_test.out
similarity index 100%
rename from test/trace_processor/chrome/experimental_reliable_chrome_tasks_delaying_input_processing_test.out
rename to test/trace_processor/diff_tests/chrome/experimental_reliable_chrome_tasks_delaying_input_processing_test.out
diff --git a/test/trace_processor/chrome/frame_times_metric.out b/test/trace_processor/diff_tests/chrome/frame_times_metric.out
similarity index 100%
rename from test/trace_processor/chrome/frame_times_metric.out
rename to test/trace_processor/diff_tests/chrome/frame_times_metric.out
diff --git a/test/trace_processor/chrome/frame_times_metric_test.sql b/test/trace_processor/diff_tests/chrome/frame_times_metric_test.sql
similarity index 100%
rename from test/trace_processor/chrome/frame_times_metric_test.sql
rename to test/trace_processor/diff_tests/chrome/frame_times_metric_test.sql
diff --git a/test/trace_processor/chrome/index.py b/test/trace_processor/diff_tests/chrome/index.py
similarity index 100%
rename from test/trace_processor/chrome/index.py
rename to test/trace_processor/diff_tests/chrome/index.py
diff --git a/test/trace_processor/chrome/long_event_latency.textproto b/test/trace_processor/diff_tests/chrome/long_event_latency.textproto
similarity index 100%
rename from test/trace_processor/chrome/long_event_latency.textproto
rename to test/trace_processor/diff_tests/chrome/long_event_latency.textproto
diff --git a/test/trace_processor/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_compare_default_test.out b/test/trace_processor/diff_tests/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_compare_default_test.out
similarity index 100%
rename from test/trace_processor/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_compare_default_test.out
rename to test/trace_processor/diff_tests/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_compare_default_test.out
diff --git a/test/trace_processor/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_test.out b/test/trace_processor/diff_tests/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_test.out
similarity index 100%
rename from test/trace_processor/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_test.out
rename to test/trace_processor/diff_tests/chrome/long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_test.out
diff --git a/test/trace_processor/chrome/memory_snapshot_chrome_dump_events.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_chrome_dump_events.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_chrome_dump_events.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_chrome_dump_events.out
diff --git a/test/trace_processor/chrome/memory_snapshot_edges.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_edges.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_edges.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_edges.out
diff --git a/test/trace_processor/chrome/memory_snapshot_general_validation.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_general_validation.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_general_validation.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_general_validation.out
diff --git a/test/trace_processor/chrome/memory_snapshot_node_args.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_node_args.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_node_args.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_node_args.out
diff --git a/test/trace_processor/chrome/memory_snapshot_nodes.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_nodes.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_nodes.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_nodes.out
diff --git a/test/trace_processor/chrome/memory_snapshot_os_dump_events.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_os_dump_events.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_os_dump_events.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_os_dump_events.out
diff --git a/test/trace_processor/chrome/memory_snapshot_os_dump_events_test.sql b/test/trace_processor/diff_tests/chrome/memory_snapshot_os_dump_events_test.sql
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_os_dump_events_test.sql
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_os_dump_events_test.sql
diff --git a/test/trace_processor/chrome/memory_snapshot_smaps.out b/test/trace_processor/diff_tests/chrome/memory_snapshot_smaps.out
similarity index 100%
rename from test/trace_processor/chrome/memory_snapshot_smaps.out
rename to test/trace_processor/diff_tests/chrome/memory_snapshot_smaps.out
diff --git a/test/trace_processor/chrome/modified_rail_modes.py b/test/trace_processor/diff_tests/chrome/modified_rail_modes.py
similarity index 100%
rename from test/trace_processor/chrome/modified_rail_modes.py
rename to test/trace_processor/diff_tests/chrome/modified_rail_modes.py
diff --git a/test/trace_processor/chrome/modified_rail_modes_extra_long.py b/test/trace_processor/diff_tests/chrome/modified_rail_modes_extra_long.py
similarity index 100%
rename from test/trace_processor/chrome/modified_rail_modes_extra_long.py
rename to test/trace_processor/diff_tests/chrome/modified_rail_modes_extra_long.py
diff --git a/test/trace_processor/chrome/modified_rail_modes_long.py b/test/trace_processor/diff_tests/chrome/modified_rail_modes_long.py
similarity index 100%
rename from test/trace_processor/chrome/modified_rail_modes_long.py
rename to test/trace_processor/diff_tests/chrome/modified_rail_modes_long.py
diff --git a/test/trace_processor/chrome/modified_rail_modes_no_vsyncs.py b/test/trace_processor/diff_tests/chrome/modified_rail_modes_no_vsyncs.py
similarity index 100%
rename from test/trace_processor/chrome/modified_rail_modes_no_vsyncs.py
rename to test/trace_processor/diff_tests/chrome/modified_rail_modes_no_vsyncs.py
diff --git a/test/trace_processor/chrome/modified_rail_modes_with_input.py b/test/trace_processor/diff_tests/chrome/modified_rail_modes_with_input.py
similarity index 100%
rename from test/trace_processor/chrome/modified_rail_modes_with_input.py
rename to test/trace_processor/diff_tests/chrome/modified_rail_modes_with_input.py
diff --git a/test/trace_processor/chrome/proto_content.out b/test/trace_processor/diff_tests/chrome/proto_content.out
similarity index 100%
rename from test/trace_processor/chrome/proto_content.out
rename to test/trace_processor/diff_tests/chrome/proto_content.out
diff --git a/test/trace_processor/chrome/proto_content_path_test.sql b/test/trace_processor/diff_tests/chrome/proto_content_path_test.sql
similarity index 100%
rename from test/trace_processor/chrome/proto_content_path_test.sql
rename to test/trace_processor/diff_tests/chrome/proto_content_path_test.sql
diff --git a/test/trace_processor/chrome/proto_content_test.sql b/test/trace_processor/diff_tests/chrome/proto_content_test.sql
similarity index 100%
rename from test/trace_processor/chrome/proto_content_test.sql
rename to test/trace_processor/diff_tests/chrome/proto_content_test.sql
diff --git a/test/trace_processor/chrome/scroll_flow_event.out b/test/trace_processor/diff_tests/chrome/scroll_flow_event.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_flow_event.out
rename to test/trace_processor/diff_tests/chrome/scroll_flow_event.out
diff --git a/test/trace_processor/chrome/scroll_flow_event_general_validation.out b/test/trace_processor/diff_tests/chrome/scroll_flow_event_general_validation.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_flow_event_general_validation.out
rename to test/trace_processor/diff_tests/chrome/scroll_flow_event_general_validation.out
diff --git a/test/trace_processor/chrome/scroll_flow_event_queuing_delay.out b/test/trace_processor/diff_tests/chrome/scroll_flow_event_queuing_delay.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_flow_event_queuing_delay.out
rename to test/trace_processor/diff_tests/chrome/scroll_flow_event_queuing_delay.out
diff --git a/test/trace_processor/chrome/scroll_flow_event_queuing_delay_general_validation_test.sql b/test/trace_processor/diff_tests/chrome/scroll_flow_event_queuing_delay_general_validation_test.sql
similarity index 100%
rename from test/trace_processor/chrome/scroll_flow_event_queuing_delay_general_validation_test.sql
rename to test/trace_processor/diff_tests/chrome/scroll_flow_event_queuing_delay_general_validation_test.sql
diff --git a/test/trace_processor/chrome/scroll_jank.out b/test/trace_processor/diff_tests/chrome/scroll_jank.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank.out
rename to test/trace_processor/diff_tests/chrome/scroll_jank.out
diff --git a/test/trace_processor/chrome/scroll_jank_cause_queuing_delay.out b/test/trace_processor/diff_tests/chrome/scroll_jank_cause_queuing_delay.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_cause_queuing_delay.out
rename to test/trace_processor/diff_tests/chrome/scroll_jank_cause_queuing_delay.out
diff --git a/test/trace_processor/chrome/scroll_jank_cause_queuing_delay_general_validation.out b/test/trace_processor/diff_tests/chrome/scroll_jank_cause_queuing_delay_general_validation.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_cause_queuing_delay_general_validation.out
rename to test/trace_processor/diff_tests/chrome/scroll_jank_cause_queuing_delay_general_validation.out
diff --git a/test/trace_processor/chrome/scroll_jank_cause_queuing_delay_restricted.out b/test/trace_processor/diff_tests/chrome/scroll_jank_cause_queuing_delay_restricted.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_cause_queuing_delay_restricted.out
rename to test/trace_processor/diff_tests/chrome/scroll_jank_cause_queuing_delay_restricted.out
diff --git a/test/trace_processor/chrome/scroll_jank_general_validation.out b/test/trace_processor/diff_tests/chrome/scroll_jank_general_validation.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_general_validation.out
rename to test/trace_processor/diff_tests/chrome/scroll_jank_general_validation.out
diff --git a/test/trace_processor/chrome/scroll_jank_general_validation_test.sql b/test/trace_processor/diff_tests/chrome/scroll_jank_general_validation_test.sql
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_general_validation_test.sql
rename to test/trace_processor/diff_tests/chrome/scroll_jank_general_validation_test.sql
diff --git a/test/trace_processor/chrome/scroll_jank_gpu_check.py b/test/trace_processor/diff_tests/chrome/scroll_jank_gpu_check.py
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_gpu_check.py
rename to test/trace_processor/diff_tests/chrome/scroll_jank_gpu_check.py
diff --git a/test/trace_processor/chrome/scroll_jank_mojo_simple_watcher.out b/test/trace_processor/diff_tests/chrome/scroll_jank_mojo_simple_watcher.out
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_mojo_simple_watcher.out
rename to test/trace_processor/diff_tests/chrome/scroll_jank_mojo_simple_watcher.out
diff --git a/test/trace_processor/chrome/scroll_jank_mojo_simple_watcher.py b/test/trace_processor/diff_tests/chrome/scroll_jank_mojo_simple_watcher.py
similarity index 100%
rename from test/trace_processor/chrome/scroll_jank_mojo_simple_watcher.py
rename to test/trace_processor/diff_tests/chrome/scroll_jank_mojo_simple_watcher.py
diff --git a/test/trace_processor/chrome/tests.py b/test/trace_processor/diff_tests/chrome/tests.py
similarity index 93%
rename from test/trace_processor/chrome/tests.py
rename to test/trace_processor/diff_tests/chrome/tests.py
index b82a956..ec4181e 100644
--- a/test/trace_processor/chrome/tests.py
+++ b/test/trace_processor/diff_tests/chrome/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -179,6 +179,15 @@
         1011,"Missing main thread for upid=1",1,1
         """))
 
+  def test_chrome_reliable_range_missing_gpu_main(self):
+    return DiffTestBlueprint(
+        trace=Path('chrome_reliable_range_missing_gpu_main.textproto'),
+        query=Path('chrome_reliable_range_test.sql'),
+        out=Csv("""
+        "start","reason","debug_limiting_upid","debug_limiting_utid"
+        1011,"Missing main thread for upid=1",1,1
+        """))
+
   def test_chrome_reliable_range_missing_renderer_main(self):
     return DiffTestBlueprint(
         trace=Path('chrome_reliable_range_missing_renderer_main.textproto'),
@@ -192,7 +201,7 @@
     return DiffTestBlueprint(
         # We need a trace with a large number of non-chrome slices, so that the
         # reliable range is affected by their filtering.
-        trace=Path('../../data/example_android_trace_30s.pb'),
+        trace=DataPath('example_android_trace_30s.pb'),
         query=Path('chrome_reliable_range_test.sql'),
         out=Csv("""
         "start","reason","debug_limiting_upid","debug_limiting_utid"
@@ -239,9 +248,8 @@
   # Chrome tasks.
   def test_chrome_tasks(self):
     return DiffTestBlueprint(
-        trace=Path(
-            '../../data/chrome_page_load_all_categories_not_extended.pftrace.gz'
-        ),
+        trace=DataPath(
+            'chrome_page_load_all_categories_not_extended.pftrace.gz'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_tasks.sql');
 
@@ -256,7 +264,7 @@
   def test_top_level_java_choreographer_slices_top_level_java_chrome_tasks(
       self):
     return DiffTestBlueprint(
-        trace=Path('../../data/top_level_java_choreographer_slices'),
+        trace=DataPath('top_level_java_choreographer_slices'),
         query="""
         SELECT RUN_METRIC(
           'chrome/chrome_tasks_template.sql',
@@ -279,7 +287,7 @@
   # Chrome stack samples.
   def test_chrome_stack_samples_for_task(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_stack_traces_symbolized_trace.pftrace'),
+        trace=DataPath('chrome_stack_traces_symbolized_trace.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_stack_samples_for_task.sql',
             'target_duration_ms', '0.000001',
@@ -416,7 +424,7 @@
   # Chrome custom navigation event names
   def test_chrome_custom_navigation_tasks(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_custom_navigation_trace.gz'),
+        trace=DataPath('chrome_custom_navigation_trace.gz'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_tasks.sql');
 
@@ -441,14 +449,14 @@
   # Trace proto content
   def test_proto_content(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query=Path('proto_content_test.sql'),
         out=Path('proto_content.out'))
 
   # TODO(mayzner): Uncomment when it works
   # def test_proto_content_path(self):
   #   return DiffTestBlueprint(
-  #       trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+  #       trace=DataPath('chrome_scroll_without_vsync.pftrace'),
   #       query=Path('proto_content_path_test.sql'),
   #       out=Csv("""
   #       "total_size","field_type","field_name","parent_id","event_category","event_name"
diff --git a/test/trace_processor/chrome/tests_args.py b/test/trace_processor/diff_tests/chrome/tests_args.py
similarity index 95%
rename from test/trace_processor/chrome/tests_args.py
rename to test/trace_processor/diff_tests/chrome/tests_args.py
index 1f8c874..9495525 100644
--- a/test/trace_processor/chrome/tests_args.py
+++ b/test/trace_processor/diff_tests/chrome/tests_args.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -44,7 +44,7 @@
 
   def test_async_trace_1_count_slices(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/async-trace-1.json'),
+        trace=DataPath('async-trace-1.json'),
         query="""
         SELECT COUNT(1) FROM slice;
         """,
@@ -55,7 +55,7 @@
 
   def test_async_trace_2_count_slices(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/async-trace-2.json'),
+        trace=DataPath('async-trace-2.json'),
         query="""
         SELECT COUNT(1) FROM slice;
         """,
diff --git a/test/trace_processor/chrome/tests_general.py b/test/trace_processor/diff_tests/chrome/tests_general.py
similarity index 92%
rename from test/trace_processor/chrome/tests_general.py
rename to test/trace_processor/diff_tests/chrome/tests_general.py
index 18945e3..99938b8 100644
--- a/test/trace_processor/chrome/tests_general.py
+++ b/test/trace_processor/diff_tests/chrome/tests_general.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import DiffTestModule
@@ -98,9 +98,8 @@
 
   def test_chrome_tasks(self):
     return DiffTestBlueprint(
-        trace=Path(
-            '../../data/chrome_page_load_all_categories_not_extended.pftrace.gz'
-        ),
+        trace=DataPath(
+            'chrome_page_load_all_categories_not_extended.pftrace.gz'),
         query="""
 SELECT RUN_METRIC('chrome/chrome_tasks.sql');
 
@@ -115,7 +114,7 @@
   def test_top_level_java_choreographer_slices_top_level_java_chrome_tasks(
       self):
     return DiffTestBlueprint(
-        trace=Path('../../data/top_level_java_choreographer_slices'),
+        trace=DataPath('top_level_java_choreographer_slices'),
         query="""
 SELECT RUN_METRIC(
   'chrome/chrome_tasks_template.sql',
@@ -137,7 +136,7 @@
 
   def test_chrome_stack_samples_for_task(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_stack_traces_symbolized_trace.pftrace'),
+        trace=DataPath('chrome_stack_traces_symbolized_trace.pftrace'),
         query="""
 SELECT RUN_METRIC('chrome/chrome_stack_samples_for_task.sql',
     'target_duration_ms', '0.000001',
@@ -184,7 +183,7 @@
 
   def test_chrome_custom_navigation_tasks(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_custom_navigation_trace.gz'),
+        trace=DataPath('chrome_custom_navigation_trace.gz'),
         query="""
 SELECT RUN_METRIC('chrome/chrome_tasks.sql');
 
@@ -208,6 +207,6 @@
 
   def test_proto_content(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query=Path('proto_content_test.sql'),
         out=Path('proto_content.out'))
diff --git a/test/trace_processor/chrome/tests_memory_snapshots.py b/test/trace_processor/diff_tests/chrome/tests_memory_snapshots.py
similarity index 89%
rename from test/trace_processor/chrome/tests_memory_snapshots.py
rename to test/trace_processor/diff_tests/chrome/tests_memory_snapshots.py
index 3c023eb..07e5341 100644
--- a/test/trace_processor/chrome/tests_memory_snapshots.py
+++ b/test/trace_processor/diff_tests/chrome/tests_memory_snapshots.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_memory_snapshot_general_validation(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query="""
         SELECT
           (
@@ -56,13 +56,13 @@
 
   def test_memory_snapshot_os_dump_events(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query=Path('memory_snapshot_os_dump_events_test.sql'),
         out=Path('memory_snapshot_os_dump_events.out'))
 
   def test_memory_snapshot_chrome_dump_events(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query="""
         SELECT
           pms.id AS process_snapshot_id,
@@ -78,7 +78,7 @@
 
   def test_memory_snapshot_nodes(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query="""
         SELECT
           id,
@@ -94,7 +94,7 @@
 
   def test_memory_snapshot_edges(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query="""
         SELECT
           id,
@@ -108,7 +108,7 @@
 
   def test_memory_snapshot_node_args(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query="""
         SELECT
           node.id AS node_id,
@@ -124,7 +124,7 @@
 
   def test_memory_snapshot_smaps(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_memory_snapshot.pftrace'),
+        trace=DataPath('chrome_memory_snapshot.pftrace'),
         query="""
         SELECT
           process.upid,
diff --git a/test/trace_processor/chrome/tests_processes.py b/test/trace_processor/diff_tests/chrome/tests_processes.py
similarity index 94%
rename from test/trace_processor/chrome/tests_processes.py
rename to test/trace_processor/diff_tests/chrome/tests_processes.py
index 64a1d66..1bb75c5 100644
--- a/test/trace_processor/chrome/tests_processes.py
+++ b/test/trace_processor/diff_tests/chrome/tests_processes.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_chrome_processes(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_processes.sql');
         SELECT pid, name, process_type FROM chrome_process;
@@ -38,7 +38,7 @@
 
   def test_chrome_processes_android_systrace(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_android_systrace.pftrace'),
+        trace=DataPath('chrome_android_systrace.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_processes.sql');
         SELECT pid, name, process_type FROM chrome_process;
@@ -47,7 +47,7 @@
 
   def test_chrome_threads(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_processes.sql');
         SELECT tid, name, is_main_thread, canonical_name
@@ -58,7 +58,7 @@
 
   def test_chrome_threads_android_systrace(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_android_systrace.pftrace'),
+        trace=DataPath('chrome_android_systrace.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_processes.sql');
         SELECT tid, name, is_main_thread, canonical_name
@@ -69,7 +69,7 @@
 
   def test_chrome_processes_type(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT pid, name, string_value AS chrome_process_type
         FROM
@@ -90,7 +90,7 @@
 
   def test_chrome_processes_type_android_systrace(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_android_systrace.pftrace'),
+        trace=DataPath('chrome_android_systrace.pftrace'),
         query="""
         SELECT pid, name, string_value AS chrome_process_type
         FROM
@@ -142,7 +142,7 @@
   # Missing processes.
   def test_chrome_missing_processes_default_trace(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT upid, pid, reliable_from
         FROM
diff --git a/test/trace_processor/chrome/tests_rail_modes.py b/test/trace_processor/diff_tests/chrome/tests_rail_modes.py
similarity index 98%
rename from test/trace_processor/chrome/tests_rail_modes.py
rename to test/trace_processor/diff_tests/chrome/tests_rail_modes.py
index 241cdf3..1e3df14 100644
--- a/test/trace_processor/chrome/tests_rail_modes.py
+++ b/test/trace_processor/diff_tests/chrome/tests_rail_modes.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/chrome/tests_scroll_jank.py b/test/trace_processor/diff_tests/chrome/tests_scroll_jank.py
similarity index 90%
rename from test/trace_processor/chrome/tests_scroll_jank.py
rename to test/trace_processor/diff_tests/chrome/tests_scroll_jank.py
index 6853c0f..c5fd3bc 100644
--- a/test/trace_processor/chrome/tests_scroll_jank.py
+++ b/test/trace_processor/diff_tests/chrome/tests_scroll_jank.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,13 +23,13 @@
   # Scroll jank metrics
   def test_scroll_jank_general_validation(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query=Path('scroll_jank_general_validation_test.sql'),
         out=Path('scroll_jank_general_validation.out'))
 
   def test_scroll_jank(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_jank.sql');
 
@@ -46,7 +46,7 @@
 
   def test_event_latency_to_breakdowns(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/event_latency_with_args.perfetto-trace'),
+        trace=DataPath('event_latency_with_args.perfetto-trace'),
         query="""
         SELECT RUN_METRIC('chrome/event_latency_to_breakdowns.sql');
 
@@ -67,7 +67,7 @@
 
   def test_event_latency_scroll_jank(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/event_latency_with_args.perfetto-trace'),
+        trace=DataPath('event_latency_with_args.perfetto-trace'),
         query="""
         SELECT RUN_METRIC('chrome/event_latency_scroll_jank.sql');
 
@@ -92,7 +92,7 @@
 
   def test_event_latency_scroll_jank_cause(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/event_latency_with_args.perfetto-trace'),
+        trace=DataPath('event_latency_with_args.perfetto-trace'),
         query="""
         SELECT RUN_METRIC('chrome/event_latency_scroll_jank_cause.sql');
 
@@ -114,7 +114,7 @@
 
   def test_scroll_flow_event(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_flow_event.sql');
 
@@ -136,7 +136,7 @@
 
   def test_scroll_flow_event_general_validation(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_flow_event.sql');
 
@@ -168,7 +168,7 @@
 
   def test_scroll_jank_cause(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_jank_cause.sql');
 
@@ -196,7 +196,7 @@
 
   def test_scroll_flow_event_queuing_delay(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_flow_event_queuing_delay.sql');
 
@@ -216,14 +216,14 @@
 
   def test_scroll_flow_event_general_validation_2(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query=Path(
             'scroll_flow_event_queuing_delay_general_validation_test.sql'),
         out=Path('scroll_flow_event_general_validation.out'))
 
   def test_scroll_jank_cause_queuing_delay(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_jank_cause_queuing_delay.sql');
 
@@ -242,7 +242,7 @@
 
   def test_scroll_jank_cause_queuing_delay_restricted(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_jank_cause_queuing_delay.sql');
 
@@ -261,7 +261,7 @@
 
   def test_scroll_jank_cause_queuing_delay_general_validation(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/scroll_jank_cause_queuing_delay.sql');
 
@@ -294,7 +294,7 @@
 
   def test_chrome_thread_slice(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_scroll_without_vsync.pftrace'),
+        trace=DataPath('chrome_scroll_without_vsync.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_thread_slice.sql');
 
@@ -318,8 +318,7 @@
 
   def test_chrome_input_to_browser_intervals(self):
     return DiffTestBlueprint(
-        trace=Path(
-            '../../data/scrolling_with_blocked_nonblocked_frames.pftrace'),
+        trace=DataPath('scrolling_with_blocked_nonblocked_frames.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_input_to_browser_intervals.sql');
 
@@ -333,7 +332,7 @@
 
   def test_chrome_scroll_jank_caused_by_scheduling(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fling_with_input_delay.pftrace'),
+        trace=DataPath('fling_with_input_delay.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_scroll_jank_caused_by_scheduling.sql',
           'dur_causes_jank_ms',
@@ -353,7 +352,7 @@
 
   def test_chrome_tasks_delaying_input_processing(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fling_with_input_delay.pftrace'),
+        trace=DataPath('fling_with_input_delay.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_tasks_delaying_input_processing.sql',
           'duration_causing_jank_ms',
@@ -370,7 +369,7 @@
   def test_long_task_tracking_trace_chrome_long_tasks_delaying_input_processing(
       self):
     return DiffTestBlueprint(
-        trace=Path('../../data/long_task_tracking_trace'),
+        trace=DataPath('long_task_tracking_trace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_long_tasks_delaying_input_processing.sql');
 
@@ -390,7 +389,7 @@
   # long_task_tracking_trace_chrome_long_tasks_delaying_input_processing_compare_default_test.out
   def test_experimental_reliable_chrome_tasks_delaying_input_processing(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fling_with_input_delay.pftrace'),
+        trace=DataPath('fling_with_input_delay.pftrace'),
         query="""
         SELECT RUN_METRIC(
             'chrome/experimental_reliable_chrome_tasks_delaying_input_processing.sql',
@@ -408,8 +407,7 @@
 
   def test_chrome_scroll_inputs_per_frame(self):
     return DiffTestBlueprint(
-        trace=Path(
-            '../../data/scrolling_with_blocked_nonblocked_frames.pftrace'),
+        trace=DataPath('scrolling_with_blocked_nonblocked_frames.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/chrome_scroll_inputs_per_frame.sql');
 
@@ -450,13 +448,13 @@
 
   def test_frame_times_metric(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_rendering_desktop.pftrace'),
+        trace=DataPath('chrome_rendering_desktop.pftrace'),
         query=Metric('frame_times'),
         out=Path('frame_times_metric.out'))
 
   def test_chrome_dropped_frames_metric(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_rendering_desktop.pftrace'),
+        trace=DataPath('chrome_rendering_desktop.pftrace'),
         query=Metric('chrome_dropped_frames'),
         out=TextProto(r"""
         [perfetto.protos.chrome_dropped_frames]: {
diff --git a/test/trace_processor/chrome/tests_touch_gesture.py b/test/trace_processor/diff_tests/chrome/tests_touch_gesture.py
similarity index 93%
rename from test/trace_processor/chrome/tests_touch_gesture.py
rename to test/trace_processor/diff_tests/chrome/tests_touch_gesture.py
index 5ea32a6..245cbff 100644
--- a/test/trace_processor/chrome/tests_touch_gesture.py
+++ b/test/trace_processor/diff_tests/chrome/tests_touch_gesture.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_touch_jank(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_touch_gesture_scroll.pftrace'),
+        trace=DataPath('chrome_touch_gesture_scroll.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/touch_jank.sql');
 
@@ -40,7 +40,7 @@
 
   def test_touch_flow_event(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_touch_gesture_scroll.pftrace'),
+        trace=DataPath('chrome_touch_gesture_scroll.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/touch_flow_event.sql');
 
@@ -62,7 +62,7 @@
 
   def test_touch_flow_event_queuing_delay(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/chrome_touch_gesture_scroll.pftrace'),
+        trace=DataPath('chrome_touch_gesture_scroll.pftrace'),
         query="""
         SELECT RUN_METRIC('chrome/touch_flow_event_queuing_delay.sql');
 
diff --git a/test/trace_processor/chrome/top_level_java_choreographer_slices_top_level_java_chrome_tasks_test.out b/test/trace_processor/diff_tests/chrome/top_level_java_choreographer_slices_top_level_java_chrome_tasks_test.out
similarity index 100%
rename from test/trace_processor/chrome/top_level_java_choreographer_slices_top_level_java_chrome_tasks_test.out
rename to test/trace_processor/diff_tests/chrome/top_level_java_choreographer_slices_top_level_java_chrome_tasks_test.out
diff --git a/test/trace_processor/chrome/touch_flow_event.out b/test/trace_processor/diff_tests/chrome/touch_flow_event.out
similarity index 100%
rename from test/trace_processor/chrome/touch_flow_event.out
rename to test/trace_processor/diff_tests/chrome/touch_flow_event.out
diff --git a/test/trace_processor/chrome/touch_flow_event_queuing_delay.out b/test/trace_processor/diff_tests/chrome/touch_flow_event_queuing_delay.out
similarity index 100%
rename from test/trace_processor/chrome/touch_flow_event_queuing_delay.out
rename to test/trace_processor/diff_tests/chrome/touch_flow_event_queuing_delay.out
diff --git a/test/trace_processor/chrome/touch_flow_event_queuing_delay_synth.out b/test/trace_processor/diff_tests/chrome/touch_flow_event_queuing_delay_synth.out
similarity index 100%
rename from test/trace_processor/chrome/touch_flow_event_queuing_delay_synth.out
rename to test/trace_processor/diff_tests/chrome/touch_flow_event_queuing_delay_synth.out
diff --git a/test/trace_processor/chrome/touch_flow_event_synth.out b/test/trace_processor/diff_tests/chrome/touch_flow_event_synth.out
similarity index 100%
rename from test/trace_processor/chrome/touch_flow_event_synth.out
rename to test/trace_processor/diff_tests/chrome/touch_flow_event_synth.out
diff --git a/test/trace_processor/chrome/touch_jank.out b/test/trace_processor/diff_tests/chrome/touch_jank.out
similarity index 100%
rename from test/trace_processor/chrome/touch_jank.out
rename to test/trace_processor/diff_tests/chrome/touch_jank.out
diff --git a/test/trace_processor/chrome/touch_jank.py b/test/trace_processor/diff_tests/chrome/touch_jank.py
similarity index 100%
rename from test/trace_processor/chrome/touch_jank.py
rename to test/trace_processor/diff_tests/chrome/touch_jank.py
diff --git a/test/trace_processor/chrome/unsymbolized_args.textproto b/test/trace_processor/diff_tests/chrome/unsymbolized_args.textproto
similarity index 100%
rename from test/trace_processor/chrome/unsymbolized_args.textproto
rename to test/trace_processor/diff_tests/chrome/unsymbolized_args.textproto
diff --git a/test/trace_processor/common/synth_1.py b/test/trace_processor/diff_tests/common/synth_1.py
similarity index 100%
rename from test/trace_processor/common/synth_1.py
rename to test/trace_processor/diff_tests/common/synth_1.py
diff --git a/test/trace_processor/cros/cros_ec_sensorhub_data.out b/test/trace_processor/diff_tests/cros/cros_ec_sensorhub_data.out
similarity index 100%
rename from test/trace_processor/cros/cros_ec_sensorhub_data.out
rename to test/trace_processor/diff_tests/cros/cros_ec_sensorhub_data.out
diff --git a/test/trace_processor/cros/tests.py b/test/trace_processor/diff_tests/cros/tests.py
similarity index 96%
rename from test/trace_processor/cros/tests.py
rename to test/trace_processor/diff_tests/cros/tests.py
index 6e62772..dc71bce 100644
--- a/test/trace_processor/cros/tests.py
+++ b/test/trace_processor/diff_tests/cros/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/cros/tests_general.py b/test/trace_processor/diff_tests/cros/tests_general.py
similarity index 94%
rename from test/trace_processor/cros/tests_general.py
rename to test/trace_processor/diff_tests/cros/tests_general.py
index b535a88..5f012db 100644
--- a/test/trace_processor/cros/tests_general.py
+++ b/test/trace_processor/diff_tests/cros/tests_general.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import DiffTestModule
diff --git a/test/trace_processor/dynamic/ancestor_slice.out b/test/trace_processor/diff_tests/dynamic/ancestor_slice.out
similarity index 100%
rename from test/trace_processor/dynamic/ancestor_slice.out
rename to test/trace_processor/diff_tests/dynamic/ancestor_slice.out
diff --git a/test/trace_processor/dynamic/connected_flow.out b/test/trace_processor/diff_tests/dynamic/connected_flow.out
similarity index 100%
rename from test/trace_processor/dynamic/connected_flow.out
rename to test/trace_processor/diff_tests/dynamic/connected_flow.out
diff --git a/test/trace_processor/dynamic/connected_flow_data.json b/test/trace_processor/diff_tests/dynamic/connected_flow_data.json
similarity index 100%
rename from test/trace_processor/dynamic/connected_flow_data.json
rename to test/trace_processor/diff_tests/dynamic/connected_flow_data.json
diff --git a/test/trace_processor/dynamic/connected_flow_test.sql b/test/trace_processor/diff_tests/dynamic/connected_flow_test.sql
similarity index 100%
rename from test/trace_processor/dynamic/connected_flow_test.sql
rename to test/trace_processor/diff_tests/dynamic/connected_flow_test.sql
diff --git a/test/trace_processor/dynamic/descendant_slice.out b/test/trace_processor/diff_tests/dynamic/descendant_slice.out
similarity index 100%
rename from test/trace_processor/dynamic/descendant_slice.out
rename to test/trace_processor/diff_tests/dynamic/descendant_slice.out
diff --git a/test/trace_processor/dynamic/perf_sample_sc_annotated_callstack.out b/test/trace_processor/diff_tests/dynamic/perf_sample_sc_annotated_callstack.out
similarity index 100%
rename from test/trace_processor/dynamic/perf_sample_sc_annotated_callstack.out
rename to test/trace_processor/diff_tests/dynamic/perf_sample_sc_annotated_callstack.out
diff --git a/test/trace_processor/dynamic/relationship_tables.textproto b/test/trace_processor/diff_tests/dynamic/relationship_tables.textproto
similarity index 100%
rename from test/trace_processor/dynamic/relationship_tables.textproto
rename to test/trace_processor/diff_tests/dynamic/relationship_tables.textproto
diff --git a/test/trace_processor/dynamic/slice_stacks.textproto b/test/trace_processor/diff_tests/dynamic/slice_stacks.textproto
similarity index 100%
rename from test/trace_processor/dynamic/slice_stacks.textproto
rename to test/trace_processor/diff_tests/dynamic/slice_stacks.textproto
diff --git a/test/trace_processor/dynamic/tests.py b/test/trace_processor/diff_tests/dynamic/tests.py
similarity index 97%
rename from test/trace_processor/dynamic/tests.py
rename to test/trace_processor/diff_tests/dynamic/tests.py
index 4753dcc..24589ee 100644
--- a/test/trace_processor/dynamic/tests.py
+++ b/test/trace_processor/diff_tests/dynamic/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -90,7 +90,7 @@
   # Annotated callstacks.
   def test_perf_sample_sc_annotated_callstack(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/perf_sample_sc.pb'),
+        trace=DataPath('perf_sample_sc.pb'),
         query="""
         SELECT eac.id, eac.depth, eac.frame_id, eac.annotation,
                spf.name
diff --git a/test/trace_processor/dynamic/various_clocks.textproto b/test/trace_processor/diff_tests/dynamic/various_clocks.textproto
similarity index 100%
rename from test/trace_processor/dynamic/various_clocks.textproto
rename to test/trace_processor/diff_tests/dynamic/various_clocks.textproto
diff --git a/test/trace_processor/dynamic/various_clocks_abs_time_str.out b/test/trace_processor/diff_tests/dynamic/various_clocks_abs_time_str.out
similarity index 100%
rename from test/trace_processor/dynamic/various_clocks_abs_time_str.out
rename to test/trace_processor/diff_tests/dynamic/various_clocks_abs_time_str.out
diff --git a/test/trace_processor/fs/f2fs_iostat.out b/test/trace_processor/diff_tests/fs/f2fs_iostat.out
similarity index 100%
rename from test/trace_processor/fs/f2fs_iostat.out
rename to test/trace_processor/diff_tests/fs/f2fs_iostat.out
diff --git a/test/trace_processor/fs/f2fs_iostat.textproto b/test/trace_processor/diff_tests/fs/f2fs_iostat.textproto
similarity index 100%
rename from test/trace_processor/fs/f2fs_iostat.textproto
rename to test/trace_processor/diff_tests/fs/f2fs_iostat.textproto
diff --git a/test/trace_processor/fs/f2fs_iostat_latency.out b/test/trace_processor/diff_tests/fs/f2fs_iostat_latency.out
similarity index 100%
rename from test/trace_processor/fs/f2fs_iostat_latency.out
rename to test/trace_processor/diff_tests/fs/f2fs_iostat_latency.out
diff --git a/test/trace_processor/fs/f2fs_iostat_latency.textproto b/test/trace_processor/diff_tests/fs/f2fs_iostat_latency.textproto
similarity index 100%
rename from test/trace_processor/fs/f2fs_iostat_latency.textproto
rename to test/trace_processor/diff_tests/fs/f2fs_iostat_latency.textproto
diff --git a/test/trace_processor/fs/tests.py b/test/trace_processor/diff_tests/fs/tests.py
similarity index 95%
rename from test/trace_processor/fs/tests.py
rename to test/trace_processor/diff_tests/fs/tests.py
index a1f0a85..3fb6b6a 100644
--- a/test/trace_processor/fs/tests.py
+++ b/test/trace_processor/diff_tests/fs/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/fuchsia/fuchsia_workstation_smoke_slices.out b/test/trace_processor/diff_tests/fuchsia/fuchsia_workstation_smoke_slices.out
similarity index 100%
rename from test/trace_processor/fuchsia/fuchsia_workstation_smoke_slices.out
rename to test/trace_processor/diff_tests/fuchsia/fuchsia_workstation_smoke_slices.out
diff --git a/test/trace_processor/fuchsia/tests.py b/test/trace_processor/diff_tests/fuchsia/tests.py
similarity index 84%
rename from test/trace_processor/fuchsia/tests.py
rename to test/trace_processor/diff_tests/fuchsia/tests.py
index bcaccb4..86d08a7 100644
--- a/test/trace_processor/fuchsia/tests.py
+++ b/test/trace_processor/diff_tests/fuchsia/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -24,7 +24,7 @@
   # types.
   def test_fuchsia_smoke(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_trace.fxt'),
+        trace=DataPath('fuchsia_trace.fxt'),
         query="""
         SELECT
           ts,
@@ -54,7 +54,7 @@
 
   def test_fuchsia_smoke_slices(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_trace.fxt'),
+        trace=DataPath('fuchsia_trace.fxt'),
         query="""
         SELECT track.type AS type, depth, count(*) AS count
         FROM slice
@@ -70,7 +70,7 @@
 
   def test_fuchsia_smoke_instants(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_trace.fxt'),
+        trace=DataPath('fuchsia_trace.fxt'),
         query="""
         SELECT
           ts,
@@ -96,7 +96,7 @@
 
   def test_fuchsia_smoke_counters(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_trace.fxt'),
+        trace=DataPath('fuchsia_trace.fxt'),
         query="""
         SELECT
           ts,
@@ -107,16 +107,16 @@
         """,
         out=Csv("""
         "ts","value","name"
-        20329439768,30.331177,"cpu_usage:average_cpu_percentage"
-        21331281870,7.829745,"cpu_usage:average_cpu_percentage"
-        22332302017,9.669818,"cpu_usage:average_cpu_percentage"
-        23332974162,6.421237,"cpu_usage:average_cpu_percentage"
-        24333405767,12.079849,"cpu_usage:average_cpu_percentage"
+        20329439768,30.331177,"cpu_usage:average_cpu_percentage:0"
+        21331281870,7.829745,"cpu_usage:average_cpu_percentage:0"
+        22332302017,9.669818,"cpu_usage:average_cpu_percentage:0"
+        23332974162,6.421237,"cpu_usage:average_cpu_percentage:0"
+        24333405767,12.079849,"cpu_usage:average_cpu_percentage:0"
         """))
 
   def test_fuchsia_smoke_flow(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_trace.fxt'),
+        trace=DataPath('fuchsia_trace.fxt'),
         query="""
         SELECT
           id,
@@ -141,7 +141,7 @@
 
   def test_fuchsia_smoke_type(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_trace.fxt'),
+        trace=DataPath('fuchsia_trace.fxt'),
         query="""
         SELECT
           id,
@@ -157,7 +157,7 @@
         2,"[NULL]","thread_track"
         3,"[NULL]","thread_track"
         4,"[NULL]","thread_track"
-        5,"cpu_usage:average_cpu_percentage","process_counter_track"
+        5,"cpu_usage:average_cpu_percentage:0","process_counter_track"
         6,"[NULL]","thread_track"
         7,"[NULL]","thread_track"
         8,"[NULL]","thread_track"
@@ -167,7 +167,7 @@
   # Smoke test a high-CPU trace.
   def test_fuchsia_workstation_smoke_slices(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_workstation.fxt'),
+        trace=DataPath('fuchsia_workstation.fxt'),
         query="""
         SELECT track.type AS type, depth, count(*) AS count
         FROM slice
@@ -179,7 +179,7 @@
 
   def test_fuchsia_workstation_smoke_args(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/fuchsia_workstation.fxt'),
+        trace=DataPath('fuchsia_workstation.fxt'),
         query="""
         SELECT
           key,
diff --git a/test/trace_processor/diff_tests/functions/tests.py b/test/trace_processor/diff_tests/functions/tests.py
new file mode 100644
index 0000000..516fb81
--- /dev/null
+++ b/test/trace_processor/diff_tests/functions/tests.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Path, DataPath, Metric
+from python.generators.diff_tests.testing import Csv, Json, TextProto
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+
+class Functions(TestSuite):
+
+  def test_first_non_null_frame(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        CREATE TABLE TEST(id INTEGER, val INTEGER);
+
+        INSERT INTO TEST
+        VALUES (1, 1), (2, NULL), (3, 3), (4, 4), (5, NULL), (6, NULL), (7, NULL);
+
+        SELECT
+          id,
+          LAST_NON_NULL(val)
+          OVER (ORDER BY id ASC ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING) AS val
+        FROM TEST
+        ORDER BY id ASC;
+        """,
+        out=Csv("""
+        "id","val"
+        1,3
+        2,4
+        3,4
+        4,4
+        5,"[NULL]"
+        6,"[NULL]"
+        7,"[NULL]"
+        """))
+
+  def test_first_non_null_partition(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        CREATE TABLE TEST(id INTEGER, part TEXT, val INTEGER);
+
+        INSERT INTO TEST
+        VALUES
+        (1, 'A', 1),
+        (2, 'A', NULL),
+        (3, 'A', 3),
+        (4, 'B', NULL),
+        (5, 'B', 5),
+        (6, 'B', NULL),
+        (7, 'B', 7);
+
+        SELECT id, LAST_NON_NULL(val) OVER (PARTITION BY part ORDER BY id ASC) AS val
+        FROM TEST
+        ORDER BY id ASC;
+        """,
+        out=Csv("""
+        "id","val"
+        1,1
+        2,1
+        3,3
+        4,"[NULL]"
+        5,5
+        6,5
+        7,7
+        """))
+
+  def test_first_non_null(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        CREATE TABLE TEST(id INTEGER, val INTEGER);
+
+        INSERT INTO TEST
+        VALUES (1, 1), (2, NULL), (3, 3), (4, 4), (5, NULL), (6, NULL), (7, NULL);
+
+        SELECT id, LAST_NON_NULL(val) OVER (ORDER BY id ASC) AS val
+        FROM TEST
+        ORDER BY id ASC;
+        """,
+        out=Csv("""
+        "id","val"
+        1,1
+        2,1
+        3,3
+        4,4
+        5,4
+        6,4
+        7,4
+        """))
+
+  def test_spans_overlapping_dur_intersect_edge(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(0, 2, 1, 2) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        1
+        """))
+
+  def test_spans_overlapping_dur_intersect_edge_reversed(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(1, 2, 0, 2) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        1
+        """))
+
+  def test_spans_overlapping_dur_intersect_all(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(0, 3, 1, 1) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        1
+        """))
+
+  def test_spans_overlapping_dur_intersect_all_reversed(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(1, 1, 0, 3) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        1
+        """))
+
+  def test_spans_overlapping_dur_no_intersect(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(0, 1, 2, 1) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        0
+        """))
+
+  def test_spans_overlapping_dur_no_intersect_reversed(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(2, 1, 0, 1) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        0
+        """))
+
+  def test_spans_overlapping_dur_negative_dur(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(0, -1, 0, 1) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        0
+        """))
+
+  def test_spans_overlapping_dur_negative_dur_reversed(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+
+        """),
+        query="""
+        SELECT IMPORT('common.timestamps');
+        SELECT SPANS_OVERLAPPING_DUR(0, 1, 0, -1) AS dur
+        """,
+        out=Csv("""
+        "dur"
+        0
+        """))
diff --git a/test/trace_processor/graphics/actual_frame_timeline_events.out b/test/trace_processor/diff_tests/graphics/actual_frame_timeline_events.out
similarity index 100%
rename from test/trace_processor/graphics/actual_frame_timeline_events.out
rename to test/trace_processor/diff_tests/graphics/actual_frame_timeline_events.out
diff --git a/test/trace_processor/graphics/actual_frame_timeline_events_test.sql b/test/trace_processor/diff_tests/graphics/actual_frame_timeline_events_test.sql
similarity index 100%
rename from test/trace_processor/graphics/actual_frame_timeline_events_test.sql
rename to test/trace_processor/diff_tests/graphics/actual_frame_timeline_events_test.sql
diff --git a/test/trace_processor/graphics/android_jank_cuj.out b/test/trace_processor/diff_tests/graphics/android_jank_cuj.out
similarity index 93%
rename from test/trace_processor/graphics/android_jank_cuj.out
rename to test/trace_processor/diff_tests/graphics/android_jank_cuj.out
index 063e02a..bdb6392 100644
--- a/test/trace_processor/graphics/android_jank_cuj.out
+++ b/test/trace_processor/diff_tests/graphics/android_jank_cuj.out
@@ -138,6 +138,10 @@
       frame_dur_p90: 34000000
       frame_dur_p95: 37000000
       frame_dur_p99: 39400000
+      frame_dur_ms_p50: 24.0
+      frame_dur_ms_p90: 34.0
+      frame_dur_ms_p95: 37.0
+      frame_dur_ms_p99: 39.400000000000006
     }
     trace_metrics {
       total_frames: 6
@@ -150,6 +154,10 @@
       frame_dur_p90: 34000000
       frame_dur_p95: 37000000
       frame_dur_p99: 39400000
+      frame_dur_ms_p50: 24.0
+      frame_dur_ms_p90: 34.0
+      frame_dur_ms_p95: 37.0
+      frame_dur_ms_p99: 39.400000000000006
     }
   }
   cuj {
@@ -354,6 +362,10 @@
       frame_dur_p90: 58900000
       frame_dur_p95: 61000000
       frame_dur_p99: 61000000
+      frame_dur_ms_p50: 22.5
+      frame_dur_ms_p90: 58.900000000000006
+      frame_dur_ms_p95: 61.0
+      frame_dur_ms_p99: 61.0
     }
     trace_metrics {
       total_frames: 12
@@ -366,6 +378,10 @@
       frame_dur_p90: 60500000
       frame_dur_p95: 61000000
       frame_dur_p99: 61000000
+      frame_dur_ms_p50: 25.3
+      frame_dur_ms_p90: 60.5
+      frame_dur_ms_p95: 61.0
+      frame_dur_ms_p99: 61.0
     }
   }
 }
diff --git a/test/trace_processor/graphics/android_jank_cuj.py b/test/trace_processor/diff_tests/graphics/android_jank_cuj.py
similarity index 100%
rename from test/trace_processor/graphics/android_jank_cuj.py
rename to test/trace_processor/diff_tests/graphics/android_jank_cuj.py
diff --git a/test/trace_processor/graphics/android_jank_cuj_query.out b/test/trace_processor/diff_tests/graphics/android_jank_cuj_query.out
similarity index 100%
rename from test/trace_processor/graphics/android_jank_cuj_query.out
rename to test/trace_processor/diff_tests/graphics/android_jank_cuj_query.out
diff --git a/test/trace_processor/graphics/android_jank_cuj_query_test.sql b/test/trace_processor/diff_tests/graphics/android_jank_cuj_query_test.sql
similarity index 100%
rename from test/trace_processor/graphics/android_jank_cuj_query_test.sql
rename to test/trace_processor/diff_tests/graphics/android_jank_cuj_query_test.sql
diff --git a/test/trace_processor/graphics/clock_sync.py b/test/trace_processor/diff_tests/graphics/clock_sync.py
similarity index 100%
rename from test/trace_processor/graphics/clock_sync.py
rename to test/trace_processor/diff_tests/graphics/clock_sync.py
diff --git a/test/trace_processor/graphics/composer_execution.py b/test/trace_processor/diff_tests/graphics/composer_execution.py
similarity index 100%
rename from test/trace_processor/graphics/composer_execution.py
rename to test/trace_processor/diff_tests/graphics/composer_execution.py
diff --git a/test/trace_processor/graphics/composition_layer.py b/test/trace_processor/diff_tests/graphics/composition_layer.py
similarity index 100%
rename from test/trace_processor/graphics/composition_layer.py
rename to test/trace_processor/diff_tests/graphics/composition_layer.py
diff --git a/test/trace_processor/graphics/display_metrics.py b/test/trace_processor/diff_tests/graphics/display_metrics.py
similarity index 100%
rename from test/trace_processor/graphics/display_metrics.py
rename to test/trace_processor/diff_tests/graphics/display_metrics.py
diff --git a/test/trace_processor/graphics/dpu_vote_clock_bw.textproto b/test/trace_processor/diff_tests/graphics/dpu_vote_clock_bw.textproto
similarity index 100%
rename from test/trace_processor/graphics/dpu_vote_clock_bw.textproto
rename to test/trace_processor/diff_tests/graphics/dpu_vote_clock_bw.textproto
diff --git a/test/trace_processor/graphics/drm_dma_fence.textproto b/test/trace_processor/diff_tests/graphics/drm_dma_fence.textproto
similarity index 100%
rename from test/trace_processor/graphics/drm_dma_fence.textproto
rename to test/trace_processor/diff_tests/graphics/drm_dma_fence.textproto
diff --git a/test/trace_processor/graphics/drm_sched.textproto b/test/trace_processor/diff_tests/graphics/drm_sched.textproto
similarity index 100%
rename from test/trace_processor/graphics/drm_sched.textproto
rename to test/trace_processor/diff_tests/graphics/drm_sched.textproto
diff --git a/test/trace_processor/graphics/expected_frame_timeline_events_test.sql b/test/trace_processor/diff_tests/graphics/expected_frame_timeline_events_test.sql
similarity index 100%
rename from test/trace_processor/graphics/expected_frame_timeline_events_test.sql
rename to test/trace_processor/diff_tests/graphics/expected_frame_timeline_events_test.sql
diff --git a/test/trace_processor/graphics/frame_missed.py b/test/trace_processor/diff_tests/graphics/frame_missed.py
similarity index 100%
rename from test/trace_processor/graphics/frame_missed.py
rename to test/trace_processor/diff_tests/graphics/frame_missed.py
diff --git a/test/trace_processor/graphics/frame_timeline_events.py b/test/trace_processor/diff_tests/graphics/frame_timeline_events.py
similarity index 100%
rename from test/trace_processor/graphics/frame_timeline_events.py
rename to test/trace_processor/diff_tests/graphics/frame_timeline_events.py
diff --git a/test/trace_processor/graphics/g2d_metrics.out b/test/trace_processor/diff_tests/graphics/g2d_metrics.out
similarity index 100%
rename from test/trace_processor/graphics/g2d_metrics.out
rename to test/trace_processor/diff_tests/graphics/g2d_metrics.out
diff --git a/test/trace_processor/graphics/g2d_metrics.textproto b/test/trace_processor/diff_tests/graphics/g2d_metrics.textproto
similarity index 100%
rename from test/trace_processor/graphics/g2d_metrics.textproto
rename to test/trace_processor/diff_tests/graphics/g2d_metrics.textproto
diff --git a/test/trace_processor/graphics/gpu_counter_specs.textproto b/test/trace_processor/diff_tests/graphics/gpu_counter_specs.textproto
similarity index 100%
rename from test/trace_processor/graphics/gpu_counter_specs.textproto
rename to test/trace_processor/diff_tests/graphics/gpu_counter_specs.textproto
diff --git a/test/trace_processor/graphics/gpu_counters.py b/test/trace_processor/diff_tests/graphics/gpu_counters.py
similarity index 100%
rename from test/trace_processor/graphics/gpu_counters.py
rename to test/trace_processor/diff_tests/graphics/gpu_counters.py
diff --git a/test/trace_processor/graphics/gpu_frequency_metric.out b/test/trace_processor/diff_tests/graphics/gpu_frequency_metric.out
similarity index 100%
rename from test/trace_processor/graphics/gpu_frequency_metric.out
rename to test/trace_processor/diff_tests/graphics/gpu_frequency_metric.out
diff --git a/test/trace_processor/graphics/gpu_frequency_metric.textproto b/test/trace_processor/diff_tests/graphics/gpu_frequency_metric.textproto
similarity index 100%
rename from test/trace_processor/graphics/gpu_frequency_metric.textproto
rename to test/trace_processor/diff_tests/graphics/gpu_frequency_metric.textproto
diff --git a/test/trace_processor/graphics/gpu_log.py b/test/trace_processor/diff_tests/graphics/gpu_log.py
similarity index 100%
rename from test/trace_processor/graphics/gpu_log.py
rename to test/trace_processor/diff_tests/graphics/gpu_log.py
diff --git a/test/trace_processor/graphics/gpu_mem_total.py b/test/trace_processor/diff_tests/graphics/gpu_mem_total.py
similarity index 100%
rename from test/trace_processor/graphics/gpu_mem_total.py
rename to test/trace_processor/diff_tests/graphics/gpu_mem_total.py
diff --git a/test/trace_processor/graphics/gpu_mem_total_after_free.py b/test/trace_processor/diff_tests/graphics/gpu_mem_total_after_free.py
similarity index 100%
rename from test/trace_processor/graphics/gpu_mem_total_after_free.py
rename to test/trace_processor/diff_tests/graphics/gpu_mem_total_after_free.py
diff --git a/test/trace_processor/graphics/gpu_mem_total_test.sql b/test/trace_processor/diff_tests/graphics/gpu_mem_total_test.sql
similarity index 100%
rename from test/trace_processor/graphics/gpu_mem_total_test.sql
rename to test/trace_processor/diff_tests/graphics/gpu_mem_total_test.sql
diff --git a/test/trace_processor/graphics/gpu_metric.py b/test/trace_processor/diff_tests/graphics/gpu_metric.py
similarity index 100%
rename from test/trace_processor/graphics/gpu_metric.py
rename to test/trace_processor/diff_tests/graphics/gpu_metric.py
diff --git a/test/trace_processor/graphics/gpu_render_stages.out b/test/trace_processor/diff_tests/graphics/gpu_render_stages.out
similarity index 100%
rename from test/trace_processor/graphics/gpu_render_stages.out
rename to test/trace_processor/diff_tests/graphics/gpu_render_stages.out
diff --git a/test/trace_processor/graphics/gpu_render_stages.py b/test/trace_processor/diff_tests/graphics/gpu_render_stages.py
similarity index 100%
rename from test/trace_processor/graphics/gpu_render_stages.py
rename to test/trace_processor/diff_tests/graphics/gpu_render_stages.py
diff --git a/test/trace_processor/graphics/gpu_render_stages_interned_spec.out b/test/trace_processor/diff_tests/graphics/gpu_render_stages_interned_spec.out
similarity index 100%
rename from test/trace_processor/graphics/gpu_render_stages_interned_spec.out
rename to test/trace_processor/diff_tests/graphics/gpu_render_stages_interned_spec.out
diff --git a/test/trace_processor/graphics/gpu_render_stages_interned_spec.textproto b/test/trace_processor/diff_tests/graphics/gpu_render_stages_interned_spec.textproto
similarity index 100%
rename from test/trace_processor/graphics/gpu_render_stages_interned_spec.textproto
rename to test/trace_processor/diff_tests/graphics/gpu_render_stages_interned_spec.textproto
diff --git a/test/trace_processor/graphics/gpu_render_stages_test.sql b/test/trace_processor/diff_tests/graphics/gpu_render_stages_test.sql
similarity index 100%
rename from test/trace_processor/graphics/gpu_render_stages_test.sql
rename to test/trace_processor/diff_tests/graphics/gpu_render_stages_test.sql
diff --git a/test/trace_processor/graphics/graphics_frame_events.out b/test/trace_processor/diff_tests/graphics/graphics_frame_events.out
similarity index 100%
rename from test/trace_processor/graphics/graphics_frame_events.out
rename to test/trace_processor/diff_tests/graphics/graphics_frame_events.out
diff --git a/test/trace_processor/graphics/graphics_frame_events.py b/test/trace_processor/diff_tests/graphics/graphics_frame_events.py
similarity index 100%
rename from test/trace_processor/graphics/graphics_frame_events.py
rename to test/trace_processor/diff_tests/graphics/graphics_frame_events.py
diff --git a/test/trace_processor/graphics/surfaceflinger_gpu_invocation.py b/test/trace_processor/diff_tests/graphics/surfaceflinger_gpu_invocation.py
similarity index 100%
rename from test/trace_processor/graphics/surfaceflinger_gpu_invocation.py
rename to test/trace_processor/diff_tests/graphics/surfaceflinger_gpu_invocation.py
diff --git a/test/trace_processor/graphics/tests.py b/test/trace_processor/diff_tests/graphics/tests.py
similarity index 99%
rename from test/trace_processor/graphics/tests.py
rename to test/trace_processor/diff_tests/graphics/tests.py
index 3e23aa6..b9b74c8 100644
--- a/test/trace_processor/graphics/tests.py
+++ b/test/trace_processor/diff_tests/graphics/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/graphics/tests_drm_related_ftrace_events.py b/test/trace_processor/diff_tests/graphics/tests_drm_related_ftrace_events.py
similarity index 98%
rename from test/trace_processor/graphics/tests_drm_related_ftrace_events.py
rename to test/trace_processor/diff_tests/graphics/tests_drm_related_ftrace_events.py
index fa318d5..51bed18 100644
--- a/test/trace_processor/graphics/tests_drm_related_ftrace_events.py
+++ b/test/trace_processor/diff_tests/graphics/tests_drm_related_ftrace_events.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/graphics/tests_gpu_trace.py b/test/trace_processor/diff_tests/graphics/tests_gpu_trace.py
similarity index 98%
rename from test/trace_processor/graphics/tests_gpu_trace.py
rename to test/trace_processor/diff_tests/graphics/tests_gpu_trace.py
index 2dd3453..ead5000 100644
--- a/test/trace_processor/graphics/tests_gpu_trace.py
+++ b/test/trace_processor/diff_tests/graphics/tests_gpu_trace.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/graphics/v4l2_vidioc.textproto b/test/trace_processor/diff_tests/graphics/v4l2_vidioc.textproto
similarity index 100%
rename from test/trace_processor/graphics/v4l2_vidioc.textproto
rename to test/trace_processor/diff_tests/graphics/v4l2_vidioc.textproto
diff --git a/test/trace_processor/graphics/v4l2_vidioc_flow.out b/test/trace_processor/diff_tests/graphics/v4l2_vidioc_flow.out
similarity index 100%
rename from test/trace_processor/graphics/v4l2_vidioc_flow.out
rename to test/trace_processor/diff_tests/graphics/v4l2_vidioc_flow.out
diff --git a/test/trace_processor/graphics/virtio_gpu.textproto b/test/trace_processor/diff_tests/graphics/virtio_gpu.textproto
similarity index 100%
rename from test/trace_processor/graphics/virtio_gpu.textproto
rename to test/trace_processor/diff_tests/graphics/virtio_gpu.textproto
diff --git a/test/trace_processor/graphics/virtio_video.textproto b/test/trace_processor/diff_tests/graphics/virtio_video.textproto
similarity index 100%
rename from test/trace_processor/graphics/virtio_video.textproto
rename to test/trace_processor/diff_tests/graphics/virtio_video.textproto
diff --git a/test/trace_processor/graphics/vulkan_api_events.out b/test/trace_processor/diff_tests/graphics/vulkan_api_events.out
similarity index 100%
rename from test/trace_processor/graphics/vulkan_api_events.out
rename to test/trace_processor/diff_tests/graphics/vulkan_api_events.out
diff --git a/test/trace_processor/graphics/vulkan_api_events.py b/test/trace_processor/diff_tests/graphics/vulkan_api_events.py
similarity index 100%
rename from test/trace_processor/graphics/vulkan_api_events.py
rename to test/trace_processor/diff_tests/graphics/vulkan_api_events.py
diff --git a/test/trace_processor/diff_tests/include_index.py b/test/trace_processor/diff_tests/include_index.py
new file mode 100644
index 0000000..09e084e
--- /dev/null
+++ b/test/trace_processor/diff_tests/include_index.py
@@ -0,0 +1,160 @@
+#!/usr/bin/env python3
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import os
+import sys
+from typing import List
+
+from python.generators.diff_tests import testing
+
+# A hack to import using `diff_tests.` which prevents the risk name conflicts,
+# i.e importing a module when user has a different package of the same name
+# installed.
+TRACE_PROCESSOR_TEST_DIR = os.path.dirname(
+    os.path.dirname(os.path.abspath(__file__)))
+sys.path.append(TRACE_PROCESSOR_TEST_DIR)
+
+from diff_tests.android.tests import Android
+from diff_tests.android.tests_bugreport import AndroidBugreport
+from diff_tests.android.tests_games import AndroidGames
+from diff_tests.atrace.tests import Atrace
+from diff_tests.atrace.tests_error_handling import AtraceErrorHandling
+from diff_tests.camera.tests import Camera
+from diff_tests.chrome.tests import Chrome
+from diff_tests.chrome.tests_args import ChromeArgs
+from diff_tests.chrome.tests_memory_snapshots import ChromeMemorySnapshots
+from diff_tests.chrome.tests_processes import ChromeProcesses
+from diff_tests.chrome.tests_rail_modes import ChromeRailModes
+from diff_tests.chrome.tests_scroll_jank import ChromeScrollJank
+from diff_tests.chrome.tests_touch_gesture import ChromeTouchGesture
+from diff_tests.cros.tests import Cros
+from diff_tests.dynamic.tests import Dynamic
+from diff_tests.fs.tests import Fs
+from diff_tests.fuchsia.tests import Fuchsia
+from diff_tests.functions.tests import Functions
+from diff_tests.graphics.tests import Graphics
+from diff_tests.graphics.tests_drm_related_ftrace_events import \
+    GraphicsDrmRelatedFtraceEvents
+from diff_tests.graphics.tests_gpu_trace import GraphicsGpuTrace
+from diff_tests.memory.tests import Memory
+from diff_tests.memory.tests_metrics import MemoryMetrics
+from diff_tests.network.tests import Network
+from diff_tests.parsing.tests import Parsing
+from diff_tests.parsing.tests_memory_counters import ParsingMemoryCounters
+from diff_tests.parsing.tests_rss_stats import ParsingRssStats
+from diff_tests.performance.tests import Performance
+from diff_tests.power.tests import Power
+from diff_tests.power.tests_energy_breakdown import PowerEnergyBreakdown
+from diff_tests.power.tests_power_rails import PowerPowerRails
+from diff_tests.power.tests_voltage_and_scaling import PowerVoltageAndScaling
+from diff_tests.process_tracking.tests import ProcessTracking
+from diff_tests.profiling.tests import Profiling
+from diff_tests.profiling.tests_heap_graph import ProfilingHeapGraph
+from diff_tests.profiling.tests_heap_profiling import ProfilingHeapProfiling
+from diff_tests.profiling.tests_llvm_symbolizer import ProfilingLlvmSymbolizer
+from diff_tests.profiling.tests_metrics import ProfilingMetrics
+from diff_tests.scheduler.tests import Scheduler
+from diff_tests.smoke.tests import Smoke
+from diff_tests.smoke.tests_compute_metrics import SmokeComputeMetrics
+from diff_tests.smoke.tests_json import SmokeJson
+from diff_tests.smoke.tests_sched_events import SmokeSchedEvents
+from diff_tests.span_join.tests_left_join import SpanJoinLeftJoin
+from diff_tests.span_join.tests_outer_join import SpanJoinOuterJoin
+from diff_tests.span_join.tests_regression import SpanJoinRegression
+from diff_tests.span_join.tests_smoke import SpanJoinSmoke
+from diff_tests.startup.tests import Startup
+from diff_tests.startup.tests_broadcasts import StartupBroadcasts
+from diff_tests.startup.tests_lock_contention import StartupLockContention
+from diff_tests.startup.tests_metrics import StartupMetrics
+from diff_tests.tables.tests import Tables
+from diff_tests.tables.tests_counters import TablesCounters
+from diff_tests.tables.tests_sched import TablesSched
+from diff_tests.track_event.tests import TrackEvent
+from diff_tests.translation.tests import Translation
+from diff_tests.ufs.tests import Ufs
+
+sys.path.pop()
+
+
+def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
+  return [
+      *Android(index_path, 'android', 'Android').fetch(),
+      *AndroidBugreport(index_path, 'android', 'AndroidBugreport').fetch(),
+      *AndroidGames(index_path, 'android', 'AndroidGames').fetch(),
+      *Atrace(index_path, 'atrace', 'Atrace').fetch(),
+      *AtraceErrorHandling(index_path, 'atrace', 'AtraceErrorHandling').fetch(),
+      *Camera(index_path, 'camera', 'Camera').fetch(),
+      *ChromeScrollJank(index_path, 'chrome', 'ChromeScrollJank').fetch(),
+      *ChromeTouchGesture(index_path, 'chrome', 'ChromeTouchGesture').fetch(),
+      *ChromeMemorySnapshots(index_path, 'chrome',
+                             'ChromeMemorySnapshots').fetch(),
+      *ChromeRailModes(index_path, 'chrome', 'ChromeRailModes').fetch(),
+      *ChromeProcesses(index_path, 'chrome', 'ChromeProcesses').fetch(),
+      *ChromeArgs(index_path, 'chrome', 'ChromeArgs').fetch(),
+      *Chrome(index_path, 'chrome', 'Chrome').fetch(),
+      *Cros(index_path, 'cros', 'Cros').fetch(),
+      *Dynamic(index_path, 'dynamic', 'Dynamic').fetch(),
+      *Fs(index_path, 'fs', 'Fs').fetch(),
+      *Fuchsia(index_path, 'fuchsia', 'Fuchsia').fetch(),
+      *Functions(index_path, 'functions', 'Functions').fetch(),
+      *Graphics(index_path, 'graphics', 'Graphics').fetch(),
+      *GraphicsGpuTrace(index_path, 'graphics', 'GraphicsGpuTrace').fetch(),
+      *GraphicsDrmRelatedFtraceEvents(index_path, 'graphics',
+                                      'GraphicsDrmRelatedFtraceEvents').fetch(),
+      *Ufs(index_path, 'ufs', 'Ufs').fetch(),
+      *Memory(index_path, 'memory', 'Memory').fetch(),
+      *MemoryMetrics(index_path, 'memory', 'MemoryMetrics').fetch(),
+      *Network(index_path, 'network', 'Network').fetch(),
+      *Parsing(index_path, 'parsing', 'Parsing').fetch(),
+      *ParsingRssStats(index_path, 'parsing', 'ParsingRssStats').fetch(),
+      *ParsingMemoryCounters(index_path, 'parsing',
+                             'ParsingMemoryCounters').fetch(),
+      *Performance(index_path, 'performance', 'Performance').fetch(),
+      *Power(index_path, 'power', 'Power').fetch(),
+      *PowerPowerRails(index_path, 'power', 'PowerPowerRails').fetch(),
+      *PowerVoltageAndScaling(index_path, 'power',
+                              'PowerVoltageAndScaling').fetch(),
+      *PowerEnergyBreakdown(index_path, 'power',
+                            'PowerEnergyBreakdown').fetch(),
+      *ProcessTracking(index_path, 'process_tracking',
+                       'ProcessTracking').fetch(),
+      *Profiling(index_path, 'profiling', 'Profiling').fetch(),
+      *ProfilingHeapProfiling(index_path, 'profiling',
+                              'ProfilingHeapProfiling').fetch(),
+      *ProfilingHeapGraph(index_path, 'profiling',
+                          'ProfilingHeapGraph').fetch(),
+      *ProfilingMetrics(index_path, 'profiling', 'ProfilingMetrics').fetch(),
+      *ProfilingLlvmSymbolizer(index_path, 'profiling',
+                               'ProfilingLlvmSymbolizer').fetch(),
+      *Scheduler(index_path, 'scheduler', 'Scheduler').fetch(),
+      *Smoke(index_path, 'smoke', 'Smoke').fetch(),
+      *SmokeJson(index_path, 'smoke', 'SmokeJson').fetch(),
+      *SmokeSchedEvents(index_path, 'smoke', 'SmokeSchedEvents').fetch(),
+      *SmokeComputeMetrics(index_path, 'smoke', 'SmokeComputeMetrics').fetch(),
+      *SpanJoinOuterJoin(index_path, 'span_join', 'SpanJoinOuterJoin').fetch(),
+      *SpanJoinLeftJoin(index_path, 'span_join', 'SpanJoinLeftJoin').fetch(),
+      *SpanJoinSmoke(index_path, 'span_join', 'SpanJoinSmoke').fetch(),
+      *SpanJoinRegression(index_path, 'span_join',
+                          'SpanJoinRegression').fetch(),
+      *Startup(index_path, 'startup', 'Startup').fetch(),
+      *StartupBroadcasts(index_path, 'startup', 'StartupBroadcasts').fetch(),
+      *StartupMetrics(index_path, 'startup', 'StartupMetrics').fetch(),
+      *StartupLockContention(index_path, 'startup',
+                             'StartupLockContention').fetch(),
+      *Tables(index_path, 'tables', 'Tables').fetch(),
+      *TablesCounters(index_path, 'tables', 'TablesCounters').fetch(),
+      *TablesSched(index_path, 'tables', 'TablesSched').fetch(),
+      *TrackEvent(index_path, 'track_event', 'TrackEvent').fetch(),
+      *Translation(index_path, 'translation', 'Translation').fetch(),
+  ]
diff --git a/test/trace_processor/memory/android_ion.py b/test/trace_processor/diff_tests/memory/android_ion.py
similarity index 100%
rename from test/trace_processor/memory/android_ion.py
rename to test/trace_processor/diff_tests/memory/android_ion.py
diff --git a/test/trace_processor/memory/android_lmk_reason.out b/test/trace_processor/diff_tests/memory/android_lmk_reason.out
similarity index 100%
rename from test/trace_processor/memory/android_lmk_reason.out
rename to test/trace_processor/diff_tests/memory/android_lmk_reason.out
diff --git a/test/trace_processor/memory/android_mem_by_priority.out b/test/trace_processor/diff_tests/memory/android_mem_by_priority.out
similarity index 100%
rename from test/trace_processor/memory/android_mem_by_priority.out
rename to test/trace_processor/diff_tests/memory/android_mem_by_priority.out
diff --git a/test/trace_processor/memory/android_mem_by_priority.py b/test/trace_processor/diff_tests/memory/android_mem_by_priority.py
similarity index 100%
rename from test/trace_processor/memory/android_mem_by_priority.py
rename to test/trace_processor/diff_tests/memory/android_mem_by_priority.py
diff --git a/test/trace_processor/memory/android_mem_counters.out b/test/trace_processor/diff_tests/memory/android_mem_counters.out
similarity index 100%
rename from test/trace_processor/memory/android_mem_counters.out
rename to test/trace_processor/diff_tests/memory/android_mem_counters.out
diff --git a/test/trace_processor/memory/android_mem_delta.py b/test/trace_processor/diff_tests/memory/android_mem_delta.py
similarity index 100%
rename from test/trace_processor/memory/android_mem_delta.py
rename to test/trace_processor/diff_tests/memory/android_mem_delta.py
diff --git a/test/trace_processor/memory/android_systrace_lmk.py b/test/trace_processor/diff_tests/memory/android_systrace_lmk.py
similarity index 100%
rename from test/trace_processor/memory/android_systrace_lmk.py
rename to test/trace_processor/diff_tests/memory/android_systrace_lmk.py
diff --git a/test/trace_processor/memory/tests.py b/test/trace_processor/diff_tests/memory/tests.py
similarity index 98%
rename from test/trace_processor/memory/tests.py
rename to test/trace_processor/diff_tests/memory/tests.py
index 076373c..aca4edf 100644
--- a/test/trace_processor/memory/tests.py
+++ b/test/trace_processor/diff_tests/memory/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/memory/tests_metrics.py b/test/trace_processor/diff_tests/memory/tests_metrics.py
similarity index 94%
rename from test/trace_processor/memory/tests_metrics.py
rename to test/trace_processor/diff_tests/memory/tests_metrics.py
index 88c86b5..8a45185 100644
--- a/test/trace_processor/memory/tests_metrics.py
+++ b/test/trace_processor/diff_tests/memory/tests_metrics.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,13 +23,13 @@
 
   def test_android_mem_counters(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query=Metric('android_mem'),
         out=Path('android_mem_counters.out'))
 
   def test_trace_metadata(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query=Metric('trace_metadata'),
         out=Path('trace_metadata.out'))
 
diff --git a/test/trace_processor/memory/trace_metadata.out b/test/trace_processor/diff_tests/memory/trace_metadata.out
similarity index 100%
rename from test/trace_processor/memory/trace_metadata.out
rename to test/trace_processor/diff_tests/memory/trace_metadata.out
diff --git a/test/trace_processor/network/inet_sock_set_state.textproto b/test/trace_processor/diff_tests/network/inet_sock_set_state.textproto
similarity index 100%
rename from test/trace_processor/network/inet_sock_set_state.textproto
rename to test/trace_processor/diff_tests/network/inet_sock_set_state.textproto
diff --git a/test/trace_processor/network/napi_gro_receive.textproto b/test/trace_processor/diff_tests/network/napi_gro_receive.textproto
similarity index 100%
rename from test/trace_processor/network/napi_gro_receive.textproto
rename to test/trace_processor/diff_tests/network/napi_gro_receive.textproto
diff --git a/test/trace_processor/network/net_dev_xmit.textproto b/test/trace_processor/diff_tests/network/net_dev_xmit.textproto
similarity index 100%
rename from test/trace_processor/network/net_dev_xmit.textproto
rename to test/trace_processor/diff_tests/network/net_dev_xmit.textproto
diff --git a/test/trace_processor/network/netif_receive_skb.textproto b/test/trace_processor/diff_tests/network/netif_receive_skb.textproto
similarity index 100%
rename from test/trace_processor/network/netif_receive_skb.textproto
rename to test/trace_processor/diff_tests/network/netif_receive_skb.textproto
diff --git a/test/trace_processor/network/netperf_metric.out b/test/trace_processor/diff_tests/network/netperf_metric.out
similarity index 100%
rename from test/trace_processor/network/netperf_metric.out
rename to test/trace_processor/diff_tests/network/netperf_metric.out
diff --git a/test/trace_processor/network/netperf_metric.textproto b/test/trace_processor/diff_tests/network/netperf_metric.textproto
similarity index 100%
rename from test/trace_processor/network/netperf_metric.textproto
rename to test/trace_processor/diff_tests/network/netperf_metric.textproto
diff --git a/test/trace_processor/network/tests.py b/test/trace_processor/diff_tests/network/tests.py
similarity index 98%
rename from test/trace_processor/network/tests.py
rename to test/trace_processor/diff_tests/network/tests.py
index 7e71926..a8bdd72 100644
--- a/test/trace_processor/network/tests.py
+++ b/test/trace_processor/diff_tests/network/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/parsing/all_atoms_test.sql b/test/trace_processor/diff_tests/parsing/all_atoms_test.sql
similarity index 100%
rename from test/trace_processor/parsing/all_atoms_test.sql
rename to test/trace_processor/diff_tests/parsing/all_atoms_test.sql
diff --git a/test/trace_processor/parsing/android_binder.py b/test/trace_processor/diff_tests/parsing/android_binder.py
similarity index 100%
rename from test/trace_processor/parsing/android_binder.py
rename to test/trace_processor/diff_tests/parsing/android_binder.py
diff --git a/test/trace_processor/parsing/android_log_counts_test.sql b/test/trace_processor/diff_tests/parsing/android_log_counts_test.sql
similarity index 100%
rename from test/trace_processor/parsing/android_log_counts_test.sql
rename to test/trace_processor/diff_tests/parsing/android_log_counts_test.sql
diff --git a/test/trace_processor/parsing/android_log_msgs.out b/test/trace_processor/diff_tests/parsing/android_log_msgs.out
similarity index 100%
rename from test/trace_processor/parsing/android_log_msgs.out
rename to test/trace_processor/diff_tests/parsing/android_log_msgs.out
diff --git a/test/trace_processor/parsing/android_log_msgs_test.sql b/test/trace_processor/diff_tests/parsing/android_log_msgs_test.sql
similarity index 100%
rename from test/trace_processor/parsing/android_log_msgs_test.sql
rename to test/trace_processor/diff_tests/parsing/android_log_msgs_test.sql
diff --git a/test/trace_processor/parsing/android_multiuser_switch.textproto b/test/trace_processor/diff_tests/parsing/android_multiuser_switch.textproto
similarity index 100%
rename from test/trace_processor/parsing/android_multiuser_switch.textproto
rename to test/trace_processor/diff_tests/parsing/android_multiuser_switch.textproto
diff --git a/test/trace_processor/parsing/android_package_list.py b/test/trace_processor/diff_tests/parsing/android_package_list.py
similarity index 100%
rename from test/trace_processor/parsing/android_package_list.py
rename to test/trace_processor/diff_tests/parsing/android_package_list.py
diff --git a/test/trace_processor/parsing/android_sched_and_ps_stats.out b/test/trace_processor/diff_tests/parsing/android_sched_and_ps_stats.out
similarity index 100%
rename from test/trace_processor/parsing/android_sched_and_ps_stats.out
rename to test/trace_processor/diff_tests/parsing/android_sched_and_ps_stats.out
diff --git a/test/trace_processor/parsing/args_string_filter_null_test.sql b/test/trace_processor/diff_tests/parsing/args_string_filter_null_test.sql
similarity index 100%
rename from test/trace_processor/parsing/args_string_filter_null_test.sql
rename to test/trace_processor/diff_tests/parsing/args_string_filter_null_test.sql
diff --git a/test/trace_processor/parsing/b120487929_test.sql b/test/trace_processor/diff_tests/parsing/b120487929_test.sql
similarity index 100%
rename from test/trace_processor/parsing/b120487929_test.sql
rename to test/trace_processor/diff_tests/parsing/b120487929_test.sql
diff --git a/test/trace_processor/parsing/cgroup_attach_task_post_s_print_systrace.out b/test/trace_processor/diff_tests/parsing/cgroup_attach_task_post_s_print_systrace.out
similarity index 100%
rename from test/trace_processor/parsing/cgroup_attach_task_post_s_print_systrace.out
rename to test/trace_processor/diff_tests/parsing/cgroup_attach_task_post_s_print_systrace.out
diff --git a/test/trace_processor/parsing/cgroup_attach_task_pre_s_print_systrace.out b/test/trace_processor/diff_tests/parsing/cgroup_attach_task_pre_s_print_systrace.out
similarity index 100%
rename from test/trace_processor/parsing/cgroup_attach_task_pre_s_print_systrace.out
rename to test/trace_processor/diff_tests/parsing/cgroup_attach_task_pre_s_print_systrace.out
diff --git a/test/trace_processor/parsing/chrome_metadata.out b/test/trace_processor/diff_tests/parsing/chrome_metadata.out
similarity index 100%
rename from test/trace_processor/parsing/chrome_metadata.out
rename to test/trace_processor/diff_tests/parsing/chrome_metadata.out
diff --git a/test/trace_processor/parsing/cpu_counters_b120487929.out b/test/trace_processor/diff_tests/parsing/cpu_counters_b120487929.out
similarity index 100%
rename from test/trace_processor/parsing/cpu_counters_b120487929.out
rename to test/trace_processor/diff_tests/parsing/cpu_counters_b120487929.out
diff --git a/test/trace_processor/parsing/cpu_freq.out b/test/trace_processor/diff_tests/parsing/cpu_freq.out
similarity index 100%
rename from test/trace_processor/parsing/cpu_freq.out
rename to test/trace_processor/diff_tests/parsing/cpu_freq.out
diff --git a/test/trace_processor/parsing/cpu_info.textproto b/test/trace_processor/diff_tests/parsing/cpu_info.textproto
similarity index 100%
rename from test/trace_processor/parsing/cpu_info.textproto
rename to test/trace_processor/diff_tests/parsing/cpu_info.textproto
diff --git a/test/trace_processor/parsing/flow_events_json_v1.json b/test/trace_processor/diff_tests/parsing/flow_events_json_v1.json
similarity index 100%
rename from test/trace_processor/parsing/flow_events_json_v1.json
rename to test/trace_processor/diff_tests/parsing/flow_events_json_v1.json
diff --git a/test/trace_processor/parsing/flow_events_json_v2.json b/test/trace_processor/diff_tests/parsing/flow_events_json_v2.json
similarity index 100%
rename from test/trace_processor/parsing/flow_events_json_v2.json
rename to test/trace_processor/diff_tests/parsing/flow_events_json_v2.json
diff --git a/test/trace_processor/parsing/ftrace_with_tracing_start.py b/test/trace_processor/diff_tests/parsing/ftrace_with_tracing_start.py
similarity index 100%
rename from test/trace_processor/parsing/ftrace_with_tracing_start.py
rename to test/trace_processor/diff_tests/parsing/ftrace_with_tracing_start.py
diff --git a/test/trace_processor/parsing/funcgraph_trace.textproto b/test/trace_processor/diff_tests/parsing/funcgraph_trace.textproto
similarity index 100%
rename from test/trace_processor/parsing/funcgraph_trace.textproto
rename to test/trace_processor/diff_tests/parsing/funcgraph_trace.textproto
diff --git a/test/trace_processor/parsing/kernel_dpu_tmw_counter_thread_counter_and_track.out b/test/trace_processor/diff_tests/parsing/kernel_dpu_tmw_counter_thread_counter_and_track.out
similarity index 100%
rename from test/trace_processor/parsing/kernel_dpu_tmw_counter_thread_counter_and_track.out
rename to test/trace_processor/diff_tests/parsing/kernel_dpu_tmw_counter_thread_counter_and_track.out
diff --git a/test/trace_processor/parsing/kernel_tmw_counter.textproto b/test/trace_processor/diff_tests/parsing/kernel_tmw_counter.textproto
similarity index 100%
rename from test/trace_processor/parsing/kernel_tmw_counter.textproto
rename to test/trace_processor/diff_tests/parsing/kernel_tmw_counter.textproto
diff --git a/test/trace_processor/parsing/kernel_tmw_counter_thread_counter_and_track.out b/test/trace_processor/diff_tests/parsing/kernel_tmw_counter_thread_counter_and_track.out
similarity index 100%
rename from test/trace_processor/parsing/kernel_tmw_counter_thread_counter_and_track.out
rename to test/trace_processor/diff_tests/parsing/kernel_tmw_counter_thread_counter_and_track.out
diff --git a/test/trace_processor/parsing/mm_event.out b/test/trace_processor/diff_tests/parsing/mm_event.out
similarity index 100%
rename from test/trace_processor/parsing/mm_event.out
rename to test/trace_processor/diff_tests/parsing/mm_event.out
diff --git a/test/trace_processor/parsing/oom_query_test.sql b/test/trace_processor/diff_tests/parsing/oom_query_test.sql
similarity index 100%
rename from test/trace_processor/parsing/oom_query_test.sql
rename to test/trace_processor/diff_tests/parsing/oom_query_test.sql
diff --git a/test/trace_processor/parsing/otheruuids.textproto b/test/trace_processor/diff_tests/parsing/otheruuids.textproto
similarity index 100%
rename from test/trace_processor/parsing/otheruuids.textproto
rename to test/trace_processor/diff_tests/parsing/otheruuids.textproto
diff --git a/test/trace_processor/parsing/print_systrace_lmk_userspace.out b/test/trace_processor/diff_tests/parsing/print_systrace_lmk_userspace.out
similarity index 100%
rename from test/trace_processor/parsing/print_systrace_lmk_userspace.out
rename to test/trace_processor/diff_tests/parsing/print_systrace_lmk_userspace.out
diff --git a/test/trace_processor/parsing/print_systrace_unsigned.out b/test/trace_processor/diff_tests/parsing/print_systrace_unsigned.out
similarity index 100%
rename from test/trace_processor/parsing/print_systrace_unsigned.out
rename to test/trace_processor/diff_tests/parsing/print_systrace_unsigned.out
diff --git a/test/trace_processor/parsing/print_systrace_unsigned.py b/test/trace_processor/diff_tests/parsing/print_systrace_unsigned.py
similarity index 100%
rename from test/trace_processor/parsing/print_systrace_unsigned.py
rename to test/trace_processor/diff_tests/parsing/print_systrace_unsigned.py
diff --git a/test/trace_processor/parsing/process_stats_poll_oom_score.out b/test/trace_processor/diff_tests/parsing/process_stats_poll_oom_score.out
similarity index 100%
rename from test/trace_processor/parsing/process_stats_poll_oom_score.out
rename to test/trace_processor/diff_tests/parsing/process_stats_poll_oom_score.out
diff --git a/test/trace_processor/parsing/rss_stat_after_free.py b/test/trace_processor/diff_tests/parsing/rss_stat_after_free.py
similarity index 100%
rename from test/trace_processor/parsing/rss_stat_after_free.py
rename to test/trace_processor/diff_tests/parsing/rss_stat_after_free.py
diff --git a/test/trace_processor/parsing/rss_stat_legacy.py b/test/trace_processor/diff_tests/parsing/rss_stat_legacy.py
similarity index 100%
rename from test/trace_processor/parsing/rss_stat_legacy.py
rename to test/trace_processor/diff_tests/parsing/rss_stat_legacy.py
diff --git a/test/trace_processor/parsing/rss_stat_mm_id.py b/test/trace_processor/diff_tests/parsing/rss_stat_mm_id.py
similarity index 100%
rename from test/trace_processor/parsing/rss_stat_mm_id.py
rename to test/trace_processor/diff_tests/parsing/rss_stat_mm_id.py
diff --git a/test/trace_processor/parsing/rss_stat_mm_id_clone.py b/test/trace_processor/diff_tests/parsing/rss_stat_mm_id_clone.py
similarity index 100%
rename from test/trace_processor/parsing/rss_stat_mm_id_clone.py
rename to test/trace_processor/diff_tests/parsing/rss_stat_mm_id_clone.py
diff --git a/test/trace_processor/parsing/rss_stat_mm_id_reuse.py b/test/trace_processor/diff_tests/parsing/rss_stat_mm_id_reuse.py
similarity index 100%
rename from test/trace_processor/parsing/rss_stat_mm_id_reuse.py
rename to test/trace_processor/diff_tests/parsing/rss_stat_mm_id_reuse.py
diff --git a/test/trace_processor/parsing/sched_blocked_proto.py b/test/trace_processor/diff_tests/parsing/sched_blocked_proto.py
similarity index 100%
rename from test/trace_processor/parsing/sched_blocked_proto.py
rename to test/trace_processor/diff_tests/parsing/sched_blocked_proto.py
diff --git a/test/trace_processor/parsing/sched_blocked_reason_symbolized.textproto b/test/trace_processor/diff_tests/parsing/sched_blocked_reason_symbolized.textproto
similarity index 100%
rename from test/trace_processor/parsing/sched_blocked_reason_symbolized.textproto
rename to test/trace_processor/diff_tests/parsing/sched_blocked_reason_symbolized.textproto
diff --git a/test/trace_processor/parsing/sched_blocked_reason_symbolized_to_systrace.out b/test/trace_processor/diff_tests/parsing/sched_blocked_reason_symbolized_to_systrace.out
similarity index 100%
rename from test/trace_processor/parsing/sched_blocked_reason_symbolized_to_systrace.out
rename to test/trace_processor/diff_tests/parsing/sched_blocked_reason_symbolized_to_systrace.out
diff --git a/test/trace_processor/parsing/sched_blocked_systrace.systrace b/test/trace_processor/diff_tests/parsing/sched_blocked_systrace.systrace
similarity index 100%
rename from test/trace_processor/parsing/sched_blocked_systrace.systrace
rename to test/trace_processor/diff_tests/parsing/sched_blocked_systrace.systrace
diff --git a/test/trace_processor/parsing/sched_slices_sched_switch_compact.out b/test/trace_processor/diff_tests/parsing/sched_slices_sched_switch_compact.out
similarity index 100%
rename from test/trace_processor/parsing/sched_slices_sched_switch_compact.out
rename to test/trace_processor/diff_tests/parsing/sched_slices_sched_switch_compact.out
diff --git a/test/trace_processor/parsing/sched_slices_sched_switch_original.out b/test/trace_processor/diff_tests/parsing/sched_slices_sched_switch_original.out
similarity index 100%
rename from test/trace_processor/parsing/sched_slices_sched_switch_original.out
rename to test/trace_processor/diff_tests/parsing/sched_slices_sched_switch_original.out
diff --git a/test/trace_processor/parsing/sched_waking_instants_compact_sched.out b/test/trace_processor/diff_tests/parsing/sched_waking_instants_compact_sched.out
similarity index 100%
rename from test/trace_processor/parsing/sched_waking_instants_compact_sched.out
rename to test/trace_processor/diff_tests/parsing/sched_waking_instants_compact_sched.out
diff --git a/test/trace_processor/parsing/sched_waking_raw_compact_sched.out b/test/trace_processor/diff_tests/parsing/sched_waking_raw_compact_sched.out
similarity index 100%
rename from test/trace_processor/parsing/sched_waking_raw_compact_sched.out
rename to test/trace_processor/diff_tests/parsing/sched_waking_raw_compact_sched.out
diff --git a/test/trace_processor/parsing/sched_waking_raw_test.sql b/test/trace_processor/diff_tests/parsing/sched_waking_raw_test.sql
similarity index 100%
rename from test/trace_processor/parsing/sched_waking_raw_test.sql
rename to test/trace_processor/diff_tests/parsing/sched_waking_raw_test.sql
diff --git a/test/trace_processor/parsing/statsd_atoms_all_atoms.out b/test/trace_processor/diff_tests/parsing/statsd_atoms_all_atoms.out
similarity index 100%
rename from test/trace_processor/parsing/statsd_atoms_all_atoms.out
rename to test/trace_processor/diff_tests/parsing/statsd_atoms_all_atoms.out
diff --git a/test/trace_processor/parsing/synth_oom.py b/test/trace_processor/diff_tests/parsing/synth_oom.py
similarity index 100%
rename from test/trace_processor/parsing/synth_oom.py
rename to test/trace_processor/diff_tests/parsing/synth_oom.py
diff --git a/test/trace_processor/parsing/synth_oom_oom_query.out b/test/trace_processor/diff_tests/parsing/synth_oom_oom_query.out
similarity index 100%
rename from test/trace_processor/parsing/synth_oom_oom_query.out
rename to test/trace_processor/diff_tests/parsing/synth_oom_oom_query.out
diff --git a/test/trace_processor/parsing/syscall.py b/test/trace_processor/diff_tests/parsing/syscall.py
similarity index 100%
rename from test/trace_processor/parsing/syscall.py
rename to test/trace_processor/diff_tests/parsing/syscall.py
diff --git a/test/trace_processor/parsing/systrace_html.out b/test/trace_processor/diff_tests/parsing/systrace_html.out
similarity index 100%
rename from test/trace_processor/parsing/systrace_html.out
rename to test/trace_processor/diff_tests/parsing/systrace_html.out
diff --git a/test/trace_processor/parsing/tests.py b/test/trace_processor/diff_tests/parsing/tests.py
similarity index 92%
rename from test/trace_processor/parsing/tests.py
rename to test/trace_processor/diff_tests/parsing/tests.py
index 8a2b17e..69a8d94 100644
--- a/test/trace_processor/parsing/tests.py
+++ b/test/trace_processor/diff_tests/parsing/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -30,7 +30,7 @@
   # modularisation of diff tests. Sched
   def test_ts_desc_filter_android_sched_and_ps(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT ts
         FROM sched
@@ -56,7 +56,7 @@
   # Sched reason
   def test_android_sched_and_ps_end_reason_eq(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT end_state, count(*)
         FROM sched
@@ -70,7 +70,7 @@
 
   def test_android_sched_and_ps_end_reason_neq(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT end_state, count(*)
         FROM sched
@@ -89,7 +89,7 @@
   # CPU Frequency
   def test_cpu_counters_b120487929(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/cpu_counters.pb'),
+        trace=DataPath('cpu_counters.pb'),
         query=Path('b120487929_test.sql'),
         out=Path('cpu_counters_b120487929.out'))
 
@@ -116,7 +116,7 @@
   # start a slice). Six slices in this case.
   def test_sched_slices_sched_switch_original(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/sched_switch_original.pb'),
+        trace=DataPath('sched_switch_original.pb'),
         query="""
         SELECT ts, cpu, dur, ts_end, end_state, priority, tid, name
         FROM sched JOIN thread ON sched.utid = thread.utid
@@ -126,7 +126,7 @@
 
   def test_sched_slices_sched_switch_compact(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/sched_switch_compact.pb'),
+        trace=DataPath('sched_switch_compact.pb'),
         query="""
         SELECT ts, cpu, dur, ts_end, end_state, priority, tid, name
         FROM sched JOIN thread ON sched.utid = thread.utid
@@ -138,13 +138,13 @@
   # Verifies the contents of raw & instants tables.
   def test_sched_waking_raw_compact_sched(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/compact_sched.pb'),
+        trace=DataPath('compact_sched.pb'),
         query=Path('sched_waking_raw_test.sql'),
         out=Path('sched_waking_raw_compact_sched.out'))
 
   def test_sched_waking_instants_compact_sched(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/compact_sched.pb'),
+        trace=DataPath('compact_sched.pb'),
         query="""
         SELECT ts, thread.name, thread.tid
         FROM thread_state
@@ -157,7 +157,7 @@
   # Mm Event
   def test_mm_event(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/mm_event.pb'),
+        trace=DataPath('mm_event.pb'),
         query="""
         SELECT ts, name, value
         FROM counter
@@ -172,7 +172,7 @@
   # Check the systrace conversion code in the raw table. Print events
   def test_print_systrace_lmk_userspace(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/lmk_userspace.pb'),
+        trace=DataPath('lmk_userspace.pb'),
         query="""
         SELECT to_ftrace(id)
         FROM raw;
@@ -333,7 +333,7 @@
   # Parsing systrace files
   def test_systrace_html(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/systrace.html'),
+        trace=DataPath('systrace.html'),
         query="""
         SELECT ts, cpu, dur, ts_end, utid, end_state, priority, upid, name, tid
         FROM sched
@@ -344,7 +344,7 @@
 
   def test_sched_smoke_trailing_empty(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/trailing_empty.systrace'),
+        trace=DataPath('trailing_empty.systrace'),
         query="""
         SELECT COUNT(1)
         FROM sched;
@@ -357,7 +357,7 @@
   # LMK handling
   def test_lmk_userspace_lmk(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/lmk_userspace.pb'),
+        trace=DataPath('lmk_userspace.pb'),
         query="""
         SELECT ts, process.pid
         FROM instant
@@ -416,7 +416,7 @@
   # Logcat
   def test_android_log_counts(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_log.pb'),
+        trace=DataPath('android_log.pb'),
         query=Path('android_log_counts_test.sql'),
         out=Csv("""
         "cnt"
@@ -431,13 +431,13 @@
 
   def test_android_log_msgs(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_log.pb'),
+        trace=DataPath('android_log.pb'),
         query=Path('android_log_msgs_test.sql'),
         out=Path('android_log_msgs.out'))
 
   def test_android_log_ring_buffer_mode(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_log_ring_buffer_mode.pb'),
+        trace=DataPath('android_log_ring_buffer_mode.pb'),
         query="""
         SELECT count(*) FROM android_logs;
         """,
@@ -455,7 +455,7 @@
 
   def test_process_stats_poll_oom_score(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/process_stats_poll.pb'),
+        trace=DataPath('process_stats_poll.pb'),
         query="""
         SELECT ts, name, value, upid
         FROM counter c
@@ -470,7 +470,7 @@
   # Stats
   def test_android_sched_and_ps_stats(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT name, idx, severity, source, value
         FROM stats WHERE name GLOB 'ftrace_cpu_*' OR name GLOB 'traced_buf_*';
@@ -687,7 +687,7 @@
   # Trace size
   def test_android_sched_and_ps_trace_size(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT int_value FROM metadata WHERE name = 'trace_size_bytes';
         """,
@@ -972,7 +972,7 @@
 
   def test_instants_json_instants(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/instants.json'),
+        trace=DataPath('instants.json'),
         query="""
         SELECT
           slice.ts,
@@ -1013,7 +1013,7 @@
   # Regression test for b/193721088 (infra prepending " done\n" to atrace)
   def test_sched_smoke_trailing_empty_2(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/atrace_b_193721088.atr'),
+        trace=DataPath('atrace_b_193721088.atr'),
         query="""
         SELECT COUNT(1)
         FROM sched;
@@ -1039,7 +1039,7 @@
   # Output of atrace -z.
   def test_atrace_compressed_sched_count(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/atrace_compressed.ctrace'),
+        trace=DataPath('atrace_compressed.ctrace'),
         query="""
         SELECT COUNT(1)
         FROM sched;
@@ -1053,7 +1053,7 @@
   # from stderr before the TRACE: marker. See b/208691037.
   def test_atrace_uncompressed_sched_count(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/atrace_uncompressed_b_208691037'),
+        trace=DataPath('atrace_uncompressed_b_208691037'),
         query="""
         SELECT COUNT(1)
         FROM sched;
@@ -1106,7 +1106,7 @@
   # Statsd Atoms
   def test_statsd_atoms_all_atoms(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/statsd_atoms.pb'),
+        trace=DataPath('statsd_atoms.pb'),
         query=Path('all_atoms_test.sql'),
         out=Path('statsd_atoms_all_atoms.out'))
 
@@ -1126,3 +1126,46 @@
         679375600673065,3797,385482,"__handle_mm_fault",0
         679375600673769,1726,385482,"alloc_pages_vma",1
         """))
+
+  # Kernel task_newtask waker_utid parsing
+  def test_task_newtask_waker_utid(self):
+    return DiffTestBlueprint(
+        trace=TextProto(r"""
+        packet {
+          first_packet_on_sequence: true
+          ftrace_events {
+            cpu: 1
+            event {
+              timestamp: 201315132677
+              pid: 518
+              task_newtask {
+                pid: 3294
+                comm: "adbd"
+                clone_flags: 18874368
+                oom_score_adj: -1000
+              }
+            }
+            event {
+              timestamp: 201319417828
+              pid: 518
+              task_newtask {
+                pid: 3295
+                comm: "adbd"
+                clone_flags: 4001536
+                oom_score_adj: -1000
+              }
+            }
+          }
+          trusted_uid: 9999
+          trusted_packet_sequence_id: 2
+          trusted_pid: 521
+          previous_packet_dropped: true
+        }
+        """),
+        query="""
+        SELECT waker_utid FROM thread_state
+        """,
+        out=Csv("""
+        "waker_utid"
+        1
+        """))
diff --git a/test/trace_processor/parsing/tests_memory_counters.py b/test/trace_processor/diff_tests/parsing/tests_memory_counters.py
similarity index 92%
rename from test/trace_processor/parsing/tests_memory_counters.py
rename to test/trace_processor/diff_tests/parsing/tests_memory_counters.py
index 4f46e01..733ab4c 100644
--- a/test/trace_processor/parsing/tests_memory_counters.py
+++ b/test/trace_processor/diff_tests/parsing/tests_memory_counters.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_memory_counters_args_string_filter_null(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query=Path('args_string_filter_null_test.sql'),
         out=Csv("""
         "string_value"
@@ -31,7 +31,7 @@
 
   def test_memory_counters_args_string_is_null(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query="""
         SELECT string_value
         FROM args
@@ -54,7 +54,7 @@
 
   def test_memory_counters_args_string_is_not_null(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query="""
         SELECT string_value
         FROM args
@@ -77,7 +77,7 @@
 
   def test_memory_counters_b120605557(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query="""
         SELECT count(*)
         FROM counter
@@ -90,7 +90,7 @@
 
   def test_global_memory_counter_memory_counters(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query="""
         SELECT ts, value, name
         FROM counter
diff --git a/test/trace_processor/parsing/tests_rss_stats.py b/test/trace_processor/diff_tests/parsing/tests_rss_stats.py
similarity index 97%
rename from test/trace_processor/parsing/tests_rss_stats.py
rename to test/trace_processor/diff_tests/parsing/tests_rss_stats.py
index 24a4af3..add0709 100644
--- a/test/trace_processor/parsing/tests_rss_stats.py
+++ b/test/trace_processor/diff_tests/parsing/tests_rss_stats.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/parsing/thread_counter_and_track_test.sql b/test/trace_processor/diff_tests/parsing/thread_counter_and_track_test.sql
similarity index 100%
rename from test/trace_processor/parsing/thread_counter_and_track_test.sql
rename to test/trace_processor/diff_tests/parsing/thread_counter_and_track_test.sql
diff --git a/test/trace_processor/parsing/thread_time_in_state.out b/test/trace_processor/diff_tests/parsing/thread_time_in_state.out
similarity index 100%
rename from test/trace_processor/parsing/thread_time_in_state.out
rename to test/trace_processor/diff_tests/parsing/thread_time_in_state.out
diff --git a/test/trace_processor/parsing/thread_time_in_state_event.out b/test/trace_processor/diff_tests/parsing/thread_time_in_state_event.out
similarity index 100%
rename from test/trace_processor/parsing/thread_time_in_state_event.out
rename to test/trace_processor/diff_tests/parsing/thread_time_in_state_event.out
diff --git a/test/trace_processor/parsing/thread_time_in_state_event.py b/test/trace_processor/diff_tests/parsing/thread_time_in_state_event.py
similarity index 100%
rename from test/trace_processor/parsing/thread_time_in_state_event.py
rename to test/trace_processor/diff_tests/parsing/thread_time_in_state_event.py
diff --git a/test/trace_processor/parsing/triggers_packets_test.sql b/test/trace_processor/diff_tests/parsing/triggers_packets_test.sql
similarity index 100%
rename from test/trace_processor/parsing/triggers_packets_test.sql
rename to test/trace_processor/diff_tests/parsing/triggers_packets_test.sql
diff --git a/test/trace_processor/parsing/very_long_sched.py b/test/trace_processor/diff_tests/parsing/very_long_sched.py
similarity index 100%
rename from test/trace_processor/parsing/very_long_sched.py
rename to test/trace_processor/diff_tests/parsing/very_long_sched.py
diff --git a/test/trace_processor/performance/cpu_frequency_limits.textproto b/test/trace_processor/diff_tests/performance/cpu_frequency_limits.textproto
similarity index 100%
rename from test/trace_processor/performance/cpu_frequency_limits.textproto
rename to test/trace_processor/diff_tests/performance/cpu_frequency_limits.textproto
diff --git a/test/trace_processor/performance/frame_timeline_metric.out b/test/trace_processor/diff_tests/performance/frame_timeline_metric.out
similarity index 100%
rename from test/trace_processor/performance/frame_timeline_metric.out
rename to test/trace_processor/diff_tests/performance/frame_timeline_metric.out
diff --git a/test/trace_processor/performance/frame_timeline_metric.py b/test/trace_processor/diff_tests/performance/frame_timeline_metric.py
similarity index 100%
rename from test/trace_processor/performance/frame_timeline_metric.py
rename to test/trace_processor/diff_tests/performance/frame_timeline_metric.py
diff --git a/test/trace_processor/performance/irq_runtime_metric.out b/test/trace_processor/diff_tests/performance/irq_runtime_metric.out
similarity index 100%
rename from test/trace_processor/performance/irq_runtime_metric.out
rename to test/trace_processor/diff_tests/performance/irq_runtime_metric.out
diff --git a/test/trace_processor/performance/irq_runtime_metric.textproto b/test/trace_processor/diff_tests/performance/irq_runtime_metric.textproto
similarity index 100%
rename from test/trace_processor/performance/irq_runtime_metric.textproto
rename to test/trace_processor/diff_tests/performance/irq_runtime_metric.textproto
diff --git a/test/trace_processor/performance/tests.py b/test/trace_processor/diff_tests/performance/tests.py
similarity index 96%
rename from test/trace_processor/performance/tests.py
rename to test/trace_processor/diff_tests/performance/tests.py
index b6a0c1c..7358373 100644
--- a/test/trace_processor/performance/tests.py
+++ b/test/trace_processor/diff_tests/performance/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/power/cpu_counters_p_state_test.out b/test/trace_processor/diff_tests/power/cpu_counters_p_state_test.out
similarity index 100%
rename from test/trace_processor/power/cpu_counters_p_state_test.out
rename to test/trace_processor/diff_tests/power/cpu_counters_p_state_test.out
diff --git a/test/trace_processor/power/dvfs_metric.out b/test/trace_processor/diff_tests/power/dvfs_metric.out
similarity index 100%
rename from test/trace_processor/power/dvfs_metric.out
rename to test/trace_processor/diff_tests/power/dvfs_metric.out
diff --git a/test/trace_processor/power/dvfs_metric.textproto b/test/trace_processor/diff_tests/power/dvfs_metric.textproto
similarity index 100%
rename from test/trace_processor/power/dvfs_metric.textproto
rename to test/trace_processor/diff_tests/power/dvfs_metric.textproto
diff --git a/test/trace_processor/power/energy_breakdown.textproto b/test/trace_processor/diff_tests/power/energy_breakdown.textproto
similarity index 100%
rename from test/trace_processor/power/energy_breakdown.textproto
rename to test/trace_processor/diff_tests/power/energy_breakdown.textproto
diff --git a/test/trace_processor/power/energy_breakdown_uid.textproto b/test/trace_processor/diff_tests/power/energy_breakdown_uid.textproto
similarity index 100%
rename from test/trace_processor/power/energy_breakdown_uid.textproto
rename to test/trace_processor/diff_tests/power/energy_breakdown_uid.textproto
diff --git a/test/trace_processor/power/power_rails.textproto b/test/trace_processor/diff_tests/power/power_rails.textproto
similarity index 100%
rename from test/trace_processor/power/power_rails.textproto
rename to test/trace_processor/diff_tests/power/power_rails.textproto
diff --git a/test/trace_processor/power/power_rails_custom_clock.textproto b/test/trace_processor/diff_tests/power/power_rails_custom_clock.textproto
similarity index 100%
rename from test/trace_processor/power/power_rails_custom_clock.textproto
rename to test/trace_processor/diff_tests/power/power_rails_custom_clock.textproto
diff --git a/test/trace_processor/power/suspend_period.textproto b/test/trace_processor/diff_tests/power/suspend_period.textproto
similarity index 100%
rename from test/trace_processor/power/suspend_period.textproto
rename to test/trace_processor/diff_tests/power/suspend_period.textproto
diff --git a/test/trace_processor/power/suspend_resume.textproto b/test/trace_processor/diff_tests/power/suspend_resume.textproto
similarity index 100%
rename from test/trace_processor/power/suspend_resume.textproto
rename to test/trace_processor/diff_tests/power/suspend_resume.textproto
diff --git a/test/trace_processor/power/tests.py b/test/trace_processor/diff_tests/power/tests.py
similarity index 89%
rename from test/trace_processor/power/tests.py
rename to test/trace_processor/diff_tests/power/tests.py
index b4664be..792b1b9 100644
--- a/test/trace_processor/power/tests.py
+++ b/test/trace_processor/diff_tests/power/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
   # Power states
   def test_cpu_counters_p_state(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/cpu_counters.pb'),
+        trace=DataPath('cpu_counters.pb'),
         query="""
         SELECT RUN_METRIC("android/p_state.sql");
 
@@ -34,7 +34,7 @@
   # CPU power ups
   def test_cpu_powerups(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/cpu_powerups_1.pb'),
+        trace=DataPath('cpu_powerups_1.pb'),
         query="""
         SELECT IMPORT("chrome.cpu_powerups");
         SELECT * FROM chrome_cpu_power_first_toplevel_slice_after_powerup;
diff --git a/test/trace_processor/power/tests_energy_breakdown.py b/test/trace_processor/diff_tests/power/tests_energy_breakdown.py
similarity index 97%
rename from test/trace_processor/power/tests_energy_breakdown.py
rename to test/trace_processor/diff_tests/power/tests_energy_breakdown.py
index ec11f9a..f62ba2c 100644
--- a/test/trace_processor/power/tests_energy_breakdown.py
+++ b/test/trace_processor/diff_tests/power/tests_energy_breakdown.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/power/tests_power_rails.py b/test/trace_processor/diff_tests/power/tests_power_rails.py
similarity index 96%
rename from test/trace_processor/power/tests_power_rails.py
rename to test/trace_processor/diff_tests/power/tests_power_rails.py
index fc53b75..869604c 100644
--- a/test/trace_processor/power/tests_power_rails.py
+++ b/test/trace_processor/diff_tests/power/tests_power_rails.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
 
   def test_power_rails_power_rails(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/power_rails.pb'),
+        trace=DataPath('power_rails.pb'),
         query="""
         SELECT name, AVG(value), COUNT(*)
         FROM counters
diff --git a/test/trace_processor/power/tests_voltage_and_scaling.py b/test/trace_processor/diff_tests/power/tests_voltage_and_scaling.py
similarity index 97%
rename from test/trace_processor/power/tests_voltage_and_scaling.py
rename to test/trace_processor/diff_tests/power/tests_voltage_and_scaling.py
index 226c4b2..a5c418a 100644
--- a/test/trace_processor/power/tests_voltage_and_scaling.py
+++ b/test/trace_processor/diff_tests/power/tests_voltage_and_scaling.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/power/wakesource.textproto b/test/trace_processor/diff_tests/power/wakesource.textproto
similarity index 100%
rename from test/trace_processor/power/wakesource.textproto
rename to test/trace_processor/diff_tests/power/wakesource.textproto
diff --git a/test/trace_processor/process_tracking/process_parent_pid_tracking_1.py b/test/trace_processor/diff_tests/process_tracking/process_parent_pid_tracking_1.py
similarity index 100%
rename from test/trace_processor/process_tracking/process_parent_pid_tracking_1.py
rename to test/trace_processor/diff_tests/process_tracking/process_parent_pid_tracking_1.py
diff --git a/test/trace_processor/process_tracking/process_parent_pid_tracking_2.py b/test/trace_processor/diff_tests/process_tracking/process_parent_pid_tracking_2.py
similarity index 100%
rename from test/trace_processor/process_tracking/process_parent_pid_tracking_2.py
rename to test/trace_processor/diff_tests/process_tracking/process_parent_pid_tracking_2.py
diff --git a/test/trace_processor/process_tracking/process_tracking_exec.py b/test/trace_processor/diff_tests/process_tracking/process_tracking_exec.py
similarity index 100%
rename from test/trace_processor/process_tracking/process_tracking_exec.py
rename to test/trace_processor/diff_tests/process_tracking/process_tracking_exec.py
diff --git a/test/trace_processor/process_tracking/process_tracking_short_lived_1.py b/test/trace_processor/diff_tests/process_tracking/process_tracking_short_lived_1.py
similarity index 100%
rename from test/trace_processor/process_tracking/process_tracking_short_lived_1.py
rename to test/trace_processor/diff_tests/process_tracking/process_tracking_short_lived_1.py
diff --git a/test/trace_processor/process_tracking/process_tracking_short_lived_2.py b/test/trace_processor/diff_tests/process_tracking/process_tracking_short_lived_2.py
similarity index 100%
rename from test/trace_processor/process_tracking/process_tracking_short_lived_2.py
rename to test/trace_processor/diff_tests/process_tracking/process_tracking_short_lived_2.py
diff --git a/test/trace_processor/process_tracking/reused_thread_print.py b/test/trace_processor/diff_tests/process_tracking/reused_thread_print.py
similarity index 100%
rename from test/trace_processor/process_tracking/reused_thread_print.py
rename to test/trace_processor/diff_tests/process_tracking/reused_thread_print.py
diff --git a/test/trace_processor/process_tracking/synth_process_tracking.py b/test/trace_processor/diff_tests/process_tracking/synth_process_tracking.py
similarity index 100%
rename from test/trace_processor/process_tracking/synth_process_tracking.py
rename to test/trace_processor/diff_tests/process_tracking/synth_process_tracking.py
diff --git a/test/trace_processor/process_tracking/tests.py b/test/trace_processor/diff_tests/process_tracking/tests.py
similarity index 98%
rename from test/trace_processor/process_tracking/tests.py
rename to test/trace_processor/diff_tests/process_tracking/tests.py
index 3a2e7d3..f1413bd 100644
--- a/test/trace_processor/process_tracking/tests.py
+++ b/test/trace_processor/diff_tests/process_tracking/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/process_tracking/unknown_thread_name.systrace b/test/trace_processor/diff_tests/process_tracking/unknown_thread_name.systrace
similarity index 100%
rename from test/trace_processor/process_tracking/unknown_thread_name.systrace
rename to test/trace_processor/diff_tests/process_tracking/unknown_thread_name.systrace
diff --git a/test/trace_processor/profiling/callstack_sampling_flamegraph.out b/test/trace_processor/diff_tests/profiling/callstack_sampling_flamegraph.out
similarity index 100%
rename from test/trace_processor/profiling/callstack_sampling_flamegraph.out
rename to test/trace_processor/diff_tests/profiling/callstack_sampling_flamegraph.out
diff --git a/test/trace_processor/profiling/heap_graph.textproto b/test/trace_processor/diff_tests/profiling/heap_graph.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph.textproto
diff --git a/test/trace_processor/profiling/heap_graph_baseapk.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_baseapk.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_baseapk.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_baseapk.textproto
diff --git a/test/trace_processor/profiling/heap_graph_branching.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_branching.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_branching.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_branching.textproto
diff --git a/test/trace_processor/profiling/heap_graph_closest_proc.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_closest_proc.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_closest_proc.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_closest_proc.textproto
diff --git a/test/trace_processor/profiling/heap_graph_deobfuscate_pkg.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_deobfuscate_pkg.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_deobfuscate_pkg.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_deobfuscate_pkg.textproto
diff --git a/test/trace_processor/profiling/heap_graph_duplicate_flamegraph.out b/test/trace_processor/diff_tests/profiling/heap_graph_duplicate_flamegraph.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_duplicate_flamegraph.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_duplicate_flamegraph.out
diff --git a/test/trace_processor/profiling/heap_graph_flamegraph.out b/test/trace_processor/diff_tests/profiling/heap_graph_flamegraph.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_flamegraph.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_flamegraph.out
diff --git a/test/trace_processor/profiling/heap_graph_flamegraph_focused.out b/test/trace_processor/diff_tests/profiling/heap_graph_flamegraph_focused.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_flamegraph_focused.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_flamegraph_focused.out
diff --git a/test/trace_processor/profiling/heap_graph_flamegraph_system-server-heap-graph.out b/test/trace_processor/diff_tests/profiling/heap_graph_flamegraph_system-server-heap-graph.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_flamegraph_system-server-heap-graph.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_flamegraph_system-server-heap-graph.out
diff --git a/test/trace_processor/profiling/heap_graph_huge_size.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_huge_size.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_huge_size.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_huge_size.textproto
diff --git a/test/trace_processor/profiling/heap_graph_interleaved.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_interleaved.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_interleaved.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_interleaved.textproto
diff --git a/test/trace_processor/profiling/heap_graph_interleaved_object.out b/test/trace_processor/diff_tests/profiling/heap_graph_interleaved_object.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_interleaved_object.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_interleaved_object.out
diff --git a/test/trace_processor/profiling/heap_graph_interleaved_reference.out b/test/trace_processor/diff_tests/profiling/heap_graph_interleaved_reference.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_interleaved_reference.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_interleaved_reference.out
diff --git a/test/trace_processor/profiling/heap_graph_legacy.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_legacy.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_legacy.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_legacy.textproto
diff --git a/test/trace_processor/profiling/heap_graph_native_size.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_native_size.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_native_size.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_native_size.textproto
diff --git a/test/trace_processor/profiling/heap_graph_object.out b/test/trace_processor/diff_tests/profiling/heap_graph_object.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_object.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_object.out
diff --git a/test/trace_processor/profiling/heap_graph_reference.out b/test/trace_processor/diff_tests/profiling/heap_graph_reference.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_reference.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_reference.out
diff --git a/test/trace_processor/profiling/heap_graph_superclass.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_superclass.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_superclass.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_superclass.textproto
diff --git a/test/trace_processor/profiling/heap_graph_two_locations.out b/test/trace_processor/diff_tests/profiling/heap_graph_two_locations.out
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_two_locations.out
rename to test/trace_processor/diff_tests/profiling/heap_graph_two_locations.out
diff --git a/test/trace_processor/profiling/heap_graph_two_locations.textproto b/test/trace_processor/diff_tests/profiling/heap_graph_two_locations.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_graph_two_locations.textproto
rename to test/trace_processor/diff_tests/profiling/heap_graph_two_locations.textproto
diff --git a/test/trace_processor/profiling/heap_profile.textproto b/test/trace_processor/diff_tests/profiling/heap_profile.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile.textproto
diff --git a/test/trace_processor/profiling/heap_profile_data_local_tmp.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_data_local_tmp.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_data_local_tmp.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_data_local_tmp.textproto
diff --git a/test/trace_processor/profiling/heap_profile_deobfuscate.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_deobfuscate.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_deobfuscate.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_deobfuscate.textproto
diff --git a/test/trace_processor/profiling/heap_profile_deobfuscate_memfd.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_deobfuscate_memfd.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_deobfuscate_memfd.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_deobfuscate_memfd.textproto
diff --git a/test/trace_processor/profiling/heap_profile_deobfuscate_test.sql b/test/trace_processor/diff_tests/profiling/heap_profile_deobfuscate_test.sql
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_deobfuscate_test.sql
rename to test/trace_processor/diff_tests/profiling/heap_profile_deobfuscate_test.sql
diff --git a/test/trace_processor/profiling/heap_profile_dump_max.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_dump_max.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_dump_max.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_dump_max.textproto
diff --git a/test/trace_processor/profiling/heap_profile_dump_max_legacy.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_dump_max_legacy.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_dump_max_legacy.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_dump_max_legacy.textproto
diff --git a/test/trace_processor/profiling/heap_profile_flamegraph_system-server-native-profile.out b/test/trace_processor/diff_tests/profiling/heap_profile_flamegraph_system-server-native-profile.out
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_flamegraph_system-server-native-profile.out
rename to test/trace_processor/diff_tests/profiling/heap_profile_flamegraph_system-server-native-profile.out
diff --git a/test/trace_processor/profiling/heap_profile_jit.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_jit.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_jit.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_jit.textproto
diff --git a/test/trace_processor/profiling/heap_profile_no_symbols.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_no_symbols.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_no_symbols.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_no_symbols.textproto
diff --git a/test/trace_processor/profiling/heap_profile_tracker_new_stack.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_tracker_new_stack.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_tracker_new_stack.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_tracker_new_stack.textproto
diff --git a/test/trace_processor/profiling/heap_profile_tracker_twoheaps.textproto b/test/trace_processor/diff_tests/profiling/heap_profile_tracker_twoheaps.textproto
similarity index 100%
rename from test/trace_processor/profiling/heap_profile_tracker_twoheaps.textproto
rename to test/trace_processor/diff_tests/profiling/heap_profile_tracker_twoheaps.textproto
diff --git a/test/trace_processor/profiling/heap_stats_closest_proc.out b/test/trace_processor/diff_tests/profiling/heap_stats_closest_proc.out
similarity index 100%
rename from test/trace_processor/profiling/heap_stats_closest_proc.out
rename to test/trace_processor/diff_tests/profiling/heap_stats_closest_proc.out
diff --git a/test/trace_processor/profiling/java_heap_histogram.out b/test/trace_processor/diff_tests/profiling/java_heap_histogram.out
similarity index 100%
rename from test/trace_processor/profiling/java_heap_histogram.out
rename to test/trace_processor/diff_tests/profiling/java_heap_histogram.out
diff --git a/test/trace_processor/profiling/perf_sample_rvc.out b/test/trace_processor/diff_tests/profiling/perf_sample_rvc.out
similarity index 100%
rename from test/trace_processor/profiling/perf_sample_rvc.out
rename to test/trace_processor/diff_tests/profiling/perf_sample_rvc.out
diff --git a/test/trace_processor/profiling/perf_sample_sc.out b/test/trace_processor/diff_tests/profiling/perf_sample_sc.out
similarity index 100%
rename from test/trace_processor/profiling/perf_sample_sc.out
rename to test/trace_processor/diff_tests/profiling/perf_sample_sc.out
diff --git a/test/trace_processor/diff_tests/profiling/perf_sample_switch_interp.textproto b/test/trace_processor/diff_tests/profiling/perf_sample_switch_interp.textproto
new file mode 100644
index 0000000..a8ddcbf
--- /dev/null
+++ b/test/trace_processor/diff_tests/profiling/perf_sample_switch_interp.textproto
@@ -0,0 +1,127 @@
+packet {
+  interned_data {
+    build_ids {
+      iid: 0
+      str: ""
+    }
+    mapping_paths {
+      iid: 0
+      str: ""
+    }
+    function_names {
+      iid: 0
+      str: ""
+    }
+  }
+  sequence_flags: 1
+  trusted_uid: 9999
+  trusted_packet_sequence_id: 2
+  trusted_pid: 24388
+}
+packet {
+  timestamp: 214681394021835
+  interned_data {
+    mappings {
+      iid: 1
+      path_string_ids: 1
+      path_string_ids: 2
+      path_string_ids: 3
+      path_string_ids: 4
+      build_id: 1
+    }
+    build_ids {
+      iid: 1
+      str: ""
+    }
+    mapping_paths {
+      iid: 1
+      str: "apex"
+    }
+    mapping_paths {
+      iid: 2
+      str: "com.android.art"
+    }
+    mapping_paths {
+      iid: 3
+      str: "lib64"
+    }
+    mapping_paths {
+      iid: 4
+      str: "libart.so"
+    }
+    mappings {
+      iid: 2
+      path_string_ids: 6
+      build_id: 1
+    }
+    mapping_paths {
+      iid: 6
+      str: "example.vdex"
+    }
+    frames {
+      iid: 1
+      function_name_id: 1
+      mapping_id: 2
+    }
+    function_names {
+      iid: 1
+      str: "com.example.managed.frame"
+    }
+    frames {
+      iid: 2
+      function_name_id: 2
+      mapping_id: 1
+    }
+    function_names {
+      iid: 2
+      str: "ExecuteSwitchImplAsm"
+    }
+    frames {
+      iid: 3
+      function_name_id: 3
+      mapping_id: 1
+    }
+    function_names {
+      iid: 3
+      str: "_ZN3art11interpreter20ExecuteSwitchImplCppILb0EEEvPNS0_17SwitchImplContextE"
+    }
+    frames {
+      iid: 4
+      function_name_id: 4
+      mapping_id: 1
+    }
+    function_names {
+      iid: 4
+      str: "_ZN3art11interpreter6DoCallILb1EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtbPNS_6JValueE"
+    }
+    frames {
+      iid: 5
+      function_name_id: 5
+      mapping_id: 1
+    }
+    function_names {
+      iid: 5
+      str: "_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc"
+    }
+    callstacks {
+      iid: 1
+      frame_ids: 1
+      frame_ids: 2
+      frame_ids: 3
+      frame_ids: 4
+      frame_ids: 5
+    }
+  }
+  perf_sample {
+    cpu: 0
+    pid: 1000
+    tid: 1000
+    cpu_mode: MODE_USER
+    timebase_count: 42
+    callstack_iid: 1
+  }
+  trusted_uid: 9999
+  trusted_packet_sequence_id: 2
+  trusted_pid: 24388
+}
+
diff --git a/test/trace_processor/profiling/simpleperf_event.out b/test/trace_processor/diff_tests/profiling/simpleperf_event.out
similarity index 100%
rename from test/trace_processor/profiling/simpleperf_event.out
rename to test/trace_processor/diff_tests/profiling/simpleperf_event.out
diff --git a/test/trace_processor/profiling/simpleperf_event.py b/test/trace_processor/diff_tests/profiling/simpleperf_event.py
similarity index 100%
rename from test/trace_processor/profiling/simpleperf_event.py
rename to test/trace_processor/diff_tests/profiling/simpleperf_event.py
diff --git a/test/trace_processor/profiling/stack_profile_symbols.out b/test/trace_processor/diff_tests/profiling/stack_profile_symbols.out
similarity index 100%
rename from test/trace_processor/profiling/stack_profile_symbols.out
rename to test/trace_processor/diff_tests/profiling/stack_profile_symbols.out
diff --git a/test/trace_processor/profiling/tests.py b/test/trace_processor/diff_tests/profiling/tests.py
similarity index 88%
rename from test/trace_processor/profiling/tests.py
rename to test/trace_processor/diff_tests/profiling/tests.py
index fd22182..e56fbff 100644
--- a/test/trace_processor/profiling/tests.py
+++ b/test/trace_processor/diff_tests/profiling/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -246,7 +246,7 @@
   # perf_sample table (traced_perf) with android R and S trace inputs.
   def test_perf_sample_rvc(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/perf_sample.pb'),
+        trace=DataPath('perf_sample.pb'),
         query="""
         SELECT ps.ts, ps.cpu, ps.cpu_mode, ps.unwind_error, ps.perf_session_id,
                pct.name AS cntr_name, pct.is_timebase,
@@ -267,7 +267,7 @@
 
   def test_perf_sample_sc(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/perf_sample_sc.pb'),
+        trace=DataPath('perf_sample_sc.pb'),
         query="""
         SELECT ps.ts, ps.cpu, ps.cpu_mode, ps.unwind_error, ps.perf_session_id,
                pct.name AS cntr_name, pct.is_timebase,
@@ -286,9 +286,9 @@
         """,
         out=Path('perf_sample_sc.out'))
 
-  def test_perf_sample_annotations(self):
+  def test_annotations(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/perf_sample_annotations.pftrace'),
+        trace=DataPath('perf_sample_annotations.pftrace'),
         query="""
         select
           eac.depth, eac.annotation, spm.name as map_name,
@@ -334,3 +334,25 @@
         26,"common-frame-interp","/apex/com.android.art/lib64/libart.so","NterpGetInstanceFieldOffset"
         27,"common-frame","/apex/com.android.art/lib64/libart.so","art::ResolveFieldWithAccessChecks(art::Thread*, art::ClassLinker*, unsigned short, art::ArtMethod*, bool, bool, unsigned long)"
         """))
+
+  def test_annotations_switch_interpreter(self):
+    return DiffTestBlueprint(
+        trace=Path('perf_sample_switch_interp.textproto'),
+        query="""
+        select
+          eac.depth, eac.annotation, spm.name as map_name,
+          ifnull(demangle(spf.name), spf.name) as frame_name
+        from experimental_annotated_callstack eac
+          join stack_profile_frame spf on (eac.frame_id = spf.id)
+          join stack_profile_mapping spm on (spf.mapping = spm.id)
+        where eac.start_id = (select callsite_id from perf_sample)
+        order by depth asc;
+        """,
+        out=Csv("""
+        "depth","annotation","map_name","frame_name"
+        0,"interp","/example.vdex","com.example.managed.frame"
+        1,"common-frame-interp","/apex/com.android.art/lib64/libart.so","ExecuteSwitchImplAsm"
+        2,"common-frame-interp","/apex/com.android.art/lib64/libart.so","void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)"
+        3,"common-frame-interp","/apex/com.android.art/lib64/libart.so","bool art::interpreter::DoCall<true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)"
+        4,"common-frame","/apex/com.android.art/lib64/libart.so","art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)"
+        """))
diff --git a/test/trace_processor/profiling/tests_heap_graph.py b/test/trace_processor/diff_tests/profiling/tests_heap_graph.py
similarity index 98%
rename from test/trace_processor/profiling/tests_heap_graph.py
rename to test/trace_processor/diff_tests/profiling/tests_heap_graph.py
index 20bff8a..d222ccd 100644
--- a/test/trace_processor/profiling/tests_heap_graph.py
+++ b/test/trace_processor/diff_tests/profiling/tests_heap_graph.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -275,7 +275,7 @@
 
   def test_heap_graph_flamegraph_system_server_heap_graph(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/system-server-heap-graph-new.pftrace'),
+        trace=DataPath('system-server-heap-graph-new.pftrace'),
         query="""
         SELECT
           id,
@@ -297,7 +297,7 @@
 
   def test_heap_profile_flamegraph_system_server_native_profile(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/system-server-native-profile'),
+        trace=DataPath('system-server-native-profile'),
         query="""
         SELECT * FROM experimental_flamegraph
         WHERE ts = 605908369259172
diff --git a/test/trace_processor/profiling/tests_heap_profiling.py b/test/trace_processor/diff_tests/profiling/tests_heap_profiling.py
similarity index 97%
rename from test/trace_processor/profiling/tests_heap_profiling.py
rename to test/trace_processor/diff_tests/profiling/tests_heap_profiling.py
index a59434c..483d045 100644
--- a/test/trace_processor/profiling/tests_heap_profiling.py
+++ b/test/trace_processor/diff_tests/profiling/tests_heap_profiling.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/profiling/tests_llvm_symbolizer.py b/test/trace_processor/diff_tests/profiling/tests_llvm_symbolizer.py
similarity index 91%
rename from test/trace_processor/profiling/tests_llvm_symbolizer.py
rename to test/trace_processor/diff_tests/profiling/tests_llvm_symbolizer.py
index bc01454..0733eb5 100644
--- a/test/trace_processor/profiling/tests_llvm_symbolizer.py
+++ b/test/trace_processor/diff_tests/profiling/tests_llvm_symbolizer.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,7 +23,7 @@
   # this uses llvm-symbolizer to test the offline symbolization built into
   def test_stack_profile_symbols(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/heapprofd_standalone_client_example-trace'),
+        trace=DataPath('heapprofd_standalone_client_example-trace'),
         query="""
         SELECT name, source_file, line_number FROM stack_profile_symbol;
         """,
@@ -31,7 +31,7 @@
 
   def test_callstack_sampling_flamegraph(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/callstack_sampling.pftrace'),
+        trace=DataPath('callstack_sampling.pftrace'),
         query="""
         SELECT ef.*
         FROM experimental_flamegraph ef
@@ -45,7 +45,7 @@
 
   def test_callstack_sampling_flamegraph_multi_process(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/callstack_sampling.pftrace'),
+        trace=DataPath('callstack_sampling.pftrace'),
         query="""
         SELECT count(*) AS count, 'BothProcesses' AS description
         FROM experimental_flamegraph
diff --git a/test/trace_processor/profiling/tests_metrics.py b/test/trace_processor/diff_tests/profiling/tests_metrics.py
similarity index 97%
rename from test/trace_processor/profiling/tests_metrics.py
rename to test/trace_processor/diff_tests/profiling/tests_metrics.py
index c4456e6..cb210cf 100644
--- a/test/trace_processor/profiling/tests_metrics.py
+++ b/test/trace_processor/diff_tests/profiling/tests_metrics.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/scheduler/sched_cpu_util_cfs.textproto b/test/trace_processor/diff_tests/scheduler/sched_cpu_util_cfs.textproto
similarity index 100%
rename from test/trace_processor/scheduler/sched_cpu_util_cfs.textproto
rename to test/trace_processor/diff_tests/scheduler/sched_cpu_util_cfs.textproto
diff --git a/test/trace_processor/scheduler/sched_cpu_util_cfs_test.sql b/test/trace_processor/diff_tests/scheduler/sched_cpu_util_cfs_test.sql
similarity index 100%
rename from test/trace_processor/scheduler/sched_cpu_util_cfs_test.sql
rename to test/trace_processor/diff_tests/scheduler/sched_cpu_util_cfs_test.sql
diff --git a/test/trace_processor/scheduler/tests.py b/test/trace_processor/diff_tests/scheduler/tests.py
similarity index 95%
rename from test/trace_processor/scheduler/tests.py
rename to test/trace_processor/diff_tests/scheduler/tests.py
index b55e607..b935c6a 100644
--- a/test/trace_processor/scheduler/tests.py
+++ b/test/trace_processor/diff_tests/scheduler/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/smoke/proxy_power.out b/test/trace_processor/diff_tests/smoke/proxy_power.out
similarity index 100%
rename from test/trace_processor/smoke/proxy_power.out
rename to test/trace_processor/diff_tests/smoke/proxy_power.out
diff --git a/test/trace_processor/smoke/tests.py b/test/trace_processor/diff_tests/smoke/tests.py
similarity index 93%
rename from test/trace_processor/smoke/tests.py
rename to test/trace_processor/diff_tests/smoke/tests.py
index 9b3f2e8..be0836f 100644
--- a/test/trace_processor/smoke/tests.py
+++ b/test/trace_processor/diff_tests/smoke/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -25,7 +25,7 @@
   # Compresesed traces
   def test_compressed_smoke(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/compressed.pb'),
+        trace=DataPath('compressed.pb'),
         query="""
         SELECT
           ts,
diff --git a/test/trace_processor/smoke/tests_compute_metrics.py b/test/trace_processor/diff_tests/smoke/tests_compute_metrics.py
similarity index 92%
rename from test/trace_processor/smoke/tests_compute_metrics.py
rename to test/trace_processor/diff_tests/smoke/tests_compute_metrics.py
index 3f52060..e6a3cd5 100644
--- a/test/trace_processor/smoke/tests_compute_metrics.py
+++ b/test/trace_processor/diff_tests/smoke/tests_compute_metrics.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -25,7 +25,7 @@
   # Compute CPU time metric testing several core tables.
   def test_thread_cpu_time_example_android_trace_30s(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/example_android_trace_30s.pb'),
+        trace=DataPath('example_android_trace_30s.pb'),
         query="""
         SELECT
           tid,
@@ -50,7 +50,7 @@
   # Compute power proxy metric
   def test_proxy_power(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/cpu_counters.pb'),
+        trace=DataPath('cpu_counters.pb'),
         query="""
         SELECT RUN_METRIC('android/android_proxy_power.sql');
 
diff --git a/test/trace_processor/smoke/tests_json.py b/test/trace_processor/diff_tests/smoke/tests_json.py
similarity index 92%
rename from test/trace_processor/smoke/tests_json.py
rename to test/trace_processor/diff_tests/smoke/tests_json.py
index 01ca11b..7d5593e 100644
--- a/test/trace_processor/smoke/tests_json.py
+++ b/test/trace_processor/diff_tests/smoke/tests_json.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -25,7 +25,7 @@
   # JSON trace parsing
   def test_sfgate_smoke(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/sfgate.json'),
+        trace=DataPath('sfgate.json'),
         query="""
         SELECT
           ts,
@@ -45,7 +45,7 @@
 
   def test_sfgate_smoke_slices(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/sfgate.json'),
+        trace=DataPath('sfgate.json'),
         query="""
         SELECT track.type AS type, depth, count(*) AS count
         FROM slice
diff --git a/test/trace_processor/smoke/tests_sched_events.py b/test/trace_processor/diff_tests/smoke/tests_sched_events.py
similarity index 95%
rename from test/trace_processor/smoke/tests_sched_events.py
rename to test/trace_processor/diff_tests/smoke/tests_sched_events.py
index 04f588a..86e39fd 100644
--- a/test/trace_processor/smoke/tests_sched_events.py
+++ b/test/trace_processor/diff_tests/smoke/tests_sched_events.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -25,7 +25,7 @@
   # Sched events
   def test_android_sched_and_ps_smoke(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT
           ts,
diff --git a/test/trace_processor/smoke/thread_cpu_time_example_android_trace_30s.out b/test/trace_processor/diff_tests/smoke/thread_cpu_time_example_android_trace_30s.out
similarity index 100%
rename from test/trace_processor/smoke/thread_cpu_time_example_android_trace_30s.out
rename to test/trace_processor/diff_tests/smoke/thread_cpu_time_example_android_trace_30s.out
diff --git a/test/trace_processor/span_join/android_sched_and_ps_slice_span_join_b118665515.out b/test/trace_processor/diff_tests/span_join/android_sched_and_ps_slice_span_join_b118665515.out
similarity index 100%
rename from test/trace_processor/span_join/android_sched_and_ps_slice_span_join_b118665515.out
rename to test/trace_processor/diff_tests/span_join/android_sched_and_ps_slice_span_join_b118665515.out
diff --git a/test/trace_processor/span_join/slice_span_join_b118665515_test.sql b/test/trace_processor/diff_tests/span_join/slice_span_join_b118665515_test.sql
similarity index 100%
rename from test/trace_processor/span_join/slice_span_join_b118665515_test.sql
rename to test/trace_processor/diff_tests/span_join/slice_span_join_b118665515_test.sql
diff --git a/test/trace_processor/span_join/span_join_unordered_cols_reverse_test.sql b/test/trace_processor/diff_tests/span_join/span_join_unordered_cols_reverse_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_join_unordered_cols_reverse_test.sql
rename to test/trace_processor/diff_tests/span_join/span_join_unordered_cols_reverse_test.sql
diff --git a/test/trace_processor/span_join/span_join_unordered_cols_test.sql b/test/trace_processor/diff_tests/span_join/span_join_unordered_cols_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_join_unordered_cols_test.sql
rename to test/trace_processor/diff_tests/span_join/span_join_unordered_cols_test.sql
diff --git a/test/trace_processor/span_join/span_join_zero_negative_dur_test.sql b/test/trace_processor/diff_tests/span_join/span_join_zero_negative_dur_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_join_zero_negative_dur_test.sql
rename to test/trace_processor/diff_tests/span_join/span_join_zero_negative_dur_test.sql
diff --git a/test/trace_processor/span_join/span_left_join.out b/test/trace_processor/diff_tests/span_join/span_left_join.out
similarity index 100%
rename from test/trace_processor/span_join/span_left_join.out
rename to test/trace_processor/diff_tests/span_join/span_left_join.out
diff --git a/test/trace_processor/span_join/span_left_join_left_partitioned.out b/test/trace_processor/diff_tests/span_join/span_left_join_left_partitioned.out
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_left_partitioned.out
rename to test/trace_processor/diff_tests/span_join/span_left_join_left_partitioned.out
diff --git a/test/trace_processor/span_join/span_left_join_left_partitioned_test.sql b/test/trace_processor/diff_tests/span_join/span_left_join_left_partitioned_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_left_partitioned_test.sql
rename to test/trace_processor/diff_tests/span_join/span_left_join_left_partitioned_test.sql
diff --git a/test/trace_processor/span_join/span_left_join_left_unpartitioned.out b/test/trace_processor/diff_tests/span_join/span_left_join_left_unpartitioned.out
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_left_unpartitioned.out
rename to test/trace_processor/diff_tests/span_join/span_left_join_left_unpartitioned.out
diff --git a/test/trace_processor/span_join/span_left_join_left_unpartitioned_test.sql b/test/trace_processor/diff_tests/span_join/span_left_join_left_unpartitioned_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_left_unpartitioned_test.sql
rename to test/trace_processor/diff_tests/span_join/span_left_join_left_unpartitioned_test.sql
diff --git a/test/trace_processor/span_join/span_left_join_test.sql b/test/trace_processor/diff_tests/span_join/span_left_join_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_test.sql
rename to test/trace_processor/diff_tests/span_join/span_left_join_test.sql
diff --git a/test/trace_processor/span_join/span_left_join_unpartitioned.out b/test/trace_processor/diff_tests/span_join/span_left_join_unpartitioned.out
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_unpartitioned.out
rename to test/trace_processor/diff_tests/span_join/span_left_join_unpartitioned.out
diff --git a/test/trace_processor/span_join/span_left_join_unpartitioned_test.sql b/test/trace_processor/diff_tests/span_join/span_left_join_unpartitioned_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_left_join_unpartitioned_test.sql
rename to test/trace_processor/diff_tests/span_join/span_left_join_unpartitioned_test.sql
diff --git a/test/trace_processor/span_join/span_outer_join.out b/test/trace_processor/diff_tests/span_join/span_outer_join.out
similarity index 100%
rename from test/trace_processor/span_join/span_outer_join.out
rename to test/trace_processor/diff_tests/span_join/span_outer_join.out
diff --git a/test/trace_processor/span_join/span_outer_join_mixed.out b/test/trace_processor/diff_tests/span_join/span_outer_join_mixed.out
similarity index 100%
rename from test/trace_processor/span_join/span_outer_join_mixed.out
rename to test/trace_processor/diff_tests/span_join/span_outer_join_mixed.out
diff --git a/test/trace_processor/span_join/span_outer_join_mixed_test.sql b/test/trace_processor/diff_tests/span_join/span_outer_join_mixed_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_outer_join_mixed_test.sql
rename to test/trace_processor/diff_tests/span_join/span_outer_join_mixed_test.sql
diff --git a/test/trace_processor/span_join/span_outer_join_test.sql b/test/trace_processor/diff_tests/span_join/span_outer_join_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_outer_join_test.sql
rename to test/trace_processor/diff_tests/span_join/span_outer_join_test.sql
diff --git a/test/trace_processor/span_join/span_outer_join_unpartitioned.out b/test/trace_processor/diff_tests/span_join/span_outer_join_unpartitioned.out
similarity index 100%
rename from test/trace_processor/span_join/span_outer_join_unpartitioned.out
rename to test/trace_processor/diff_tests/span_join/span_outer_join_unpartitioned.out
diff --git a/test/trace_processor/span_join/span_outer_join_unpartitioned_test.sql b/test/trace_processor/diff_tests/span_join/span_outer_join_unpartitioned_test.sql
similarity index 100%
rename from test/trace_processor/span_join/span_outer_join_unpartitioned_test.sql
rename to test/trace_processor/diff_tests/span_join/span_outer_join_unpartitioned_test.sql
diff --git a/test/trace_processor/span_join/tests.py b/test/trace_processor/diff_tests/span_join/tests.py
similarity index 98%
rename from test/trace_processor/span_join/tests.py
rename to test/trace_processor/diff_tests/span_join/tests.py
index c4002c6..e675aff 100644
--- a/test/trace_processor/span_join/tests.py
+++ b/test/trace_processor/diff_tests/span_join/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import DiffTestModule
diff --git a/test/trace_processor/span_join/tests_left_join.py b/test/trace_processor/diff_tests/span_join/tests_left_join.py
similarity index 97%
rename from test/trace_processor/span_join/tests_left_join.py
rename to test/trace_processor/diff_tests/span_join/tests_left_join.py
index c552150..2bd2e58 100644
--- a/test/trace_processor/span_join/tests_left_join.py
+++ b/test/trace_processor/diff_tests/span_join/tests_left_join.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/span_join/tests_outer_join.py b/test/trace_processor/diff_tests/span_join/tests_outer_join.py
similarity index 98%
rename from test/trace_processor/span_join/tests_outer_join.py
rename to test/trace_processor/diff_tests/span_join/tests_outer_join.py
index 4ec28a9..c2ac4f5 100644
--- a/test/trace_processor/span_join/tests_outer_join.py
+++ b/test/trace_processor/diff_tests/span_join/tests_outer_join.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/span_join/tests_regression.py b/test/trace_processor/diff_tests/span_join/tests_regression.py
similarity index 90%
rename from test/trace_processor/span_join/tests_regression.py
rename to test/trace_processor/diff_tests/span_join/tests_regression.py
index 7c4fdd6..31d667e 100644
--- a/test/trace_processor/span_join/tests_regression.py
+++ b/test/trace_processor/diff_tests/span_join/tests_regression.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -23,13 +23,13 @@
 
   def test_android_sched_and_ps_slice_span_join_b118665515(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query=Path('slice_span_join_b118665515_test.sql'),
         out=Path('android_sched_and_ps_slice_span_join_b118665515.out'))
 
   def test_span_join_unpartitioned_empty(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         CREATE TABLE t1(
           ts BIGINT,
diff --git a/test/trace_processor/span_join/tests_smoke.py b/test/trace_processor/diff_tests/span_join/tests_smoke.py
similarity index 94%
rename from test/trace_processor/span_join/tests_smoke.py
rename to test/trace_processor/diff_tests/span_join/tests_smoke.py
index 7f6875b..e94a6c8 100644
--- a/test/trace_processor/span_join/tests_smoke.py
+++ b/test/trace_processor/diff_tests/span_join/tests_smoke.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -53,7 +53,7 @@
 
   def test_span_join_zero_negative_dur(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query=Path('span_join_zero_negative_dur_test.sql'),
         out=Csv("""
         "ts","dur","part"
diff --git a/test/trace_processor/startup/android_startup.out b/test/trace_processor/diff_tests/startup/android_startup.out
similarity index 98%
rename from test/trace_processor/startup/android_startup.out
rename to test/trace_processor/diff_tests/startup/android_startup.out
index f804a34..752db7b 100644
--- a/test/trace_processor/startup/android_startup.out
+++ b/test/trace_processor/diff_tests/startup/android_startup.out
@@ -8,7 +8,7 @@
       dur_ns: 108
       main_thread_by_task_state {
         running_dur_ns: 10
-        runnable_dur_ns: 80
+        runnable_dur_ns: 90
         uninterruptible_sleep_dur_ns: 0
         interruptible_sleep_dur_ns: 10
         uninterruptible_io_sleep_dur_ns: 0
diff --git a/test/trace_processor/startup/android_startup.py b/test/trace_processor/diff_tests/startup/android_startup.py
similarity index 100%
rename from test/trace_processor/startup/android_startup.py
rename to test/trace_processor/diff_tests/startup/android_startup.py
diff --git a/test/trace_processor/startup/android_startup_attribution.out b/test/trace_processor/diff_tests/startup/android_startup_attribution.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_attribution.out
rename to test/trace_processor/diff_tests/startup/android_startup_attribution.out
diff --git a/test/trace_processor/startup/android_startup_attribution.py b/test/trace_processor/diff_tests/startup/android_startup_attribution.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_attribution.py
rename to test/trace_processor/diff_tests/startup/android_startup_attribution.py
diff --git a/test/trace_processor/startup/android_startup_attribution_slow.out b/test/trace_processor/diff_tests/startup/android_startup_attribution_slow.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_attribution_slow.out
rename to test/trace_processor/diff_tests/startup/android_startup_attribution_slow.out
diff --git a/test/trace_processor/startup/android_startup_attribution_slow.py b/test/trace_processor/diff_tests/startup/android_startup_attribution_slow.py
similarity index 83%
rename from test/trace_processor/startup/android_startup_attribution_slow.py
rename to test/trace_processor/diff_tests/startup/android_startup_attribution_slow.py
index 2707af9..aa81cca 100644
--- a/test/trace_processor/startup/android_startup_attribution_slow.py
+++ b/test/trace_processor/diff_tests/startup/android_startup_attribution_slow.py
@@ -17,9 +17,11 @@
 
 import synth_common
 
+
 def to_s(ts):
   return ts * 1000 * 1000 * 1000
 
+
 APP_PID = 3
 APP_TID = APP_PID
 SECOND_APP_TID = 3
@@ -51,7 +53,8 @@
 trace.add_thread(tid=BINDER_TID, tgid=APP_PID, cmdline='Binder', name='Binder')
 trace.add_thread(tid=FONTS_TID, tgid=APP_PID, cmdline='fonts', name='fonts')
 
-trace.add_package_list(ts=to_s(99), name='com.some.app', uid=10001, version_code=123)
+trace.add_package_list(
+    ts=to_s(99), name='com.some.app', uid=10001, version_code=123)
 
 trace.add_ftrace_packet(cpu=0)
 # Start intent.
@@ -71,16 +74,23 @@
     buf='launching: com.some.app')
 
 # Emulate a hot start (and therefore that we only see activityResume).
-trace.add_atrace_begin(ts=to_s(125), tid=APP_TID, pid=APP_PID, buf='activityResume')
+trace.add_atrace_begin(
+    ts=to_s(125), tid=APP_TID, pid=APP_PID, buf='activityResume')
 trace.add_atrace_end(ts=to_s(130), tid=APP_TID, pid=APP_PID)
 
 # OpenDex slices within the startup.
 trace.add_atrace_begin(
-    ts=to_s(150), pid=APP_PID, tid=APP_TID, buf='OpenDexFilesFromOat(something)')
+    ts=to_s(150),
+    pid=APP_PID,
+    tid=APP_TID,
+    buf='OpenDexFilesFromOat(something)')
 trace.add_atrace_end(ts=to_s(165), pid=APP_PID, tid=APP_TID)
 
 trace.add_atrace_begin(
-    ts=to_s(170), pid=APP_PID, tid=APP_TID, buf='OpenDexFilesFromOat(something else)')
+    ts=to_s(170),
+    pid=APP_PID,
+    tid=APP_TID,
+    buf='OpenDexFilesFromOat(something else)')
 trace.add_atrace_end(ts=to_s(175), pid=APP_PID, tid=APP_TID)
 
 # OpenDex slice outside the startup.
@@ -95,14 +105,17 @@
     buf='launching: com.some.app')
 
 # VerifyClass slices within the startup.
-trace.add_atrace_begin(ts=to_s(250), pid=APP_PID, tid=APP_TID, buf='VerifyClass vr')
+trace.add_atrace_begin(
+    ts=to_s(250), pid=APP_PID, tid=APP_TID, buf='VerifyClass vr')
 trace.add_atrace_end(ts=to_s(265), pid=APP_PID, tid=APP_TID)
 
-trace.add_atrace_begin(ts=to_s(270), pid=APP_PID, tid=APP_TID, buf='VerifyClass dl')
+trace.add_atrace_begin(
+    ts=to_s(270), pid=APP_PID, tid=APP_TID, buf='VerifyClass dl')
 trace.add_atrace_end(ts=to_s(275), pid=APP_PID, tid=APP_TID)
 
 # VerifyClass slice outside the startup.
-trace.add_atrace_begin(ts=to_s(55), pid=APP_PID, tid=APP_TID, buf='VerifyClass xf')
+trace.add_atrace_begin(
+    ts=to_s(55), pid=APP_PID, tid=APP_TID, buf='VerifyClass xf')
 trace.add_atrace_end(ts=to_s(65), pid=APP_PID, tid=APP_TID)
 
 # VerifyClass slice on a different thread, overlapping with the other slices.
@@ -113,16 +126,16 @@
 for t in range(100, 160, 2):
   # JIT compilation slices
   trace.add_atrace_begin(
-    ts=to_s(t), pid=APP_PID, tid=JIT_TID, buf='JIT compiling someting')
-  trace.add_atrace_end(ts=to_s(t+1), pid=APP_PID, tid=JIT_TID)
+      ts=to_s(t), pid=APP_PID, tid=JIT_TID, buf='JIT compiling someting')
+  trace.add_atrace_end(ts=to_s(t + 1), pid=APP_PID, tid=JIT_TID)
 
 trace.add_sched(ts=to_s(155), prev_pid=0, next_pid=JIT_TID)
 trace.add_sched(ts=to_s(165), prev_pid=JIT_TID, next_pid=0)
 
 for t in range(168, 190, 2):
   trace.add_atrace_begin(
-    ts=to_s(t), pid=APP_PID, tid=JIT_TID, buf='JIT compiling something else')
-  trace.add_atrace_end(ts=to_s(t+1), pid=APP_PID, tid=JIT_TID)
+      ts=to_s(t), pid=APP_PID, tid=JIT_TID, buf='JIT compiling something else')
+  trace.add_atrace_end(ts=to_s(t + 1), pid=APP_PID, tid=JIT_TID)
 
 trace.add_sched(ts=to_s(170), prev_pid=0, next_pid=JIT_TID)
 trace.add_sched(ts=to_s(175), prev_pid=JIT_TID, next_pid=0, prev_state='R')
@@ -141,14 +154,21 @@
 
 # GC slices.
 trace.add_atrace_begin(
-    ts=to_s(300), pid=APP_PID, tid=GC_TID, buf='Background concurrent copying GC')
+    ts=to_s(300),
+    pid=APP_PID,
+    tid=GC_TID,
+    buf='Background concurrent copying GC')
 trace.add_atrace_end(ts=to_s(330), pid=APP_PID, tid=GC_TID)
 
 trace.add_atrace_begin(
-    ts=to_s(340), pid=APP_PID, tid=GC_TID, buf='CollectorTransition mark sweep GC')
+    ts=to_s(340),
+    pid=APP_PID,
+    tid=GC_TID,
+    buf='CollectorTransition mark sweep GC')
 trace.add_atrace_end(ts=to_s(390), pid=APP_PID, tid=GC_TID)
 
-trace.add_atrace_begin(ts=to_s(320), pid=APP_PID, tid=GC2_TID, buf='semispace GC')
+trace.add_atrace_begin(
+    ts=to_s(320), pid=APP_PID, tid=GC2_TID, buf='semispace GC')
 trace.add_atrace_end(ts=to_s(370), pid=APP_PID, tid=GC2_TID)
 
 # Start running copying slice on the first thread
diff --git a/test/trace_processor/startup/android_startup_battery.py b/test/trace_processor/diff_tests/startup/android_startup_battery.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_battery.py
rename to test/trace_processor/diff_tests/startup/android_startup_battery.py
diff --git a/test/trace_processor/startup/android_startup_breakdown.out b/test/trace_processor/diff_tests/startup/android_startup_breakdown.out
similarity index 96%
rename from test/trace_processor/startup/android_startup_breakdown.out
rename to test/trace_processor/diff_tests/startup/android_startup_breakdown.out
index d58a886..8b35bb5 100644
--- a/test/trace_processor/startup/android_startup_breakdown.out
+++ b/test/trace_processor/diff_tests/startup/android_startup_breakdown.out
@@ -8,7 +8,7 @@
       dur_ns: 108000000000
       main_thread_by_task_state {
         running_dur_ns: 25000000000
-        runnable_dur_ns: 5000000000
+        runnable_dur_ns: 30000000000
         uninterruptible_sleep_dur_ns: 0
         interruptible_sleep_dur_ns: 0
         uninterruptible_io_sleep_dur_ns: 0
@@ -107,6 +107,7 @@
     slow_start_reason: "Time spent in bindApplication"
     slow_start_reason: "Time spent in view inflation"
     slow_start_reason: "Time spent in ResourcesManager#getResources"
+    slow_start_reason: "Potential CPU contention with init"
     slow_start_reason: "No baseline or cloud profiles"
     slow_start_reason: "Optimized artifacts missing, run from apk"
     startup_type: "cold"
diff --git a/test/trace_processor/startup/android_startup_breakdown.py b/test/trace_processor/diff_tests/startup/android_startup_breakdown.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_breakdown.py
rename to test/trace_processor/diff_tests/startup/android_startup_breakdown.py
diff --git a/test/trace_processor/startup/android_startup_breakdown_slow.out b/test/trace_processor/diff_tests/startup/android_startup_breakdown_slow.out
similarity index 96%
rename from test/trace_processor/startup/android_startup_breakdown_slow.out
rename to test/trace_processor/diff_tests/startup/android_startup_breakdown_slow.out
index fec1c2e..3ed8ce3 100644
--- a/test/trace_processor/startup/android_startup_breakdown_slow.out
+++ b/test/trace_processor/diff_tests/startup/android_startup_breakdown_slow.out
@@ -8,7 +8,7 @@
       dur_ns: 108000000000
       main_thread_by_task_state {
         running_dur_ns: 25000000000
-        runnable_dur_ns: 5000000000
+        runnable_dur_ns: 30000000000
         uninterruptible_sleep_dur_ns: 0
         interruptible_sleep_dur_ns: 0
         uninterruptible_io_sleep_dur_ns: 0
@@ -107,6 +107,7 @@
     slow_start_reason: "Time spent in bindApplication"
     slow_start_reason: "Time spent in view inflation"
     slow_start_reason: "Time spent in ResourcesManager#getResources"
+    slow_start_reason: "Potential CPU contention with init"
     slow_start_reason: "Optimized artifacts missing, run from apk"
     startup_type: "cold"
   }
diff --git a/test/trace_processor/startup/android_startup_breakdown_slow.py b/test/trace_processor/diff_tests/startup/android_startup_breakdown_slow.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_breakdown_slow.py
rename to test/trace_processor/diff_tests/startup/android_startup_breakdown_slow.py
diff --git a/test/trace_processor/startup/android_startup_broadcast.out b/test/trace_processor/diff_tests/startup/android_startup_broadcast.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_broadcast.out
rename to test/trace_processor/diff_tests/startup/android_startup_broadcast.out
diff --git a/test/trace_processor/startup/android_startup_broadcast.py b/test/trace_processor/diff_tests/startup/android_startup_broadcast.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_broadcast.py
rename to test/trace_processor/diff_tests/startup/android_startup_broadcast.py
diff --git a/test/trace_processor/startup/android_startup_broadcast_multiple.out b/test/trace_processor/diff_tests/startup/android_startup_broadcast_multiple.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_broadcast_multiple.out
rename to test/trace_processor/diff_tests/startup/android_startup_broadcast_multiple.out
diff --git a/test/trace_processor/startup/android_startup_broadcast_multiple.py b/test/trace_processor/diff_tests/startup/android_startup_broadcast_multiple.py
similarity index 83%
rename from test/trace_processor/startup/android_startup_broadcast_multiple.py
rename to test/trace_processor/diff_tests/startup/android_startup_broadcast_multiple.py
index a1a5264..4b5f5b2 100644
--- a/test/trace_processor/startup/android_startup_broadcast_multiple.py
+++ b/test/trace_processor/diff_tests/startup/android_startup_broadcast_multiple.py
@@ -33,15 +33,15 @@
 
 for t in range(105, 129, 2):
   trace.add_atrace_begin(
-    ts=t,
-    tid=1,
-    pid=1,
-    buf='Broadcast dispatched from android (2005:system/1000) x')
-  trace.add_atrace_end(ts=t+1, tid=1, pid=1)
+      ts=t,
+      tid=1,
+      pid=1,
+      buf='Broadcast dispatched from android (2005:system/1000) x')
+  trace.add_atrace_end(ts=t + 1, tid=1, pid=1)
 
 for t in range(130, 152, 2):
-    trace.add_atrace_begin(ts=t, tid=2, pid=2, buf='broadcastReceiveReg: x')
-    trace.add_atrace_end(ts=t+1, tid=2, pid=2)
+  trace.add_atrace_begin(ts=t, tid=2, pid=2, buf='broadcastReceiveReg: x')
+  trace.add_atrace_end(ts=t + 1, tid=2, pid=2)
 
 trace.add_atrace_instant(
     ts=201,
diff --git a/test/trace_processor/startup/android_startup_cpu.out b/test/trace_processor/diff_tests/startup/android_startup_cpu.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_cpu.out
rename to test/trace_processor/diff_tests/startup/android_startup_cpu.out
diff --git a/test/trace_processor/startup/android_startup_cpu.py b/test/trace_processor/diff_tests/startup/android_startup_cpu.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_cpu.py
rename to test/trace_processor/diff_tests/startup/android_startup_cpu.py
diff --git a/test/trace_processor/startup/android_startup_installd_dex2oat.out b/test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_installd_dex2oat.out
rename to test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat.out
diff --git a/test/trace_processor/startup/android_startup_installd_dex2oat.py b/test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_installd_dex2oat.py
rename to test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat.py
diff --git a/test/trace_processor/startup/android_startup_installd_dex2oat_slow.out b/test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat_slow.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_installd_dex2oat_slow.out
rename to test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat_slow.out
diff --git a/test/trace_processor/startup/android_startup_installd_dex2oat_slow.py b/test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat_slow.py
similarity index 74%
rename from test/trace_processor/startup/android_startup_installd_dex2oat_slow.py
rename to test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat_slow.py
index 1756722..3e59d25 100644
--- a/test/trace_processor/startup/android_startup_installd_dex2oat_slow.py
+++ b/test/trace_processor/diff_tests/startup/android_startup_installd_dex2oat_slow.py
@@ -17,9 +17,11 @@
 
 import synth_common
 
+
 def to_s(ts):
   return ts * 1000 * 1000 * 1000
 
+
 trace = synth_common.create_trace()
 trace.add_packet()
 trace.add_process(1, 0, 'init')
@@ -34,17 +36,25 @@
 trace.add_package_list(
     ts=to_s(1), name='com.google.android.calendar', uid=10003, version_code=123)
 trace.add_package_list(
-    ts=to_s(2), name='com.google.android.calculator', uid=10004, version_code=123)
+    ts=to_s(2),
+    name='com.google.android.calculator',
+    uid=10004,
+    version_code=123)
 trace.add_package_list(
-    ts=to_s(3), name='com.google.android.deskclock', uid=10005, version_code=123)
+    ts=to_s(3),
+    name='com.google.android.deskclock',
+    uid=10005,
+    version_code=123)
 trace.add_package_list(
     ts=to_s(4), name='com.google.android.gm', uid=10006, version_code=123)
 
 trace.add_ftrace_packet(cpu=0)
 
 # First launch: don't have either dex2oat or installd
-trace.add_atrace_async_begin(ts=to_s(100), tid=2, pid=2, buf='launchingActivity#1')
-trace.add_atrace_async_end(ts=to_s(200), tid=2, pid=2, buf='launchingActivity#1')
+trace.add_atrace_async_begin(
+    ts=to_s(100), tid=2, pid=2, buf='launchingActivity#1')
+trace.add_atrace_async_end(
+    ts=to_s(200), tid=2, pid=2, buf='launchingActivity#1')
 trace.add_atrace_instant(
     ts=to_s(201),
     tid=2,
@@ -52,10 +62,12 @@
     buf='launchingActivity#1:completed:com.google.android.calendar')
 
 # Second launch: just dex2oat
-trace.add_atrace_async_begin(ts=to_s(300), tid=2, pid=2, buf='launchingActivity#2')
+trace.add_atrace_async_begin(
+    ts=to_s(300), tid=2, pid=2, buf='launchingActivity#2')
 trace.add_sched(ts=to_s(305), prev_pid=0, next_pid=10)
 trace.add_sched(ts=to_s(310), prev_pid=10, next_pid=0)
-trace.add_atrace_async_end(ts=to_s(400), tid=2, pid=2, buf='launchingActivity#2')
+trace.add_atrace_async_end(
+    ts=to_s(400), tid=2, pid=2, buf='launchingActivity#2')
 trace.add_atrace_instant(
     ts=to_s(401),
     tid=2,
@@ -63,10 +75,12 @@
     buf='launchingActivity#2:completed:com.google.android.calculator')
 
 # Third launch: just installd
-trace.add_atrace_async_begin(ts=to_s(500), tid=2, pid=2, buf='launchingActivity#3')
+trace.add_atrace_async_begin(
+    ts=to_s(500), tid=2, pid=2, buf='launchingActivity#3')
 trace.add_sched(ts=to_s(505), prev_pid=0, next_pid=11)
 trace.add_sched(ts=to_s(510), prev_pid=11, next_pid=0)
-trace.add_atrace_async_end(ts=to_s(750), tid=2, pid=2, buf='launchingActivity#3')
+trace.add_atrace_async_end(
+    ts=to_s(750), tid=2, pid=2, buf='launchingActivity#3')
 trace.add_atrace_instant(
     ts=to_s(751),
     tid=2,
@@ -74,12 +88,14 @@
     buf='launchingActivity#3:completed:com.google.android.deskclock')
 
 # Third launch: just installd
-trace.add_atrace_async_begin(ts=to_s(700), tid=2, pid=2, buf='launchingActivity#4')
+trace.add_atrace_async_begin(
+    ts=to_s(700), tid=2, pid=2, buf='launchingActivity#4')
 trace.add_sched(ts=to_s(705), prev_pid=0, next_pid=10)
 trace.add_sched(ts=to_s(710), prev_pid=10, next_pid=0)
 trace.add_sched(ts=to_s(715), prev_pid=0, next_pid=11)
 trace.add_sched(ts=to_s(720), prev_pid=11, next_pid=0)
-trace.add_atrace_async_end(ts=to_s(800), tid=2, pid=2, buf='launchingActivity#4')
+trace.add_atrace_async_end(
+    ts=to_s(800), tid=2, pid=2, buf='launchingActivity#4')
 trace.add_atrace_instant(
     ts=to_s(801),
     tid=2,
diff --git a/test/trace_processor/startup/android_startup_lock_contention.out b/test/trace_processor/diff_tests/startup/android_startup_lock_contention.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_lock_contention.out
rename to test/trace_processor/diff_tests/startup/android_startup_lock_contention.out
diff --git a/test/trace_processor/startup/android_startup_lock_contention.py b/test/trace_processor/diff_tests/startup/android_startup_lock_contention.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_lock_contention.py
rename to test/trace_processor/diff_tests/startup/android_startup_lock_contention.py
diff --git a/test/trace_processor/startup/android_startup_lock_contention_slow.out b/test/trace_processor/diff_tests/startup/android_startup_lock_contention_slow.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_lock_contention_slow.out
rename to test/trace_processor/diff_tests/startup/android_startup_lock_contention_slow.out
diff --git a/test/trace_processor/startup/android_startup_lock_contention_slow.py b/test/trace_processor/diff_tests/startup/android_startup_lock_contention_slow.py
similarity index 93%
rename from test/trace_processor/startup/android_startup_lock_contention_slow.py
rename to test/trace_processor/diff_tests/startup/android_startup_lock_contention_slow.py
index bc4ee7e..c447b08 100644
--- a/test/trace_processor/startup/android_startup_lock_contention_slow.py
+++ b/test/trace_processor/diff_tests/startup/android_startup_lock_contention_slow.py
@@ -17,9 +17,11 @@
 
 import synth_common
 
+
 def to_s(ts):
   return ts * 1000 * 1000 * 1000
 
+
 trace = synth_common.create_trace()
 trace.add_packet()
 trace.add_process(1, 0, 'init')
@@ -31,8 +33,10 @@
     ts=to_s(1), name='com.google.android.calendar', uid=10001, version_code=123)
 
 trace.add_ftrace_packet(cpu=0)
-trace.add_atrace_async_begin(ts=to_s(110), tid=2, pid=2, buf='launchingActivity#1')
-trace.add_atrace_async_end(ts=to_s(210), tid=2, pid=2, buf='launchingActivity#1')
+trace.add_atrace_async_begin(
+    ts=to_s(110), tid=2, pid=2, buf='launchingActivity#1')
+trace.add_atrace_async_end(
+    ts=to_s(210), tid=2, pid=2, buf='launchingActivity#1')
 
 # Required so we know this process is the one being started up.
 trace.add_atrace_begin(ts=to_s(112), tid=3, pid=3, buf='bindApplication')
diff --git a/test/trace_processor/startup/android_startup_minsdk33.out b/test/trace_processor/diff_tests/startup/android_startup_minsdk33.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_minsdk33.out
rename to test/trace_processor/diff_tests/startup/android_startup_minsdk33.out
diff --git a/test/trace_processor/startup/android_startup_minsdk33.py b/test/trace_processor/diff_tests/startup/android_startup_minsdk33.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_minsdk33.py
rename to test/trace_processor/diff_tests/startup/android_startup_minsdk33.py
diff --git a/test/trace_processor/startup/android_startup_powrails.out b/test/trace_processor/diff_tests/startup/android_startup_powrails.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_powrails.out
rename to test/trace_processor/diff_tests/startup/android_startup_powrails.out
diff --git a/test/trace_processor/startup/android_startup_powrails.py b/test/trace_processor/diff_tests/startup/android_startup_powrails.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_powrails.py
rename to test/trace_processor/diff_tests/startup/android_startup_powrails.py
diff --git a/test/trace_processor/startup/android_startup_process_track.out b/test/trace_processor/diff_tests/startup/android_startup_process_track.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_process_track.out
rename to test/trace_processor/diff_tests/startup/android_startup_process_track.out
diff --git a/test/trace_processor/startup/android_startup_process_track.py b/test/trace_processor/diff_tests/startup/android_startup_process_track.py
similarity index 100%
rename from test/trace_processor/startup/android_startup_process_track.py
rename to test/trace_processor/diff_tests/startup/android_startup_process_track.py
diff --git a/test/trace_processor/startup/android_startup_slow.out b/test/trace_processor/diff_tests/startup/android_startup_slow.out
similarity index 95%
rename from test/trace_processor/startup/android_startup_slow.out
rename to test/trace_processor/diff_tests/startup/android_startup_slow.out
index 9ae0024..333883a 100644
--- a/test/trace_processor/startup/android_startup_slow.out
+++ b/test/trace_processor/diff_tests/startup/android_startup_slow.out
@@ -8,7 +8,7 @@
       dur_ns: 108000000000
       main_thread_by_task_state {
         running_dur_ns: 10000000000
-        runnable_dur_ns: 80000000000
+        runnable_dur_ns: 90000000000
         uninterruptible_sleep_dur_ns: 5000000000
         interruptible_sleep_dur_ns: 5000000000
         uninterruptible_io_sleep_dur_ns: 5000000000
@@ -67,5 +67,6 @@
     slow_start_reason: "Main Thread - Time spent in Runnable state"
     slow_start_reason: "Main Thread - Time spent in interruptible sleep state"
     slow_start_reason: "Main Thread - Time spent in Blocking I/O"
+    slow_start_reason: "Potential CPU contention with init"
   }
 }
diff --git a/test/trace_processor/startup/android_startup_slow.py b/test/trace_processor/diff_tests/startup/android_startup_slow.py
similarity index 92%
rename from test/trace_processor/startup/android_startup_slow.py
rename to test/trace_processor/diff_tests/startup/android_startup_slow.py
index 0977fff..c85d320 100644
--- a/test/trace_processor/startup/android_startup_slow.py
+++ b/test/trace_processor/diff_tests/startup/android_startup_slow.py
@@ -17,9 +17,11 @@
 
 import synth_common
 
+
 def to_s(ts):
   return ts * 1000 * 1000 * 1000
 
+
 trace = synth_common.create_trace()
 trace.add_packet()
 trace.add_process(1, 0, 'init')
@@ -33,12 +35,18 @@
 trace.add_ftrace_packet(cpu=0)
 # Intent without any corresponding end state, will be ignored
 trace.add_atrace_begin(
-    ts=to_s(100), tid=2, pid=2, buf='MetricsLogger:launchObserverNotifyIntentStarted')
+    ts=to_s(100),
+    tid=2,
+    pid=2,
+    buf='MetricsLogger:launchObserverNotifyIntentStarted')
 trace.add_atrace_end(ts=to_s(101), tid=2, pid=2)
 
 # Start intent for a successful launch of calendar
 trace.add_atrace_begin(
-    ts=to_s(102), tid=2, pid=2, buf='MetricsLogger:launchObserverNotifyIntentStarted')
+    ts=to_s(102),
+    tid=2,
+    pid=2,
+    buf='MetricsLogger:launchObserverNotifyIntentStarted')
 trace.add_atrace_end(ts=to_s(103), tid=2, pid=2)
 
 trace.add_atrace_async_begin(
@@ -93,7 +101,10 @@
 
 # Start intent for calendar, we failed to launch the activity.
 trace.add_atrace_begin(
-    ts=to_s(402), tid=2, pid=2, buf='MetricsLogger:launchObserverNotifyIntentStarted')
+    ts=to_s(402),
+    tid=2,
+    pid=2,
+    buf='MetricsLogger:launchObserverNotifyIntentStarted')
 trace.add_atrace_end(ts=to_s(403), tid=2, pid=2)
 
 trace.add_atrace_async_begin(
diff --git a/test/trace_processor/startup/android_startup_unlock.out b/test/trace_processor/diff_tests/startup/android_startup_unlock.out
similarity index 100%
rename from test/trace_processor/startup/android_startup_unlock.out
rename to test/trace_processor/diff_tests/startup/android_startup_unlock.out
diff --git a/test/trace_processor/startup/android_startup_unlock.py b/test/trace_processor/diff_tests/startup/android_startup_unlock.py
similarity index 93%
rename from test/trace_processor/startup/android_startup_unlock.py
rename to test/trace_processor/diff_tests/startup/android_startup_unlock.py
index fc73899..59d2d45 100644
--- a/test/trace_processor/startup/android_startup_unlock.py
+++ b/test/trace_processor/diff_tests/startup/android_startup_unlock.py
@@ -34,8 +34,8 @@
 trace.add_atrace_async_begin(ts=100, tid=2, pid=2, buf='launchingActivity#1')
 trace.add_atrace_async_end(ts=200, tid=2, pid=2, buf='launchingActivity#1')
 
-
-trace.add_atrace_begin(ts=130, tid=2, pid=4, buf='KeyguardUpdateMonitor#onAuthenticationSucceeded')
+trace.add_atrace_begin(
+    ts=130, tid=2, pid=4, buf='KeyguardUpdateMonitor#onAuthenticationSucceeded')
 trace.add_atrace_end(ts=133, tid=2, pid=4)
 
 trace.add_atrace_instant(
diff --git a/test/trace_processor/startup/tests.py b/test/trace_processor/diff_tests/startup/tests.py
similarity index 95%
rename from test/trace_processor/startup/tests.py
rename to test/trace_processor/diff_tests/startup/tests.py
index af0d184..b365fcf 100644
--- a/test/trace_processor/startup/tests.py
+++ b/test/trace_processor/diff_tests/startup/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/startup/tests_broadcasts.py b/test/trace_processor/diff_tests/startup/tests_broadcasts.py
similarity index 94%
rename from test/trace_processor/startup/tests_broadcasts.py
rename to test/trace_processor/diff_tests/startup/tests_broadcasts.py
index 16dd96b..34b6756 100644
--- a/test/trace_processor/startup/tests_broadcasts.py
+++ b/test/trace_processor/diff_tests/startup/tests_broadcasts.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/startup/tests_lock_contention.py b/test/trace_processor/diff_tests/startup/tests_lock_contention.py
similarity index 94%
rename from test/trace_processor/startup/tests_lock_contention.py
rename to test/trace_processor/diff_tests/startup/tests_lock_contention.py
index a3e3cd0..f41bfe3 100644
--- a/test/trace_processor/startup/tests_lock_contention.py
+++ b/test/trace_processor/diff_tests/startup/tests_lock_contention.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/startup/tests_metrics.py b/test/trace_processor/diff_tests/startup/tests_metrics.py
similarity index 97%
rename from test/trace_processor/startup/tests_metrics.py
rename to test/trace_processor/diff_tests/startup/tests_metrics.py
index f326188..99911da 100644
--- a/test/trace_processor/startup/tests_metrics.py
+++ b/test/trace_processor/diff_tests/startup/tests_metrics.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/tables/counter_dur_test.sql b/test/trace_processor/diff_tests/tables/counter_dur_test.sql
similarity index 100%
rename from test/trace_processor/tables/counter_dur_test.sql
rename to test/trace_processor/diff_tests/tables/counter_dur_test.sql
diff --git a/test/trace_processor/tables/counters_group_by_freq.py b/test/trace_processor/diff_tests/tables/counters_group_by_freq.py
similarity index 100%
rename from test/trace_processor/tables/counters_group_by_freq.py
rename to test/trace_processor/diff_tests/tables/counters_group_by_freq.py
diff --git a/test/trace_processor/tables/counters_where_cpu.py b/test/trace_processor/diff_tests/tables/counters_where_cpu.py
similarity index 100%
rename from test/trace_processor/tables/counters_where_cpu.py
rename to test/trace_processor/diff_tests/tables/counters_where_cpu.py
diff --git a/test/trace_processor/tables/filter_row_vector_example_android_trace_30s.out b/test/trace_processor/diff_tests/tables/filter_row_vector_example_android_trace_30s.out
similarity index 100%
rename from test/trace_processor/tables/filter_row_vector_example_android_trace_30s.out
rename to test/trace_processor/diff_tests/tables/filter_row_vector_example_android_trace_30s.out
diff --git a/test/trace_processor/tables/nulls.out b/test/trace_processor/diff_tests/tables/nulls.out
similarity index 100%
rename from test/trace_processor/tables/nulls.out
rename to test/trace_processor/diff_tests/tables/nulls.out
diff --git a/test/trace_processor/tables/tests.py b/test/trace_processor/diff_tests/tables/tests.py
similarity index 95%
rename from test/trace_processor/tables/tests.py
rename to test/trace_processor/diff_tests/tables/tests.py
index 4b43712..2f2e926 100644
--- a/test/trace_processor/tables/tests.py
+++ b/test/trace_processor/diff_tests/tables/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -27,7 +27,7 @@
   # for choosing which folder to add a new test to. Window table
   def test_android_sched_and_ps_smoke_window(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT * FROM "window";
         """,
@@ -143,7 +143,7 @@
   # Json output
   def test_trace_metadata(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query=Metric('trace_metadata'),
         out=Path('trace_metadata.json.out'))
 
@@ -196,7 +196,7 @@
   # Ftrace stats imports in metadata and stats tables
   def test_ftrace_setup_errors(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/ftrace_error_stats.pftrace'),
+        trace=DataPath('ftrace_error_stats.pftrace'),
         query="""
         SELECT value FROM stats WHERE name = 'ftrace_setup_errors'
         UNION ALL
diff --git a/test/trace_processor/tables/tests_counters.py b/test/trace_processor/diff_tests/tables/tests_counters.py
similarity index 93%
rename from test/trace_processor/tables/tests_counters.py
rename to test/trace_processor/diff_tests/tables/tests_counters.py
index c011a92..8ed753f 100644
--- a/test/trace_processor/tables/tests_counters.py
+++ b/test/trace_processor/diff_tests/tables/tests_counters.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -37,7 +37,7 @@
 
   def test_memory_counters_b120278869_neg_ts_end(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/memory_counters.pb'),
+        trace=DataPath('memory_counters.pb'),
         query="""
         SELECT count(*) FROM counters WHERE -1 < ts;
         """,
@@ -89,7 +89,7 @@
 
   def test_filter_row_vector_example_android_trace_30s(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/example_android_trace_30s.pb'),
+        trace=DataPath('example_android_trace_30s.pb'),
         query="""
         SELECT ts
         FROM counter
@@ -110,7 +110,7 @@
 
   def test_counter_dur_example_android_trace_30s(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/example_android_trace_30s.pb'),
+        trace=DataPath('example_android_trace_30s.pb'),
         query=Path('counter_dur_test.sql'),
         out=Csv("""
         "ts","dur"
diff --git a/test/trace_processor/tables/tests_sched.py b/test/trace_processor/diff_tests/tables/tests_sched.py
similarity index 92%
rename from test/trace_processor/tables/tests_sched.py
rename to test/trace_processor/diff_tests/tables/tests_sched.py
index 98af57a..1f1ee49 100644
--- a/test/trace_processor/tables/tests_sched.py
+++ b/test/trace_processor/diff_tests/tables/tests_sched.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -40,7 +40,7 @@
 
   def test_android_sched_and_ps_b119496959(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT ts, cpu FROM sched WHERE ts >= 81473797418963 LIMIT 10;
         """,
@@ -60,7 +60,7 @@
 
   def test_android_sched_and_ps_b119301023(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/android_sched_and_ps.pb'),
+        trace=DataPath('android_sched_and_ps.pb'),
         query="""
         SELECT ts FROM sched
         WHERE ts > 0.1 + 1e9
diff --git a/test/trace_processor/tables/trace_metadata.json.out b/test/trace_processor/diff_tests/tables/trace_metadata.json.out
similarity index 100%
rename from test/trace_processor/tables/trace_metadata.json.out
rename to test/trace_processor/diff_tests/tables/trace_metadata.json.out
diff --git a/test/trace_processor/track_event/experimental_slice_layout_depth.py b/test/trace_processor/diff_tests/track_event/experimental_slice_layout_depth.py
similarity index 100%
rename from test/trace_processor/track_event/experimental_slice_layout_depth.py
rename to test/trace_processor/diff_tests/track_event/experimental_slice_layout_depth.py
diff --git a/test/trace_processor/track_event/flow_events_proto_v1.textproto b/test/trace_processor/diff_tests/track_event/flow_events_proto_v1.textproto
similarity index 100%
rename from test/trace_processor/track_event/flow_events_proto_v1.textproto
rename to test/trace_processor/diff_tests/track_event/flow_events_proto_v1.textproto
diff --git a/test/trace_processor/track_event/flow_events_proto_v2.textproto b/test/trace_processor/diff_tests/track_event/flow_events_proto_v2.textproto
similarity index 100%
rename from test/trace_processor/track_event/flow_events_proto_v2.textproto
rename to test/trace_processor/diff_tests/track_event/flow_events_proto_v2.textproto
diff --git a/test/trace_processor/track_event/flow_events_track_event.textproto b/test/trace_processor/diff_tests/track_event/flow_events_track_event.textproto
similarity index 100%
rename from test/trace_processor/track_event/flow_events_track_event.textproto
rename to test/trace_processor/diff_tests/track_event/flow_events_track_event.textproto
diff --git a/test/trace_processor/track_event/legacy_async_event.out b/test/trace_processor/diff_tests/track_event/legacy_async_event.out
similarity index 100%
rename from test/trace_processor/track_event/legacy_async_event.out
rename to test/trace_processor/diff_tests/track_event/legacy_async_event.out
diff --git a/test/trace_processor/track_event/legacy_async_event.textproto b/test/trace_processor/diff_tests/track_event/legacy_async_event.textproto
similarity index 100%
rename from test/trace_processor/track_event/legacy_async_event.textproto
rename to test/trace_processor/diff_tests/track_event/legacy_async_event.textproto
diff --git a/test/trace_processor/track_event/range_of_interest.textproto b/test/trace_processor/diff_tests/track_event/range_of_interest.textproto
similarity index 100%
rename from test/trace_processor/track_event/range_of_interest.textproto
rename to test/trace_processor/diff_tests/track_event/range_of_interest.textproto
diff --git a/test/trace_processor/track_event/tests.py b/test/trace_processor/diff_tests/track_event/tests.py
similarity index 99%
rename from test/trace_processor/track_event/tests.py
rename to test/trace_processor/diff_tests/track_event/tests.py
index 8b3e6fb..884f17e 100644
--- a/test/trace_processor/track_event/tests.py
+++ b/test/trace_processor/diff_tests/track_event/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
@@ -631,7 +631,7 @@
   # Descriptor merging regression test (bug: b/197203390)
   def test_merging_regression(self):
     return DiffTestBlueprint(
-        trace=Path('../../data/trace_with_descriptor.pftrace'),
+        trace=DataPath('trace_with_descriptor.pftrace'),
         query="""
         SELECT ts FROM slice ORDER BY ts LIMIT 10;
         """,
diff --git a/test/trace_processor/track_event/track_event_args_test.sql b/test/trace_processor/diff_tests/track_event/track_event_args_test.sql
similarity index 100%
rename from test/trace_processor/track_event/track_event_args_test.sql
rename to test/trace_processor/diff_tests/track_event/track_event_args_test.sql
diff --git a/test/trace_processor/track_event/track_event_chrome_histogram_sample.textproto b/test/trace_processor/diff_tests/track_event/track_event_chrome_histogram_sample.textproto
similarity index 100%
rename from test/trace_processor/track_event/track_event_chrome_histogram_sample.textproto
rename to test/trace_processor/diff_tests/track_event/track_event_chrome_histogram_sample.textproto
diff --git a/test/trace_processor/track_event/track_event_chrome_histogram_sample_args.out b/test/trace_processor/diff_tests/track_event/track_event_chrome_histogram_sample_args.out
similarity index 100%
rename from test/trace_processor/track_event/track_event_chrome_histogram_sample_args.out
rename to test/trace_processor/diff_tests/track_event/track_event_chrome_histogram_sample_args.out
diff --git a/test/trace_processor/track_event/track_event_counters.textproto b/test/trace_processor/diff_tests/track_event/track_event_counters.textproto
similarity index 100%
rename from test/trace_processor/track_event/track_event_counters.textproto
rename to test/trace_processor/diff_tests/track_event/track_event_counters.textproto
diff --git a/test/trace_processor/track_event/track_event_counters_counters.out b/test/trace_processor/diff_tests/track_event/track_event_counters_counters.out
similarity index 100%
rename from test/trace_processor/track_event/track_event_counters_counters.out
rename to test/trace_processor/diff_tests/track_event/track_event_counters_counters.out
diff --git a/test/trace_processor/track_event/track_event_merged_debug_annotations.textproto b/test/trace_processor/diff_tests/track_event/track_event_merged_debug_annotations.textproto
similarity index 100%
rename from test/trace_processor/track_event/track_event_merged_debug_annotations.textproto
rename to test/trace_processor/diff_tests/track_event/track_event_merged_debug_annotations.textproto
diff --git a/test/trace_processor/track_event/track_event_merged_debug_annotations_args.out b/test/trace_processor/diff_tests/track_event/track_event_merged_debug_annotations_args.out
similarity index 100%
rename from test/trace_processor/track_event/track_event_merged_debug_annotations_args.out
rename to test/trace_processor/diff_tests/track_event/track_event_merged_debug_annotations_args.out
diff --git a/test/trace_processor/track_event/track_event_tracks.textproto b/test/trace_processor/diff_tests/track_event/track_event_tracks.textproto
similarity index 100%
rename from test/trace_processor/track_event/track_event_tracks.textproto
rename to test/trace_processor/diff_tests/track_event/track_event_tracks.textproto
diff --git a/test/trace_processor/track_event/track_event_tracks_slices.out b/test/trace_processor/diff_tests/track_event/track_event_tracks_slices.out
similarity index 100%
rename from test/trace_processor/track_event/track_event_tracks_slices.out
rename to test/trace_processor/diff_tests/track_event/track_event_tracks_slices.out
diff --git a/test/trace_processor/track_event/track_event_typed_args.textproto b/test/trace_processor/diff_tests/track_event/track_event_typed_args.textproto
similarity index 100%
rename from test/trace_processor/track_event/track_event_typed_args.textproto
rename to test/trace_processor/diff_tests/track_event/track_event_typed_args.textproto
diff --git a/test/trace_processor/track_event/track_event_typed_args_args.out b/test/trace_processor/diff_tests/track_event/track_event_typed_args_args.out
similarity index 100%
rename from test/trace_processor/track_event/track_event_typed_args_args.out
rename to test/trace_processor/diff_tests/track_event/track_event_typed_args_args.out
diff --git a/test/trace_processor/track_event/track_event_with_atrace.textproto b/test/trace_processor/diff_tests/track_event/track_event_with_atrace.textproto
similarity index 100%
rename from test/trace_processor/track_event/track_event_with_atrace.textproto
rename to test/trace_processor/diff_tests/track_event/track_event_with_atrace.textproto
diff --git a/test/trace_processor/translation/chrome_args_test.sql b/test/trace_processor/diff_tests/translation/chrome_args_test.sql
similarity index 100%
rename from test/trace_processor/translation/chrome_args_test.sql
rename to test/trace_processor/diff_tests/translation/chrome_args_test.sql
diff --git a/test/trace_processor/translation/chrome_histogram.out b/test/trace_processor/diff_tests/translation/chrome_histogram.out
similarity index 100%
rename from test/trace_processor/translation/chrome_histogram.out
rename to test/trace_processor/diff_tests/translation/chrome_histogram.out
diff --git a/test/trace_processor/translation/chrome_histogram.textproto b/test/trace_processor/diff_tests/translation/chrome_histogram.textproto
similarity index 100%
rename from test/trace_processor/translation/chrome_histogram.textproto
rename to test/trace_processor/diff_tests/translation/chrome_histogram.textproto
diff --git a/test/trace_processor/translation/chrome_performance_mark.out b/test/trace_processor/diff_tests/translation/chrome_performance_mark.out
similarity index 100%
rename from test/trace_processor/translation/chrome_performance_mark.out
rename to test/trace_processor/diff_tests/translation/chrome_performance_mark.out
diff --git a/test/trace_processor/translation/chrome_user_event.out b/test/trace_processor/diff_tests/translation/chrome_user_event.out
similarity index 100%
rename from test/trace_processor/translation/chrome_user_event.out
rename to test/trace_processor/diff_tests/translation/chrome_user_event.out
diff --git a/test/trace_processor/translation/chrome_user_event.textproto b/test/trace_processor/diff_tests/translation/chrome_user_event.textproto
similarity index 100%
rename from test/trace_processor/translation/chrome_user_event.textproto
rename to test/trace_processor/diff_tests/translation/chrome_user_event.textproto
diff --git a/test/trace_processor/translation/java_class_name_arg.out b/test/trace_processor/diff_tests/translation/java_class_name_arg.out
similarity index 100%
rename from test/trace_processor/translation/java_class_name_arg.out
rename to test/trace_processor/diff_tests/translation/java_class_name_arg.out
diff --git a/test/trace_processor/translation/java_class_name_arg.textproto b/test/trace_processor/diff_tests/translation/java_class_name_arg.textproto
similarity index 100%
rename from test/trace_processor/translation/java_class_name_arg.textproto
rename to test/trace_processor/diff_tests/translation/java_class_name_arg.textproto
diff --git a/test/trace_processor/translation/native_symbol_arg.out b/test/trace_processor/diff_tests/translation/native_symbol_arg.out
similarity index 100%
rename from test/trace_processor/translation/native_symbol_arg.out
rename to test/trace_processor/diff_tests/translation/native_symbol_arg.out
diff --git a/test/trace_processor/translation/native_symbol_arg.textproto b/test/trace_processor/diff_tests/translation/native_symbol_arg.textproto
similarity index 100%
rename from test/trace_processor/translation/native_symbol_arg.textproto
rename to test/trace_processor/diff_tests/translation/native_symbol_arg.textproto
diff --git a/test/trace_processor/translation/native_symbol_arg_incomplete.textproto b/test/trace_processor/diff_tests/translation/native_symbol_arg_incomplete.textproto
similarity index 100%
rename from test/trace_processor/translation/native_symbol_arg_incomplete.textproto
rename to test/trace_processor/diff_tests/translation/native_symbol_arg_incomplete.textproto
diff --git a/test/trace_processor/translation/slice_name.textproto b/test/trace_processor/diff_tests/translation/slice_name.textproto
similarity index 100%
rename from test/trace_processor/translation/slice_name.textproto
rename to test/trace_processor/diff_tests/translation/slice_name.textproto
diff --git a/test/trace_processor/translation/slice_name_negative_timestamp.textproto b/test/trace_processor/diff_tests/translation/slice_name_negative_timestamp.textproto
similarity index 100%
rename from test/trace_processor/translation/slice_name_negative_timestamp.textproto
rename to test/trace_processor/diff_tests/translation/slice_name_negative_timestamp.textproto
diff --git a/test/trace_processor/translation/tests.py b/test/trace_processor/diff_tests/translation/tests.py
similarity index 97%
rename from test/trace_processor/translation/tests.py
rename to test/trace_processor/diff_tests/translation/tests.py
index f72f0e7..9856205 100644
--- a/test/trace_processor/translation/tests.py
+++ b/test/trace_processor/diff_tests/translation/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/ufs/tests.py b/test/trace_processor/diff_tests/ufs/tests.py
similarity index 95%
rename from test/trace_processor/ufs/tests.py
rename to test/trace_processor/diff_tests/ufs/tests.py
index 0e79732..0e318aa 100644
--- a/test/trace_processor/ufs/tests.py
+++ b/test/trace_processor/diff_tests/ufs/tests.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from python.generators.diff_tests.testing import Path, Metric
+from python.generators.diff_tests.testing import Path, DataPath, Metric
 from python.generators.diff_tests.testing import Csv, Json, TextProto
 from python.generators.diff_tests.testing import DiffTestBlueprint
 from python.generators.diff_tests.testing import TestSuite
diff --git a/test/trace_processor/ufs/ufshcd_command.textproto b/test/trace_processor/diff_tests/ufs/ufshcd_command.textproto
similarity index 100%
rename from test/trace_processor/ufs/ufshcd_command.textproto
rename to test/trace_processor/diff_tests/ufs/ufshcd_command.textproto
diff --git a/test/trace_processor/ufs/ufshcd_command_tag.textproto b/test/trace_processor/diff_tests/ufs/ufshcd_command_tag.textproto
similarity index 100%
rename from test/trace_processor/ufs/ufshcd_command_tag.textproto
rename to test/trace_processor/diff_tests/ufs/ufshcd_command_tag.textproto
diff --git a/test/trace_processor/functions/tests.py b/test/trace_processor/functions/tests.py
deleted file mode 100644
index 37c590b..0000000
--- a/test/trace_processor/functions/tests.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2023 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License a
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from python.generators.diff_tests.testing import Path, Metric
-from python.generators.diff_tests.testing import Csv, Json, TextProto
-from python.generators.diff_tests.testing import DiffTestBlueprint
-from python.generators.diff_tests.testing import TestSuite
-
-
-class Functions(TestSuite):
-
-  def test_first_non_null_frame(self):
-    return DiffTestBlueprint(
-        trace=TextProto(r"""
-
-        """),
-        query="""
-        CREATE TABLE TEST(id INTEGER, val INTEGER);
-
-        INSERT INTO TEST
-        VALUES (1, 1), (2, NULL), (3, 3), (4, 4), (5, NULL), (6, NULL), (7, NULL);
-
-        SELECT
-          id,
-          LAST_NON_NULL(val)
-          OVER (ORDER BY id ASC ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING) AS val
-        FROM TEST
-        ORDER BY id ASC;
-        """,
-        out=Csv("""
-        "id","val"
-        1,3
-        2,4
-        3,4
-        4,4
-        5,"[NULL]"
-        6,"[NULL]"
-        7,"[NULL]"
-        """))
-
-  def test_first_non_null_partition(self):
-    return DiffTestBlueprint(
-        trace=TextProto(r"""
-
-        """),
-        query="""
-        CREATE TABLE TEST(id INTEGER, part TEXT, val INTEGER);
-
-        INSERT INTO TEST
-        VALUES
-        (1, 'A', 1),
-        (2, 'A', NULL),
-        (3, 'A', 3),
-        (4, 'B', NULL),
-        (5, 'B', 5),
-        (6, 'B', NULL),
-        (7, 'B', 7);
-
-        SELECT id, LAST_NON_NULL(val) OVER (PARTITION BY part ORDER BY id ASC) AS val
-        FROM TEST
-        ORDER BY id ASC;
-        """,
-        out=Csv("""
-        "id","val"
-        1,1
-        2,1
-        3,3
-        4,"[NULL]"
-        5,5
-        6,5
-        7,7
-        """))
-
-  def test_first_non_null(self):
-    return DiffTestBlueprint(
-        trace=TextProto(r"""
-
-        """),
-        query="""
-        CREATE TABLE TEST(id INTEGER, val INTEGER);
-
-        INSERT INTO TEST
-        VALUES (1, 1), (2, NULL), (3, 3), (4, 4), (5, NULL), (6, NULL), (7, NULL);
-
-        SELECT id, LAST_NON_NULL(val) OVER (ORDER BY id ASC) AS val
-        FROM TEST
-        ORDER BY id ASC;
-        """,
-        out=Csv("""
-        "id","val"
-        1,1
-        2,1
-        3,3
-        4,4
-        5,4
-        6,4
-        7,4
-        """))
diff --git a/test/trace_processor/include_index.py b/test/trace_processor/include_index.py
deleted file mode 100644
index 38b06e9..0000000
--- a/test/trace_processor/include_index.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2023 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License a
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-from typing import List
-from python.generators.diff_tests import testing
-
-
-from android.tests import Android
-from android.tests_bugreport import AndroidBugreport
-from android.tests_games import AndroidGames
-from atrace.tests import Atrace
-from atrace.tests_error_handling import AtraceErrorHandling
-from camera.tests import Camera
-from chrome.tests_scroll_jank import ChromeScrollJank
-from chrome.tests_touch_gesture import ChromeTouchGesture
-from chrome.tests_memory_snapshots import ChromeMemorySnapshots
-from chrome.tests_rail_modes import ChromeRailModes
-from chrome.tests_processes import ChromeProcesses
-from chrome.tests_args import ChromeArgs
-from chrome.tests import Chrome
-from cros.tests import Cros
-from dynamic.tests import Dynamic
-from fs.tests import Fs
-from fuchsia.tests import Fuchsia
-from functions.tests import Functions
-from graphics.tests import Graphics
-from graphics.tests_gpu_trace import GraphicsGpuTrace
-from graphics.tests_drm_related_ftrace_events import GraphicsDrmRelatedFtraceEvents
-from ufs.tests import Ufs
-from memory.tests import Memory
-from memory.tests_metrics import MemoryMetrics
-from network.tests import Network
-from parsing.tests import Parsing
-from parsing.tests_rss_stats import ParsingRssStats
-from parsing.tests_memory_counters import ParsingMemoryCounters
-from performance.tests import Performance
-from power.tests import Power
-from power.tests_power_rails import PowerPowerRails
-from power.tests_voltage_and_scaling import PowerVoltageAndScaling
-from power.tests_energy_breakdown import PowerEnergyBreakdown
-from process_tracking.tests import ProcessTracking
-from profiling.tests import Profiling
-from profiling.tests_heap_profiling import ProfilingHeapProfiling
-from profiling.tests_heap_graph import ProfilingHeapGraph
-from profiling.tests_metrics import ProfilingMetrics
-from profiling.tests_llvm_symbolizer import ProfilingLlvmSymbolizer
-from scheduler.tests import Scheduler
-from smoke.tests import Smoke
-from smoke.tests_json import SmokeJson
-from smoke.tests_sched_events import SmokeSchedEvents
-from smoke.tests_compute_metrics import SmokeComputeMetrics
-from span_join.tests_outer_join import SpanJoinOuterJoin
-from span_join.tests_left_join import SpanJoinLeftJoin
-from span_join.tests_smoke import SpanJoinSmoke
-from span_join.tests_regression import SpanJoinRegression
-from startup.tests import Startup
-from startup.tests_broadcasts import StartupBroadcasts
-from startup.tests_metrics import StartupMetrics
-from startup.tests_lock_contention import StartupLockContention
-from tables.tests import Tables
-from tables.tests_counters import TablesCounters
-from tables.tests_sched import TablesSched
-from track_event.tests import TrackEvent
-from translation.tests import Translation
-
-def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
-  return [
-      *Android(index_path, 'android', 'Android').fetch(),
-      *AndroidBugreport(index_path, 'android', 'AndroidBugreport').fetch(),
-      *AndroidGames(index_path, 'android', 'AndroidGames').fetch(),
-      *Atrace(index_path, 'atrace', 'Atrace').fetch(),
-      *AtraceErrorHandling(index_path, 'atrace', 'AtraceErrorHandling').fetch(),
-      *Camera(index_path, 'camera', 'Camera').fetch(),
-      *ChromeScrollJank(index_path, 'chrome', 'ChromeScrollJank').fetch(),
-      *ChromeTouchGesture(index_path, 'chrome', 'ChromeTouchGesture').fetch(),
-      *ChromeMemorySnapshots(index_path, 'chrome',
-                             'ChromeMemorySnapshots').fetch(),
-      *ChromeRailModes(index_path, 'chrome', 'ChromeRailModes').fetch(),
-      *ChromeProcesses(index_path, 'chrome', 'ChromeProcesses').fetch(),
-      *ChromeArgs(index_path, 'chrome', 'ChromeArgs').fetch(),
-      *Chrome(index_path, 'chrome', 'Chrome').fetch(),
-      *Cros(index_path, 'cros', 'Cros').fetch(),
-      *Dynamic(index_path, 'dynamic', 'Dynamic').fetch(),
-      *Fs(index_path, 'fs', 'Fs').fetch(),
-      *Fuchsia(index_path, 'fuchsia', 'Fuchsia').fetch(),
-      *Functions(index_path, 'functions', 'Functions').fetch(),
-      *Graphics(index_path, 'graphics', 'Graphics').fetch(),
-      *GraphicsGpuTrace(index_path, 'graphics', 'GraphicsGpuTrace').fetch(),
-      *GraphicsDrmRelatedFtraceEvents(index_path, 'graphics',
-                                      'GraphicsDrmRelatedFtraceEvents').fetch(),
-      *Ufs(index_path, 'ufs', 'Ufs').fetch(),
-      *Memory(index_path, 'memory', 'Memory').fetch(),
-      *MemoryMetrics(index_path, 'memory', 'MemoryMetrics').fetch(),
-      *Network(index_path, 'network', 'Network').fetch(),
-      *Parsing(index_path, 'parsing', 'Parsing').fetch(),
-      *ParsingRssStats(index_path, 'parsing', 'ParsingRssStats').fetch(),
-      *ParsingMemoryCounters(index_path, 'parsing',
-                             'ParsingMemoryCounters').fetch(),
-      *Performance(index_path, 'performance', 'Performance').fetch(),
-      *Power(index_path, 'power', 'Power').fetch(),
-      *PowerPowerRails(index_path, 'power', 'PowerPowerRails').fetch(),
-      *PowerVoltageAndScaling(index_path, 'power',
-                              'PowerVoltageAndScaling').fetch(),
-      *PowerEnergyBreakdown(index_path, 'power',
-                            'PowerEnergyBreakdown').fetch(),
-      *ProcessTracking(index_path, 'process_tracking',
-                       'ProcessTracking').fetch(),
-      *Profiling(index_path, 'profiling', 'Profiling').fetch(),
-      *ProfilingHeapProfiling(index_path, 'profiling',
-                              'ProfilingHeapProfiling').fetch(),
-      *ProfilingHeapGraph(index_path, 'profiling',
-                          'ProfilingHeapGraph').fetch(),
-      *ProfilingMetrics(index_path, 'profiling', 'ProfilingMetrics').fetch(),
-      *ProfilingLlvmSymbolizer(index_path, 'profiling',
-                               'ProfilingLlvmSymbolizer').fetch(),
-      *Scheduler(index_path, 'scheduler', 'Scheduler').fetch(),
-      *Smoke(index_path, 'smoke', 'Smoke').fetch(),
-      *SmokeJson(index_path, 'smoke', 'SmokeJson').fetch(),
-      *SmokeSchedEvents(index_path, 'smoke', 'SmokeSchedEvents').fetch(),
-      *SmokeComputeMetrics(index_path, 'smoke', 'SmokeComputeMetrics').fetch(),
-      *SpanJoinOuterJoin(index_path, 'span_join', 'SpanJoinOuterJoin').fetch(),
-      *SpanJoinLeftJoin(index_path, 'span_join', 'SpanJoinLeftJoin').fetch(),
-      *SpanJoinSmoke(index_path, 'span_join', 'SpanJoinSmoke').fetch(),
-      *SpanJoinRegression(index_path, 'span_join',
-                          'SpanJoinRegression').fetch(),
-      *Startup(index_path, 'startup', 'Startup').fetch(),
-      *StartupBroadcasts(index_path, 'startup', 'StartupBroadcasts').fetch(),
-      *StartupMetrics(index_path, 'startup', 'StartupMetrics').fetch(),
-      *StartupLockContention(index_path, 'startup',
-                             'StartupLockContention').fetch(),
-      *Tables(index_path, 'tables', 'Tables').fetch(),
-      *TablesCounters(index_path, 'tables', 'TablesCounters').fetch(),
-      *TablesSched(index_path, 'tables', 'TablesSched').fetch(),
-      *TrackEvent(index_path, 'track_event', 'TrackEvent').fetch(),
-      *Translation(index_path, 'translation', 'Translation').fetch(),
-  ]
diff --git a/tools/cpu_profile b/tools/cpu_profile
index df93bba..ccce9d2 100755
--- a/tools/cpu_profile
+++ b/tools/cpu_profile
@@ -37,18 +37,18 @@
 
 
 # ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/traceconv.py
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACECONV_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'traceconv',
     'file_size':
-        7772872,
+        7805800,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/traceconv',
     'sha256':
-        'a987cfd2e722994a5911032d046ec2d0b912845a83b093226c3fccd5e316ed01',
+        '0ea0a025cedab2b6cfe605f127daa2a12c98f051f9314c9ab8a59c55306b36c2',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -58,11 +58,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6554552,
+        6587480,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/traceconv',
     'sha256':
-        '972610d249990d4b03de50bece4a7adf03ebd6b3cc3c2c10feb7bb6561c1fce1',
+        '85bb771be931fe90c9da122f412efb884ff8bd2bd2eaa3f083c2c6ea5dd9205a',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -72,11 +72,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        8073432,
+        8100352,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/traceconv',
     'sha256':
-        'e34f6ddd91ad0de62bfbef76303f2a94136470fe5a4f679af2f5b8898548ac13',
+        'c201fe1c30a00c0e7a1eac169ab91f05d6468a485b0791db3c439888e9334fde',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -86,11 +86,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6677612,
+        6674592,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/traceconv',
     'sha256':
-        '55c9cd6e5c5bc65210068a173b0c16ad3323faaba0fccec20247dca5bd3b913d',
+        '5a0bc650e39a289b2051a55ac3e7e2c05cb56f053e2b8dc31bb183e75892be28',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -100,11 +100,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        7543648,
+        7554976,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/traceconv',
     'sha256':
-        '2477857470f613410f6151acb06b6b6a067ef8612d619eee86dd2a3b8aac2a3e',
+        'f2a3d4c3a7e6af760a4a03fe70e6c32479260bd6487f4b89d49412231c42e197',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -114,55 +114,55 @@
     'file_name':
         'traceconv',
     'file_size':
-        5360020,
+        5355916,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/traceconv',
     'sha256':
-        '60cecbd8d9b6357bb89929fa5afa1eba6c1d46d621e62ee558509424d88bd53d'
+        '58101b41d4930abfebef729d2657252ca6f2c3cff4ebcb838165d606808ff0ad'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'traceconv',
     'file_size':
-        6769184,
+        6773264,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/traceconv',
     'sha256':
-        'e373cbed4502977290abe3e246132ced538fca33881058e6049676ef9c613dd9'
+        'a7fc9fb02e94c92821d36cd0fb90bff75cbe32688e5f2678426b796a5f86ba53'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'traceconv',
     'file_size':
-        7682412,
+        7670116,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/traceconv',
     'sha256':
-        'dcaa5d156247433537d59ad33238feb23dc0f97ba64c51581360f25ac0fc16a8'
+        '1a64a26516b5a0db710532b4a6f495d4f83153df56b2847093d1b6d17e749b6b'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'traceconv',
     'file_size':
-        7903832,
+        7916104,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/traceconv',
     'sha256':
-        'b73b8d398019b2a349d3748b4fe4096a069c6362697375d3c2668cf79ef1bb38'
+        '9badc970a3573a038977a7fef59b4d57797ef57e2e4e2d5f23804a0bfcdf1585'
 }, {
     'arch':
         'windows-amd64',
     'file_name':
         'traceconv.exe',
     'file_size':
-        7188992,
+        7217664,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/windows-amd64/traceconv.exe',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/windows-amd64/traceconv.exe',
     'sha256':
-        '9cbdfcad3b5f2164d0c9e79d4f8b749db693814ae97fba038385d2e6f0111f72',
+        'd2b9c3ca448c9815c2393716758e85d4d2c8033ce0531b4551703a2b7e3d43a0',
     'platform':
         'win32',
     'machine': ['amd64']
@@ -342,7 +342,7 @@
   traces if requested.
 
   For usage instructions, please see:
-  https://perfetto.dev/docs/quickstart/cpu-profiling
+  https://perfetto.dev/docs/quickstart/callstack-sampling
   """
   parser = argparse.ArgumentParser(description=DESCRIPTION)
   parser.add_argument(
@@ -361,6 +361,25 @@
       metavar="DURATION",
       type=int,
       default=0)
+  # Profiling using hardware counters.
+  parser.add_argument(
+      "-e",
+      "--event",
+      help="Use the specified hardware counter event for sampling.",
+      metavar="EVENT",
+      action="append",
+      # See: '//perfetto/protos/perfetto/trace/perfetto_trace.proto'.
+      choices=['HW_CPU_CYCLES', 'HW_INSTRUCTIONS', 'HW_CACHE_REFERENCES',
+               'HW_CACHE_MISSES', 'HW_BRANCH_INSTRUCTIONS', 'HW_BRANCH_MISSES',
+               'HW_BUS_CYCLES', 'HW_STALLED_CYCLES_FRONTEND',
+               'HW_STALLED_CYCLES_BACKEND'],
+      default=[])
+  parser.add_argument(
+      "-k",
+      "--kernel-frames",
+      help="Collect kernel frames.  Default: false.",
+      action="store_true",
+      default=False)
   parser.add_argument(
       "-n",
       "--name",
@@ -372,7 +391,8 @@
       "--partial-matching",
       help="If set, enables \"partial matching\" on the strings in --names/-n."
       "Processes that are already running when profiling is started, and whose "
-      "names include any of the values in --names/-n as substrings will be profiled.",
+      "names include any of the values in --names/-n as substrings will be "
+      "profiled.",
       action="store_true")
   parser.add_argument(
       "-c",
@@ -398,8 +418,11 @@
       default=None)
 
   args = parser.parse_args()
-  if args.config is not None and args.name is not None:
-    sys.exit("--name/-n should not be provided when --config/-c is provided.")
+  if args.config is not None:
+    if args.name is not None:
+      sys.exit("--name/-n should not be specified with --config/-c.")
+    elif args.event is not None:
+      sys.exit("-e/--event should not be specified with --config/-c.")
   elif args.config is None and args.name is None:
     sys.exit("One of --names/-n or --config/-c is required.")
 
@@ -407,7 +430,8 @@
 
 
 def get_matching_processes(args, names_to_match):
-  """Returns a list of currently-running processes whose names match `names_to_match`.
+  """Returns a list of currently-running processes whose names match
+  `names_to_match`.
 
   Args:
     args: The command-line arguments provided to this script.
@@ -434,7 +458,8 @@
 
 
 def get_perfetto_config(args):
-  """Returns a Perfetto config with CPU profiling enabled for the selected processes.
+  """Returns a Perfetto config with CPU profiling enabled for the selected
+  processes.
 
   Args:
     args: The command-line arguments provided to this script.
@@ -446,7 +471,7 @@
     except IOError as error:
       sys.exit("Unable to read config file: {}".format(error))
 
-  CONFIG_INDENT = '      '
+  CONFIG_INDENT = '          '
   CONFIG = textwrap.dedent('''\
   buffers {{
     size_kb: 2048
@@ -466,18 +491,6 @@
     }}
   }}
 
-  data_sources {{
-    config {{
-      name: "linux.perf"
-      target_buffer: 1
-      perf_event_config {{
-        all_cpus: true
-        sampling_frequency: {frequency}
-  {target_config}
-      }}
-    }}
-  }}
-
   duration_ms: {duration}
   write_into_file: true
   flush_timeout_ms: 30000
@@ -495,6 +508,35 @@
   target_config = "\n".join(
       [f'{CONFIG_INDENT}target_cmdline: "{p}"' for p in matching_processes])
 
+  events = args.event or ['SW_CPU_CLOCK']
+  for event in events:
+    CONFIG += (textwrap.dedent('''
+    data_sources {{
+      config {{
+        name: "linux.perf"
+        target_buffer: 1
+        perf_event_config {{
+          timebase {{
+            counter: %s
+            frequency: {frequency}
+            timestamp_clock: PERF_CLOCK_MONOTONIC
+          }}
+          callstack_sampling {{
+            scope {{
+    {target_config}
+            }}
+            kernel_frames: {kernel_config}
+          }}
+        }}
+      }}
+    }}
+    ''') % (event))
+
+  if args.kernel_frames:
+    kernel_config = "true"
+  else:
+    kernel_config = "false"
+
   if not args.print_config:
     print("Configured profiling for these processes:\n")
     for matching_process in matching_processes:
@@ -504,7 +546,8 @@
   config = CONFIG.format(
       frequency=args.frequency,
       duration=args.duration,
-      target_config=target_config)
+      target_config=target_config,
+      kernel_config=kernel_config)
 
   return config
 
@@ -524,7 +567,8 @@
 
 
 def get_and_prepare_profile_target(args):
-  """Returns the target where the trace/profile will be output. Creates a new directory if necessary.
+  """Returns the target where the trace/profile will be output.  Creates a
+  new directory if necessary.
 
   Args:
     args: The command-line arguments provided to this script.
@@ -556,14 +600,23 @@
   }
   if not release_or_newer('R'):
     sys.exit("This tool requires Android R+ to run.")
+
+  # Push configuration to the device.
+  tf = tempfile.NamedTemporaryFile()
+  tf.file.write(config.encode('utf-8'))
+  tf.file.flush()
+  profile_config_path = '/data/misc/perfetto-configs/config-' + UUID
+  adb_check_output(['adb', 'push', tf.name, profile_config_path])
+  tf.close()
+
+
   profile_device_path = '/data/misc/perfetto-traces/profile-' + UUID
-  perfetto_command = ('CONFIG=\'{}\'; echo ${{CONFIG}} | '
-                      'perfetto --txt -c - -o {} -d')
+  perfetto_command = ('perfetto --txt -c {} -o {} -d')
   try:
     perfetto_pid = int(
         adb_check_output([
             'adb', 'exec-out',
-            perfetto_command.format(config, profile_device_path)
+            perfetto_command.format(profile_config_path, profile_device_path)
         ]).strip())
   except ValueError as error:
     sys.exit("Unable to start profiling: {}".format(error))
@@ -593,6 +646,7 @@
 
   profile_host_path = os.path.join(profile_target, 'raw-trace')
   adb_check_output(['adb', 'pull', profile_device_path, profile_host_path])
+  adb_check_output(['adb', 'shell', 'rm', profile_config_path])
   adb_check_output(['adb', 'shell', 'rm', profile_device_path])
 
 
@@ -623,7 +677,8 @@
 
 
 def symbolize_trace(traceconv, profile_target):
-  """Attempts symbolization of the recorded trace/profile, if symbols are available.
+  """Attempts symbolization of the recorded trace/profile, if symbols are
+  available.
 
   Args:
     traceconv: The path to the `traceconv` binary used for symbolization.
diff --git a/tools/gen_grpc_build_gn.py b/tools/gen_grpc_build_gn.py
new file mode 100755
index 0000000..706e062
--- /dev/null
+++ b/tools/gen_grpc_build_gn.py
@@ -0,0 +1,107 @@
+#!/usr/bin/env python3
+import json
+import os
+import subprocess
+import sys
+from typing import Any, Dict, List
+import yaml
+
+ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+IGNORE_LIST = set([
+    'grpcpp_channelz',
+    'grpc++_reflection',
+    'benchmark_helpers',
+    'boringssl_test_util',
+])
+
+SOURCE_SET_TARGET = """
+source_set("{name}") {{
+  sources = {srcs}
+  public_deps = {deps}
+  public_configs = ["..:{config_name}"]
+  configs -= [ "//gn/standalone:extra_warnings" ]
+}}"""
+
+
+def grpc_relpath(*segments: str) -> str:
+  '''From path segments to GRPC root, returns the absolute path.'''
+  return os.path.join(ROOT_DIR, 'buildtools', 'grpc', 'src', *segments)
+
+
+GRPC_GN_HEADER = '''
+#
+# DO NOT EDIT. AUTOGENERATED file
+#
+# This file is generated with the command:
+# tools/gen_grpc_build_gn.py > buildtools/grpc/BUILD.gn
+#
+
+# Prevent the gRPC from being depended upon without explicitly being opted in.
+assert(enable_perfetto_grpc)
+'''
+
+GRPC_BUILD_YAML = grpc_relpath('build_autogenerated.yaml')
+ABSL_GEN_BUILD_YAML = grpc_relpath('src', 'abseil-cpp', 'gen_build_yaml.py')
+UPB_GEN_BUILD_YAML = grpc_relpath('src', 'upb', 'gen_build_yaml.py')
+BSSL_GEN_BUILD_YAML = grpc_relpath('src', 'boringssl', 'gen_build_yaml.py')
+
+
+def bazel_label_to_gn_target(dep: str):
+  '''Converts a Bazel label name into a gn target name.'''
+  if dep == 'libssl':
+    return 'boringssl'
+  return dep.replace('/', '_').replace(':', '_')
+
+
+def gen_grpc_dep_yaml(gen_path: str) -> Dict[str, Any]:
+  '''Invokes a gen_build_yaml.py file for creating YAML for gRPC deps.'''
+  return yaml.safe_load(subprocess.check_output(['python3', gen_path]))
+
+
+def yaml_to_gn_targets(desc: Dict[str, Any], build_type: str, config_name: str,
+                       out: List[str]):
+  '''Given a gRPC YAML description of the build graph, generates GN targets.'''
+  for lib in desc['libs']:
+    if lib['build'] != build_type:
+      continue
+    if lib['name'] in IGNORE_LIST:
+      continue
+    srcs = json.dumps([f'src/{file}' for file in lib['src'] + lib['headers']])
+    deps = json.dumps(
+        [f':{bazel_label_to_gn_target(dep)}' for dep in lib.get('deps', [])])
+    source_set_target = SOURCE_SET_TARGET.format(
+        name=bazel_label_to_gn_target(lib['name']),
+        config_name=config_name,
+        srcs=srcs,
+        deps=deps)
+    out.append(source_set_target)
+
+
+def main():
+  out: List[str] = []
+
+  # Generate absl rules
+  absl_yaml = gen_grpc_dep_yaml(ABSL_GEN_BUILD_YAML)
+  yaml_to_gn_targets(absl_yaml, 'private', 'grpc_absl_config', out)
+
+  # Generate upb rules
+  upb_yaml = gen_grpc_dep_yaml(UPB_GEN_BUILD_YAML)
+  yaml_to_gn_targets(upb_yaml, 'all', 'grpc_upb_config', out)
+
+  # Generate boringssl rules
+  boringssl_yaml = gen_grpc_dep_yaml(BSSL_GEN_BUILD_YAML)
+  yaml_to_gn_targets(boringssl_yaml, 'private', 'grpc_boringssl_config', out)
+
+  # Generate grpc rules
+  with open(GRPC_BUILD_YAML, 'r', encoding='utf-8') as f:
+    grpc_yaml = yaml.safe_load(f.read())
+  yaml_to_gn_targets(grpc_yaml, 'all', 'grpc_internal_config', out)
+
+  print(GRPC_GN_HEADER)
+  print('\n'.join(out))
+  return 0
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/tools/heap_profile b/tools/heap_profile
index 910216b..dd597a8 100755
--- a/tools/heap_profile
+++ b/tools/heap_profile
@@ -34,18 +34,18 @@
 
 
 # ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/traceconv.py
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACECONV_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'traceconv',
     'file_size':
-        7772872,
+        7805800,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/traceconv',
     'sha256':
-        'a987cfd2e722994a5911032d046ec2d0b912845a83b093226c3fccd5e316ed01',
+        '0ea0a025cedab2b6cfe605f127daa2a12c98f051f9314c9ab8a59c55306b36c2',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -55,11 +55,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6554552,
+        6587480,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/traceconv',
     'sha256':
-        '972610d249990d4b03de50bece4a7adf03ebd6b3cc3c2c10feb7bb6561c1fce1',
+        '85bb771be931fe90c9da122f412efb884ff8bd2bd2eaa3f083c2c6ea5dd9205a',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -69,11 +69,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        8073432,
+        8100352,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/traceconv',
     'sha256':
-        'e34f6ddd91ad0de62bfbef76303f2a94136470fe5a4f679af2f5b8898548ac13',
+        'c201fe1c30a00c0e7a1eac169ab91f05d6468a485b0791db3c439888e9334fde',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -83,11 +83,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6677612,
+        6674592,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/traceconv',
     'sha256':
-        '55c9cd6e5c5bc65210068a173b0c16ad3323faaba0fccec20247dca5bd3b913d',
+        '5a0bc650e39a289b2051a55ac3e7e2c05cb56f053e2b8dc31bb183e75892be28',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -97,11 +97,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        7543648,
+        7554976,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/traceconv',
     'sha256':
-        '2477857470f613410f6151acb06b6b6a067ef8612d619eee86dd2a3b8aac2a3e',
+        'f2a3d4c3a7e6af760a4a03fe70e6c32479260bd6487f4b89d49412231c42e197',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -111,55 +111,55 @@
     'file_name':
         'traceconv',
     'file_size':
-        5360020,
+        5355916,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/traceconv',
     'sha256':
-        '60cecbd8d9b6357bb89929fa5afa1eba6c1d46d621e62ee558509424d88bd53d'
+        '58101b41d4930abfebef729d2657252ca6f2c3cff4ebcb838165d606808ff0ad'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'traceconv',
     'file_size':
-        6769184,
+        6773264,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/traceconv',
     'sha256':
-        'e373cbed4502977290abe3e246132ced538fca33881058e6049676ef9c613dd9'
+        'a7fc9fb02e94c92821d36cd0fb90bff75cbe32688e5f2678426b796a5f86ba53'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'traceconv',
     'file_size':
-        7682412,
+        7670116,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/traceconv',
     'sha256':
-        'dcaa5d156247433537d59ad33238feb23dc0f97ba64c51581360f25ac0fc16a8'
+        '1a64a26516b5a0db710532b4a6f495d4f83153df56b2847093d1b6d17e749b6b'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'traceconv',
     'file_size':
-        7903832,
+        7916104,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/traceconv',
     'sha256':
-        'b73b8d398019b2a349d3748b4fe4096a069c6362697375d3c2668cf79ef1bb38'
+        '9badc970a3573a038977a7fef59b4d57797ef57e2e4e2d5f23804a0bfcdf1585'
 }, {
     'arch':
         'windows-amd64',
     'file_name':
         'traceconv.exe',
     'file_size':
-        7188992,
+        7217664,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/windows-amd64/traceconv.exe',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/windows-amd64/traceconv.exe',
     'sha256':
-        '9cbdfcad3b5f2164d0c9e79d4f8b749db693814ae97fba038385d2e6f0111f72',
+        'd2b9c3ca448c9815c2393716758e85d4d2c8033ce0531b4551703a2b7e3d43a0',
     'platform':
         'win32',
     'machine': ['amd64']
diff --git a/tools/install-build-deps b/tools/install-build-deps
index 3ad1026..ddafffc 100755
--- a/tools/install-build-deps
+++ b/tools/install-build-deps
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 import argparse
+import dataclasses as dc
 import hashlib
 import logging
 import os
@@ -27,6 +28,7 @@
 from collections import namedtuple
 from platform import system, machine
 
+
 # The format for the deps below is the following:
 # (target_folder, source_url, sha1, target_os, target_arch)
 # |source_url| can be either a git repo or a http url.
@@ -41,9 +43,15 @@
 # in both cases the dep only applies on matching platforms
 # |target_arch| can be 'all' when 'target_os' is not 'all' for example in the
 # case of MacOS universal binaries.
-Dependency = namedtuple(
-    'Dependency',
-    ['target_folder', 'source_url', 'checksum', 'target_os', 'target_arch'])
+@dc.dataclass
+class Dependency:
+  target_folder: str
+  source_url: str
+  checksum: str
+  target_os: str
+  target_arch: str
+  submodules: bool = False
+
 
 # This is to remove old directories when build tools get {re,}moved. This is to
 # avoid accidentally referring to stale dir in custom user scripts.
@@ -146,8 +154,8 @@
     # Keep in sync with Chromium's //third_party/protobuf.
     Dependency(
         'buildtools/protobuf',
-        'https://chromium.googlesource.com/external/github.com/google/protobuf.git',
-        '6a59a2ad1f61d9696092f79b6d74368b4d7970a3',  # refs/tags/v3.9.0
+        'https://chromium.googlesource.com/external/github.com/protocolbuffers/protobuf.git',
+        'fe271ab76f2ad2b2b28c10443865d2af21e27e0e',  # refs/tags/v3.20.3
         'all',
         'all'),
 
@@ -357,6 +365,14 @@
         TYPEFACES_SHA256, TYPEFACES_SHA256, 'all', 'all')
 ]
 
+# Dependencies to build gRPC.
+GRPC_DEPS = [
+    Dependency(
+        'buildtools/grpc/src',
+        'https://chromium.googlesource.com/external/github.com/grpc/grpc.git',
+        '6943c1841f57cac4666b165aea4f618fe73b3ff1', 'all', 'all', True),
+]
+
 # Sysroots required to cross-compile Linux targets (linux-arm{,64}).
 # These are taken from Chromium's build/linux/sysroot_scripts/sysroots.json.
 BUILD_DEPS_LINUX_CROSS_SYSROOTS = [
@@ -467,6 +483,9 @@
   subprocess.check_call(
       ['git', 'fetch', '--quiet', '--depth', '1', git_url, revision], cwd=path)
   subprocess.check_call(['git', 'checkout', revision, '--quiet'], cwd=path)
+  subprocess.check_call(
+      ['git', 'submodule', 'update', '--init', '--recursive', '--quiet'],
+      cwd=path)
   assert (IsGitRepoCheckoutOutAtRevision(path, revision))
   return True
 
@@ -533,6 +552,10 @@
       '--ui',
       action='store_true',
       help='Node and NPM packages to Build the Web-based UI via ./ui/build')
+  parser.add_argument(
+      '--grpc',
+      action='store_true',
+      help='Packages to build gRPC')
   parser.add_argument('--check-only')
   parser.add_argument('--filter', action='append')
   parser.add_argument('--verify', help='Check all URLs', action='store_true')
@@ -557,6 +580,8 @@
     deps += BUILD_DEPS_LINUX_CROSS_SYSROOTS
   if args.ui:
     deps += UI_DEPS
+  if args.grpc:
+    deps += GRPC_DEPS
   deps_updated = False
   nodejs_updated = False
 
diff --git a/tools/record_android_trace b/tools/record_android_trace
index 9c86659..f14be02 100755
--- a/tools/record_android_trace
+++ b/tools/record_android_trace
@@ -33,18 +33,18 @@
 
 
 # ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/tracebox.py
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACEBOX_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'tracebox',
     'file_size':
-        1431944,
+        1464912,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/tracebox',
     'sha256':
-        '9ba2bd56eac2464060158fc6a972709663102fd79e210036558a79e0450a39a7',
+        '453523bcbdde071447192afbd30bb3479bf7b5a6c82759eedad7228760ba91de',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -54,11 +54,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        1325592,
+        1358808,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/tracebox',
     'sha256':
-        '2bc59074dc169bd3ca0b58fc8e6536b5a8d35f99ef6d44ce467719b888f5f65e',
+        '2b843df989889e728a002f9829b18d1ce3ce5a7bb4b267ee3ea108f1d67606ad',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -68,11 +68,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        2140080,
+        2176672,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/tracebox',
     'sha256':
-        'ee12c839586f19d024c6de78825b416fcb7d9a6d4fe6e9266e239812ec63e188',
+        '8ecb2d40b77d846f8d849913ddf5c6629d67a55c4891984d4cd236822d3655a8',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -82,11 +82,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        1286400,
+        1306960,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/tracebox',
     'sha256':
-        'e4b76213b71d192a6155f576ccf265b9f2605090eff01444216fa49e3f06c40c',
+        '023c81e41ea8d7548f2e749bbbaaf4d19036d719d66033036a54aa0c2b14f8d4',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -96,11 +96,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        2070760,
+        2105360,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/tracebox',
     'sha256':
-        '653469e497c7f021c51220b2b3f0a70efce35dcb4ca897bbf09e24a89af92aea',
+        '1ae9264b304a6336dcdaa938c7eb0aeffd3689149fcd1e10ac67c6d995c8e54f',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -110,44 +110,44 @@
     'file_name':
         'tracebox',
     'file_size':
-        1157076,
+        1181652,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/tracebox',
     'sha256':
-        '6f610486d0ee1d052a21d6c16491a2c373634bbfa5374fed01026eb2767c05f7'
+        'f7704023112300f74d351cc62c5c3d1fa386e749013b8cdf74678dfd9731c066'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'tracebox',
     'file_size':
-        1768104,
+        1800872,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/tracebox',
     'sha256':
-        'b30ca03fa0cb1261386b5d6b01161c275bf68026e894bf5d74781abf8f78acef'
+        '18ae4f02caac24282111dc605d287f29470c2af5f93e49fdb7ca9fe1282b392a'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'tracebox',
     'file_size':
-        1755052,
+        1787820,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/tracebox',
     'sha256':
-        '781ed489fe91aad98fc72f9d0faf69c62323feaac8ae0ce813fbfe0274789144'
+        '50a00e310e16f087b508ef96ff2ca0f6c49b90190ec07fa68953203419507ced'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'tracebox',
     'file_size':
-        2038440,
+        2071208,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/tracebox',
     'sha256':
-        'e58167092e4ec060efc152ace675175f04af57c564ec2ca38704fa65af8a7b25'
+        '84d6c3996dfe0728d4a8df974fd17ccee08aea91edd46724914e45ba6f1b95bd'
 }]
 
 # ----- Amalgamator: end of python/perfetto/prebuilts/manifests/tracebox.py
diff --git a/tools/trace_processor b/tools/trace_processor
index c703ea0..753eda3 100755
--- a/tools/trace_processor
+++ b/tools/trace_processor
@@ -30,18 +30,18 @@
 
 
 # ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/trace_processor_shell.py
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACE_PROCESSOR_SHELL_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8516960,
+        8566376,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/trace_processor_shell',
     'sha256':
-        'e15e409929d3c140ce82f69ad3f0b0634a4d9b765a1a61f03d8ff29d87cb8f7f',
+        'e918db13f3068de751bacd15fb8b3ff920cc6290508512e820186eed0150731b',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -51,11 +51,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        7270264,
+        7286792,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/trace_processor_shell',
     'sha256':
-        'd500226e1d53c3e8db4f29f44df463139f8fbc81ba2364934f6a69e76d9d065d',
+        'e98902c678b642773e867b9308e041ef9c37d07199077c4903e586ddb3ac6b7c',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -65,11 +65,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8944032,
+        8976816,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/trace_processor_shell',
     'sha256':
-        '5a2303c36e852f044962c502b9e24d1f5ffb468f25c4672cbe8e5dd9c345906c',
+        'da6a99374f04cc10fd19dd5247a5d6ea9a0e6572a12b6f77de5c64827bc7c98c',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -79,11 +79,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        7110964,
+        7109580,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/trace_processor_shell',
     'sha256':
-        '4646a44ccab1f28c29c045edda338ebbde2880d5431cc151a6003daf8efe8ddb',
+        'd996276bb125c2d95b677e0c3326f8822947f9d2bedcdfec82581da36c50fa90',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -93,11 +93,11 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8380416,
+        8395080,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/trace_processor_shell',
     'sha256':
-        '130c60bebbbb338d8e9c250a5fbd526296d4cab49af08680fef5134cb6831130',
+        'cd9d4dec964223549eb3e6580e1d4f72aa0dd8467ad0da22fcdf8b6c6b39ff34',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -107,55 +107,55 @@
     'file_name':
         'trace_processor_shell',
     'file_size':
-        5807408,
+        5807400,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/trace_processor_shell',
     'sha256':
-        '5d13bc0d37f3379a6fd0d66d8f98c36ec8bf80c133b7660ae8b7cbcfe41284f4'
+        'a691c3b8c4f62dc73bd9e0538e812abe6b340b0ab7c8516d3395d7d726725305'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        7458752,
+        7471024,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/trace_processor_shell',
     'sha256':
-        '3e038732d0ee77875e6376ddf0f804271c4e5337b76977e939c91a553621587a'
+        'a2269b32897bc7c16426b0af6f213994b67df439386b5acd19fe67da56e574ad'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8404228,
+        8400124,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/trace_processor_shell',
     'sha256':
-        '1a04a4d888dfa16a5baa36073df50f28ea9f5ed688fb59fe8ef24a9f3341ad77'
+        'd4d999cd23b3fb3d288227bbb6c42ebed9ea664efda65c03bf1b3d527126517e'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'trace_processor_shell',
     'file_size':
-        8744960,
+        8757232,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/trace_processor_shell',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/trace_processor_shell',
     'sha256':
-        '45fe2744b60baac964c636304b4b83853405f7f4f7329b2764cf921d3d90a2b1'
+        '5ac30fa1e290a5d6a5f1ae648d0d2e42ebc4abd6be3594a9f8aa843841e26593'
 }, {
     'arch':
         'windows-amd64',
     'file_name':
         'trace_processor_shell.exe',
     'file_size':
-        8152064,
+        8189952,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/windows-amd64/trace_processor_shell.exe',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/windows-amd64/trace_processor_shell.exe',
     'sha256':
-        '6d5e873b65ea68ec5ddf51a02a049f350e9da4f5f78cc7294d0bbf95f7673ea9',
+        'f11b220447ecf9a7b6f4394443c915f1dea92a2316b3c35da823e6e42dfacd9d',
     'platform':
         'win32',
     'machine': ['amd64']
diff --git a/tools/tracebox b/tools/tracebox
index 60a4cb9..e7ac233 100755
--- a/tools/tracebox
+++ b/tools/tracebox
@@ -30,18 +30,18 @@
 
 
 # ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/tracebox.py
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACEBOX_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'tracebox',
     'file_size':
-        1431944,
+        1464912,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/tracebox',
     'sha256':
-        '9ba2bd56eac2464060158fc6a972709663102fd79e210036558a79e0450a39a7',
+        '453523bcbdde071447192afbd30bb3479bf7b5a6c82759eedad7228760ba91de',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -51,11 +51,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        1325592,
+        1358808,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/tracebox',
     'sha256':
-        '2bc59074dc169bd3ca0b58fc8e6536b5a8d35f99ef6d44ce467719b888f5f65e',
+        '2b843df989889e728a002f9829b18d1ce3ce5a7bb4b267ee3ea108f1d67606ad',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -65,11 +65,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        2140080,
+        2176672,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/tracebox',
     'sha256':
-        'ee12c839586f19d024c6de78825b416fcb7d9a6d4fe6e9266e239812ec63e188',
+        '8ecb2d40b77d846f8d849913ddf5c6629d67a55c4891984d4cd236822d3655a8',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -79,11 +79,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        1286400,
+        1306960,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/tracebox',
     'sha256':
-        'e4b76213b71d192a6155f576ccf265b9f2605090eff01444216fa49e3f06c40c',
+        '023c81e41ea8d7548f2e749bbbaaf4d19036d719d66033036a54aa0c2b14f8d4',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -93,11 +93,11 @@
     'file_name':
         'tracebox',
     'file_size':
-        2070760,
+        2105360,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/tracebox',
     'sha256':
-        '653469e497c7f021c51220b2b3f0a70efce35dcb4ca897bbf09e24a89af92aea',
+        '1ae9264b304a6336dcdaa938c7eb0aeffd3689149fcd1e10ac67c6d995c8e54f',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -107,44 +107,44 @@
     'file_name':
         'tracebox',
     'file_size':
-        1157076,
+        1181652,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/tracebox',
     'sha256':
-        '6f610486d0ee1d052a21d6c16491a2c373634bbfa5374fed01026eb2767c05f7'
+        'f7704023112300f74d351cc62c5c3d1fa386e749013b8cdf74678dfd9731c066'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'tracebox',
     'file_size':
-        1768104,
+        1800872,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/tracebox',
     'sha256':
-        'b30ca03fa0cb1261386b5d6b01161c275bf68026e894bf5d74781abf8f78acef'
+        '18ae4f02caac24282111dc605d287f29470c2af5f93e49fdb7ca9fe1282b392a'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'tracebox',
     'file_size':
-        1755052,
+        1787820,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/tracebox',
     'sha256':
-        '781ed489fe91aad98fc72f9d0faf69c62323feaac8ae0ce813fbfe0274789144'
+        '50a00e310e16f087b508ef96ff2ca0f6c49b90190ec07fa68953203419507ced'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'tracebox',
     'file_size':
-        2038440,
+        2071208,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/tracebox',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/tracebox',
     'sha256':
-        'e58167092e4ec060efc152ace675175f04af57c564ec2ca38704fa65af8a7b25'
+        '84d6c3996dfe0728d4a8df974fd17ccee08aea91edd46724914e45ba6f1b95bd'
 }]
 
 # ----- Amalgamator: end of python/perfetto/prebuilts/manifests/tracebox.py
diff --git a/tools/traceconv b/tools/traceconv
index 1079ba0..1e9c610 100755
--- a/tools/traceconv
+++ b/tools/traceconv
@@ -30,18 +30,18 @@
 
 
 # ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/traceconv.py
-# This file has been generated by: /usr/local/google/home/lalitm/perfetto/tools/roll-prebuilts v31.0
+# This file has been generated by: tools/roll-prebuilts v32.1
 TRACECONV_MANIFEST = [{
     'arch':
         'mac-amd64',
     'file_name':
         'traceconv',
     'file_size':
-        7772872,
+        7805800,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-amd64/traceconv',
     'sha256':
-        'a987cfd2e722994a5911032d046ec2d0b912845a83b093226c3fccd5e316ed01',
+        '0ea0a025cedab2b6cfe605f127daa2a12c98f051f9314c9ab8a59c55306b36c2',
     'platform':
         'darwin',
     'machine': ['x86_64']
@@ -51,11 +51,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6554552,
+        6587480,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/mac-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/mac-arm64/traceconv',
     'sha256':
-        '972610d249990d4b03de50bece4a7adf03ebd6b3cc3c2c10feb7bb6561c1fce1',
+        '85bb771be931fe90c9da122f412efb884ff8bd2bd2eaa3f083c2c6ea5dd9205a',
     'platform':
         'darwin',
     'machine': ['arm64']
@@ -65,11 +65,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        8073432,
+        8100352,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-amd64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-amd64/traceconv',
     'sha256':
-        'e34f6ddd91ad0de62bfbef76303f2a94136470fe5a4f679af2f5b8898548ac13',
+        'c201fe1c30a00c0e7a1eac169ab91f05d6468a485b0791db3c439888e9334fde',
     'platform':
         'linux',
     'machine': ['x86_64']
@@ -79,11 +79,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        6677612,
+        6674592,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm/traceconv',
     'sha256':
-        '55c9cd6e5c5bc65210068a173b0c16ad3323faaba0fccec20247dca5bd3b913d',
+        '5a0bc650e39a289b2051a55ac3e7e2c05cb56f053e2b8dc31bb183e75892be28',
     'platform':
         'linux',
     'machine': ['armv6l', 'armv7l', 'armv8l']
@@ -93,11 +93,11 @@
     'file_name':
         'traceconv',
     'file_size':
-        7543648,
+        7554976,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/linux-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/linux-arm64/traceconv',
     'sha256':
-        '2477857470f613410f6151acb06b6b6a067ef8612d619eee86dd2a3b8aac2a3e',
+        'f2a3d4c3a7e6af760a4a03fe70e6c32479260bd6487f4b89d49412231c42e197',
     'platform':
         'linux',
     'machine': ['aarch64']
@@ -107,55 +107,55 @@
     'file_name':
         'traceconv',
     'file_size':
-        5360020,
+        5355916,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm/traceconv',
     'sha256':
-        '60cecbd8d9b6357bb89929fa5afa1eba6c1d46d621e62ee558509424d88bd53d'
+        '58101b41d4930abfebef729d2657252ca6f2c3cff4ebcb838165d606808ff0ad'
 }, {
     'arch':
         'android-arm64',
     'file_name':
         'traceconv',
     'file_size':
-        6769184,
+        6773264,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-arm64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-arm64/traceconv',
     'sha256':
-        'e373cbed4502977290abe3e246132ced538fca33881058e6049676ef9c613dd9'
+        'a7fc9fb02e94c92821d36cd0fb90bff75cbe32688e5f2678426b796a5f86ba53'
 }, {
     'arch':
         'android-x86',
     'file_name':
         'traceconv',
     'file_size':
-        7682412,
+        7670116,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x86/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x86/traceconv',
     'sha256':
-        'dcaa5d156247433537d59ad33238feb23dc0f97ba64c51581360f25ac0fc16a8'
+        '1a64a26516b5a0db710532b4a6f495d4f83153df56b2847093d1b6d17e749b6b'
 }, {
     'arch':
         'android-x64',
     'file_name':
         'traceconv',
     'file_size':
-        7903832,
+        7916104,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/android-x64/traceconv',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/android-x64/traceconv',
     'sha256':
-        'b73b8d398019b2a349d3748b4fe4096a069c6362697375d3c2668cf79ef1bb38'
+        '9badc970a3573a038977a7fef59b4d57797ef57e2e4e2d5f23804a0bfcdf1585'
 }, {
     'arch':
         'windows-amd64',
     'file_name':
         'traceconv.exe',
     'file_size':
-        7188992,
+        7217664,
     'url':
-        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v31.0/windows-amd64/traceconv.exe',
+        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v32.1/windows-amd64/traceconv.exe',
     'sha256':
-        '9cbdfcad3b5f2164d0c9e79d4f8b749db693814ae97fba038385d2e6f0111f72',
+        'd2b9c3ca448c9815c2393716758e85d4d2c8033ce0531b4551703a2b7e3d43a0',
     'platform':
         'win32',
     'machine': ['amd64']
diff --git a/ui/.eslintrc.js b/ui/.eslintrc.js
index 16553be..b890b89 100644
--- a/ui/.eslintrc.js
+++ b/ui/.eslintrc.js
@@ -47,7 +47,7 @@
     // https://github.com/typescript-eslint/typescript-eslint/issues/2621
     'no-unused-vars': 'off',
     '@typescript-eslint/no-unused-vars':
-        ['error', {'argsIgnorePattern': '^_.*'}],
+        ['error', {'argsIgnorePattern': '^_.*', 'varsIgnorePattern': '^_.*'}],
 
     // new Array() is banned (use [] instead) but new Array<Foo>() is
     // allowed since it can be clearer to put the type by the
diff --git a/ui/build.js b/ui/build.js
index 73b2aac..9a0ded5 100644
--- a/ui/build.js
+++ b/ui/build.js
@@ -222,14 +222,14 @@
   console.log('Entering', cfg.outDir);
   process.chdir(cfg.outDir);
 
-  updateSymlinks();  // Links //ui/out -> //out/xxx/ui/
-
   // Enqueue empty task. This is needed only for --no-build --serve. The HTTP
   // server is started when the task queue reaches quiescence, but it takes at
   // least one task for that.
   addTask(() => {});
 
   if (!args.no_build) {
+    updateSymlinks();  // Links //ui/out -> //out/xxx/ui/
+
     buildWasm(args.no_wasm);
     scanDir('ui/src/assets');
     scanDir('ui/src/chrome_extension');
@@ -253,11 +253,18 @@
 
   // We should enter the loop only in watch mode, where tsc and rollup are
   // asynchronous because they run in watch mode.
-  const tStart = Date.now();
-  while (!isDistComplete()) {
-    const secs = Math.ceil((Date.now() - tStart) / 1000);
-    process.stdout.write(`\t\tWaiting for first build to complete... ${secs} s\r`);
-    await new Promise((r) => setTimeout(r, 500));
+  if (args.no_build && !isDistComplete()) {
+    console.log('No build was requested, but artifacts are not available.');
+    console.log('In case of execution error, re-run without --no-build.');
+  }
+  if (!args.no_build) {
+    const tStart = Date.now();
+    while (!isDistComplete()) {
+      const secs = Math.ceil((Date.now() - tStart) / 1000);
+      process.stdout.write(
+          `\t\tWaiting for first build to complete... ${secs} s\r`);
+      await new Promise((r) => setTimeout(r, 500));
+    }
   }
   if (cfg.watch) console.log('\nFirst build completed!');
 
diff --git a/ui/src/assets/common.scss b/ui/src/assets/common.scss
index 570fa44..5470643 100644
--- a/ui/src/assets/common.scss
+++ b/ui/src/assets/common.scss
@@ -11,6 +11,9 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
+
+@import "fonts";
+
 :root {
   --sidebar-width: 256px;
   --topbar-height: 48px;
@@ -199,28 +202,64 @@
   width: 100%;
 }
 
+@mixin table-font-size {
+  font-size: 14px;
+  line-height: 18px;
+}
+
+$table-hover-color: hsl(214, 22%, 90%);
+
+$table-border-color: rgba(60, 76, 92, 0.4);
+
+.pivot-table {
+  @include bottom-panel-font;
+  @include table-font-size;
+
+  width: 100%;
+  border-collapse: collapse;
+
+  thead,
+  i {
+    cursor: pointer;
+  }
+  thead {
+    font-weight: normal;
+  }
+  td {
+    padding: 2px 1px;
+  }
+  td.first {
+    border-left: 1px solid $table-border-color;
+    padding-left: 6px;
+  }
+  tr.header {
+    border-bottom: 1px solid $table-border-color;
+    text-align: center;
+  }
+  thead td.reorderable-cell {
+    cursor: grab;
+  }
+  tr:hover td {
+    background-color: $table-hover-color;
+  }
+  .disabled {
+    cursor: default;
+  }
+  .indent {
+    display: inline-block;
+    // 16px is the width of expand_more/expand_less icon to pad out cells
+    // without the button
+    width: 16px;
+  }
+  strong {
+    font-weight: 400;
+  }
+}
+
 .query-table {
   width: 100%;
   font-size: 14px;
   border: 0;
-  &.pivot-table {
-    thead,
-    i {
-      cursor: pointer;
-    }
-    thead td.reorderable-cell {
-      cursor: grab;
-    }
-    .disabled {
-      cursor: default;
-    }
-    .indent {
-      display: inline-block;
-      // 16px is the width of expand_more/expand_less icon to pad out cells
-      // without the button
-      width: 16px;
-    }
-  }
   thead td {
     position: sticky;
     top: 0;
@@ -755,6 +794,7 @@
 
 .pivot-table-redux {
   user-select: text;
+  padding: 10px;
 
   button.mode-button {
     border-radius: 10px;
@@ -763,11 +803,6 @@
     background-color: #c7d0db;
   }
 
-  &.edit {
-    padding: 10px;
-    display: flex;
-  }
-
   &.query-error {
     color: red;
   }
@@ -817,11 +852,11 @@
   }
 
   &.highlight-left {
-    border-left-color: red;
+    background: linear-gradient(90deg, $table-border-color, transparent 20%);
   }
 
   &.highlight-right {
-    border-right-color: red;
+    background: linear-gradient(270deg, $table-border-color, transparent 20%);
   }
 }
 
diff --git a/ui/src/assets/details.scss b/ui/src/assets/details.scss
index 11186c2..3faaadd 100644
--- a/ui/src/assets/details.scss
+++ b/ui/src/assets/details.scss
@@ -97,9 +97,7 @@
 }
 
 .details-panel {
-  font-family: "Roboto Condensed", sans-serif;
-  font-weight: 300;
-  color: #3c4b5d;
+  @include bottom-panel-font;
 
   .material-icons {
     @include transition(0.3s);
@@ -234,8 +232,7 @@
 
   table {
     @include transition(0.1s);
-    font-size: 14px;
-    line-height: 18px;
+    @include table-font-size;
     width: 100%;
     // Aggregation panel uses multiple table elements that need to be aligned,
     // which is done by using fixed table layout.
@@ -245,7 +242,7 @@
     tr:hover {
       td,
       th {
-        background-color: hsl(214, 22%, 90%);
+        background-color: $table-hover-color;
 
         &.no-highlight {
           background-color: white;
@@ -392,7 +389,7 @@
   font-weight: bolder;
   font-size: 12px;
   .sum-data {
-    border-bottom: 1px solid rgba(60, 76, 92, 0.4);
+    border-bottom: 1px solid $table-border-color;
   }
 }
 
@@ -543,7 +540,7 @@
         background-color: hsl(214, 22%, 95%);
       }
       &:hover {
-        background-color: hsl(214, 22%, 90%);
+        background-color: $table-hover-color;
       }
       .cell {
         font-size: 11px;
diff --git a/ui/src/assets/fonts.scss b/ui/src/assets/fonts.scss
new file mode 100644
index 0000000..6f52d19
--- /dev/null
+++ b/ui/src/assets/fonts.scss
@@ -0,0 +1,20 @@
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@mixin bottom-panel-font {
+  font-family: "Roboto Condensed", sans-serif;
+  font-weight: 300;
+  color: #3c4b5d;
+}
+
diff --git a/ui/src/base/math_utils.ts b/ui/src/base/math_utils.ts
new file mode 100644
index 0000000..f1c1816
--- /dev/null
+++ b/ui/src/base/math_utils.ts
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Round a number up to the nearest stepsize.
+export function roundUpNearest(val: number, stepsize: number): number {
+  return stepsize * Math.ceil(val / stepsize);
+}
+
+// Round a number down to the nearest stepsize.
+export function roundDownNearest(val: number, stepsize: number): number {
+  return stepsize * Math.floor(val / stepsize);
+}
diff --git a/ui/src/base/math_utils_unittest.ts b/ui/src/base/math_utils_unittest.ts
new file mode 100644
index 0000000..169b793
--- /dev/null
+++ b/ui/src/base/math_utils_unittest.ts
@@ -0,0 +1,29 @@
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {roundDownNearest, roundUpNearest} from './math_utils';
+
+describe('roundUpNearest()', () => {
+  it('rounds decimal values up to the right step size', () => {
+    expect(roundUpNearest(0.1, 0.5)).toBeCloseTo(0.5);
+    expect(roundUpNearest(17.2, 0.5)).toBeCloseTo(17.5);
+  });
+});
+
+describe('roundDownNearest()', () => {
+  it('rounds decimal values down to the right step size', () => {
+    expect(roundDownNearest(0.4, 0.5)).toBeCloseTo(0.0);
+    expect(roundDownNearest(17.4, 0.5)).toBeCloseTo(17.0);
+  });
+});
diff --git a/ui/src/common/actions.ts b/ui/src/common/actions.ts
index c5e40d6..2909c73 100644
--- a/ui/src/common/actions.ts
+++ b/ui/src/common/actions.ts
@@ -1024,6 +1024,13 @@
     }
   },
 
+  clearAllPinnedTracks(state: StateDraft, _: {}) {
+    if (state.pinnedTracks.length > 0) {
+      // Clear pinnedTracks array
+      state.pinnedTracks.length = 0;
+    }
+  },
+
   togglePivotTableRedux(state: StateDraft, args: {areaId: string|null}) {
     state.nonSerializableState.pivotTableRedux.selectionArea =
         args.areaId === null ?
diff --git a/ui/src/common/query_result.ts b/ui/src/common/query_result.ts
index bae847d..9d44c9e 100644
--- a/ui/src/common/query_result.ts
+++ b/ui/src/common/query_result.ts
@@ -57,8 +57,10 @@
 export const STR = 'str';
 export const NUM_NULL: number|null = 1;
 export const STR_NULL: string|null = 'str_null';
+export const BLOB: Uint8Array = new Uint8Array();
+export const BLOB_NULL: Uint8Array|null = new Uint8Array();
 
-export type ColumnType = string|number|null;
+export type ColumnType = string|number|null|Uint8Array;
 
 // Info that could help debug a query error. For example the query
 // in question, the stack where the query was issued, the active
@@ -119,11 +121,32 @@
       return 'STR';
     case STR_NULL:
       return 'STR_NULL';
+    case BLOB:
+      return 'BLOB';
+    case BLOB_NULL:
+      return 'BLOB_NULL';
     default:
       return `INVALID(${t})`;
   }
 }
 
+function isCompatible(actual: CellType, expected: ColumnType): boolean {
+  switch (actual) {
+    case CellType.CELL_NULL:
+      return expected === NUM_NULL || expected === STR_NULL ||
+          expected === BLOB_NULL;
+    case CellType.CELL_VARINT:
+    case CellType.CELL_FLOAT64:
+      return expected === NUM || expected === NUM_NULL;
+    case CellType.CELL_STRING:
+      return expected === STR || expected === STR_NULL;
+    case CellType.CELL_BLOB:
+      return expected === BLOB || expected === BLOB_NULL;
+    default:
+      throw new Error(`Unknown CellType ${actual}`);
+  }
+}
+
 // Disable Long.js support in protobuf. This seems to be enabled only in tests
 // but not in production code. In any case, for now we want casting to number
 // accepting the 2**53 limitation. This is consistent with passing
@@ -652,8 +675,7 @@
 
         case CellType.CELL_BLOB:
           const blob = this.blobCells[this.nextBlobCell++];
-          throw new Error(`TODO implement BLOB support (${blob})`);
-          // outRow[colName] = blob;
+          rowData[colName] = blob;
           break;
 
         default:
@@ -721,20 +743,16 @@
       if (expType === undefined) continue;
 
       let err = '';
-      if (actualType === CellType.CELL_NULL &&
-          (expType !== STR_NULL && expType !== NUM_NULL)) {
-        err = 'SQL value is NULL but that was not expected' +
-            ` (expected type: ${columnTypeToString(expType)}). ` +
-            'Did you intend to use NUM_NULL or STR_NULL?';
-      } else if (
-          ((actualType === CellType.CELL_VARINT ||
-            actualType === CellType.CELL_FLOAT64) &&
-           (expType !== NUM && expType !== NUM_NULL)) ||
-          ((actualType === CellType.CELL_STRING) &&
-           (expType !== STR && expType !== STR_NULL))) {
-        err = `Incompatible cell type. Expected: ${
-            columnTypeToString(
-                expType)} actual: ${CELL_TYPE_NAMES[actualType]}`;
+      if (!isCompatible(actualType, expType)) {
+        if (actualType === CellType.CELL_NULL) {
+          err = 'SQL value is NULL but that was not expected' +
+              ` (expected type: ${columnTypeToString(expType)}). ` +
+              'Did you intend to use NUM_NULL, STR_NULL or BLOB_NULL?';
+        } else {
+          err = `Incompatible cell type. Expected: ${
+              columnTypeToString(
+                  expType)} actual: ${CELL_TYPE_NAMES[actualType]}`;
+        }
       }
       if (err.length > 0) {
         throw new Error(
diff --git a/ui/src/controller/aggregation/aggregation_controller.ts b/ui/src/controller/aggregation/aggregation_controller.ts
index 0510ca0..4fa1ecc 100644
--- a/ui/src/controller/aggregation/aggregation_controller.ts
+++ b/ui/src/controller/aggregation/aggregation_controller.ts
@@ -146,6 +146,8 @@
           column.data[i] = isStringColumn(column) ? internString('NULL') : 0;
         } else if (typeof item === 'string') {
           column.data[i] = internString(item);
+        } else if (item instanceof Uint8Array) {
+          column.data[i] = internString('<Binary blob>');
         } else {
           column.data[i] = item;
         }
diff --git a/ui/src/controller/globals.ts b/ui/src/controller/globals.ts
index 84564a8..5cd8f67 100644
--- a/ui/src/controller/globals.ts
+++ b/ui/src/controller/globals.ts
@@ -15,16 +15,13 @@
 import {applyPatches, Patch} from 'immer';
 
 import {assertExists} from '../base/logging';
-import {DeferredAction} from '../common/actions';
 import {createEmptyState} from '../common/empty_state';
 import {State} from '../common/state';
-import {globals as frontendGlobals} from '../frontend/globals';
 
 import {ControllerAny} from './controller';
 
 export interface App {
   state: State;
-  dispatch(action: DeferredAction): void;
 }
 
 /**
@@ -40,19 +37,6 @@
     this._state = createEmptyState();
   }
 
-  dispatch(action: DeferredAction): void {
-    frontendGlobals.dispatch(action);
-  }
-
-  // Send the passed dispatch actions to the frontend. The frontend logic
-  // will run the actions, compute the new state and invoke patchState() so
-  // our copy is updated.
-  dispatchMultiple(actions: DeferredAction[]): void {
-    for (const action of actions) {
-      this.dispatch(action);
-    }
-  }
-
   // This is called by the frontend logic which now owns and handle the
   // source-of-truth state, to give us an update on the newer state updates.
   patchState(patches: Patch[]): void {
diff --git a/ui/src/controller/metrics_controller.ts b/ui/src/controller/metrics_controller.ts
index d0e0916..7c7c9be 100644
--- a/ui/src/controller/metrics_controller.ts
+++ b/ui/src/controller/metrics_controller.ts
@@ -15,6 +15,7 @@
 import {Actions} from '../common/actions';
 import {Engine} from '../common/engine';
 import {QueryError} from '../common/query_result';
+import {globals as frontendGlobals} from '../frontend/globals';
 import {publishMetricResult} from '../frontend/publish';
 
 import {Controller} from './controller';
@@ -48,7 +49,7 @@
         throw e;
       }
     }
-    globals.dispatch(Actions.resetMetricRequest({name}));
+    frontendGlobals.dispatch(Actions.resetMetricRequest({name}));
     this.currentlyRunningMetric = undefined;
   }
 
diff --git a/ui/src/controller/permalink_controller.ts b/ui/src/controller/permalink_controller.ts
index 349a02a..22cf3de 100644
--- a/ui/src/controller/permalink_controller.ts
+++ b/ui/src/controller/permalink_controller.ts
@@ -79,7 +79,7 @@
 
       PermalinkController.createPermalink(isRecordingConfig)
           .then((hash) => {
-            globals.dispatch(Actions.setPermalink({requestId, hash}));
+            frontendGlobals.dispatch(Actions.setPermalink({requestId, hash}));
           })
           .finally(() => {
             publishConversionJobStatusUpdate({
@@ -99,11 +99,12 @@
             const validConfig =
                 runValidator(recordConfigValidator, stateOrConfig as unknown)
                     .result;
-            globals.dispatch(Actions.setRecordConfig({config: validConfig}));
+            frontendGlobals.dispatch(
+                Actions.setRecordConfig({config: validConfig}));
             Router.navigate('#!/record');
             return;
           }
-          globals.dispatch(Actions.setState({newState: stateOrConfig}));
+          frontendGlobals.dispatch(Actions.setState({newState: stateOrConfig}));
           this.lastRequestId = stateOrConfig.permalink.requestId;
         });
   }
@@ -215,7 +216,7 @@
 
   private static updateStatus(msg: string): void {
     // TODO(hjd): Unify loading updates.
-    globals.dispatch(Actions.updateStatus({
+    frontendGlobals.dispatch(Actions.updateStatus({
       msg,
       timestamp: Date.now() / 1000,
     }));
diff --git a/ui/src/controller/pivot_table_redux_controller.ts b/ui/src/controller/pivot_table_redux_controller.ts
index 4f57891..8658822 100644
--- a/ui/src/controller/pivot_table_redux_controller.ts
+++ b/ui/src/controller/pivot_table_redux_controller.ts
@@ -26,6 +26,7 @@
   PivotTableReduxResult,
   PivotTableReduxState,
 } from '../common/state';
+import {globals as frontendGlobals} from '../frontend/globals';
 import {
   aggregationIndex,
   generateQueryFromState,
@@ -219,7 +220,7 @@
     if (!it.valid()) {
       // Iterator is invalid after creation; means that there are no rows
       // satisfying filtering criteria. Return an empty tree.
-      globals.dispatch(Actions.setPivotStateQueryResult(
+      frontendGlobals.dispatch(Actions.setPivotStateQueryResult(
           {queryResult: createEmptyQueryResult(query.metadata)}));
       return;
     }
@@ -232,9 +233,9 @@
       treeBuilder.ingestRow(nextRow());
     }
 
-    globals.dispatch(Actions.setPivotStateQueryResult(
+    frontendGlobals.dispatch(Actions.setPivotStateQueryResult(
         {queryResult: {tree: treeBuilder.build(), metadata: query.metadata}}));
-    globals.dispatch(Actions.setCurrentTab({tab: 'pivot_table_redux'}));
+    frontendGlobals.dispatch(Actions.setCurrentTab({tab: 'pivot_table_redux'}));
   }
 
   async requestArgumentNames() {
@@ -250,7 +251,8 @@
       it.next();
     }
 
-    globals.dispatch(Actions.setPivotTableArgumentNames({argumentNames}));
+    frontendGlobals.dispatch(
+        Actions.setPivotTableArgumentNames({argumentNames}));
   }
 
 
@@ -269,17 +271,18 @@
     if (pivotTableState.queryRequested ||
         (selection !== null && selection.kind === 'AREA' &&
          this.shouldRerun(pivotTableState, selection))) {
-      globals.dispatch(
+      frontendGlobals.dispatch(
           Actions.setPivotTableQueryRequested({queryRequested: false}));
       // Need to re-run the existing query, clear the current result.
-      globals.dispatch(Actions.setPivotStateQueryResult({queryResult: null}));
+      frontendGlobals.dispatch(
+          Actions.setPivotStateQueryResult({queryResult: null}));
       this.processQuery(generateQueryFromState(pivotTableState));
     }
 
     if (selection !== null && selection.kind === 'AREA' &&
         (pivotTableState.selectionArea === undefined ||
          pivotTableState.selectionArea.areaId !== selection.areaId)) {
-      globals.dispatch(
+      frontendGlobals.dispatch(
           Actions.togglePivotTableRedux({areaId: selection.areaId}));
     }
   }
diff --git a/ui/src/controller/query_controller.ts b/ui/src/controller/query_controller.ts
index 4e9017f..3a896d8 100644
--- a/ui/src/controller/query_controller.ts
+++ b/ui/src/controller/query_controller.ts
@@ -16,6 +16,7 @@
 import {Actions} from '../common/actions';
 import {Engine} from '../common/engine';
 import {runQuery} from '../common/queries';
+import {globals as frontendGlobals} from '../frontend/globals';
 import {publishQueryResult} from '../frontend/publish';
 
 import {Controller} from './controller';
@@ -39,7 +40,7 @@
             .then((result) => {
               console.log(`Query ${config.query} took ${result.durationMs} ms`);
               publishQueryResult({id: this.args.queryId, data: result});
-              globals.dispatch(
+              frontendGlobals.dispatch(
                   Actions.deleteQuery({queryId: this.args.queryId}));
             });
         this.setState('querying');
diff --git a/ui/src/controller/record_controller.ts b/ui/src/controller/record_controller.ts
index aef43ab..3ce567e 100644
--- a/ui/src/controller/record_controller.ts
+++ b/ui/src/controller/record_controller.ts
@@ -29,6 +29,7 @@
   isChromeTarget,
   RecordingTarget,
 } from '../common/state';
+import {globals as frontendGlobals} from '../frontend/globals';
 import {publishBufferUsage, publishTrackData} from '../frontend/publish';
 
 import {AdbOverWebUsb} from './adb';
@@ -208,7 +209,8 @@
       if (this.app.state.extensionInstalled) {
         this.extensionPort.postMessage({method: 'GetCategories'});
       }
-      globals.dispatch(Actions.setFetchChromeCategories({fetch: false}));
+      frontendGlobals.dispatch(
+          Actions.setFetchChromeCategories({fetch: false}));
     }
     if (this.app.state.recordConfig === this.config &&
         this.app.state.recordingInProgress === this.recordingInProgress) {
@@ -302,15 +304,15 @@
 
   onTraceComplete() {
     this.consumerPort.freeBuffers({});
-    globals.dispatch(Actions.setRecordingStatus({status: undefined}));
+    frontendGlobals.dispatch(Actions.setRecordingStatus({status: undefined}));
     if (globals.state.recordingCancelled) {
-      globals.dispatch(
+      frontendGlobals.dispatch(
           Actions.setLastRecordingError({error: 'Recording cancelled.'}));
       this.traceBuffer = [];
       return;
     }
     const trace = this.generateTrace();
-    globals.dispatch(Actions.openTraceFromBuffer({
+    frontendGlobals.dispatch(Actions.openTraceFromBuffer({
       title: 'Recorded trace',
       buffer: trace.buffer,
       fileName: `recorded_trace${this.recordedTraceSuffix}`,
@@ -346,13 +348,13 @@
   onError(message: string) {
     // TODO(octaviant): b/204998302
     console.error('Error in record controller: ', message);
-    globals.dispatch(
+    frontendGlobals.dispatch(
         Actions.setLastRecordingError({error: message.substr(0, 150)}));
-    globals.dispatch(Actions.stopRecording({}));
+    frontendGlobals.dispatch(Actions.stopRecording({}));
   }
 
   onStatus(message: string) {
-    globals.dispatch(Actions.setRecordingStatus({status: message}));
+    frontendGlobals.dispatch(Actions.setRecordingStatus({status: message}));
   }
 
   // Depending on the recording target, different implementation of the
diff --git a/ui/src/controller/selection_controller.ts b/ui/src/controller/selection_controller.ts
index 134d78b..4b4ee82 100644
--- a/ui/src/controller/selection_controller.ts
+++ b/ui/src/controller/selection_controller.ts
@@ -466,7 +466,7 @@
 
     // If this is the first sched slice for this utid or if the wakeup found
     // was after the previous slice then we know the wakeup was for this slice.
-    if (prevSchedResult.numRows() === 0 ||
+    if (prevSchedResult.numRows() !== 0 &&
         wakeupTs < prevSchedResult.firstRow({ts: NUM}).ts) {
       return undefined;
     }
diff --git a/ui/src/controller/trace_controller.ts b/ui/src/controller/trace_controller.ts
index dd62689..a6c8771 100644
--- a/ui/src/controller/trace_controller.ts
+++ b/ui/src/controller/trace_controller.ts
@@ -206,17 +206,17 @@
     switch (this.state) {
       case 'init':
         this.loadTrace()
-          .then((mode) => {
-            globals.dispatch(Actions.setEngineReady({
-              engineId: this.engineId,
-              ready: true,
-              mode,
-            }));
-          })
-          .catch((err) => {
-            this.updateStatus(`${err}`);
-            throw err;
-          });
+            .then((mode) => {
+              frontendGlobals.dispatch(Actions.setEngineReady({
+                engineId: this.engineId,
+                ready: true,
+                mode,
+              }));
+            })
+            .catch((err) => {
+              this.updateStatus(`${err}`);
+              throw err;
+            });
         this.updateStatus('Opening trace');
         this.setState('loading_trace');
         break;
@@ -349,8 +349,8 @@
       engineMode = 'HTTP_RPC';
       engine = new HttpRpcEngine(this.engineId, LoadingManager.getInstance);
       engine.errorHandler = (err) => {
-        globals.dispatch(
-          Actions.setEngineFailed({mode: 'HTTP_RPC', failure: `${err}`}));
+        frontendGlobals.dispatch(
+            Actions.setEngineFailed({mode: 'HTTP_RPC', failure: `${err}`}));
         throw err;
       };
     } else {
@@ -375,7 +375,7 @@
       new BottomTabList(engine.getProxy('BottomTabList'));
 
     frontendGlobals.engines.set(this.engineId, engine);
-    globals.dispatch(Actions.setEngineReady({
+    frontendGlobals.dispatch(Actions.setEngineReady({
       engineId: this.engineId,
       ready: false,
       mode: engineMode,
@@ -476,7 +476,7 @@
       resolution,
     }));
 
-    globals.dispatchMultiple(actions);
+    frontendGlobals.dispatchMultiple(actions);
     Router.navigate(`#!/viewer?local_cache_key=${traceUuid}`);
 
     // Make sure the helper views are available before we start adding tracks.
@@ -510,9 +510,9 @@
       publishHasFtrace(hasFtrace);
     }
 
-    globals.dispatch(Actions.removeDebugTrack({}));
-    globals.dispatch(Actions.sortThreadTracks({}));
-    globals.dispatch(Actions.maybeExpandOnlyTrackGroup({}));
+    frontendGlobals.dispatch(Actions.removeDebugTrack({}));
+    frontendGlobals.dispatch(Actions.sortThreadTracks({}));
+    frontendGlobals.dispatch(Actions.maybeExpandOnlyTrackGroup({}));
 
     await this.selectFirstHeapProfile();
     if (PERF_SAMPLE_FLAG.get()) {
@@ -531,7 +531,7 @@
     if (!isJsonTrace && ENABLE_CHROME_RELIABLE_RANGE_ANNOTATION_FLAG.get()) {
       const reliableRangeStart = await computeTraceReliableRangeStart(engine);
       if (reliableRangeStart > 0) {
-        globals.dispatch(Actions.addAutomaticNote({
+        frontendGlobals.dispatch(Actions.addAutomaticNote({
           timestamp: reliableRangeStart,
           color: '#ff0000',
           text: 'Reliable Range Start',
@@ -554,8 +554,8 @@
     const upid = row.upid;
     const leftTs = toNs(globals.state.traceTime.startSec);
     const rightTs = toNs(globals.state.traceTime.endSec);
-    globals.dispatch(Actions.selectPerfSamples(
-      {id: 0, upid, leftTs, rightTs, type: ProfileType.PERF_SAMPLE}));
+    frontendGlobals.dispatch(Actions.selectPerfSamples(
+        {id: 0, upid, leftTs, rightTs, type: ProfileType.PERF_SAMPLE}));
   }
 
   private async selectFirstHeapProfile() {
@@ -576,14 +576,15 @@
     const ts = row.ts;
     const type = profileType(row.type);
     const upid = row.upid;
-    globals.dispatch(Actions.selectHeapProfile({id: 0, upid, ts, type}));
+    frontendGlobals.dispatch(
+        Actions.selectHeapProfile({id: 0, upid, ts, type}));
   }
 
   private async listTracks() {
     this.updateStatus('Loading tracks');
     const engine = assertExists<Engine>(this.engine);
     const actions = await decideTracks(this.engineId, engine);
-    globals.dispatchMultiple(actions);
+    frontendGlobals.dispatchMultiple(actions);
   }
 
   private async listThreads() {
@@ -776,7 +777,7 @@
     for (const it = metricsResult.iter({name: STR}); it.valid(); it.next()) {
       availableMetrics.push(it.name);
     }
-    globals.dispatch(Actions.setAvailableMetrics({availableMetrics}));
+    frontendGlobals.dispatch(Actions.setAvailableMetrics({availableMetrics}));
 
     const availableMetricsSet = new Set<string>(availableMetrics);
     for (const [flag, metric] of FLAGGED_METRICS) {
@@ -895,7 +896,7 @@
   }
 
   private updateStatus(msg: string): void {
-    globals.dispatch(Actions.updateStatus({
+    frontendGlobals.dispatch(Actions.updateStatus({
       msg,
       timestamp: Date.now() / 1000,
     }));
diff --git a/ui/src/controller/visualised_args_controller.ts b/ui/src/controller/visualised_args_controller.ts
index 9ac6d3d..ec1d67c 100644
--- a/ui/src/controller/visualised_args_controller.ts
+++ b/ui/src/controller/visualised_args_controller.ts
@@ -18,6 +18,7 @@
 import {Engine} from '../common/engine';
 import {NUM} from '../common/query_result';
 import {InThreadTrackSortKey} from '../common/state';
+import {globals as frontendGlobals} from '../frontend/globals';
 import {
   VISUALISED_ARGS_SLICE_TRACK_KIND,
 } from '../tracks/visualised_args/index';
@@ -48,7 +49,7 @@
 
   onDestroy() {
     this.engine.query(`drop table if exists ${this.tableName}`);
-    globals.dispatch(
+    frontendGlobals.dispatch(
         Actions.removeVisualisedArgTracks({trackIds: this.addedTrackIds}));
   }
 
@@ -113,8 +114,8 @@
         },
       });
     }
-    globals.dispatch(Actions.addTracks({tracks: tracksToAdd}));
-    globals.dispatch(Actions.sortThreadTracks({}));
+    frontendGlobals.dispatch(Actions.addTracks({tracks: tracksToAdd}));
+    frontendGlobals.dispatch(Actions.sortThreadTracks({}));
   }
 
   run() {
diff --git a/ui/src/frontend/globals.ts b/ui/src/frontend/globals.ts
index 5b8728a..0e5de55 100644
--- a/ui/src/frontend/globals.ts
+++ b/ui/src/frontend/globals.ts
@@ -293,6 +293,13 @@
     return assertExists(this._dispatch);
   }
 
+  dispatchMultiple(actions: DeferredAction[]): void {
+    const dispatch = this.dispatch;
+    for (const action of actions) {
+      dispatch(action);
+    }
+  }
+
   get frontendLocalState() {
     return assertExists(this._frontendLocalState);
   }
diff --git a/ui/src/frontend/gridline_helper.ts b/ui/src/frontend/gridline_helper.ts
index 6c0b74d..1c9dbfe 100644
--- a/ui/src/frontend/gridline_helper.ts
+++ b/ui/src/frontend/gridline_helper.ts
@@ -12,94 +12,172 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import {TimeSpan} from '../common/time';
-
+import {assertTrue} from '../base/logging';
+import {roundDownNearest} from '../base/math_utils';
 import {TRACK_BORDER_COLOR, TRACK_SHELL_WIDTH} from './css_constants';
+import {globals} from './globals';
 import {TimeScale} from './time_scale';
 
-export const DESIRED_PX_PER_STEP = 80;
-
-// Returns the step size of a grid line in seconds.
-// The returned step size has two properties:
-// (1) It is 1, 2, or 5, multiplied by some integer power of 10.
-// (2) The number steps in |range| produced by |stepSize| is as close as
-//     possible to |desiredSteps|.
-export function getGridStepSize(range: number, desiredSteps: number): number {
+// Returns the optimal step size (in seconds) and tick pattern of ticks within
+// the step. The returned step size has two properties: (1) It is 1, 2, or 5,
+// multiplied by some integer power of 10. (2) It is maximised given the
+// constraint: |range| / stepSize <= |maxNumberOfSteps|.
+export function getStepSize(
+    range: number, maxNumberOfSteps: number): [number, string] {
   // First, get the largest possible power of 10 that is smaller than the
-  // desired step size, and set it to the current step size.
+  // desired step size, and use it as our initial step size.
   // For example, if the range is 2345ms and the desired steps is 10, then the
-  // desired step size is 234.5 and the step size will be set to 100.
-  const desiredStepSize = range / desiredSteps;
-  const zeros = Math.floor(Math.log10(desiredStepSize));
+  // minimum step size is 234.5ms so the step size will initialise to 100.
+  const minStepSize = range / maxNumberOfSteps;
+  const zeros = Math.floor(Math.log10(minStepSize));
   const initialStepSize = Math.pow(10, zeros);
 
-  // This function first calculates how many steps within the range a certain
-  // stepSize will produce, and returns the difference between that and
-  // desiredSteps.
-  const distToDesired = (evaluatedStepSize: number) =>
-      Math.abs(range / evaluatedStepSize - desiredSteps);
-
   // We know that |initialStepSize| is a power of 10, and
   // initialStepSize <= desiredStepSize <= 10 * initialStepSize. There are four
   // possible candidates for final step size: 1, 2, 5 or 10 * initialStepSize.
-  // We pick the candidate that minimizes distToDesired(stepSize).
-  const stepSizeMultipliers = [2, 5, 10];
+  // For our example above, this would result in a step size of 500ms, as both
+  // 100ms and 200ms are smaller than the minimum step size of 234.5ms.
+  // We pick the candidate that minimizes the step size without letting the
+  // number of steps exceed |maxNumberOfSteps|. The factor we pick to also
+  // determines the pattern of ticks. This pattern is represented using a string
+  // where:
+  //  | = Major tick
+  //  : = Medium tick
+  //  . = Minor tick
+  const stepSizeMultipliers: [number, string][] =
+      [[1, '|....:....'], [2, '|.:.'], [5, '|....'], [10, '|....:....']];
 
-  let minimalDistance = distToDesired(initialStepSize);
-  let minimizingStepSize = initialStepSize;
-
-  for (const multiplier of stepSizeMultipliers) {
+  for (const [multiplier, pattern] of stepSizeMultipliers) {
     const newStepSize = multiplier * initialStepSize;
-    const newDistance = distToDesired(newStepSize);
-    if (newDistance < minimalDistance) {
-      minimalDistance = newDistance;
-      minimizingStepSize = newStepSize;
+    const numberOfNewSteps = range / newStepSize;
+    if (numberOfNewSteps <= maxNumberOfSteps) {
+      return [newStepSize, pattern];
     }
   }
-  return minimizingStepSize;
+
+  throw new Error('Something has gone horribly wrong with maths');
 }
 
-// Generator that returns that (given a width im px, span, and scale) returns
-// pairs of [xInPx, timestampInS] pairs describing where gridlines should be
-// drawn.
-export function gridlines(width: number, span: TimeSpan, timescale: TimeScale):
-    Array<[number, number]> {
-  const desiredSteps = width / DESIRED_PX_PER_STEP;
-  const step = getGridStepSize(span.duration, desiredSteps);
-  const actualSteps = Math.floor(span.duration / step);
-  const start = Math.round(span.start / step) * step;
-  const lines: Array<[number, number]> = [];
-  let previousTimestamp = Number.NEGATIVE_INFINITY;
-  // Iterating over the number of steps instead of
-  // for (let s = start; s < span.end; s += step) because if start is very large
-  // number and step very small, s will never reach end.
-  for (let i = 0; i <= actualSteps; i++) {
-    let xPos = TRACK_SHELL_WIDTH;
-    const timestamp = start + i * step;
-    xPos += Math.floor(timescale.timeToPx(timestamp));
-    if (xPos < TRACK_SHELL_WIDTH) continue;
-    if (xPos > width) break;
-    if (Math.abs(timestamp - previousTimestamp) > Number.EPSILON) {
-      previousTimestamp = timestamp;
-      lines.push([xPos, timestamp]);
+function tickPatternToArray(pattern: string): TickType[] {
+  const array = Array.from(pattern);
+  return array.map((char) => {
+    switch (char) {
+      case '|':
+        return TickType.MAJOR;
+      case ':':
+        return TickType.MEDIUM;
+      case '.':
+        return TickType.MINOR;
+      default:
+        // This is almost certainly a developer/fat-finger error
+        throw Error(`Invalid char "${char}" in pattern "${pattern}"`);
+    }
+  });
+}
+
+// Assuming a number only has one non-zero decimal digit, find the number of
+// decimal places required to accurately print that number. I.e. the parameter
+// we should pass to number.toFixed(x). To account for floating point
+// innaccuracies when representing numbers in base-10, we only take the first
+// nonzero fractional digit into account. E.g.
+//  1.0 -> 0
+//  0.5 -> 1
+//  0.009 -> 3
+//  0.00007 -> 5
+//  30000 -> 0
+//  0.30000000000000004 -> 1
+export function guessDecimalPlaces(val: number): number {
+  const neglog10 = -Math.floor(Math.log10(val));
+  const clamped = Math.max(0, neglog10);
+  return clamped;
+}
+
+export enum TickType {
+  MAJOR,
+  MEDIUM,
+  MINOR
+}
+
+export interface Tick {
+  type: TickType;
+  time: number;
+  position: number;
+}
+
+const MIN_PX_PER_STEP = 80;
+
+// An iterable which generates a series of ticks for a given timescale.
+export class TickGenerator implements Iterable<Tick> {
+  private _tickPattern: TickType[];
+  private _patternSize: number;
+
+  constructor(private scale: TimeScale, {minLabelPx = MIN_PX_PER_STEP} = {}) {
+    assertTrue(minLabelPx > 0, 'minLabelPx cannot be lte 0');
+    assertTrue(scale.widthPx > 0, 'widthPx cannot be lte 0');
+    assertTrue(
+        scale.timeSpan.duration > 0, 'timeSpan.duration cannot be lte 0');
+
+    const desiredSteps = scale.widthPx / minLabelPx;
+    const [size, pattern] = getStepSize(scale.timeSpan.duration, desiredSteps);
+    this._patternSize = size;
+    this._tickPattern = tickPatternToArray(pattern);
+  }
+
+  // Returns an iterable, so this object can be iterated over directly using the
+  // `for x of y` notation. The use of a generator here is just to make things
+  // more elegant than creating an array of ticks and building an iterator for
+  // it.
+  * [Symbol.iterator](): Generator<Tick> {
+    const span = this.scale.timeSpan;
+    const stepSize = this._patternSize / this._tickPattern.length;
+    const start = roundDownNearest(span.start, this._patternSize);
+    const timeAtStep = (i: number) => start + (i * stepSize);
+
+    // Iterating using steps instead of
+    // for (let s = start; s < span.end; s += stepSize) because if start is much
+    // larger than stepSize we can enter an infinite loop due to floating
+    // point precision errors.
+    for (let i = 0; timeAtStep(i) < span.end; i++) {
+      const time = timeAtStep(i);
+      if (time >= span.start) {
+        const position = Math.floor(this.scale.timeToPx(time));
+        const type = this._tickPattern[i % this._tickPattern.length];
+        yield {type, time, position};
+      }
     }
   }
-  return lines;
+
+  // The number of decimal places labels should be printed with, assuming labels
+  // are only printed on major ticks.
+  get digits(): number {
+    return guessDecimalPlaces(this._patternSize);
+  }
+}
+
+// Gets the timescale associated with the current visible window.
+export function timeScaleForVisibleWindow(
+    startPx: number, endPx: number): TimeScale {
+  const span = globals.frontendLocalState.visibleWindowTime;
+  const spanRelative = span.add(-globals.state.traceTime.startSec);
+  return new TimeScale(spanRelative, [startPx, endPx]);
 }
 
 export function drawGridLines(
     ctx: CanvasRenderingContext2D,
-    x: TimeScale,
-    timeSpan: TimeSpan,
     width: number,
     height: number): void {
   ctx.strokeStyle = TRACK_BORDER_COLOR;
   ctx.lineWidth = 1;
 
-  for (const xAndTime of gridlines(width, timeSpan, x)) {
-    ctx.beginPath();
-    ctx.moveTo(xAndTime[0] + 0.5, 0);
-    ctx.lineTo(xAndTime[0] + 0.5, height);
-    ctx.stroke();
+  const timeScale = timeScaleForVisibleWindow(TRACK_SHELL_WIDTH, width);
+  if (timeScale.timeSpan.duration > 0 && timeScale.widthPx > 0) {
+    for (const {type, position} of new TickGenerator(timeScale)) {
+      if (type === TickType.MAJOR) {
+        ctx.beginPath();
+        ctx.moveTo(position + 0.5, 0);
+        ctx.lineTo(position + 0.5, height);
+        ctx.stroke();
+      }
+    }
   }
 }
diff --git a/ui/src/frontend/gridline_helper_unittest.ts b/ui/src/frontend/gridline_helper_unittest.ts
index 98724d5..3b6dcac 100644
--- a/ui/src/frontend/gridline_helper_unittest.ts
+++ b/ui/src/frontend/gridline_helper_unittest.ts
@@ -12,36 +12,303 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import {getGridStepSize} from './gridline_helper';
+import {TimeSpan} from '../common/time';
+
+import {getStepSize, Tick, TickGenerator, TickType} from './gridline_helper';
+import {TimeScale} from './time_scale';
+
+const pattern1 = '|....:....';
+const pattern2 = '|.:.';
+const pattern5 = '|....';
+const timeScale = new TimeScale(new TimeSpan(0, 1), [1, 2]);
 
 test('gridline helper to have sensible step sizes', () => {
-  expect(getGridStepSize(10, 14)).toEqual(1);
-  expect(getGridStepSize(30, 14)).toEqual(2);
-  expect(getGridStepSize(60, 14)).toEqual(5);
-  expect(getGridStepSize(100, 14)).toEqual(10);
+  expect(getStepSize(10, 14)).toEqual([1, pattern1]);
+  expect(getStepSize(30, 14)).toEqual([5, pattern5]);
+  expect(getStepSize(60, 14)).toEqual([5, pattern5]);
+  expect(getStepSize(100, 14)).toEqual([10, pattern1]);
 
-  expect(getGridStepSize(10, 21)).toEqual(0.5);
-  expect(getGridStepSize(30, 21)).toEqual(2);
-  expect(getGridStepSize(60, 21)).toEqual(2);
-  expect(getGridStepSize(100, 21)).toEqual(5);
+  expect(getStepSize(10, 21)).toEqual([0.5, pattern5]);
+  expect(getStepSize(30, 21)).toEqual([2, pattern2]);
+  expect(getStepSize(60, 21)).toEqual([5, pattern5]);
+  expect(getStepSize(100, 21)).toEqual([5, pattern5]);
 
-  expect(getGridStepSize(10, 3)).toEqual(5);
-  expect(getGridStepSize(30, 3)).toEqual(10);
-  expect(getGridStepSize(60, 3)).toEqual(20);
-  expect(getGridStepSize(100, 3)).toEqual(50);
+  expect(getStepSize(10, 3)).toEqual([5, pattern5]);
+  expect(getStepSize(30, 3)).toEqual([10, pattern1]);
+  expect(getStepSize(60, 3)).toEqual([20, pattern2]);
+  expect(getStepSize(100, 3)).toEqual([50, pattern5]);
 
-  expect(getGridStepSize(800, 4)).toEqual(200);
+  expect(getStepSize(800, 4)).toEqual([200, pattern2]);
 });
 
 test('gridline helper to scale to very small and very large values', () => {
-  expect(getGridStepSize(.01, 14)).toEqual(.001);
-  expect(getGridStepSize(10000, 14)).toEqual(1000);
+  expect(getStepSize(.01, 14)).toEqual([.001, pattern1]);
+  expect(getStepSize(10000, 14)).toEqual([1000, pattern1]);
 });
 
 test('gridline helper to always return a reasonable number of steps', () => {
   for (let i = 1; i <= 1000; i++) {
-    const stepSize = getGridStepSize(i, 14);
-    expect(Math.round(i / stepSize)).toBeGreaterThanOrEqual(7);
-    expect(Math.round(i / stepSize)).toBeLessThanOrEqual(21);
+    const [stepSize, _] = getStepSize(i, 14);
+    expect(Math.round(i / stepSize)).toBeGreaterThanOrEqual(6);
+    expect(Math.round(i / stepSize)).toBeLessThanOrEqual(14);
   }
 });
+
+describe('TickGenerator with range 0.0-1.0 and room for 2 labels', () => {
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(0.0, 1.0);
+    const timeScale = new TimeScale(timeSpan, [0, 200]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should produce major ticks at 0.5s and minor ticks at 0.1s starting at 0',
+     () => {
+       const expected = [
+         {type: TickType.MAJOR, time: 0.0},
+         {type: TickType.MINOR, time: 0.1},
+         {type: TickType.MINOR, time: 0.2},
+         {type: TickType.MINOR, time: 0.3},
+         {type: TickType.MINOR, time: 0.4},
+         {type: TickType.MAJOR, time: 0.5},
+         {type: TickType.MINOR, time: 0.6},
+         {type: TickType.MINOR, time: 0.7},
+         {type: TickType.MINOR, time: 0.8},
+         {type: TickType.MINOR, time: 0.9},
+       ];
+       const actual = Array.from(tickGen!);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 1 decimal place for labels', () => {
+    expect(tickGen!.digits).toEqual(1);
+  });
+});
+
+describe('TickGenerator with range 0.3-1.3 and room for 2 labels', () => {
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(0.3, 1.3);
+    const timeScale = new TimeScale(timeSpan, [0, 200]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should produce major ticks at 0.5s and minor ticks at 0.1s starting at 0',
+     () => {
+       const expected = [
+         {type: TickType.MINOR, time: 0.3},
+         {type: TickType.MINOR, time: 0.4},
+         {type: TickType.MAJOR, time: 0.5},
+         {type: TickType.MINOR, time: 0.6},
+         {type: TickType.MINOR, time: 0.7},
+         {type: TickType.MINOR, time: 0.8},
+         {type: TickType.MINOR, time: 0.9},
+         {type: TickType.MAJOR, time: 1.0},
+         {type: TickType.MINOR, time: 1.1},
+         {type: TickType.MINOR, time: 1.2},
+       ];
+       const actual = Array.from(tickGen!);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 1 decimal place for labels', () => {
+    expect(tickGen!.digits).toEqual(1);
+  });
+});
+
+describe('TickGenerator with range 0.0-0.2 and room for 1 label', () => {
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(0.0, 0.2);
+    const timeScale = new TimeScale(timeSpan, [0, 100]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should produce major ticks at 0.2s and minor ticks at 0.1s starting at 0',
+     () => {
+       const expected = [
+         {type: TickType.MAJOR, time: 0.0},
+         {type: TickType.MINOR, time: 0.05},
+         {type: TickType.MEDIUM, time: 0.1},
+         {type: TickType.MINOR, time: 0.15},
+       ];
+       const actual = Array.from(tickGen!);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 1 decimal place for labels', () => {
+    expect(tickGen!.digits).toEqual(1);
+  });
+});
+
+describe('TickGenerator with range 0.0-0.1 and room for 1 label', () => {
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(0.0, 0.1);
+    const timeScale = new TimeScale(timeSpan, [0, 100]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should produce major ticks at 0.1s & minor ticks at 0.02s starting at 0',
+     () => {
+       const expected = [
+         {type: TickType.MAJOR, time: 0.0},
+         {type: TickType.MINOR, time: 0.01},
+         {type: TickType.MINOR, time: 0.02},
+         {type: TickType.MINOR, time: 0.03},
+         {type: TickType.MINOR, time: 0.04},
+         {type: TickType.MEDIUM, time: 0.05},
+         {type: TickType.MINOR, time: 0.06},
+         {type: TickType.MINOR, time: 0.07},
+         {type: TickType.MINOR, time: 0.08},
+         {type: TickType.MINOR, time: 0.09},
+       ];
+       const actual = Array.from(tickGen!);
+       expect(tickGen!.digits).toEqual(1);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 1 decimal place for labels', () => {
+    expect(tickGen!.digits).toEqual(1);
+  });
+});
+
+describe('TickGenerator with a very small timespan', () => {
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(0.0, 1e-9);
+    const timeScale = new TimeScale(timeSpan, [0, 100]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should generate minor ticks at 2e-10s and one major tick at the start',
+     () => {
+       const expected = [
+         {type: TickType.MAJOR, time: 0.0},
+         {type: TickType.MINOR, time: 1e-10},
+         {type: TickType.MINOR, time: 2e-10},
+         {type: TickType.MINOR, time: 3e-10},
+         {type: TickType.MINOR, time: 4e-10},
+         {type: TickType.MEDIUM, time: 5e-10},
+         {type: TickType.MINOR, time: 6e-10},
+         {type: TickType.MINOR, time: 7e-10},
+         {type: TickType.MINOR, time: 8e-10},
+         {type: TickType.MINOR, time: 9e-10},
+       ];
+       const actual = Array.from(tickGen!);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 9 decimal places for labels', () => {
+    expect(tickGen!.digits).toEqual(9);
+  });
+});
+
+describe('TickGenerator with a very large timespan', () => {
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(0.0, 1e9);
+    const timeScale = new TimeScale(timeSpan, [0, 100]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should generate minor ticks at 2e8 and one major tick at the start',
+     () => {
+       const expected = [
+         {type: TickType.MAJOR, time: 0.0},
+         {type: TickType.MINOR, time: 1e8},
+         {type: TickType.MINOR, time: 2e8},
+         {type: TickType.MINOR, time: 3e8},
+         {type: TickType.MINOR, time: 4e8},
+         {type: TickType.MEDIUM, time: 5e8},
+         {type: TickType.MINOR, time: 6e8},
+         {type: TickType.MINOR, time: 7e8},
+         {type: TickType.MINOR, time: 8e8},
+         {type: TickType.MINOR, time: 9e8},
+       ];
+       const actual = Array.from(tickGen!);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 0 decimal places for labels', () => {
+    expect(tickGen!.digits).toEqual(0);
+  });
+});
+
+describe('TickGenerator where the timespan has a dynamic range of 1e12', () => {
+  // This is the equivalent of zooming in to the nanosecond level, 1000 seconds
+  // into a trace Note: this is about the limit of what this generator can
+  // handle.
+  let tickGen: TickGenerator|undefined = undefined;
+  beforeAll(() => {
+    const timeSpan = new TimeSpan(1000, 1000.000000001);
+    const timeScale = new TimeScale(timeSpan, [0, 100]);
+    tickGen = new TickGenerator(timeScale, {minLabelPx: 100});
+  });
+  it('should generate minor ticks at 1e-10s and one major tick at the start',
+     () => {
+       const expected = [
+         {type: TickType.MAJOR, time: 1000.0000000000},
+         {type: TickType.MINOR, time: 1000.0000000001},
+         {type: TickType.MINOR, time: 1000.0000000002},
+         {type: TickType.MINOR, time: 1000.0000000003},
+         {type: TickType.MINOR, time: 1000.0000000004},
+         {type: TickType.MEDIUM, time: 1000.0000000005},
+         {type: TickType.MINOR, time: 1000.0000000006},
+         {type: TickType.MINOR, time: 1000.0000000007},
+         {type: TickType.MINOR, time: 1000.0000000008},
+         {type: TickType.MINOR, time: 1000.0000000009},
+       ];
+       const actual = Array.from(tickGen!);
+       expectTicksEqual(actual, expected);
+     });
+  it('should tell us to use 9 decimal places for labels', () => {
+    expect(tickGen!.digits).toEqual(9);
+  });
+});
+
+describe(
+    'TickGenerator where the timespan has a ridiculously huge dynamic range',
+    () => {
+      // We don't expect this to work, just wanna make sure it doesn't crash or
+      // get stuck
+      it('should not crash or get stuck in an infinite loop', () => {
+        const timeSpan = new TimeSpan(1000, 1000.000000000001);
+        const timeScale = new TimeScale(timeSpan, [0, 100]);
+        new TickGenerator(timeScale);
+      });
+    });
+
+describe(
+    'TickGenerator where the timespan has a ridiculously huge dynamic range',
+    () => {
+      // We don't expect this to work, just wanna make sure it doesn't crash or
+      // get stuck
+      it('should not crash or get stuck in an infinite loop', () => {
+        const timeSpan = new TimeSpan(1000, 1000.000000000001);
+        const timeScale = new TimeScale(timeSpan, [0, 100]);
+        new TickGenerator(timeScale);
+      });
+    });
+
+test('TickGenerator constructed with a 0 width throws an error', () => {
+  expect(() => {
+    const timeScale = new TimeScale(new TimeSpan(0.0, 1.0), [0, 0]);
+    new TickGenerator(timeScale);
+  }).toThrow(Error);
+});
+
+test(
+    'TickGenerator constructed with desiredPxPerStep of 0 throws an error',
+    () => {
+      expect(() => {
+        new TickGenerator(timeScale, {minLabelPx: 0});
+      }).toThrow(Error);
+    });
+
+test('TickGenerator constructed with a 0 duration throws an error', () => {
+  expect(() => {
+    const timeScale = new TimeScale(new TimeSpan(0.0, 0.0), [0, 1]);
+    new TickGenerator(timeScale);
+  }).toThrow(Error);
+});
+
+function expectTicksEqual(actual: Tick[], expected: any[]) {
+  // TODO(stevegolton) We could write a custom matcher for this; this approach
+  // produces cryptic error messages.
+  expect(actual.length).toEqual(expected.length);
+  for (let i = 0; i < actual.length; ++i) {
+    const ex = expected[i];
+    const ac = actual[i];
+    expect(ac.type).toEqual(ex.type);
+    expect(ac.time).toBeCloseTo(ex.time, 9);
+  }
+}
diff --git a/ui/src/frontend/notes_panel.ts b/ui/src/frontend/notes_panel.ts
index 1a91678..295c893 100644
--- a/ui/src/frontend/notes_panel.ts
+++ b/ui/src/frontend/notes_panel.ts
@@ -27,7 +27,11 @@
 import {TRACK_SHELL_WIDTH} from './css_constants';
 import {PerfettoMouseEvent} from './events';
 import {globals} from './globals';
-import {gridlines} from './gridline_helper';
+import {
+  TickGenerator,
+  TickType,
+  timeScaleForVisibleWindow,
+} from './gridline_helper';
 import {Panel, PanelSize} from './panel';
 import {isTraceLoaded} from './sidebar';
 
@@ -79,29 +83,43 @@
           },
         },
         isTraceLoaded() ?
-            m('button',
-              {
-                onclick: (e: Event) => {
-                  e.preventDefault();
-                  globals.dispatch(
-                      Actions.toggleAllTrackGroups({collapsed: !allCollapsed}));
+            [
+              m('button',
+                {
+                  onclick: (e: Event) => {
+                    e.preventDefault();
+                    globals.dispatch(Actions.toggleAllTrackGroups(
+                        {collapsed: !allCollapsed}));
+                  },
                 },
-              },
-              m('i.material-icons',
-                {title: allCollapsed ? 'Expand all' : 'Collapse all'},
-                allCollapsed ? 'unfold_more' : 'unfold_less')) :
+                m('i.material-icons',
+                  {title: allCollapsed ? 'Expand all' : 'Collapse all'},
+                  allCollapsed ? 'unfold_more' : 'unfold_less')),
+              m('button',
+                {
+                  onclick: (e: Event) => {
+                    e.preventDefault();
+                    globals.dispatch(Actions.clearAllPinnedTracks({}));
+                  },
+                },
+                m('i.material-icons',
+                  {title: 'Clear all pinned tracks'},
+                  'clear_all')),
+            ] :
             '');
   }
 
   renderCanvas(ctx: CanvasRenderingContext2D, size: PanelSize) {
     const timeScale = globals.frontendLocalState.timeScale;
-    const range = globals.frontendLocalState.visibleWindowTime;
     let aNoteIsHovered = false;
 
     ctx.fillStyle = '#999';
     ctx.fillRect(TRACK_SHELL_WIDTH - 2, 0, 2, size.height);
-    for (const xAndTime of gridlines(size.width, range, timeScale)) {
-      ctx.fillRect(xAndTime[0], 0, 1, size.height);
+    const relScale = timeScaleForVisibleWindow(TRACK_SHELL_WIDTH, size.width);
+    if (relScale.timeSpan.duration > 0 && relScale.widthPx > 0) {
+      for (const {type, position} of new TickGenerator(relScale)) {
+        if (type === TickType.MAJOR) ctx.fillRect(position, 0, 1, size.height);
+      }
     }
 
     ctx.textBaseline = 'bottom';
diff --git a/ui/src/frontend/overview_timeline_panel.ts b/ui/src/frontend/overview_timeline_panel.ts
index 12b5582..adc06d9 100644
--- a/ui/src/frontend/overview_timeline_panel.ts
+++ b/ui/src/frontend/overview_timeline_panel.ts
@@ -16,7 +16,7 @@
 
 import {assertExists} from '../base/logging';
 import {hueForCpu} from '../common/colorizer';
-import {TimeSpan, timeToString} from '../common/time';
+import {TimeSpan} from '../common/time';
 
 import {
   OVERVIEW_TIMELINE_NON_VISIBLE_COLOR,
@@ -29,6 +29,7 @@
 import {OuterDragStrategy} from './drag/outer_drag_strategy';
 import {DragGestureHandler} from './drag_gesture_handler';
 import {globals} from './globals';
+import {TickGenerator, TickType} from './gridline_helper';
 import {Panel, PanelSize} from './panel';
 import {TimeScale} from './time_scale';
 
@@ -80,21 +81,28 @@
     if (this.timeScale === undefined) return;
     const headerHeight = 25;
     const tracksHeight = size.height - headerHeight;
+    const timeSpan = new TimeSpan(0, this.totTime.duration);
 
-    // Draw time labels on the top header.
-    ctx.font = '10px Roboto Condensed';
-    ctx.fillStyle = '#999';
-    for (let i = 0; i < 100; i++) {
-      const xPos =
-          (i * (this.width - TRACK_SHELL_WIDTH) / 100) + TRACK_SHELL_WIDTH;
-      const t = this.timeScale.pxToTime(xPos);
-      if (xPos <= 0) continue;
-      if (xPos > this.width) break;
-      if (i % 10 === 0) {
-        ctx.fillRect(xPos - 1, 0, 1, headerHeight - 5);
-        ctx.fillText(timeToString(t - this.totTime.start), xPos + 5, 18);
-      } else {
-        ctx.fillRect(xPos - 1, 0, 1, 5);
+    const timeScale = new TimeScale(timeSpan, [TRACK_SHELL_WIDTH, this.width]);
+
+    if (timeScale.timeSpan.duration > 0 && timeScale.widthPx > 0) {
+      const tickGen = new TickGenerator(timeScale);
+
+      // Draw time labels on the top header.
+      ctx.font = '10px Roboto Condensed';
+      ctx.fillStyle = '#999';
+      for (const {type, time, position} of tickGen) {
+        const xPos = Math.round(position);
+        if (xPos <= 0) continue;
+        if (xPos > this.width) break;
+        if (type === TickType.MAJOR) {
+          ctx.fillRect(xPos - 1, 0, 1, headerHeight - 5);
+          ctx.fillText(time.toFixed(tickGen.digits) + ' s', xPos + 5, 18);
+        } else if (type == TickType.MEDIUM) {
+          ctx.fillRect(xPos - 1, 0, 1, 8);
+        } else if (type == TickType.MINOR) {
+          ctx.fillRect(xPos - 1, 0, 1, 5);
+        }
       }
     }
 
diff --git a/ui/src/frontend/pivot_table_redux.ts b/ui/src/frontend/pivot_table_redux.ts
index e1c880c..f17bb24 100644
--- a/ui/src/frontend/pivot_table_redux.ts
+++ b/ui/src/frontend/pivot_table_redux.ts
@@ -52,7 +52,7 @@
   TableColumn,
 } from './pivot_table_redux_types';
 import {PopupMenuButton, PopupMenuItem} from './popup_menu';
-import {ReorderableCellGroup} from './reorderable_cells';
+import {ReorderableCell, ReorderableCellGroup} from './reorderable_cells';
 
 
 interface PathItem {
@@ -85,6 +85,8 @@
     return `${column} IS NULL`;
   } else if (typeof filter.value === 'number') {
     return `${column} = ${filter.value}`;
+  } else if (filter.value instanceof Uint8Array) {
+    throw new Error(`BLOB as DrillFilter not implemented`);
   }
   return `${column} = ${sqliteString(filter.value)}`;
 }
@@ -98,6 +100,13 @@
   }
 }
 
+export function markFirst(index: number) {
+  if (index === 0) {
+    return '.first';
+  }
+  return '';
+}
+
 export class PivotTableRedux extends Panel<PivotTableReduxAttrs> {
   get pivotState() {
     return globals.state.nonSerializableState.pivotTableRedux;
@@ -165,7 +174,7 @@
     for (let i = 0; i < tree.aggregates.length; i++) {
       const renderedValue = this.renderCell(
           result.metadata.aggregationColumns[i].column, tree.aggregates[i]);
-      renderedCells.push(m('td', renderedValue));
+      renderedCells.push(m('td' + markFirst(i), renderedValue));
     }
 
     const drillFilters: DrillFilter[] = [];
@@ -234,7 +243,7 @@
         const value = row[aggregationIndex(treeDepth, j)];
         const renderedValue = this.renderCell(
             result.metadata.aggregationColumns[j].column, value);
-        renderedCells.push(m('td', renderedValue));
+        renderedCells.push(m('td.aggregation' + markFirst(j), renderedValue));
       }
 
       renderedCells.push(this.renderDrillDownCell(area, drillFilters));
@@ -249,7 +258,7 @@
            m('strong', 'Total values:'))];
     for (let i = 0; i < queryResult.tree.aggregates.length; i++) {
       overallValuesRow.push(
-          m('td',
+          m('td' + markFirst(i),
             this.renderCell(
                 queryResult.metadata.aggregationColumns[i].column,
                 queryResult.tree.aggregates[i])));
@@ -317,7 +326,7 @@
 
   renderAggregationHeaderCell(
       aggregation: Aggregation, index: number,
-      removeItem: boolean): m.Children {
+      removeItem: boolean): ReorderableCell {
     const popupItems: PopupMenuItem[] = [];
     const state = globals.state.nonSerializableState.pivotTableRedux;
     let icon = 'more_horiz';
@@ -382,13 +391,16 @@
       popupItems.push(sliceAggregationsItem);
     }
 
-    return [
-      this.readableAggregationName(aggregation),
-      m(PopupMenuButton, {
-        icon,
-        items: popupItems,
-      }),
-    ];
+    return {
+      extraClass: '.aggregation' + markFirst(index),
+      content: [
+        this.readableAggregationName(aggregation),
+        m(PopupMenuButton, {
+          icon,
+          items: popupItems,
+        }),
+      ],
+    };
   }
 
   showModal = false;
@@ -422,7 +434,7 @@
 
   renderPivotColumnHeader(
       queryResult: PivotTableReduxResult, pivot: TableColumn,
-      selectedPivots: Set<string>): m.Children {
+      selectedPivots: Set<string>): ReorderableCell {
     const items: PopupMenuItem[] = [{
       itemType: 'regular',
       text: 'Add argument pivot',
@@ -476,10 +488,12 @@
       });
     }
 
-    return [
-      readableColumnName(pivot),
-      m(PopupMenuButton, {icon: 'more_horiz', items}),
-    ];
+    return {
+      content: [
+        readableColumnName(pivot),
+        m(PopupMenuButton, {icon: 'more_horiz', items}),
+      ],
+    };
   }
 
   renderResultsTable(attrs: PivotTableReduxAttrs) {
@@ -517,13 +531,13 @@
                 aggregation, index, removeItem));
 
     return m(
-        'table.query-table.pivot-table',
+        'table.pivot-table',
         m('thead',
           // First row of the table, containing names of pivot and aggregation
           // columns, as well as popup menus to modify the columns. Last cell
           // is empty because of an extra column with "drill down" button for
           // each pivot table row.
-          m('tr',
+          m('tr.header',
             m(ReorderableCellGroup, {
               cells: pivotTableHeaders,
               onReorder: (
diff --git a/ui/src/frontend/query_table.ts b/ui/src/frontend/query_table.ts
index ff240d9..2469b24 100644
--- a/ui/src/frontend/query_table.ts
+++ b/ui/src/frontend/query_table.ts
@@ -79,7 +79,12 @@
     const cells = [];
     const {row, columns} = vnode.attrs;
     for (const col of columns) {
-      cells.push(m('td', row[col]));
+      const value = row[col];
+      if (value instanceof Uint8Array) {
+        cells.push(m('td', `<BLOB sz=${value.length}>`));
+      } else {
+        cells.push(m('td', value));
+      }
     }
     const containsSliceLocation =
         QueryTableRow.columnsContainsSliceLocation(columns);
diff --git a/ui/src/frontend/reorderable_cells.ts b/ui/src/frontend/reorderable_cells.ts
index dd5992b..e3977a2 100644
--- a/ui/src/frontend/reorderable_cells.ts
+++ b/ui/src/frontend/reorderable_cells.ts
@@ -20,8 +20,13 @@
 
 import {globals} from './globals';
 
+export interface ReorderableCell {
+  content: m.Children;
+  extraClass?: string;
+}
+
 export interface ReorderableCellGroupAttrs {
-  cells: m.Children[];
+  cells: ReorderableCell[];
   onReorder: (from: number, to: number, side: DropDirection) => void;
 }
 
@@ -62,7 +67,7 @@
   view(vnode: m.Vnode<ReorderableCellGroupAttrs>): m.Children {
     return vnode.attrs.cells.map(
         (cell, index) => m(
-            'td.reorderable-cell',
+            `td.reorderable-cell${cell.extraClass ?? ''}`,
             {
               draggable: 'draggable',
               class: this.getClassForIndex(index),
@@ -138,7 +143,7 @@
                 globals.rafScheduler.scheduleFullRedraw();
               },
             },
-            cell));
+            cell.content));
   }
 
   oncreate(vnode: m.VnodeDOM<ReorderableCellGroupAttrs, this>) {
diff --git a/ui/src/frontend/tickmark_panel.ts b/ui/src/frontend/tickmark_panel.ts
index 6cc8037..aea1085 100644
--- a/ui/src/frontend/tickmark_panel.ts
+++ b/ui/src/frontend/tickmark_panel.ts
@@ -13,11 +13,16 @@
 // limitations under the License.
 
 import * as m from 'mithril';
+
 import {fromNs} from '../common/time';
 
 import {TRACK_SHELL_WIDTH} from './css_constants';
 import {globals} from './globals';
-import {gridlines} from './gridline_helper';
+import {
+  TickGenerator,
+  TickType,
+  timeScaleForVisibleWindow,
+} from './gridline_helper';
 import {Panel, PanelSize} from './panel';
 
 // This is used to display the summary of search results.
@@ -31,9 +36,11 @@
 
     ctx.fillStyle = '#999';
     ctx.fillRect(TRACK_SHELL_WIDTH - 2, 0, 2, size.height);
-    for (const xAndTime of gridlines(
-             size.width, visibleWindowTime, timeScale)) {
-      ctx.fillRect(xAndTime[0], 0, 1, size.height);
+    const relScale = timeScaleForVisibleWindow(TRACK_SHELL_WIDTH, size.width);
+    if (relScale.timeSpan.duration > 0 && relScale.widthPx > 0) {
+      for (const {type, position} of new TickGenerator(relScale)) {
+        if (type === TickType.MAJOR) ctx.fillRect(position, 0, 1, size.height);
+      }
     }
 
     const data = globals.searchSummary;
diff --git a/ui/src/frontend/time_axis_panel.ts b/ui/src/frontend/time_axis_panel.ts
index 2f39881..aeb396b 100644
--- a/ui/src/frontend/time_axis_panel.ts
+++ b/ui/src/frontend/time_axis_panel.ts
@@ -18,7 +18,11 @@
 
 import {TRACK_SHELL_WIDTH} from './css_constants';
 import {globals} from './globals';
-import {gridlines} from './gridline_helper';
+import {
+  TickGenerator,
+  TickType,
+  timeScaleForVisibleWindow,
+} from './gridline_helper';
 import {Panel, PanelSize} from './panel';
 
 export class TimeAxisPanel extends Panel {
@@ -27,27 +31,23 @@
   }
 
   renderCanvas(ctx: CanvasRenderingContext2D, size: PanelSize) {
-    const timeScale = globals.frontendLocalState.timeScale;
-    const range = globals.frontendLocalState.visibleWindowTime;
     ctx.fillStyle = '#999';
-
-    // Write trace offset time + line.
-    ctx.font = '12px Roboto Condensed';
-
-    ctx.textAlign = 'right';
-    const offsetTime =
-        timeToString(range.start - globals.state.traceTime.startSec);
-    ctx.fillText(offsetTime, TRACK_SHELL_WIDTH - 6, 11);
-
+    ctx.font = '10px Roboto Condensed';
     ctx.textAlign = 'left';
+
     const startTime = timeToString(globals.state.traceTime.startSec);
     ctx.fillText(startTime + ' +', 6, 11);
 
     // Draw time axis.
-    ctx.font = '10px Roboto Condensed';
-    for (const [x, time] of gridlines(size.width, range, timeScale)) {
-      ctx.fillRect(x, 0, 1, size.height);
-      ctx.fillText('+' + timeToString(time - range.start), x + 5, 10);
+    const timeScale = timeScaleForVisibleWindow(TRACK_SHELL_WIDTH, size.width);
+    if (timeScale.timeSpan.duration > 0 && timeScale.widthPx > 0) {
+      const tickGen = new TickGenerator(timeScale);
+      for (const {type, time, position} of tickGen) {
+        if (type === TickType.MAJOR) {
+          ctx.fillRect(position, 0, 1, size.height);
+          ctx.fillText(time.toFixed(tickGen.digits) + ' s', position + 5, 10);
+        }
+      }
     }
 
     ctx.fillRect(TRACK_SHELL_WIDTH - 2, 0, 2, size.height);
diff --git a/ui/src/frontend/time_scale.ts b/ui/src/frontend/time_scale.ts
index cdf3ca2..6f0307a 100644
--- a/ui/src/frontend/time_scale.ts
+++ b/ui/src/frontend/time_scale.ts
@@ -79,6 +79,14 @@
   get endPx(): number {
     return this._endPx;
   }
+
+  get widthPx(): number {
+    return this._endPx - this._startPx;
+  }
+
+  get timeSpan(): TimeSpan {
+    return this.timeBounds;
+  }
 }
 
 export function computeZoom(
diff --git a/ui/src/frontend/time_selection_panel.ts b/ui/src/frontend/time_selection_panel.ts
index f1391da..5fc8a9f 100644
--- a/ui/src/frontend/time_selection_panel.ts
+++ b/ui/src/frontend/time_selection_panel.ts
@@ -19,7 +19,11 @@
 
 import {TRACK_SHELL_WIDTH} from './css_constants';
 import {globals} from './globals';
-import {gridlines} from './gridline_helper';
+import {
+  TickGenerator,
+  TickType,
+  timeScaleForVisibleWindow,
+} from './gridline_helper';
 import {Panel, PanelSize} from './panel';
 
 export interface BBox {
@@ -120,13 +124,15 @@
   }
 
   renderCanvas(ctx: CanvasRenderingContext2D, size: PanelSize) {
-    const range = globals.frontendLocalState.visibleWindowTime;
-    const timeScale = globals.frontendLocalState.timeScale;
-
     ctx.fillStyle = '#999';
     ctx.fillRect(TRACK_SHELL_WIDTH - 2, 0, 2, size.height);
-    for (const xAndTime of gridlines(size.width, range, timeScale)) {
-      ctx.fillRect(xAndTime[0], 0, 1, size.height);
+    const scale = timeScaleForVisibleWindow(TRACK_SHELL_WIDTH, size.width);
+    if (scale.timeSpan.duration > 0 && scale.widthPx > 0) {
+      for (const {position, type} of new TickGenerator(scale)) {
+        if (type === TickType.MAJOR) {
+          ctx.fillRect(position, 0, 1, size.height);
+        }
+      }
     }
 
     const localArea = globals.frontendLocalState.selectedArea;
diff --git a/ui/src/frontend/track_group_panel.ts b/ui/src/frontend/track_group_panel.ts
index 34a7ec4..0c1df65 100644
--- a/ui/src/frontend/track_group_panel.ts
+++ b/ui/src/frontend/track_group_panel.ts
@@ -215,8 +215,6 @@
 
     drawGridLines(
         ctx,
-        globals.frontendLocalState.timeScale,
-        globals.frontendLocalState.visibleWindowTime,
         size.width,
         size.height);
 
diff --git a/ui/src/frontend/track_panel.ts b/ui/src/frontend/track_panel.ts
index 588900f..5ee1a55 100644
--- a/ui/src/frontend/track_panel.ts
+++ b/ui/src/frontend/track_panel.ts
@@ -364,8 +364,6 @@
 
     drawGridLines(
         ctx,
-        globals.frontendLocalState.timeScale,
-        globals.frontendLocalState.visibleWindowTime,
         size.width,
         size.height);
 
diff --git a/ui/tsconfig.json b/ui/tsconfig.json
index 5fd4e3d..35ae460 100644
--- a/ui/tsconfig.json
+++ b/ui/tsconfig.json
@@ -1,6 +1,6 @@
 {
   "extends": "./tsconfig.base.json",
-  "include": [ "src/" ],
+  "include": [ "src/**/*" ],
   "exclude": [
     "./node_modules/",
     "./src/service_worker/",