Skip to main content

perfetto_protos/
perfetto.protos.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct ObservableEvents {
4    #[prost(message, repeated, tag = "1")]
5    pub instance_state_changes: ::prost::alloc::vec::Vec<
6        observable_events::DataSourceInstanceStateChange,
7    >,
8    #[prost(bool, optional, tag = "2")]
9    pub all_data_sources_started: ::core::option::Option<bool>,
10    #[prost(message, optional, tag = "3")]
11    pub clone_trigger_hit: ::core::option::Option<observable_events::CloneTriggerHit>,
12}
13/// Nested message and enum types in `ObservableEvents`.
14pub mod observable_events {
15    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16    pub struct DataSourceInstanceStateChange {
17        #[prost(string, optional, tag = "1")]
18        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
19        #[prost(string, optional, tag = "2")]
20        pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21        #[prost(enumeration = "DataSourceInstanceState", optional, tag = "3")]
22        pub state: ::core::option::Option<i32>,
23    }
24    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25    pub struct CloneTriggerHit {
26        /// The TracingSessionID of the original tracing session which had a
27        /// CLONE_SNAPSHOT trigger defined. This is necessary just because the
28        /// consumer has no idea of what is the TSID of its own tracing session and
29        /// there is no other good way to plumb it.
30        #[prost(int64, optional, tag = "1")]
31        pub tracing_session_id: ::core::option::Option<i64>,
32        /// The name of the CLONE_SNAPSHOT trigger which was hit.
33        #[prost(string, optional, tag = "2")]
34        pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
35        /// The name of the producer that sent the CLONE_SNAPSHOT trigger.
36        #[prost(string, optional, tag = "3")]
37        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
38        /// The uid of the producer that sent the CLONE_SNAPSHOT trigger.
39        #[prost(uint32, optional, tag = "4")]
40        pub producer_uid: ::core::option::Option<u32>,
41        /// The timestamp of the CLONE_SNAPSHOT trigger which was hit.
42        #[prost(uint64, optional, tag = "5")]
43        pub boot_time_ns: ::core::option::Option<u64>,
44        /// The configured delay of the CLONE_SNAPSHOT trigger which was hit. For
45        /// informational purposes only.
46        #[prost(uint64, optional, tag = "6")]
47        pub trigger_delay_ms: ::core::option::Option<u64>,
48    }
49    #[derive(
50        Clone,
51        Copy,
52        Debug,
53        PartialEq,
54        Eq,
55        Hash,
56        PartialOrd,
57        Ord,
58        ::prost::Enumeration
59    )]
60    #[repr(i32)]
61    pub enum Type {
62        Unspecified = 0,
63        /// State changes of data source instances associated with the consumer's
64        /// session. Note that not all data sources may support these notifications.
65        /// See |will_notify_on_start/stop| in DataSourceDescriptor.
66        DataSourcesInstances = 1,
67        /// State change triggered when all data sources are in the STARTED state.
68        /// For data sources that registered with |will_notify_on_start| this happens
69        /// only after the data source has acked the start. This allows the consumer
70        /// to synchronize with the data sources and to perform actions (e.g. start a
71        /// test binary) only after trace recording is actually started.
72        /// Introduced in Android 11 (R).
73        AllDataSourcesStarted = 2,
74        /// When a tracing session has one or more triggers of type CLONE_SNAPSHOT
75        /// and a matching trigger is hit, the service will send this notification to
76        /// the consumer after |stop_delay_ms|.
77        CloneTriggerHit = 4,
78    }
79    impl Type {
80        /// String value of the enum field names used in the ProtoBuf definition.
81        ///
82        /// The values are not transformed in any way and thus are considered stable
83        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
84        pub fn as_str_name(&self) -> &'static str {
85            match self {
86                Self::Unspecified => "TYPE_UNSPECIFIED",
87                Self::DataSourcesInstances => "TYPE_DATA_SOURCES_INSTANCES",
88                Self::AllDataSourcesStarted => "TYPE_ALL_DATA_SOURCES_STARTED",
89                Self::CloneTriggerHit => "TYPE_CLONE_TRIGGER_HIT",
90            }
91        }
92        /// Creates an enum from field names used in the ProtoBuf definition.
93        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
94            match value {
95                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
96                "TYPE_DATA_SOURCES_INSTANCES" => Some(Self::DataSourcesInstances),
97                "TYPE_ALL_DATA_SOURCES_STARTED" => Some(Self::AllDataSourcesStarted),
98                "TYPE_CLONE_TRIGGER_HIT" => Some(Self::CloneTriggerHit),
99                _ => None,
100            }
101        }
102    }
103    #[derive(
104        Clone,
105        Copy,
106        Debug,
107        PartialEq,
108        Eq,
109        Hash,
110        PartialOrd,
111        Ord,
112        ::prost::Enumeration
113    )]
114    #[repr(i32)]
115    pub enum DataSourceInstanceState {
116        /// A data source is created in stopped state.
117        Stopped = 1,
118        Started = 2,
119    }
120    impl DataSourceInstanceState {
121        /// String value of the enum field names used in the ProtoBuf definition.
122        ///
123        /// The values are not transformed in any way and thus are considered stable
124        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
125        pub fn as_str_name(&self) -> &'static str {
126            match self {
127                Self::Stopped => "DATA_SOURCE_INSTANCE_STATE_STOPPED",
128                Self::Started => "DATA_SOURCE_INSTANCE_STATE_STARTED",
129            }
130        }
131        /// Creates an enum from field names used in the ProtoBuf definition.
132        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
133            match value {
134                "DATA_SOURCE_INSTANCE_STATE_STOPPED" => Some(Self::Stopped),
135                "DATA_SOURCE_INSTANCE_STATE_STARTED" => Some(Self::Started),
136                _ => None,
137            }
138        }
139    }
140}
141#[derive(Clone, PartialEq, ::prost::Message)]
142pub struct FtraceDescriptor {
143    /// Report the available atrace categories.
144    ///
145    /// Used by Traceur via `perfetto --query`.
146    #[prost(message, repeated, tag = "1")]
147    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
148}
149/// Nested message and enum types in `FtraceDescriptor`.
150pub mod ftrace_descriptor {
151    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
152    pub struct AtraceCategory {
153        #[prost(string, optional, tag = "1")]
154        pub name: ::core::option::Option<::prost::alloc::string::String>,
155        #[prost(string, optional, tag = "2")]
156        pub description: ::core::option::Option<::prost::alloc::string::String>,
157    }
158}
159/// Description of GPU counters.
160/// This message is sent by a GPU counter producer to specify the counters
161/// available in the hardware.
162#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct GpuCounterDescriptor {
164    #[prost(message, repeated, tag = "1")]
165    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
166    #[prost(message, repeated, tag = "2")]
167    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
168    #[prost(message, repeated, tag = "6")]
169    pub counter_groups: ::prost::alloc::vec::Vec<
170        gpu_counter_descriptor::GpuCounterGroupSpec,
171    >,
172    /// optional.  Minimum sampling period supported by the producer in
173    /// nanoseconds.
174    #[prost(uint64, optional, tag = "3")]
175    pub min_sampling_period_ns: ::core::option::Option<u64>,
176    /// optional.  Maximum sampling period supported by the producer in
177    /// nanoseconds.
178    #[prost(uint64, optional, tag = "4")]
179    pub max_sampling_period_ns: ::core::option::Option<u64>,
180    /// optional.  The producer supports counter sampling by instrumenting the
181    /// command buffer.
182    #[prost(bool, optional, tag = "5")]
183    pub supports_instrumented_sampling: ::core::option::Option<bool>,
184    /// optional.  The producer supports selecting counters by name via
185    /// GpuCounterConfig.counter_names. Not all producers support this; Android
186    /// GPU producers typically do not.
187    #[prost(bool, optional, tag = "7")]
188    pub supports_counter_names: ::core::option::Option<bool>,
189    /// optional.  The producer supports glob patterns in
190    /// GpuCounterConfig.counter_names for matching multiple counters by name.
191    #[prost(bool, optional, tag = "8")]
192    pub supports_counter_name_globs: ::core::option::Option<bool>,
193}
194/// Nested message and enum types in `GpuCounterDescriptor`.
195pub mod gpu_counter_descriptor {
196    #[derive(Clone, PartialEq, ::prost::Message)]
197    pub struct GpuCounterSpec {
198        #[prost(uint32, optional, tag = "1")]
199        pub counter_id: ::core::option::Option<u32>,
200        #[prost(string, optional, tag = "2")]
201        pub name: ::core::option::Option<::prost::alloc::string::String>,
202        #[prost(string, optional, tag = "3")]
203        pub description: ::core::option::Option<::prost::alloc::string::String>,
204        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
205        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
206        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
207        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
208        #[prost(bool, optional, tag = "9")]
209        pub select_by_default: ::core::option::Option<bool>,
210        #[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
211        pub groups: ::prost::alloc::vec::Vec<i32>,
212        #[prost(enumeration = "gpu_counter_spec::ValueDirection", optional, tag = "11")]
213        pub value_direction: ::core::option::Option<i32>,
214        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
215        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
216    }
217    /// Nested message and enum types in `GpuCounterSpec`.
218    pub mod gpu_counter_spec {
219        /// Direction of the time interval that each emitted sample applies to.
220        /// A GPU counter is sampled at discrete timestamps, but its value really
221        /// represents a measurement over some interval around that timestamp
222        /// (e.g. average GPU utilization over the sampling window). This field
223        /// tells trace processor on which side of the timestamp that interval
224        /// lies, which controls where the value is drawn in the UI.
225        ///
226        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
227        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
228        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
229        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
230        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
231        #[derive(
232            Clone,
233            Copy,
234            Debug,
235            PartialEq,
236            Eq,
237            Hash,
238            PartialOrd,
239            Ord,
240            ::prost::Enumeration
241        )]
242        #[repr(i32)]
243        pub enum ValueDirection {
244            /// Treated as BACKWARDS_LOOKING (the historical default).
245            Unspecified = 0,
246            /// The value applies to the interval ending at this event's timestamp.
247            /// This is the convention used by AGI and most existing GPU producers,
248            /// where a sample reports what happened during the window leading up
249            /// to the timestamp.
250            BackwardsLooking = 1,
251            /// The value applies to the interval starting at this event's
252            /// timestamp, matching standard Perfetto counters. Producers that emit
253            /// explicit zero samples to denote "no activity from here on" should
254            /// use this so the zero is not back-propagated over earlier non-zero
255            /// samples (<https://github.com/google/perfetto/issues/5683>).
256            ForwardsLooking = 2,
257        }
258        impl ValueDirection {
259            /// String value of the enum field names used in the ProtoBuf definition.
260            ///
261            /// The values are not transformed in any way and thus are considered stable
262            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
263            pub fn as_str_name(&self) -> &'static str {
264                match self {
265                    Self::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
266                    Self::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
267                    Self::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
268                }
269            }
270            /// Creates an enum from field names used in the ProtoBuf definition.
271            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
272                match value {
273                    "VALUE_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
274                    "VALUE_DIRECTION_BACKWARDS_LOOKING" => Some(Self::BackwardsLooking),
275                    "VALUE_DIRECTION_FORWARDS_LOOKING" => Some(Self::ForwardsLooking),
276                    _ => None,
277                }
278            }
279        }
280        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
281        pub enum PeakValue {
282            #[prost(int64, tag = "5")]
283            IntPeakValue(i64),
284            #[prost(double, tag = "6")]
285            DoublePeakValue(f64),
286        }
287    }
288    /// Allow producer to group counters into block to represent counter islands.
289    /// A capacity may be specified to indicate the number of counters that can be
290    /// enable simultaneously in that block.
291    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
292    pub struct GpuCounterBlock {
293        /// required. Unique ID for the counter group.
294        #[prost(uint32, optional, tag = "1")]
295        pub block_id: ::core::option::Option<u32>,
296        /// optional. Number of counters supported by the block. No limit if unset.
297        #[prost(uint32, optional, tag = "2")]
298        pub block_capacity: ::core::option::Option<u32>,
299        /// optional. Name of block.
300        #[prost(string, optional, tag = "3")]
301        pub name: ::core::option::Option<::prost::alloc::string::String>,
302        /// optional. Description for the block.
303        #[prost(string, optional, tag = "4")]
304        pub description: ::core::option::Option<::prost::alloc::string::String>,
305        /// list of counters that are part of the block.
306        #[prost(uint32, repeated, packed = "false", tag = "5")]
307        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
308    }
309    /// Allow producer to define custom counter groups. Unlike the fixed
310    /// GpuCounterGroup enum (which provides broad categories), these groups
311    /// let the producer define hardware-specific groupings that the UI uses
312    /// to organize counter tracks. Can also be used to provide display names
313    /// and descriptions for the fixed GpuCounterGroup enum values by setting
314    /// group_id to the enum value.
315    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
316    pub struct GpuCounterGroupSpec {
317        /// required. Unique ID for this group within the descriptor.
318        #[prost(uint32, optional, tag = "1")]
319        pub group_id: ::core::option::Option<u32>,
320        /// optional. Display name for the group.
321        #[prost(string, optional, tag = "2")]
322        pub name: ::core::option::Option<::prost::alloc::string::String>,
323        /// optional. Description of the group.
324        #[prost(string, optional, tag = "3")]
325        pub description: ::core::option::Option<::prost::alloc::string::String>,
326        /// Counters that belong directly to this group (by counter_id).
327        #[prost(uint32, repeated, packed = "false", tag = "4")]
328        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
329    }
330    /// Logical groups for a counter.  This is used in the UI to present the
331    /// related counters together.
332    #[derive(
333        Clone,
334        Copy,
335        Debug,
336        PartialEq,
337        Eq,
338        Hash,
339        PartialOrd,
340        Ord,
341        ::prost::Enumeration
342    )]
343    #[repr(i32)]
344    pub enum GpuCounterGroup {
345        Unclassified = 0,
346        System = 1,
347        Vertices = 2,
348        Fragments = 3,
349        Primitives = 4,
350        /// Includes counters relating to caching and bandwidth.
351        Memory = 5,
352        Compute = 6,
353        RayTracing = 7,
354    }
355    impl GpuCounterGroup {
356        /// String value of the enum field names used in the ProtoBuf definition.
357        ///
358        /// The values are not transformed in any way and thus are considered stable
359        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
360        pub fn as_str_name(&self) -> &'static str {
361            match self {
362                Self::Unclassified => "UNCLASSIFIED",
363                Self::System => "SYSTEM",
364                Self::Vertices => "VERTICES",
365                Self::Fragments => "FRAGMENTS",
366                Self::Primitives => "PRIMITIVES",
367                Self::Memory => "MEMORY",
368                Self::Compute => "COMPUTE",
369                Self::RayTracing => "RAY_TRACING",
370            }
371        }
372        /// Creates an enum from field names used in the ProtoBuf definition.
373        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
374            match value {
375                "UNCLASSIFIED" => Some(Self::Unclassified),
376                "SYSTEM" => Some(Self::System),
377                "VERTICES" => Some(Self::Vertices),
378                "FRAGMENTS" => Some(Self::Fragments),
379                "PRIMITIVES" => Some(Self::Primitives),
380                "MEMORY" => Some(Self::Memory),
381                "COMPUTE" => Some(Self::Compute),
382                "RAY_TRACING" => Some(Self::RayTracing),
383                _ => None,
384            }
385        }
386    }
387    /// next id: 41
388    #[derive(
389        Clone,
390        Copy,
391        Debug,
392        PartialEq,
393        Eq,
394        Hash,
395        PartialOrd,
396        Ord,
397        ::prost::Enumeration
398    )]
399    #[repr(i32)]
400    pub enum MeasureUnit {
401        None = 0,
402        Bit = 1,
403        Kilobit = 2,
404        Megabit = 3,
405        Gigabit = 4,
406        Terabit = 5,
407        Petabit = 6,
408        Byte = 7,
409        Kilobyte = 8,
410        Megabyte = 9,
411        Gigabyte = 10,
412        Terabyte = 11,
413        Petabyte = 12,
414        Hertz = 13,
415        Kilohertz = 14,
416        Megahertz = 15,
417        Gigahertz = 16,
418        Terahertz = 17,
419        Petahertz = 18,
420        Nanosecond = 19,
421        Microsecond = 20,
422        Millisecond = 21,
423        Second = 22,
424        Minute = 23,
425        Hour = 24,
426        Vertex = 25,
427        Pixel = 26,
428        Triangle = 27,
429        Primitive = 38,
430        Fragment = 39,
431        Milliwatt = 28,
432        Watt = 29,
433        Kilowatt = 30,
434        Joule = 31,
435        Volt = 32,
436        Ampere = 33,
437        Celsius = 34,
438        Fahrenheit = 35,
439        Kelvin = 36,
440        /// Values should be out of 100.
441        Percent = 37,
442        Instruction = 40,
443    }
444    impl MeasureUnit {
445        /// String value of the enum field names used in the ProtoBuf definition.
446        ///
447        /// The values are not transformed in any way and thus are considered stable
448        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
449        pub fn as_str_name(&self) -> &'static str {
450            match self {
451                Self::None => "NONE",
452                Self::Bit => "BIT",
453                Self::Kilobit => "KILOBIT",
454                Self::Megabit => "MEGABIT",
455                Self::Gigabit => "GIGABIT",
456                Self::Terabit => "TERABIT",
457                Self::Petabit => "PETABIT",
458                Self::Byte => "BYTE",
459                Self::Kilobyte => "KILOBYTE",
460                Self::Megabyte => "MEGABYTE",
461                Self::Gigabyte => "GIGABYTE",
462                Self::Terabyte => "TERABYTE",
463                Self::Petabyte => "PETABYTE",
464                Self::Hertz => "HERTZ",
465                Self::Kilohertz => "KILOHERTZ",
466                Self::Megahertz => "MEGAHERTZ",
467                Self::Gigahertz => "GIGAHERTZ",
468                Self::Terahertz => "TERAHERTZ",
469                Self::Petahertz => "PETAHERTZ",
470                Self::Nanosecond => "NANOSECOND",
471                Self::Microsecond => "MICROSECOND",
472                Self::Millisecond => "MILLISECOND",
473                Self::Second => "SECOND",
474                Self::Minute => "MINUTE",
475                Self::Hour => "HOUR",
476                Self::Vertex => "VERTEX",
477                Self::Pixel => "PIXEL",
478                Self::Triangle => "TRIANGLE",
479                Self::Primitive => "PRIMITIVE",
480                Self::Fragment => "FRAGMENT",
481                Self::Milliwatt => "MILLIWATT",
482                Self::Watt => "WATT",
483                Self::Kilowatt => "KILOWATT",
484                Self::Joule => "JOULE",
485                Self::Volt => "VOLT",
486                Self::Ampere => "AMPERE",
487                Self::Celsius => "CELSIUS",
488                Self::Fahrenheit => "FAHRENHEIT",
489                Self::Kelvin => "KELVIN",
490                Self::Percent => "PERCENT",
491                Self::Instruction => "INSTRUCTION",
492            }
493        }
494        /// Creates an enum from field names used in the ProtoBuf definition.
495        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
496            match value {
497                "NONE" => Some(Self::None),
498                "BIT" => Some(Self::Bit),
499                "KILOBIT" => Some(Self::Kilobit),
500                "MEGABIT" => Some(Self::Megabit),
501                "GIGABIT" => Some(Self::Gigabit),
502                "TERABIT" => Some(Self::Terabit),
503                "PETABIT" => Some(Self::Petabit),
504                "BYTE" => Some(Self::Byte),
505                "KILOBYTE" => Some(Self::Kilobyte),
506                "MEGABYTE" => Some(Self::Megabyte),
507                "GIGABYTE" => Some(Self::Gigabyte),
508                "TERABYTE" => Some(Self::Terabyte),
509                "PETABYTE" => Some(Self::Petabyte),
510                "HERTZ" => Some(Self::Hertz),
511                "KILOHERTZ" => Some(Self::Kilohertz),
512                "MEGAHERTZ" => Some(Self::Megahertz),
513                "GIGAHERTZ" => Some(Self::Gigahertz),
514                "TERAHERTZ" => Some(Self::Terahertz),
515                "PETAHERTZ" => Some(Self::Petahertz),
516                "NANOSECOND" => Some(Self::Nanosecond),
517                "MICROSECOND" => Some(Self::Microsecond),
518                "MILLISECOND" => Some(Self::Millisecond),
519                "SECOND" => Some(Self::Second),
520                "MINUTE" => Some(Self::Minute),
521                "HOUR" => Some(Self::Hour),
522                "VERTEX" => Some(Self::Vertex),
523                "PIXEL" => Some(Self::Pixel),
524                "TRIANGLE" => Some(Self::Triangle),
525                "PRIMITIVE" => Some(Self::Primitive),
526                "FRAGMENT" => Some(Self::Fragment),
527                "MILLIWATT" => Some(Self::Milliwatt),
528                "WATT" => Some(Self::Watt),
529                "KILOWATT" => Some(Self::Kilowatt),
530                "JOULE" => Some(Self::Joule),
531                "VOLT" => Some(Self::Volt),
532                "AMPERE" => Some(Self::Ampere),
533                "CELSIUS" => Some(Self::Celsius),
534                "FAHRENHEIT" => Some(Self::Fahrenheit),
535                "KELVIN" => Some(Self::Kelvin),
536                "PERCENT" => Some(Self::Percent),
537                "INSTRUCTION" => Some(Self::Instruction),
538                _ => None,
539            }
540        }
541    }
542}
543#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
544pub struct TrackEventCategory {
545    #[prost(string, optional, tag = "1")]
546    pub name: ::core::option::Option<::prost::alloc::string::String>,
547    #[prost(string, optional, tag = "2")]
548    pub description: ::core::option::Option<::prost::alloc::string::String>,
549    #[prost(string, repeated, tag = "3")]
550    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
551}
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct TrackEventDescriptor {
554    #[prost(message, repeated, tag = "1")]
555    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
556}
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct VmProgram {
559    #[prost(uint32, optional, tag = "1")]
560    pub version: ::core::option::Option<u32>,
561    #[prost(message, repeated, tag = "2")]
562    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
563}
564#[derive(Clone, PartialEq, ::prost::Message)]
565pub struct VmInstruction {
566    #[prost(enumeration = "vm_instruction::AbortLevel", optional, tag = "6")]
567    pub abort_level: ::core::option::Option<i32>,
568    /// Sub-instructions executed if the current instruction succeeds
569    #[prost(message, repeated, tag = "7")]
570    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
571    #[prost(oneof = "vm_instruction::Operation", tags = "1, 2, 3, 4, 5")]
572    pub operation: ::core::option::Option<vm_instruction::Operation>,
573}
574/// Nested message and enum types in `VmInstruction`.
575pub mod vm_instruction {
576    #[derive(
577        Clone,
578        Copy,
579        Debug,
580        PartialEq,
581        Eq,
582        Hash,
583        PartialOrd,
584        Ord,
585        ::prost::Enumeration
586    )]
587    #[repr(i32)]
588    pub enum AbortLevel {
589        /// Skip current instruction but execute following ones
590        SkipCurrentInstruction = 1,
591        /// Skip current instruction as well as following ones (default)
592        SkipCurrentInstructionAndBreakOuter = 2,
593        /// Abort whole program
594        Abort = 3,
595    }
596    impl AbortLevel {
597        /// String value of the enum field names used in the ProtoBuf definition.
598        ///
599        /// The values are not transformed in any way and thus are considered stable
600        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
601        pub fn as_str_name(&self) -> &'static str {
602            match self {
603                Self::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
604                Self::SkipCurrentInstructionAndBreakOuter => {
605                    "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER"
606                }
607                Self::Abort => "ABORT",
608            }
609        }
610        /// Creates an enum from field names used in the ProtoBuf definition.
611        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
612            match value {
613                "SKIP_CURRENT_INSTRUCTION" => Some(Self::SkipCurrentInstruction),
614                "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER" => {
615                    Some(Self::SkipCurrentInstructionAndBreakOuter)
616                }
617                "ABORT" => Some(Self::Abort),
618                _ => None,
619            }
620        }
621    }
622    #[derive(Clone, PartialEq, ::prost::Oneof)]
623    pub enum Operation {
624        #[prost(message, tag = "1")]
625        Select(super::VmOpSelect),
626        #[prost(message, tag = "2")]
627        RegLoad(super::VmOpRegLoad),
628        #[prost(message, tag = "3")]
629        Merge(super::VmOpMerge),
630        #[prost(message, tag = "4")]
631        Set(super::VmOpSet),
632        #[prost(message, tag = "5")]
633        Del(super::VmOpDel),
634    }
635}
636#[derive(Clone, PartialEq, ::prost::Message)]
637pub struct VmOpSelect {
638    /// Enum SRC|DST|BOTH. Default=SRC.
639    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
640    pub cursor: ::core::option::Option<i32>,
641    #[prost(message, repeated, tag = "2")]
642    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
643    /// Creates the submessage if doesn't exist in the DST cursor
644    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
645    #[prost(bool, optional, tag = "3")]
646    pub create_if_not_exist: ::core::option::Option<bool>,
647}
648/// Nested message and enum types in `VmOpSelect`.
649pub mod vm_op_select {
650    /// A path component is either: (1) a field id to descend into (common case);
651    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
652    /// repeated fields, where we snoop a sub-field as a map key)
653    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
654    pub struct PathComponent {
655        /// Only valid when using field_id. This makes select have foreach
656        /// semantics. This means that the body of nested_instructions is
657        /// executed several times, once per each repeated submessage.
658        #[prost(bool, optional, tag = "5")]
659        pub is_repeated: ::core::option::Option<bool>,
660        /// Only valid when using map_key_field_id. This defines which
661        /// register (R1..R32) should be used to match the key of the dict
662        /// in a map lookup operation.
663        /// In other words:
664        /// foreach msg in repeated message {
665        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
666        ///       break;  // Lookup succeeded, PathComponent resolves here.
667        ///    }
668        /// }
669        #[prost(uint32, optional, tag = "6")]
670        pub register_to_match: ::core::option::Option<u32>,
671        /// Only valid when using field_id and is_repeated=true. When iterating
672        /// over repeated fields, stores the current iteration index into the
673        /// the register R1..R32 defined below. This can be used to do complex
674        /// operations like "find the entry in the array that has width==100,
675        /// remember its offset in the SRC array and overwrite the matching
676        /// i-th element in the DST array. We will probably never implement
677        /// this but it's here for completeness.
678        #[prost(uint32, optional, tag = "7")]
679        pub store_foreach_index_into_register: ::core::option::Option<u32>,
680        #[prost(oneof = "path_component::Field", tags = "1, 2, 3")]
681        pub field: ::core::option::Option<path_component::Field>,
682    }
683    /// Nested message and enum types in `PathComponent`.
684    pub mod path_component {
685        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
686        pub enum Field {
687            #[prost(uint32, tag = "1")]
688            FieldId(u32),
689            #[prost(uint32, tag = "2")]
690            ArrayIndex(u32),
691            /// The ID of the field in the repeated submessage that we
692            /// use as a key (e.g. LayerState.layer_id). When setting this
693            /// register_to_match must also be set, to tell what's the
694            /// expected value of the key we are looking up.
695            #[prost(uint32, tag = "3")]
696            MapKeyFieldId(u32),
697        }
698    }
699}
700#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
701pub struct VmOpRegLoad {
702    /// SRC(default) | DST.
703    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
704    pub cursor: ::core::option::Option<i32>,
705    /// 1=R1, 2=R2... 32=R32
706    #[prost(uint32, optional, tag = "2")]
707    pub dst_register: ::core::option::Option<u32>,
708}
709/// Merges SRC into DST. Both need to point to a message (not a field).
710#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
711pub struct VmOpMerge {
712    /// When true, the merge operation will skip any field that is already
713    /// resolved as a message node in the destination tree.
714    ///
715    /// This is used to support merging of nested messages. Because ProtoVM
716    /// does not know the schema, a standard MERGE cannot distinguish
717    /// between a string and a message on the wire and it would overwrite
718    /// the entire blob, destroying granular updates.
719    ///
720    /// By setting this to true, a program can be implemented to do a
721    /// bottom-up, multi-step merge by traversing into and merging
722    /// the deepest submessages first, then moving up to the parent
723    /// message and merging it with skip_submessages = true.
724    #[prost(bool, optional, tag = "1")]
725    pub skip_submessages: ::core::option::Option<bool>,
726    /// When true, the merge operation will remove the dst field if the src field
727    /// is empty.
728    ///
729    /// This can be used to replicate the removal of a subobject within the
730    /// producer's state. E.g.
731    /// This event on the producer side: mProducerState.mSubobject = nullptr
732    /// can be represented by this patch: { producer_state { subobject {} }}
733    #[prost(bool, optional, tag = "2")]
734    pub del_if_src_empty: ::core::option::Option<bool>,
735}
736/// Copies SRC into DST. If a message, replaces the DST node, discarding any
737/// pre-existing field.
738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
739pub struct VmOpSet {}
740/// Delete the field or message pointed by DST.
741#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
742pub struct VmOpDel {}
743#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
744#[repr(i32)]
745pub enum VmCursorEnum {
746    VmCursorUnspecified = 0,
747    VmCursorSrc = 1,
748    VmCursorDst = 2,
749    VmCursorBoth = 3,
750}
751impl VmCursorEnum {
752    /// String value of the enum field names used in the ProtoBuf definition.
753    ///
754    /// The values are not transformed in any way and thus are considered stable
755    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
756    pub fn as_str_name(&self) -> &'static str {
757        match self {
758            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
759            Self::VmCursorSrc => "VM_CURSOR_SRC",
760            Self::VmCursorDst => "VM_CURSOR_DST",
761            Self::VmCursorBoth => "VM_CURSOR_BOTH",
762        }
763    }
764    /// Creates an enum from field names used in the ProtoBuf definition.
765    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
766        match value {
767            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
768            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
769            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
770            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
771            _ => None,
772        }
773    }
774}
775/// This message is sent from Producer(s) to the tracing Service when registering
776/// to advertise their capabilities. It describes the structure of tracing
777/// protos that will be produced by the data source and the supported filters.
778#[derive(Clone, PartialEq, ::prost::Message)]
779pub struct DataSourceDescriptor {
780    /// e.g., "linux.ftrace", "chromium.tracing"
781    #[prost(string, optional, tag = "1")]
782    pub name: ::core::option::Option<::prost::alloc::string::String>,
783    /// When non-zero, this is a unique ID within the scope of the Producer for
784    /// this data source (it is NOT globally unique). This is useful to
785    /// differentiate between data sources with matching names when calling
786    /// UpdateDataSource(). This field has been introduced in November 2021
787    /// (v22, Android T) and is not supported on older versions.
788    #[prost(uint64, optional, tag = "7")]
789    pub id: ::core::option::Option<u64>,
790    /// When true the data source is expected to ack the stop request through the
791    /// NotifyDataSourceStopped() IPC. This field has been introduced after
792    /// Android P in Jul 2018 and is not supported on older versions.
793    #[prost(bool, optional, tag = "2")]
794    pub will_notify_on_stop: ::core::option::Option<bool>,
795    /// When true the data source is expected to ack the start request through the
796    /// NotifyDataSourceStarted() IPC. This field has been introduced after
797    /// Android P in March 2019 and is not supported on older versions.
798    #[prost(bool, optional, tag = "3")]
799    pub will_notify_on_start: ::core::option::Option<bool>,
800    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
801    /// set if the data source writes packets that refer to previous trace
802    /// contents, and knows how to stop referring to the already-emitted data.
803    #[prost(bool, optional, tag = "4")]
804    pub handles_incremental_state_clear: ::core::option::Option<bool>,
805    /// If true, indicates that the data source does nothing upon Flush. This
806    /// allows the service to reduce the flush-related IPC traffic and better deal
807    /// with frozen producers (see go/perfetto-frozen). This is usually the case
808    /// for data sources like 'track_event' that don't have access to the various
809    /// thread task runners to post a flush task and rely purely on server-side
810    /// scraping.
811    /// Introduced in v39 / Android V.
812    #[prost(bool, optional, tag = "9")]
813    pub no_flush: ::core::option::Option<bool>,
814    /// If present, the tracing service executes this program within a ProtoVM to
815    /// process overwritten packets (patches). The service computes a hash of the
816    /// program to detect and disambiguate between different versions; if multiple
817    /// versions (from different producers) are specified for the same data source,
818    /// the service instantiates a dedicated ProtoVM for each.
819    #[prost(message, optional, tag = "10")]
820    pub protovm_program: ::core::option::Option<VmProgram>,
821    /// Optional specification about available GPU counters.
822    #[prost(message, optional, tag = "5")]
823    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
824    #[prost(message, optional, tag = "6")]
825    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
826    #[prost(message, optional, tag = "8")]
827    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
828}
829/// Reports the state of the tracing service. Used to gather details about the
830/// data sources connected.
831/// See ConsumerPort::QueryServiceState().
832#[derive(Clone, PartialEq, ::prost::Message)]
833pub struct TracingServiceState {
834    /// Lists all the producers connected.
835    #[prost(message, repeated, tag = "1")]
836    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
837    /// Lists the data sources available.
838    #[prost(message, repeated, tag = "2")]
839    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
840    /// Lists the tracing sessions active AND owned by a consumer that has the same
841    /// UID of the caller (or all of them if the caller is root).
842    /// Introduced in v24 / Android T.
843    #[prost(message, repeated, tag = "6")]
844    pub tracing_sessions: ::prost::alloc::vec::Vec<
845        tracing_service_state::TracingSession,
846    >,
847    /// This is always set to true from v24 and beyond. This flag is only used to
848    /// tell the difference between: (1) talking to a recent service which happens
849    /// to have no tracing session active; (2) talking to an older version of the
850    /// service which will never report any tracing session.
851    #[prost(bool, optional, tag = "7")]
852    pub supports_tracing_sessions: ::core::option::Option<bool>,
853    /// Total number of tracing sessions.
854    #[prost(int32, optional, tag = "3")]
855    pub num_sessions: ::core::option::Option<i32>,
856    /// Number of tracing sessions in the started state. Always <= num_sessions.
857    #[prost(int32, optional, tag = "4")]
858    pub num_sessions_started: ::core::option::Option<i32>,
859    /// The version of traced (the same returned by `traced --version`).
860    /// This is a human readable string with and its format varies depending on
861    /// the build system and the repo (standalone vs AOSP).
862    /// This is intended for human debugging only.
863    #[prost(string, optional, tag = "5")]
864    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
865}
866/// Nested message and enum types in `TracingServiceState`.
867pub mod tracing_service_state {
868    /// Describes a producer process.
869    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
870    pub struct Producer {
871        /// Unique ID of the producer (monotonic counter).
872        #[prost(int32, optional, tag = "1")]
873        pub id: ::core::option::Option<i32>,
874        /// Typically matches the process name.
875        #[prost(string, optional, tag = "2")]
876        pub name: ::core::option::Option<::prost::alloc::string::String>,
877        /// Unix pid of the remote process. Supported only on Linux-based systems.
878        /// Introduced in v24 / Android T.
879        #[prost(int32, optional, tag = "5")]
880        pub pid: ::core::option::Option<i32>,
881        /// Unix uid of the remote process.
882        #[prost(int32, optional, tag = "3")]
883        pub uid: ::core::option::Option<i32>,
884        /// The version of the client library used by the producer.
885        /// This is a human readable string with and its format varies depending on
886        /// the build system and the repo (standalone vs AOSP).
887        /// This is intended for human debugging only.
888        #[prost(string, optional, tag = "4")]
889        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
890        /// Returns true if the process appears to be frozen (Android only).
891        /// Introduced in Perfetto V49 / Android 24Q4.
892        #[prost(bool, optional, tag = "6")]
893        pub frozen: ::core::option::Option<bool>,
894        /// Identifies the machine this producer is connected from in multi-machine
895        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
896        /// means the producer is connected from the local/host machine where the
897        /// tracing service is running.
898        /// Introduced in Perfetto V56 / Android 26Q3.
899        #[prost(uint32, optional, tag = "7")]
900        pub machine_id: ::core::option::Option<u32>,
901        /// Human-readable name of the machine, as advertised by the relay (usually
902        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
903        /// remote's `uname -s`). Only set when machine_id is non-zero.
904        /// Introduced in Perfetto V56 / Android 26Q3.
905        #[prost(string, optional, tag = "8")]
906        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
907    }
908    /// Describes a data source registered by a producer. Data sources are listed
909    /// regardless of the fact that they are being used or not.
910    #[derive(Clone, PartialEq, ::prost::Message)]
911    pub struct DataSource {
912        /// Descriptor passed by the data source when calling RegisterDataSource().
913        #[prost(message, optional, tag = "1")]
914        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
915        /// ID of the producer, as per Producer.id.
916        #[prost(int32, optional, tag = "2")]
917        pub producer_id: ::core::option::Option<i32>,
918    }
919    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
920    pub struct TracingSession {
921        /// The TracingSessionID.
922        #[prost(uint64, optional, tag = "1")]
923        pub id: ::core::option::Option<u64>,
924        /// The Unix uid of the consumer that started the session.
925        /// This is meaningful only if the caller is root. In all other cases only
926        /// tracing sessions that match the caller UID will be displayed.
927        #[prost(int32, optional, tag = "2")]
928        pub consumer_uid: ::core::option::Option<i32>,
929        /// Internal state of the tracing session.
930        /// These strings are FYI only and subjected to change.
931        #[prost(string, optional, tag = "3")]
932        pub state: ::core::option::Option<::prost::alloc::string::String>,
933        /// The unique_session_name as set in the trace config (might be empty).
934        #[prost(string, optional, tag = "4")]
935        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
936        /// The number and size of each buffer.
937        #[prost(uint32, repeated, packed = "false", tag = "5")]
938        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
939        /// Duration, as specified in the TraceConfig.duration_ms.
940        #[prost(uint32, optional, tag = "6")]
941        pub duration_ms: ::core::option::Option<u32>,
942        /// Number of data sources involved in the session.
943        #[prost(uint32, optional, tag = "7")]
944        pub num_data_sources: ::core::option::Option<u32>,
945        /// Time when the session was started, in the CLOCK_REALTIME domain.
946        /// Available only on Linux-based systems.
947        #[prost(int64, optional, tag = "8")]
948        pub start_realtime_ns: ::core::option::Option<i64>,
949        /// The bugreport_score, as set in TraceConfig.bugreport_score.
950        #[prost(int32, optional, tag = "9")]
951        pub bugreport_score: ::core::option::Option<i32>,
952        /// As per TraceConfig.bugreport_filename.
953        #[prost(string, optional, tag = "10")]
954        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
955        /// If true, the session is in the STARTED state. If false the session is in
956        /// any other state (see `state` field).
957        #[prost(bool, optional, tag = "11")]
958        pub is_started: ::core::option::Option<bool>,
959    }
960}
961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
962pub struct TracingServiceCapabilities {
963    /// Whether the service supports QueryCapabilities() at all or not.
964    /// This is only used at the C++ level to distinguish the case of talking to
965    /// an older version of the service that doesn't support QueryCapabilities().
966    /// In that case the IPC layer will just reject the unknown call, and the
967    /// consumer_ipc_client_impl.cc will return an empty message where this field
968    /// is false. In all other cases, this is always set to true.
969    #[prost(bool, optional, tag = "1")]
970    pub has_query_capabilities: ::core::option::Option<bool>,
971    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
972    #[prost(
973        enumeration = "observable_events::Type",
974        repeated,
975        packed = "false",
976        tag = "2"
977    )]
978    pub observable_events: ::prost::alloc::vec::Vec<i32>,
979    /// Whether the service supports TraceConfig.output_path (for asking traced to
980    /// create the output file instead of passing a file descriptor).
981    #[prost(bool, optional, tag = "3")]
982    pub has_trace_config_output_path: ::core::option::Option<bool>,
983    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
984    #[prost(bool, optional, tag = "4")]
985    pub has_clone_session: ::core::option::Option<bool>,
986}
987/// Statistics for the internals of the tracing service.
988///
989/// Next id: 19.
990#[derive(Clone, PartialEq, ::prost::Message)]
991pub struct TraceStats {
992    /// Stats for the TraceBuffer(s) of the current trace session.
993    #[prost(message, repeated, tag = "1")]
994    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
995    /// The thresholds of each the `writer_stats` histogram buckets. This is
996    /// emitted only once as all WriterStats share the same bucket layout.
997    /// This field has the same cardinality of the
998    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
999    /// (The -1 is because the last overflow bucket is not reported in the _def).
1000    /// An array of values \[10, 100, 1000\] in the _def array means that there are
1001    /// four buckets (3 + the implicit overflow bucket):
1002    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
1003    #[prost(int64, repeated, packed = "false", tag = "17")]
1004    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
1005    #[prost(message, repeated, tag = "18")]
1006    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
1007    /// Num. producers connected (whether they are involved in the current tracing
1008    /// session or not).
1009    #[prost(uint32, optional, tag = "2")]
1010    pub producers_connected: ::core::option::Option<u32>,
1011    /// Num. producers ever seen for all trace sessions since startup (it's a good
1012    /// proxy for inferring num. producers crashed / killed).
1013    #[prost(uint64, optional, tag = "3")]
1014    pub producers_seen: ::core::option::Option<u64>,
1015    /// Num. data sources registered for all trace sessions.
1016    #[prost(uint32, optional, tag = "4")]
1017    pub data_sources_registered: ::core::option::Option<u32>,
1018    /// Num. data sources ever seen for all trace sessions since startup.
1019    #[prost(uint64, optional, tag = "5")]
1020    pub data_sources_seen: ::core::option::Option<u64>,
1021    /// Num. concurrently active tracing sessions.
1022    #[prost(uint32, optional, tag = "6")]
1023    pub tracing_sessions: ::core::option::Option<u32>,
1024    /// Num. buffers for all tracing session (not just the current one). This will
1025    /// be >= buffer_stats.size(), because the latter is only about the current
1026    /// session.
1027    #[prost(uint32, optional, tag = "7")]
1028    pub total_buffers: ::core::option::Option<u32>,
1029    /// Num. chunks that were discarded by the service before attempting to commit
1030    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1031    #[prost(uint64, optional, tag = "8")]
1032    pub chunks_discarded: ::core::option::Option<u64>,
1033    /// Num. patches that were discarded by the service before attempting to apply
1034    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1035    #[prost(uint64, optional, tag = "9")]
1036    pub patches_discarded: ::core::option::Option<u64>,
1037    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
1038    /// is a bug in the producer.
1039    #[prost(uint64, optional, tag = "10")]
1040    pub invalid_packets: ::core::option::Option<u64>,
1041    #[prost(message, optional, tag = "11")]
1042    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
1043    /// Count of Flush() requests (either from the Consumer, or self-induced
1044    /// periodic flushes). The final Flush() is also included in the count.
1045    #[prost(uint64, optional, tag = "12")]
1046    pub flushes_requested: ::core::option::Option<u64>,
1047    /// The count of the Flush() requests that were completed successfully.
1048    /// In a well behaving trace this should always be == `flush_requests`.
1049    #[prost(uint64, optional, tag = "13")]
1050    pub flushes_succeeded: ::core::option::Option<u64>,
1051    /// The count of the Flush() requests that failed (in most timed out).
1052    /// In a well behaving trace this should always be == 0.
1053    #[prost(uint64, optional, tag = "14")]
1054    pub flushes_failed: ::core::option::Option<u64>,
1055    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
1056    pub final_flush_outcome: ::core::option::Option<i32>,
1057}
1058/// Nested message and enum types in `TraceStats`.
1059pub mod trace_stats {
1060    /// From TraceBuffer::Stats.
1061    ///
1062    /// Next id: 22.
1063    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1064    pub struct BufferStats {
1065        /// Size of the circular buffer in bytes.
1066        #[prost(uint64, optional, tag = "12")]
1067        pub buffer_size: ::core::option::Option<u64>,
1068        /// Num. bytes written into the circular buffer, including chunk headers.
1069        #[prost(uint64, optional, tag = "1")]
1070        pub bytes_written: ::core::option::Option<u64>,
1071        /// Num. bytes overwritten before they have been read (i.e. loss of data).
1072        #[prost(uint64, optional, tag = "13")]
1073        pub bytes_overwritten: ::core::option::Option<u64>,
1074        /// Total size of chunks that were fully read from the circular buffer by the
1075        /// consumer. This may not be equal to |bytes_written| either in the middle
1076        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
1077        /// size of the chunks read from the buffer, including chunk headers, which
1078        /// will be different from the total size of packets returned to the
1079        /// consumer.
1080        ///
1081        /// The current utilization of the trace buffer (mid-tracing) can be obtained
1082        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
1083        /// adding the difference of |padding_bytes_written| and
1084        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
1085        /// Note that this represents the total size of buffered data in the buffer,
1086        /// yet this data may be spread non-contiguously through the buffer and may
1087        /// be overridden before the utilization reaches 100%.
1088        #[prost(uint64, optional, tag = "14")]
1089        pub bytes_read: ::core::option::Option<u64>,
1090        /// Num. bytes that were allocated as padding between chunks in the circular
1091        /// buffer.
1092        #[prost(uint64, optional, tag = "15")]
1093        pub padding_bytes_written: ::core::option::Option<u64>,
1094        /// Num. of padding bytes that were removed from the circular buffer when
1095        /// they were overwritten.
1096        ///
1097        /// The difference between |padding_bytes_written| and
1098        /// |padding_bytes_cleared| denotes the total size of padding currently
1099        /// present in the buffer.
1100        #[prost(uint64, optional, tag = "16")]
1101        pub padding_bytes_cleared: ::core::option::Option<u64>,
1102        /// Num. chunks (!= packets) written into the buffer.
1103        #[prost(uint64, optional, tag = "2")]
1104        pub chunks_written: ::core::option::Option<u64>,
1105        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
1106        /// the same chunk with additional packets appended to the end.
1107        #[prost(uint64, optional, tag = "10")]
1108        pub chunks_rewritten: ::core::option::Option<u64>,
1109        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
1110        /// instead of rewriting in place. We do this for scraped chunks that have
1111        /// been fully read: their old position can be so close to the write cursor
1112        /// that the packets we just recovered would be overwritten before any read.
1113        ///
1114        /// Introduced in v59 / Android 26Q3+.
1115        #[prost(uint64, optional, tag = "20")]
1116        pub chunks_relocated: ::core::option::Option<u64>,
1117        /// Num. chunks overwritten before they have been read (i.e. loss of data).
1118        #[prost(uint64, optional, tag = "3")]
1119        pub chunks_overwritten: ::core::option::Option<u64>,
1120        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
1121        /// is configured with FillPolicy == DISCARD.
1122        #[prost(uint64, optional, tag = "18")]
1123        pub chunks_discarded: ::core::option::Option<u64>,
1124        /// Num. chunks (!= packets) that were fully read from the circular buffer by
1125        /// the consumer. This may not be equal to |chunks_written| either in the
1126        /// middle of tracing, or if |chunks_overwritten| is non-zero.
1127        #[prost(uint64, optional, tag = "17")]
1128        pub chunks_read: ::core::option::Option<u64>,
1129        /// Num. chunks that were committed out of order.
1130        #[prost(uint64, optional, tag = "11")]
1131        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
1132        /// Num. times the ring buffer wrapped around.
1133        #[prost(uint64, optional, tag = "4")]
1134        pub write_wrap_count: ::core::option::Option<u64>,
1135        /// Num. out-of-band (OOB) patches that succeeded.
1136        #[prost(uint64, optional, tag = "5")]
1137        pub patches_succeeded: ::core::option::Option<u64>,
1138        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
1139        #[prost(uint64, optional, tag = "6")]
1140        pub patches_failed: ::core::option::Option<u64>,
1141        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
1142        /// successful packet read.
1143        #[prost(uint64, optional, tag = "7")]
1144        pub readaheads_succeeded: ::core::option::Option<u64>,
1145        /// Num. readaheads aborted because of missing chunks in the sequence stream.
1146        /// Note that a small number > 0 is totally expected: occasionally, when
1147        /// issuing a read, the very last packet in a sequence might be incomplete
1148        /// (because the producer is still writing it while we read). The read will
1149        /// stop at that point, for that sequence, increasing this counter.
1150        #[prost(uint64, optional, tag = "8")]
1151        pub readaheads_failed: ::core::option::Option<u64>,
1152        /// Num. of violations of the SharedMemoryABI found while writing or reading
1153        /// the buffer. This is an indication of either a bug in the producer(s) or
1154        /// malicious producer(s).
1155        #[prost(uint64, optional, tag = "9")]
1156        pub abi_violations: ::core::option::Option<u64>,
1157        /// Num. of times the service detected packet loss on a trace writer
1158        /// sequence. This is usually caused by exhaustion of available chunks in the
1159        /// writer process's SMB. Note that this relies on the client's TraceWriter
1160        /// indicating this loss to the service -- packets lost for other reasons are
1161        /// not reflected in this stat.
1162        #[prost(uint64, optional, tag = "19")]
1163        pub trace_writer_packet_loss: ::core::option::Option<u64>,
1164    }
1165    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
1166    /// visible as a unique sequence ID in the trace.
1167    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1168    pub struct WriterStats {
1169        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
1170        /// correlate the stats with the actual packet types.
1171        #[prost(uint64, optional, tag = "1")]
1172        pub sequence_id: ::core::option::Option<u64>,
1173        /// The buffer index (0..N, as defined in the TraceConfig).
1174        #[prost(uint32, optional, tag = "4")]
1175        pub buffer: ::core::option::Option<u32>,
1176        /// These two arrays have the same cardinality and match the cardinality of
1177        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
1178        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
1179        /// for each bucket.
1180        #[prost(uint64, repeated, tag = "2")]
1181        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
1182        #[prost(int64, repeated, tag = "3")]
1183        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
1184    }
1185    /// This is set only when the TraceConfig specifies a TraceFilter.
1186    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1187    pub struct FilterStats {
1188        #[prost(uint64, optional, tag = "1")]
1189        pub input_packets: ::core::option::Option<u64>,
1190        #[prost(uint64, optional, tag = "2")]
1191        pub input_bytes: ::core::option::Option<u64>,
1192        #[prost(uint64, optional, tag = "3")]
1193        pub output_bytes: ::core::option::Option<u64>,
1194        #[prost(uint64, optional, tag = "4")]
1195        pub errors: ::core::option::Option<u64>,
1196        #[prost(uint64, optional, tag = "5")]
1197        pub time_taken_ns: ::core::option::Option<u64>,
1198        /// The number of bytes discarded by the filter (i.e. output - input).
1199        /// The array has one entry for each buffer defined in the config (unless no
1200        /// packets for that buffer were seen and hence filtered).
1201        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
1202        /// (output_bytes - input_bytes) because the filter might also discard
1203        /// server-generated synthetic packets, that have no buffer index.
1204        #[prost(uint64, repeated, packed = "false", tag = "20")]
1205        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
1206    }
1207    #[derive(
1208        Clone,
1209        Copy,
1210        Debug,
1211        PartialEq,
1212        Eq,
1213        Hash,
1214        PartialOrd,
1215        Ord,
1216        ::prost::Enumeration
1217    )]
1218    #[repr(i32)]
1219    pub enum FinalFlushOutcome {
1220        FinalFlushUnspecified = 0,
1221        FinalFlushSucceeded = 1,
1222        FinalFlushFailed = 2,
1223    }
1224    impl FinalFlushOutcome {
1225        /// String value of the enum field names used in the ProtoBuf definition.
1226        ///
1227        /// The values are not transformed in any way and thus are considered stable
1228        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1229        pub fn as_str_name(&self) -> &'static str {
1230            match self {
1231                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
1232                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
1233                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
1234            }
1235        }
1236        /// Creates an enum from field names used in the ProtoBuf definition.
1237        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1238            match value {
1239                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
1240                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
1241                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
1242                _ => None,
1243            }
1244        }
1245    }
1246}
1247/// Builtin clock domains used in Perfetto traces.
1248///
1249/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
1250/// representing the trace file's own timeline. Each trace file gets its own
1251/// instance (scoped by trace file index).
1252///
1253/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
1254/// fallback: if the first timestamp conversion uses a clock other than the
1255/// trace file clock and no explicit clock snapshot data exists, the trace time
1256/// is switched to BOOTTIME. This fallback does not fire for modern traces that
1257/// include ClockSnapshots or that only use the trace file clock directly.
1258///
1259/// The `primary_trace_clock` field in ClockSnapshot can definitively override
1260/// the trace time clock regardless of the above.
1261#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1262#[repr(i32)]
1263pub enum BuiltinClock {
1264    Unknown = 0,
1265    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
1266    Realtime = 1,
1267    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
1268    RealtimeCoarse = 2,
1269    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
1270    Monotonic = 3,
1271    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
1272    MonotonicCoarse = 4,
1273    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
1274    MonotonicRaw = 5,
1275    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
1276    /// For proto traces, this is used as a backwards-compatible fallback trace
1277    /// time clock when no explicit clock snapshots are present.
1278    Boottime = 6,
1279    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
1280    Tsc = 9,
1281    /// Corresponds to the perf event clock (PERF_CLOCK).
1282    Perf = 10,
1283    /// A synthetic clock representing the trace file's own timeline. Each trace
1284    /// file gets its own instance (scoped by trace file index). This is the
1285    /// default trace time clock before any clock snapshot or format-specific
1286    /// override takes effect.
1287    TraceFile = 11,
1288    MaxId = 63,
1289}
1290impl BuiltinClock {
1291    /// String value of the enum field names used in the ProtoBuf definition.
1292    ///
1293    /// The values are not transformed in any way and thus are considered stable
1294    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1295    pub fn as_str_name(&self) -> &'static str {
1296        match self {
1297            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
1298            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
1299            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
1300            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
1301            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
1302            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
1303            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
1304            Self::Tsc => "BUILTIN_CLOCK_TSC",
1305            Self::Perf => "BUILTIN_CLOCK_PERF",
1306            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
1307            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
1308        }
1309    }
1310    /// Creates an enum from field names used in the ProtoBuf definition.
1311    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1312        match value {
1313            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
1314            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
1315            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
1316            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
1317            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
1318            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
1319            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
1320            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
1321            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
1322            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
1323            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
1324            _ => None,
1325        }
1326    }
1327}
1328/// Semantic types for string fields. This tells the filter what kind of
1329/// data the field contains, so it can apply the right filtering rules.
1330/// See /rfcs/0011-subset-string-filter-rules.md for design details.
1331/// Introduced in: Perfetto v54.
1332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1333#[repr(i32)]
1334pub enum SemanticType {
1335    Unspecified = 0,
1336    Atrace = 1,
1337    Job = 2,
1338    Wakelock = 3,
1339}
1340impl SemanticType {
1341    /// String value of the enum field names used in the ProtoBuf definition.
1342    ///
1343    /// The values are not transformed in any way and thus are considered stable
1344    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1345    pub fn as_str_name(&self) -> &'static str {
1346        match self {
1347            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
1348            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
1349            Self::Job => "SEMANTIC_TYPE_JOB",
1350            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
1351        }
1352    }
1353    /// Creates an enum from field names used in the ProtoBuf definition.
1354    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1355        match value {
1356            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1357            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
1358            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
1359            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
1360            _ => None,
1361        }
1362    }
1363}
1364#[derive(Clone, PartialEq, ::prost::Message)]
1365pub struct TraceAttributes {
1366    #[prost(message, repeated, tag = "1")]
1367    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
1368}
1369/// Nested message and enum types in `TraceAttributes`.
1370pub mod trace_attributes {
1371    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1372    pub struct Attribute {
1373        /// The key
1374        #[prost(string, optional, tag = "1")]
1375        pub key: ::core::option::Option<::prost::alloc::string::String>,
1376        /// The value
1377        #[prost(oneof = "attribute::Value", tags = "2, 3")]
1378        pub value: ::core::option::Option<attribute::Value>,
1379    }
1380    /// Nested message and enum types in `Attribute`.
1381    pub mod attribute {
1382        /// The value
1383        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1384        pub enum Value {
1385            #[prost(int64, tag = "2")]
1386            LongValue(i64),
1387            #[prost(string, tag = "3")]
1388            StringValue(::prost::alloc::string::String),
1389        }
1390    }
1391}
1392/// Options for the android.aflags data source.
1393/// This data source captures snapshots of Android aconfig flags.
1394/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
1395/// for more information on aconfig flags.
1396#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1397pub struct AndroidAflagsConfig {
1398    /// Frequency of polling. If absent or 0, the state will be recorded once,
1399    /// at the start of the trace.
1400    ///
1401    /// It is recommended to either leave this absent or set it to a large
1402    /// value as each invocation of the `aflags` tool can be time consuming
1403    /// (approx. 350ms) and also triggers an expensive flush. This is required to
1404    /// be > 1000ms if set, to avoid excessive CPU usage.
1405    #[prost(uint32, optional, tag = "1")]
1406    pub poll_ms: ::core::option::Option<u32>,
1407}
1408/// Data source that lists game modes and game interventions of games
1409/// on an Android device.
1410#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1411pub struct AndroidGameInterventionListConfig {
1412    /// If not empty, emit info about only the following list of package names
1413    /// (exact match, no regex). Otherwise, emit info about all packages.
1414    #[prost(string, repeated, tag = "1")]
1415    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1416}
1417/// Custom configuration for the "android.input.inputevent" data source.
1418///
1419/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
1420///
1421/// Next ID: 6
1422#[derive(Clone, PartialEq, ::prost::Message)]
1423pub struct AndroidInputEventConfig {
1424    /// The tracing mode to use. If unspecified, it will default to
1425    /// TRACE_MODE_USE_RULES.
1426    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
1427    pub mode: ::core::option::Option<i32>,
1428    /// The list of rules to use to determine the trace level of events.
1429    /// Each event will be traced using the TraceLevel of the first rule that it
1430    /// triggers from this list. The rules are evaluated in the order in which they
1431    /// are specified. If an event does not match any of the rules,
1432    /// TRACE_LEVEL_NONE will be used by default.
1433    #[prost(message, repeated, tag = "2")]
1434    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
1435    /// Trace input events processed by the system as they are being dispatched
1436    /// to application windows. All trace rules will apply.
1437    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
1438    ///    it will
1439    ///      trace InputDispatcher's inbound events (which does not include events
1440    ///      synthesized within InputDispatcher) that match the rules.
1441    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
1442    ///    events
1443    ///      matching the rules, including all events synthesized within
1444    ///      InputDispatcher, will be traced.
1445    #[prost(bool, optional, tag = "3")]
1446    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
1447    /// Trace details about which windows the system is sending each input event
1448    /// to. All trace rules will apply.
1449    #[prost(bool, optional, tag = "4")]
1450    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
1451    /// Trace evdev events received from the kernel, including device additions and
1452    /// removals.
1453    #[prost(bool, optional, tag = "5")]
1454    pub trace_evdev_events: ::core::option::Option<bool>,
1455}
1456/// Nested message and enum types in `AndroidInputEventConfig`.
1457pub mod android_input_event_config {
1458    /// A rule that specifies the TraceLevel for an event based on matching
1459    /// conditions. All matchers in the rule are optional. To trigger this rule, an
1460    /// event must match all of its specified matchers (i.e. the matchers function
1461    /// like a series of conditions connected by a logical 'AND' operator). A rule
1462    /// with no specified matchers will match all events. Next ID: 6
1463    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1464    pub struct TraceRule {
1465        /// The trace level to be used for events that trigger this rule.
1466        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
1467        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
1468        pub trace_level: ::core::option::Option<i32>,
1469        /// Package matchers
1470        ///
1471        /// Respectively matches if all or any of the target apps for this event are
1472        /// contained in the specified list of package names.
1473        ///
1474        /// Intended usage:
1475        ///    - Use match_all_packages to selectively allow tracing for the listed
1476        ///    packages.
1477        ///    - Use match_any_packages to selectively deny tracing for certain
1478        ///    packages.
1479        ///
1480        /// WARNING: Great care must be taken when designing rules for field tracing!
1481        ///           This is because each event is almost always sent to more than
1482        ///           one app.
1483        ///               For example, when allowing tracing for a package that has a
1484        ///               spy window
1485        ///           over the display (e.g. SystemUI) using match_any_packages,
1486        ///           essentially all input will be recorded on that display. This is
1487        ///           because the events will be sent to the spy as well as the
1488        ///           foreground app, and regardless of what the foreground app is,
1489        ///           the event will end up being traced.
1490        ///               Alternatively, when attempting to block tracing for specific
1491        ///               packages using
1492        ///           match_all_packages, no events will likely be blocked. This is
1493        ///           because the event will also be sent to other apps (such as, but
1494        ///           not limited to, ones with spy windows), so the matcher will not
1495        ///           match unless all other targets are also listed under the
1496        ///           match_all_packages list.
1497        #[prost(string, repeated, tag = "2")]
1498        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1499        #[prost(string, repeated, tag = "3")]
1500        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1501        /// Matches if the event is secure, which means that at least one of the
1502        /// targets of this event is using the window flag FLAG_SECURE.
1503        #[prost(bool, optional, tag = "4")]
1504        pub match_secure: ::core::option::Option<bool>,
1505        /// Matches if there was an active IME connection while this event was being
1506        /// processed.
1507        #[prost(bool, optional, tag = "5")]
1508        pub match_ime_connection_active: ::core::option::Option<bool>,
1509    }
1510    /// Trace modes are tracing presets that are included in the system.
1511    #[derive(
1512        Clone,
1513        Copy,
1514        Debug,
1515        PartialEq,
1516        Eq,
1517        Hash,
1518        PartialOrd,
1519        Ord,
1520        ::prost::Enumeration
1521    )]
1522    #[repr(i32)]
1523    pub enum TraceMode {
1524        /// Preset mode for maximal tracing.
1525        /// WARNING: This will bypass all privacy measures on debuggable builds, and
1526        /// will record all
1527        ///           input events processed by the system, regardless of the context
1528        ///           in which they were processed. It should only be used for tracing
1529        ///           on a local device or for tests. It should NEVER be used for
1530        ///           field tracing.
1531        TraceAll = 0,
1532        /// Use the tracing rules defined in this config to specify what events to
1533        /// trace.
1534        UseRules = 1,
1535    }
1536    impl TraceMode {
1537        /// String value of the enum field names used in the ProtoBuf definition.
1538        ///
1539        /// The values are not transformed in any way and thus are considered stable
1540        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1541        pub fn as_str_name(&self) -> &'static str {
1542            match self {
1543                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
1544                Self::UseRules => "TRACE_MODE_USE_RULES",
1545            }
1546        }
1547        /// Creates an enum from field names used in the ProtoBuf definition.
1548        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1549            match value {
1550                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
1551                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
1552                _ => None,
1553            }
1554        }
1555    }
1556    /// The level of tracing that should be applied to an event.
1557    #[derive(
1558        Clone,
1559        Copy,
1560        Debug,
1561        PartialEq,
1562        Eq,
1563        Hash,
1564        PartialOrd,
1565        Ord,
1566        ::prost::Enumeration
1567    )]
1568    #[repr(i32)]
1569    pub enum TraceLevel {
1570        /// Do not trace the input event.
1571        None = 0,
1572        /// Trace the event as a redacted event, where certain sensitive fields are
1573        /// omitted from the trace, including the coordinates of pointer events and
1574        /// the key/scan codes of key events.
1575        Redacted = 1,
1576        /// Trace the complete event.
1577        Complete = 2,
1578    }
1579    impl TraceLevel {
1580        /// String value of the enum field names used in the ProtoBuf definition.
1581        ///
1582        /// The values are not transformed in any way and thus are considered stable
1583        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1584        pub fn as_str_name(&self) -> &'static str {
1585            match self {
1586                Self::None => "TRACE_LEVEL_NONE",
1587                Self::Redacted => "TRACE_LEVEL_REDACTED",
1588                Self::Complete => "TRACE_LEVEL_COMPLETE",
1589            }
1590        }
1591        /// Creates an enum from field names used in the ProtoBuf definition.
1592        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1593            match value {
1594                "TRACE_LEVEL_NONE" => Some(Self::None),
1595                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1596                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1597                _ => None,
1598            }
1599        }
1600    }
1601}
1602/// Values from NDK's android/log.h.
1603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1604#[repr(i32)]
1605pub enum AndroidLogId {
1606    /// MAIN.
1607    LidDefault = 0,
1608    LidRadio = 1,
1609    LidEvents = 2,
1610    LidSystem = 3,
1611    LidCrash = 4,
1612    LidStats = 5,
1613    LidSecurity = 6,
1614    LidKernel = 7,
1615}
1616impl AndroidLogId {
1617    /// String value of the enum field names used in the ProtoBuf definition.
1618    ///
1619    /// The values are not transformed in any way and thus are considered stable
1620    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1621    pub fn as_str_name(&self) -> &'static str {
1622        match self {
1623            Self::LidDefault => "LID_DEFAULT",
1624            Self::LidRadio => "LID_RADIO",
1625            Self::LidEvents => "LID_EVENTS",
1626            Self::LidSystem => "LID_SYSTEM",
1627            Self::LidCrash => "LID_CRASH",
1628            Self::LidStats => "LID_STATS",
1629            Self::LidSecurity => "LID_SECURITY",
1630            Self::LidKernel => "LID_KERNEL",
1631        }
1632    }
1633    /// Creates an enum from field names used in the ProtoBuf definition.
1634    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1635        match value {
1636            "LID_DEFAULT" => Some(Self::LidDefault),
1637            "LID_RADIO" => Some(Self::LidRadio),
1638            "LID_EVENTS" => Some(Self::LidEvents),
1639            "LID_SYSTEM" => Some(Self::LidSystem),
1640            "LID_CRASH" => Some(Self::LidCrash),
1641            "LID_STATS" => Some(Self::LidStats),
1642            "LID_SECURITY" => Some(Self::LidSecurity),
1643            "LID_KERNEL" => Some(Self::LidKernel),
1644            _ => None,
1645        }
1646    }
1647}
1648#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1649#[repr(i32)]
1650pub enum AndroidLogPriority {
1651    PrioUnspecified = 0,
1652    /// _DEFAULT, but should never be seen in logs.
1653    PrioUnused = 1,
1654    PrioVerbose = 2,
1655    PrioDebug = 3,
1656    PrioInfo = 4,
1657    PrioWarn = 5,
1658    PrioError = 6,
1659    PrioFatal = 7,
1660}
1661impl AndroidLogPriority {
1662    /// String value of the enum field names used in the ProtoBuf definition.
1663    ///
1664    /// The values are not transformed in any way and thus are considered stable
1665    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1666    pub fn as_str_name(&self) -> &'static str {
1667        match self {
1668            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
1669            Self::PrioUnused => "PRIO_UNUSED",
1670            Self::PrioVerbose => "PRIO_VERBOSE",
1671            Self::PrioDebug => "PRIO_DEBUG",
1672            Self::PrioInfo => "PRIO_INFO",
1673            Self::PrioWarn => "PRIO_WARN",
1674            Self::PrioError => "PRIO_ERROR",
1675            Self::PrioFatal => "PRIO_FATAL",
1676        }
1677    }
1678    /// Creates an enum from field names used in the ProtoBuf definition.
1679    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1680        match value {
1681            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
1682            "PRIO_UNUSED" => Some(Self::PrioUnused),
1683            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
1684            "PRIO_DEBUG" => Some(Self::PrioDebug),
1685            "PRIO_INFO" => Some(Self::PrioInfo),
1686            "PRIO_WARN" => Some(Self::PrioWarn),
1687            "PRIO_ERROR" => Some(Self::PrioError),
1688            "PRIO_FATAL" => Some(Self::PrioFatal),
1689            _ => None,
1690        }
1691    }
1692}
1693#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1694pub struct AndroidLogConfig {
1695    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1696    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1697    /// If set ignores all log messages whose prio is < the given value.
1698    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1699    pub min_prio: ::core::option::Option<i32>,
1700    /// If non-empty ignores all log messages whose tag doesn't match one of the
1701    /// specified values.
1702    #[prost(string, repeated, tag = "4")]
1703    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1704    /// If true, includes the contents of the logcat buffers that were already
1705    /// present before the data source started. By default (false), only new
1706    /// log entries produced after the data source starts are recorded.
1707    /// Can be useful for boot traces or situations where logs from before
1708    /// traced started are important.
1709    #[prost(bool, optional, tag = "5")]
1710    pub preserve_log_buffer: ::core::option::Option<bool>,
1711}
1712/// Data source that polls for display state. This should only be used for
1713/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1714#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1715pub struct AndroidPolledStateConfig {
1716    /// Frequency of polling. If absent the state will be recorded once, at the
1717    /// start of the trace.
1718    /// This is required to be > 100ms to avoid excessive CPU usage.
1719    #[prost(uint32, optional, tag = "1")]
1720    pub poll_ms: ::core::option::Option<u32>,
1721}
1722/// Configuration for the "android.process_state" data source.
1723#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1724pub struct AndroidProcessStateConfig {
1725    /// If true, dumps process name, start seq id, and start time in the snapshot.
1726    /// When false (default), these fields are omitted to save trace buffer space.
1727    #[prost(bool, optional, tag = "1")]
1728    pub dump_process_metadata: ::core::option::Option<bool>,
1729}
1730/// Data source that polls for system properties.
1731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1732pub struct AndroidSystemPropertyConfig {
1733    /// Frequency of polling. If absent the state will be recorded once, at the
1734    /// start of the trace.
1735    /// This is required to be > 100ms to avoid excessive CPU usage.
1736    #[prost(uint32, optional, tag = "1")]
1737    pub poll_ms: ::core::option::Option<u32>,
1738    /// Properties to poll. All property names must start with "debug.tracing.".
1739    #[prost(string, repeated, tag = "2")]
1740    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1741}
1742/// Data source that controls the system properties used to guard initialization
1743/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1744/// processes like SurfaceFlinger.
1745///
1746/// This data source only tells Skia to initialized the Perfetto SDK and start
1747/// routing data to the Track Event system instead of ATrace. For those events
1748/// to actually show up in a trace, the track_event data source must be used as
1749/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1750/// processes may need to be restarted for Skia to revert to using ATrace if
1751/// Track Events are no longer desired.
1752///
1753/// In addition to switching Skia to use Perfetto's track_event data source,
1754/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1755/// internal tracing constraints and allows the track_event config to specify
1756/// which categories should be traced. Filtering to the "skia.always" category
1757/// *tag* in a track_event config can be used to re-enable the standard
1758/// constraints typically used with ATrace.
1759///
1760/// Data source name: android.sdk_sysprop_guard
1761/// Introduced in Android 14 (U) QPR1.
1762/// Next id: 4
1763#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1764pub struct AndroidSdkSyspropGuardConfig {
1765    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1766    /// integration with the track_event data source in RenderEngine.
1767    /// If false or omitted, the simpler ATrace fallback is used.
1768    ///
1769    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1770    /// restarted.
1771    ///
1772    /// Specifically this sets the following system properties:
1773    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1774    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1775    ///
1776    /// Does not affect actual track_event data *collection*, which must be
1777    /// configured separately.
1778    #[prost(bool, optional, tag = "1")]
1779    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1780    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1781    /// with the track_event data source. hwui_package_name_filter
1782    /// can be used to control which apps are affected.
1783    /// If false or omitted, the simpler ATrace fallback is used.
1784    ///
1785    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1786    /// restarted.
1787    ///
1788    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1789    /// If filtering is NOT set, this controls these GLOBAL system properties:
1790    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1791    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1792    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1793    /// for each package listed in the filter:
1794    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1795    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1796    ///
1797    /// Does not affect actual track_event data *collection*, which must be
1798    /// configured separately.
1799    #[prost(bool, optional, tag = "2")]
1800    pub hwui_skia_track_events: ::core::option::Option<bool>,
1801    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1802    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1803    #[prost(string, repeated, tag = "3")]
1804    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1805        ::prost::alloc::string::String,
1806    >,
1807}
1808/// Configuration for the android.app_wakelocks data source.
1809#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1810pub struct AppWakelocksConfig {
1811    /// Specifies the delay (in milliseconds) after which the data source will
1812    /// attempt to write events. Writing less frequently reduces the trace size by
1813    /// making better use of the packed arrays and reducing the total number of
1814    /// TracePackets needed (which each have dozens of bytes of overhead). The
1815    /// suggested delay is 5000ms.
1816    #[prost(int32, optional, tag = "1")]
1817    pub write_delay_ms: ::core::option::Option<i32>,
1818    /// When set, wakelocks held for less than this amount of time are filtered
1819    /// from the resulting trace. Note: duration is computed by matching wakelocks
1820    /// with identical attributes, not by tracking the underlying objects. The
1821    /// threshold should be < the trace's flush_period_ms.
1822    #[prost(int32, optional, tag = "2")]
1823    pub filter_duration_below_ms: ::core::option::Option<i32>,
1824    /// When true, the owner_pid is dropped from the resulting output, reducing the
1825    /// size of the interning tables.
1826    #[prost(bool, optional, tag = "3")]
1827    pub drop_owner_pid: ::core::option::Option<bool>,
1828}
1829/// Data source that records CPU per UID data.
1830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1831pub struct CpuPerUidConfig {
1832    /// Record at this frequency.
1833    #[prost(uint32, optional, tag = "1")]
1834    pub poll_ms: ::core::option::Option<u32>,
1835}
1836/// Custom configuration for the "android.inputmethod" data source.
1837#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1838pub struct InputMethodConfig {
1839    /// If true, enables tracing in the clients.
1840    #[prost(bool, optional, tag = "1")]
1841    pub client: ::core::option::Option<bool>,
1842    /// If true, enables tracing in InputMethodService.
1843    #[prost(bool, optional, tag = "2")]
1844    pub service: ::core::option::Option<bool>,
1845    /// If true, enables tracing in InputMethodManagerService.
1846    #[prost(bool, optional, tag = "3")]
1847    pub manager_service: ::core::option::Option<bool>,
1848}
1849/// Data source that records kernel (and native) wakelock data.
1850#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1851pub struct KernelWakelocksConfig {
1852    /// Record at this frequency.
1853    #[prost(uint32, optional, tag = "1")]
1854    pub poll_ms: ::core::option::Option<u32>,
1855}
1856/// Network tracing data source that records details on all packets sent or
1857/// received by the network.
1858#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1859pub struct NetworkPacketTraceConfig {
1860    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1861    /// ring buffer. The polling interval should be such that the ring buffer is
1862    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1863    /// The minimum polling rate is 100ms (values below this are ignored).
1864    /// Introduced in Android 14 (U).
1865    #[prost(uint32, optional, tag = "1")]
1866    pub poll_ms: ::core::option::Option<u32>,
1867    /// The aggregation_threshold is the number of packets at which an event will
1868    /// switch from per-packet details to aggregate details. For example, a value
1869    /// of 50 means that if a particular event (grouped by the unique combinations
1870    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1871    /// packets, the exact timestamp and length are recorded for each packet. If
1872    /// there were 50 or more packets in an event, it would only record the total
1873    /// duration, packets, and length. A value of zero or unspecified will always
1874    /// / record per-packet details. A value of 1 always records aggregate details.
1875    #[prost(uint32, optional, tag = "2")]
1876    pub aggregation_threshold: ::core::option::Option<u32>,
1877    /// Specifies the maximum number of packet contexts to intern at a time. This
1878    /// prevents the interning table from growing too large and controls whether
1879    /// interning is enabled or disabled (a value of zero disables interning and
1880    /// is the default). When a data sources interning table reaches this amount,
1881    /// packet contexts will be inlined into NetworkPacketEvents.
1882    #[prost(uint32, optional, tag = "3")]
1883    pub intern_limit: ::core::option::Option<u32>,
1884    /// The following fields specify whether certain fields should be dropped from
1885    /// the output. Dropping fields improves normalization results, reduces the
1886    /// size of the interning table, and slightly reduces event size.
1887    #[prost(bool, optional, tag = "4")]
1888    pub drop_local_port: ::core::option::Option<bool>,
1889    #[prost(bool, optional, tag = "5")]
1890    pub drop_remote_port: ::core::option::Option<bool>,
1891    #[prost(bool, optional, tag = "6")]
1892    pub drop_tcp_flags: ::core::option::Option<bool>,
1893}
1894/// Data source that lists details (such as version code) about packages on an
1895/// Android device.
1896#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1897pub struct PackagesListConfig {
1898    /// If not empty, emit info about only the following list of package names
1899    /// (exact match, no regex). Can be combined with
1900    /// |package_name_regex_filter|: a package is included if it matches either
1901    /// filter. If both filters are empty, emit info about all packages.
1902    #[prost(string, repeated, tag = "1")]
1903    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1904    /// If not empty, emit info about only the packages whose names match any of
1905    /// the following regexes (full match, not partial). Can be combined with
1906    /// |package_name_filter|: a package is included if it matches either filter.
1907    /// If both filters are empty, emit info about all packages.
1908    /// This field was introduced in Android 26Q2 (Perfetto v55).
1909    #[prost(string, repeated, tag = "3")]
1910    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1911        ::prost::alloc::string::String,
1912    >,
1913    /// If present and non-zero, the data source will periodically poll for CPU
1914    /// use by packages and only emit results for those that it sees. If absent,
1915    /// the data source will emit results for all packages at startup. The package
1916    /// name filters apply either way.
1917    #[prost(uint32, optional, tag = "2")]
1918    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1919}
1920/// Data source that records events from the modem.
1921#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1922pub struct PixelModemConfig {
1923    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1924    pub event_group: ::core::option::Option<i32>,
1925    /// If set, record only events with these hashes.
1926    #[prost(int64, repeated, packed = "false", tag = "2")]
1927    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1928    /// If set and allow_list is not set, deny events with these hashes.
1929    #[prost(int64, repeated, packed = "false", tag = "3")]
1930    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1931}
1932/// Nested message and enum types in `PixelModemConfig`.
1933pub mod pixel_modem_config {
1934    /// Event group to record, as defined by the modem.
1935    #[derive(
1936        Clone,
1937        Copy,
1938        Debug,
1939        PartialEq,
1940        Eq,
1941        Hash,
1942        PartialOrd,
1943        Ord,
1944        ::prost::Enumeration
1945    )]
1946    #[repr(i32)]
1947    pub enum EventGroup {
1948        Unknown = 0,
1949        /// Events suitable for low bandwidth tracing only.
1950        LowBandwidth = 1,
1951        /// Events suitable for high and low bandwidth tracing.
1952        HighAndLowBandwidth = 2,
1953    }
1954    impl EventGroup {
1955        /// String value of the enum field names used in the ProtoBuf definition.
1956        ///
1957        /// The values are not transformed in any way and thus are considered stable
1958        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1959        pub fn as_str_name(&self) -> &'static str {
1960            match self {
1961                Self::Unknown => "EVENT_GROUP_UNKNOWN",
1962                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1963                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1964            }
1965        }
1966        /// Creates an enum from field names used in the ProtoBuf definition.
1967        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1968            match value {
1969                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
1970                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
1971                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
1972                _ => None,
1973            }
1974        }
1975    }
1976}
1977/// Custom configuration for the "android.protolog" data source.
1978/// ProtoLog is a logging mechanism that is intented to be more efficient than
1979/// logcat. This configures what logs to capture in the tracing instance.
1980#[derive(Clone, PartialEq, ::prost::Message)]
1981pub struct ProtoLogConfig {
1982    /// Specified the configurations for each of the logging groups. If none is
1983    /// specified for a group the defaults will be used.
1984    #[prost(message, repeated, tag = "1")]
1985    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1986    /// Specified what tracing mode to use for the tracing instance.
1987    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
1988    pub tracing_mode: ::core::option::Option<i32>,
1989    /// If set, any message with log level higher than this level (inclusive) will
1990    /// be traced. Group overrides take precedence over this value.
1991    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
1992    pub default_log_from_level: ::core::option::Option<i32>,
1993}
1994/// Nested message and enum types in `ProtoLogConfig`.
1995pub mod proto_log_config {
1996    #[derive(
1997        Clone,
1998        Copy,
1999        Debug,
2000        PartialEq,
2001        Eq,
2002        Hash,
2003        PartialOrd,
2004        Ord,
2005        ::prost::Enumeration
2006    )]
2007    #[repr(i32)]
2008    pub enum TracingMode {
2009        /// When using the DEFAULT tracing mode, only log groups and levels specified
2010        /// in the group_overrides are traced.
2011        Default = 0,
2012        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
2013        /// traced, unless specified in the group_overrides.
2014        EnableAll = 1,
2015    }
2016    impl TracingMode {
2017        /// String value of the enum field names used in the ProtoBuf definition.
2018        ///
2019        /// The values are not transformed in any way and thus are considered stable
2020        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2021        pub fn as_str_name(&self) -> &'static str {
2022            match self {
2023                Self::Default => "DEFAULT",
2024                Self::EnableAll => "ENABLE_ALL",
2025            }
2026        }
2027        /// Creates an enum from field names used in the ProtoBuf definition.
2028        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2029            match value {
2030                "DEFAULT" => Some(Self::Default),
2031                "ENABLE_ALL" => Some(Self::EnableAll),
2032                _ => None,
2033            }
2034        }
2035    }
2036}
2037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2038pub struct ProtoLogGroup {
2039    /// The ProtoLog group name this configuration entry applies to.
2040    #[prost(string, optional, tag = "1")]
2041    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
2042    /// Specify the level from which to start capturing protologs.
2043    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
2044    /// message will be traced.
2045    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
2046    pub log_from: ::core::option::Option<i32>,
2047    /// When set to true we will collect the stacktrace for each protolog message
2048    /// in this group that we are tracing.
2049    #[prost(bool, optional, tag = "3")]
2050    pub collect_stacktrace: ::core::option::Option<bool>,
2051}
2052#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2053#[repr(i32)]
2054pub enum ProtoLogLevel {
2055    ProtologLevelUndefined = 0,
2056    ProtologLevelDebug = 1,
2057    ProtologLevelVerbose = 2,
2058    ProtologLevelInfo = 3,
2059    ProtologLevelWarn = 4,
2060    ProtologLevelError = 5,
2061    ProtologLevelWtf = 6,
2062}
2063impl ProtoLogLevel {
2064    /// String value of the enum field names used in the ProtoBuf definition.
2065    ///
2066    /// The values are not transformed in any way and thus are considered stable
2067    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2068    pub fn as_str_name(&self) -> &'static str {
2069        match self {
2070            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
2071            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
2072            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
2073            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
2074            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
2075            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
2076            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
2077        }
2078    }
2079    /// Creates an enum from field names used in the ProtoBuf definition.
2080    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2081        match value {
2082            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
2083            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
2084            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
2085            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
2086            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
2087            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
2088            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
2089            _ => None,
2090        }
2091    }
2092}
2093/// Config for the "android.display.video" data source. Unset/0 fields use
2094/// the producer's default.
2095#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2096pub struct DisplayVideoConfig {
2097    /// Scale applied to each display's resolution before capture (0.25 =
2098    /// quarter size).
2099    #[prost(float, optional, tag = "1")]
2100    pub scale: ::core::option::Option<f32>,
2101    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
2102    pub format: ::core::option::Option<i32>,
2103    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
2104    #[prost(uint32, optional, tag = "3")]
2105    pub key_frame_interval_secs: ::core::option::Option<u32>,
2106    /// Per-display cap on emitted bytes. On reaching it the stream is torn
2107    /// down with a VideoFrameError (SIZE_CAP_HIT).
2108    #[prost(uint64, optional, tag = "4")]
2109    pub max_stream_size_bytes: ::core::option::Option<u64>,
2110    /// Target video encoder bitrate in bits per second. Controls quality vs
2111    /// trace size at a fixed resolution (unlike `scale`, which changes the
2112    /// resolution). Unset lets the producer pick a default from the (scaled)
2113    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
2114    #[prost(uint32, optional, tag = "5")]
2115    pub bitrate_bps: ::core::option::Option<u32>,
2116}
2117/// Nested message and enum types in `DisplayVideoConfig`.
2118pub mod display_video_config {
2119    #[derive(
2120        Clone,
2121        Copy,
2122        Debug,
2123        PartialEq,
2124        Eq,
2125        Hash,
2126        PartialOrd,
2127        Ord,
2128        ::prost::Enumeration
2129    )]
2130    #[repr(i32)]
2131    pub enum Format {
2132        /// Default (H.264).
2133        Unspecified = 0,
2134        H264 = 1,
2135        Hevc = 2,
2136    }
2137    impl Format {
2138        /// String value of the enum field names used in the ProtoBuf definition.
2139        ///
2140        /// The values are not transformed in any way and thus are considered stable
2141        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2142        pub fn as_str_name(&self) -> &'static str {
2143            match self {
2144                Self::Unspecified => "FORMAT_UNSPECIFIED",
2145                Self::H264 => "FORMAT_H264",
2146                Self::Hevc => "FORMAT_HEVC",
2147            }
2148        }
2149        /// Creates an enum from field names used in the ProtoBuf definition.
2150        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2151            match value {
2152                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2153                "FORMAT_H264" => Some(Self::H264),
2154                "FORMAT_HEVC" => Some(Self::Hevc),
2155                _ => None,
2156            }
2157        }
2158    }
2159}
2160/// Custom configuration for the "android.surfaceflinger.layers" data source.
2161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2162pub struct SurfaceFlingerLayersConfig {
2163    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
2164    pub mode: ::core::option::Option<i32>,
2165    #[prost(
2166        enumeration = "surface_flinger_layers_config::TraceFlag",
2167        repeated,
2168        packed = "false",
2169        tag = "2"
2170    )]
2171    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
2172}
2173/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
2174pub mod surface_flinger_layers_config {
2175    #[derive(
2176        Clone,
2177        Copy,
2178        Debug,
2179        PartialEq,
2180        Eq,
2181        Hash,
2182        PartialOrd,
2183        Ord,
2184        ::prost::Enumeration
2185    )]
2186    #[repr(i32)]
2187    pub enum Mode {
2188        Unspecified = 0,
2189        /// Trace layers snapshots. A snapshot is taken every time a layers change
2190        /// occurs.
2191        Active = 1,
2192        /// Generate layers snapshots from the transactions kept in the
2193        /// SurfaceFlinger's internal ring buffer.
2194        /// The layers snapshots generation occurs when this data source is flushed.
2195        Generated = 2,
2196        /// Trace a single layers snapshot.
2197        Dump = 3,
2198        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2199        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
2200        /// when a bugreport is taken.
2201        GeneratedBugreportOnly = 4,
2202        /// Layer snapshots are generated by ProtoVM from layer patches
2203        Protovm = 5,
2204    }
2205    impl Mode {
2206        /// String value of the enum field names used in the ProtoBuf definition.
2207        ///
2208        /// The values are not transformed in any way and thus are considered stable
2209        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2210        pub fn as_str_name(&self) -> &'static str {
2211            match self {
2212                Self::Unspecified => "MODE_UNSPECIFIED",
2213                Self::Active => "MODE_ACTIVE",
2214                Self::Generated => "MODE_GENERATED",
2215                Self::Dump => "MODE_DUMP",
2216                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
2217                Self::Protovm => "MODE_PROTOVM",
2218            }
2219        }
2220        /// Creates an enum from field names used in the ProtoBuf definition.
2221        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2222            match value {
2223                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2224                "MODE_ACTIVE" => Some(Self::Active),
2225                "MODE_GENERATED" => Some(Self::Generated),
2226                "MODE_DUMP" => Some(Self::Dump),
2227                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
2228                "MODE_PROTOVM" => Some(Self::Protovm),
2229                _ => None,
2230            }
2231        }
2232    }
2233    #[derive(
2234        Clone,
2235        Copy,
2236        Debug,
2237        PartialEq,
2238        Eq,
2239        Hash,
2240        PartialOrd,
2241        Ord,
2242        ::prost::Enumeration
2243    )]
2244    #[repr(i32)]
2245    pub enum TraceFlag {
2246        Unspecified = 0,
2247        Input = 2,
2248        Composition = 4,
2249        Extra = 8,
2250        Hwc = 16,
2251        Buffers = 32,
2252        VirtualDisplays = 64,
2253        /// INPUT | COMPOSITION | EXTRA
2254        All = 14,
2255    }
2256    impl TraceFlag {
2257        /// String value of the enum field names used in the ProtoBuf definition.
2258        ///
2259        /// The values are not transformed in any way and thus are considered stable
2260        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2261        pub fn as_str_name(&self) -> &'static str {
2262            match self {
2263                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
2264                Self::Input => "TRACE_FLAG_INPUT",
2265                Self::Composition => "TRACE_FLAG_COMPOSITION",
2266                Self::Extra => "TRACE_FLAG_EXTRA",
2267                Self::Hwc => "TRACE_FLAG_HWC",
2268                Self::Buffers => "TRACE_FLAG_BUFFERS",
2269                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
2270                Self::All => "TRACE_FLAG_ALL",
2271            }
2272        }
2273        /// Creates an enum from field names used in the ProtoBuf definition.
2274        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2275            match value {
2276                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
2277                "TRACE_FLAG_INPUT" => Some(Self::Input),
2278                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
2279                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
2280                "TRACE_FLAG_HWC" => Some(Self::Hwc),
2281                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
2282                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
2283                "TRACE_FLAG_ALL" => Some(Self::All),
2284                _ => None,
2285            }
2286        }
2287    }
2288}
2289/// Custom configuration for the "android.surfaceflinger.transactions" data
2290/// source.
2291#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2292pub struct SurfaceFlingerTransactionsConfig {
2293    #[prost(
2294        enumeration = "surface_flinger_transactions_config::Mode",
2295        optional,
2296        tag = "1"
2297    )]
2298    pub mode: ::core::option::Option<i32>,
2299}
2300/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
2301pub mod surface_flinger_transactions_config {
2302    #[derive(
2303        Clone,
2304        Copy,
2305        Debug,
2306        PartialEq,
2307        Eq,
2308        Hash,
2309        PartialOrd,
2310        Ord,
2311        ::prost::Enumeration
2312    )]
2313    #[repr(i32)]
2314    pub enum Mode {
2315        Unspecified = 0,
2316        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2317        /// SurfaceFlinger writes its internal ring buffer of transactions every time
2318        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
2319        /// initial state and the latest transactions.
2320        Continuous = 1,
2321        /// SurfaceFlinger writes the initial state and then each incoming
2322        /// transaction until the data source is stopped.
2323        Active = 2,
2324    }
2325    impl Mode {
2326        /// String value of the enum field names used in the ProtoBuf definition.
2327        ///
2328        /// The values are not transformed in any way and thus are considered stable
2329        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2330        pub fn as_str_name(&self) -> &'static str {
2331            match self {
2332                Self::Unspecified => "MODE_UNSPECIFIED",
2333                Self::Continuous => "MODE_CONTINUOUS",
2334                Self::Active => "MODE_ACTIVE",
2335            }
2336        }
2337        /// Creates an enum from field names used in the ProtoBuf definition.
2338        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2339            match value {
2340                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2341                "MODE_CONTINUOUS" => Some(Self::Continuous),
2342                "MODE_ACTIVE" => Some(Self::Active),
2343                _ => None,
2344            }
2345        }
2346    }
2347}
2348/// Data source that lists details (such as version code) about users on an
2349/// Android device.
2350#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2351pub struct AndroidUserListConfig {
2352    /// An allowlist of user type strings, used to control the granularity of
2353    /// user type information emitted in the trace. Exact, case-sensitive string
2354    /// matching is used.
2355    ///
2356    /// Any user type read from the device that is NOT present in the
2357    /// effective allowlist will have its type reported as
2358    /// "android.os.usertype.FILTERED".
2359    ///
2360    /// The effective allowlist is determined as follows:
2361    ///
2362    /// 1. If this 'user_type_filter' field is provided and non-empty:
2363    ///     This list itself is the effective allowlist.
2364    ///     Example TraceConfig:
2365    ///     --------------------
2366    ///     data_sources {
2367    ///         config {
2368    ///             name: "android.user_list"
2369    ///             target_buffer: 0
2370    ///             user_list_config {
2371    ///               # Only report these specific types, others become FILTERED.
2372    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
2373    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
2374    ///             }
2375    ///         }
2376    ///     }
2377    ///
2378    ///
2379    /// Note: This field does not support regular expressions.
2380    #[prost(string, repeated, tag = "1")]
2381    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2382}
2383/// Custom configuration for the "android.windowmanager" data source.
2384#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2385pub struct WindowManagerConfig {
2386    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
2387    pub log_frequency: ::core::option::Option<i32>,
2388    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
2389    pub log_level: ::core::option::Option<i32>,
2390    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
2391    pub log_mode: ::core::option::Option<i32>,
2392}
2393/// Nested message and enum types in `WindowManagerConfig`.
2394pub mod window_manager_config {
2395    #[derive(
2396        Clone,
2397        Copy,
2398        Debug,
2399        PartialEq,
2400        Eq,
2401        Hash,
2402        PartialOrd,
2403        Ord,
2404        ::prost::Enumeration
2405    )]
2406    #[repr(i32)]
2407    pub enum LogFrequency {
2408        Unspecified = 0,
2409        /// Trace state snapshots when a frame is committed.
2410        Frame = 1,
2411        /// Trace state snapshots every time a transaction is committed.
2412        Transaction = 2,
2413        /// Trace single state snapshots when the data source is started.
2414        SingleDump = 3,
2415    }
2416    impl LogFrequency {
2417        /// String value of the enum field names used in the ProtoBuf definition.
2418        ///
2419        /// The values are not transformed in any way and thus are considered stable
2420        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2421        pub fn as_str_name(&self) -> &'static str {
2422            match self {
2423                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
2424                Self::Frame => "LOG_FREQUENCY_FRAME",
2425                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
2426                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
2427            }
2428        }
2429        /// Creates an enum from field names used in the ProtoBuf definition.
2430        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2431            match value {
2432                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
2433                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
2434                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
2435                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
2436                _ => None,
2437            }
2438        }
2439    }
2440    #[derive(
2441        Clone,
2442        Copy,
2443        Debug,
2444        PartialEq,
2445        Eq,
2446        Hash,
2447        PartialOrd,
2448        Ord,
2449        ::prost::Enumeration
2450    )]
2451    #[repr(i32)]
2452    pub enum LogLevel {
2453        Unspecified = 0,
2454        /// Logs all elements with maximum amount of information.
2455        Verbose = 1,
2456        /// Logs all elements but doesn't write all configuration data.
2457        Debug = 2,
2458        /// Logs only visible elements, with the minimum amount of performance
2459        /// overhead
2460        Critical = 3,
2461    }
2462    impl LogLevel {
2463        /// String value of the enum field names used in the ProtoBuf definition.
2464        ///
2465        /// The values are not transformed in any way and thus are considered stable
2466        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2467        pub fn as_str_name(&self) -> &'static str {
2468            match self {
2469                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
2470                Self::Verbose => "LOG_LEVEL_VERBOSE",
2471                Self::Debug => "LOG_LEVEL_DEBUG",
2472                Self::Critical => "LOG_LEVEL_CRITICAL",
2473            }
2474        }
2475        /// Creates an enum from field names used in the ProtoBuf definition.
2476        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2477            match value {
2478                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
2479                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
2480                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
2481                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
2482                _ => None,
2483            }
2484        }
2485    }
2486    #[derive(
2487        Clone,
2488        Copy,
2489        Debug,
2490        PartialEq,
2491        Eq,
2492        Hash,
2493        PartialOrd,
2494        Ord,
2495        ::prost::Enumeration
2496    )]
2497    #[repr(i32)]
2498    pub enum LogMode {
2499        Unspecified = 0,
2500        /// Always logs a full state dump of the window hierarchy.
2501        FullState = 1,
2502        /// Logs a full state dump of the window hierarchy only when tracing starts.
2503        /// The following trace packets are lightweight patches containing only the
2504        /// last changes.
2505        Incremental = 2,
2506    }
2507    impl LogMode {
2508        /// String value of the enum field names used in the ProtoBuf definition.
2509        ///
2510        /// The values are not transformed in any way and thus are considered stable
2511        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2512        pub fn as_str_name(&self) -> &'static str {
2513            match self {
2514                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
2515                Self::FullState => "LOG_MODE_FULL_STATE",
2516                Self::Incremental => "LOG_MODE_INCREMENTAL",
2517            }
2518        }
2519        /// Creates an enum from field names used in the ProtoBuf definition.
2520        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2521            match value {
2522                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2523                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
2524                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
2525                _ => None,
2526            }
2527        }
2528    }
2529}
2530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2531pub struct ChromeConfig {
2532    #[prost(string, optional, tag = "1")]
2533    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
2534    /// When enabled, the data source should only fill in fields in the output that
2535    /// are not potentially privacy sensitive.
2536    #[prost(bool, optional, tag = "2")]
2537    pub privacy_filtering_enabled: ::core::option::Option<bool>,
2538    /// Instead of emitting binary protobuf, convert the trace data to the legacy
2539    /// JSON format. Note that the trace data will still be returned as a series of
2540    /// TracePackets, but the embedded data will be JSON instead of serialized
2541    /// protobuf.
2542    #[prost(bool, optional, tag = "3")]
2543    pub convert_to_legacy_json: ::core::option::Option<bool>,
2544    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
2545    pub client_priority: ::core::option::Option<i32>,
2546    /// Applicable only when using legacy JSON format.
2547    /// If |json_agent_label_filter| is not empty, only data pertaining to
2548    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
2549    #[prost(string, optional, tag = "5")]
2550    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
2551    ///   When enabled, event names should not contain package names.
2552    #[prost(bool, optional, tag = "6")]
2553    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
2554}
2555/// Nested message and enum types in `ChromeConfig`.
2556pub mod chrome_config {
2557    /// Priority of the tracing session client. A higher priority session may
2558    /// preempt a lower priority one in configurations where concurrent sessions
2559    /// aren't supported.
2560    #[derive(
2561        Clone,
2562        Copy,
2563        Debug,
2564        PartialEq,
2565        Eq,
2566        Hash,
2567        PartialOrd,
2568        Ord,
2569        ::prost::Enumeration
2570    )]
2571    #[repr(i32)]
2572    pub enum ClientPriority {
2573        Unknown = 0,
2574        Background = 1,
2575        UserInitiated = 2,
2576    }
2577    impl ClientPriority {
2578        /// String value of the enum field names used in the ProtoBuf definition.
2579        ///
2580        /// The values are not transformed in any way and thus are considered stable
2581        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2582        pub fn as_str_name(&self) -> &'static str {
2583            match self {
2584                Self::Unknown => "UNKNOWN",
2585                Self::Background => "BACKGROUND",
2586                Self::UserInitiated => "USER_INITIATED",
2587            }
2588        }
2589        /// Creates an enum from field names used in the ProtoBuf definition.
2590        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2591            match value {
2592                "UNKNOWN" => Some(Self::Unknown),
2593                "BACKGROUND" => Some(Self::Background),
2594                "USER_INITIATED" => Some(Self::UserInitiated),
2595                _ => None,
2596            }
2597        }
2598    }
2599}
2600#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2601pub struct V8Config {
2602    /// Whether to log the actual content of scripts (e.g. content of the JS file
2603    /// that was compiled to generate code).
2604    /// ATTENTION: This could considerably increase the size of the resuling trace
2605    ///             file.
2606    #[prost(bool, optional, tag = "1")]
2607    pub log_script_sources: ::core::option::Option<bool>,
2608    /// Whether to log the generated code for jitted functions (machine code or
2609    /// bytecode).
2610    /// ATTENTION: This could considerably increase the size of the resuling trace
2611    ///             file.
2612    #[prost(bool, optional, tag = "2")]
2613    pub log_instructions: ::core::option::Option<bool>,
2614}
2615/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
2616/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
2617/// ns-evntrace-event_trace_properties
2618#[derive(Clone, PartialEq, ::prost::Message)]
2619pub struct EtwConfig {
2620    /// The kernel_flags determines the flags that will be used by the etw tracing
2621    /// session. These kernel flags have been built to expose the useful events
2622    /// captured from the kernel mode only.
2623    #[deprecated]
2624    #[prost(
2625        enumeration = "etw_config::KernelFlag",
2626        repeated,
2627        packed = "false",
2628        tag = "1"
2629    )]
2630    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
2631    /// Provides events relating to the scheduler.
2632    #[prost(string, repeated, tag = "2")]
2633    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
2634        ::prost::alloc::string::String,
2635    >,
2636    /// Provides events relating to the memory manager.
2637    #[prost(string, repeated, tag = "3")]
2638    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2639    /// Provides events relating to file I/O.
2640    #[deprecated]
2641    #[prost(string, repeated, tag = "4")]
2642    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2643    /// Events for which stacks should be collected.
2644    #[prost(string, repeated, tag = "5")]
2645    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2646    /// Provides events relating to disk I/O.
2647    #[deprecated]
2648    #[prost(string, repeated, tag = "6")]
2649    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2650    /// Provides events relating to multiple kinds of IO including disk, cache, and
2651    /// network.
2652    #[prost(string, repeated, tag = "7")]
2653    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2654        ::prost::alloc::string::String,
2655    >,
2656    /// Debug IDs for images whose stack samples should be symbolized.
2657    #[prost(message, repeated, tag = "8")]
2658    pub stack_sampling_debug_ids: ::prost::alloc::vec::Vec<etw_config::DebugId>,
2659}
2660/// Nested message and enum types in `EtwConfig`.
2661pub mod etw_config {
2662    /// A debug ID that uniquely identifies an image (i.e., executable) for
2663    /// symbolization when stack sampling.
2664    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2665    pub struct DebugId {
2666        /// The full path to the image file.
2667        #[prost(string, optional, tag = "1")]
2668        pub path: ::core::option::Option<::prost::alloc::string::String>,
2669        /// The unique identifier for the image file.
2670        #[prost(string, optional, tag = "2")]
2671        pub debug_id: ::core::option::Option<::prost::alloc::string::String>,
2672    }
2673    /// The KernelFlag represent list of kernel flags that we are intrested in.
2674    /// To get a more extensive list run 'xperf -providers k'.
2675    #[derive(
2676        Clone,
2677        Copy,
2678        Debug,
2679        PartialEq,
2680        Eq,
2681        Hash,
2682        PartialOrd,
2683        Ord,
2684        ::prost::Enumeration
2685    )]
2686    #[repr(i32)]
2687    pub enum KernelFlag {
2688        Cswitch = 0,
2689        Dispatcher = 1,
2690    }
2691    impl KernelFlag {
2692        /// String value of the enum field names used in the ProtoBuf definition.
2693        ///
2694        /// The values are not transformed in any way and thus are considered stable
2695        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2696        pub fn as_str_name(&self) -> &'static str {
2697            match self {
2698                Self::Cswitch => "CSWITCH",
2699                Self::Dispatcher => "DISPATCHER",
2700            }
2701        }
2702        /// Creates an enum from field names used in the ProtoBuf definition.
2703        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2704            match value {
2705                "CSWITCH" => Some(Self::Cswitch),
2706                "DISPATCHER" => Some(Self::Dispatcher),
2707                _ => None,
2708            }
2709        }
2710    }
2711}
2712#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2713pub struct ChromiumSystemMetricsConfig {
2714    /// Samples counters every X ms.
2715    #[prost(uint32, optional, tag = "1")]
2716    pub sampling_interval_ms: ::core::option::Option<u32>,
2717}
2718/// Next id: 38
2719#[derive(Clone, PartialEq, ::prost::Message)]
2720pub struct FtraceConfig {
2721    /// Ftrace events to record, example: "sched/sched_switch".
2722    #[prost(string, repeated, tag = "1")]
2723    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2724    /// Android-specific event categories:
2725    #[prost(string, repeated, tag = "2")]
2726    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2727    #[prost(string, repeated, tag = "3")]
2728    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2729    /// Some processes can emit data through atrace or through the perfetto SDK via
2730    /// the "track_event" data source. For these categories, the SDK will be
2731    /// preferred, if possible, for this config.
2732    #[prost(string, repeated, tag = "28")]
2733    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2734        ::prost::alloc::string::String,
2735    >,
2736    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2737    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2738    /// events for convenience (and the vendor-specific events on top).
2739    /// Introduced in: perfetto v52.
2740    #[prost(bool, optional, tag = "34")]
2741    pub atrace_userspace_only: ::core::option::Option<bool>,
2742    /// Size of each per-cpu kernel ftrace ring buffer.
2743    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2744    /// buffers cannot be resized without pausing recording in the kernel.
2745    #[prost(uint32, optional, tag = "10")]
2746    pub buffer_size_kb: ::core::option::Option<u32>,
2747    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2748    /// implementation to choose a bigger buffer size.
2749    ///
2750    /// Most configs for perfetto v43+ should simply leave both fields unset.
2751    ///
2752    /// If you need a config compatible with a range of perfetto builds and you
2753    /// used to set a non-default buffer_size_kb, consider setting both fields.
2754    /// Example:
2755    ///    buffer_size_kb: 4096
2756    ///    buffer_size_lower_bound: true
2757    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2758    /// On v43+, buffers will be at least 4 MB.
2759    /// In both cases, neither is guaranteed if there are other concurrent
2760    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2761    /// the recording in the kernel.
2762    /// Introduced in: perfetto v43.
2763    #[prost(bool, optional, tag = "27")]
2764    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2765    /// If set, specifies how often the tracing daemon reads from the kernel ring
2766    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2767    /// Leave unset unless you're fine-tuning a local config.
2768    #[prost(uint32, optional, tag = "11")]
2769    pub drain_period_ms: ::core::option::Option<u32>,
2770    /// If set, the tracing daemon will read kernel ring buffers as soon as
2771    /// they're filled past this percentage of occupancy. In other words, a value
2772    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2773    /// half-full. Not guaranteed if there are multiple concurrent tracing
2774    /// sessions.
2775    /// Currently does nothing on Linux kernels below v6.9.
2776    /// Introduced in: perfetto v48.
2777    #[prost(uint32, optional, tag = "29")]
2778    pub drain_buffer_percent: ::core::option::Option<u32>,
2779    #[prost(message, optional, tag = "12")]
2780    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2781    #[prost(message, optional, tag = "22")]
2782    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2783    /// Enables symbol name resolution against /proc/kallsyms.
2784    /// It requires that either traced_probes is running as root or that
2785    /// kptr_restrict has been manually lowered.
2786    /// It does not disclose KASLR, symbol addresses are mangled.
2787    #[prost(bool, optional, tag = "13")]
2788    pub symbolize_ksyms: ::core::option::Option<bool>,
2789    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2790    pub ksyms_mem_policy: ::core::option::Option<i32>,
2791    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2792    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2793    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2794    /// The historical context for this is the following:
2795    /// - Up to Android S (12), the rss_stat was internally throttled in its
2796    ///    kernel implementation.
2797    /// - A change introduced in the kernels after S has introduced a new
2798    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2799    ///    (hence very spammy).
2800    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2801    ///    need to deal with both cases.
2802    /// For more context: go/rss-stat-throttled.
2803    #[prost(bool, optional, tag = "15")]
2804    pub throttle_rss_stat: ::core::option::Option<bool>,
2805    /// If true, use self-describing proto messages when writing events not known
2806    /// at compile time (aka generic events). Each event bundle will have a set of
2807    /// serialised proto descriptors for events within that bundle.
2808    ///
2809    /// Default if unset:
2810    /// * v53+: true
2811    /// * before v53: false
2812    ///
2813    /// Added in: perfetto v50.
2814    #[prost(bool, optional, tag = "32")]
2815    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2816    /// If true, avoid enabling events that aren't statically known by
2817    /// traced_probes. Otherwise, the default is to emit such events as
2818    /// GenericFtraceEvent protos.
2819    /// Prefer to keep this flag at its default. This was added for Android
2820    /// tracing, where atrace categories and/or atrace HAL requested events can
2821    /// expand to events that aren't of interest to the tracing user.
2822    /// Introduced in: Android T.
2823    #[prost(bool, optional, tag = "16")]
2824    pub disable_generic_events: ::core::option::Option<bool>,
2825    /// The subset of syscalls to record. To record all syscalls, leave this unset
2826    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2827    /// * before perfetto v43, requires the config to also enable
2828    ///    raw_syscalls/sys_{enter,exit}.
2829    /// * perfetto v43+ does the right thing if you set only this field.
2830    /// Example: \["sys_read", "sys_open"\].
2831    /// Introduced in: Android U.
2832    #[prost(string, repeated, tag = "18")]
2833    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2834    /// If true, enable the "function_graph" kernel tracer that emits events
2835    /// whenever a kernel function is entered and exited
2836    /// (funcgraph_entry/funcgraph_exit).
2837    /// Notes on use:
2838    /// * Requires |symbolize_ksyms| for function name resolution.
2839    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2840    ///    set of functions, otherwise the event bandwidth will be too high for
2841    ///    practical use.
2842    /// * The data source might be rejected if there is already a concurrent
2843    ///    ftrace data source that does not use function graph itself, as we do not
2844    ///    support switching kernel tracers mid-trace.
2845    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2846    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2847    ///    "function_graph".
2848    /// Android:
2849    /// * Available only on debuggable builds.
2850    /// * Introduced in: Android U.
2851    #[prost(bool, optional, tag = "19")]
2852    pub enable_function_graph: ::core::option::Option<bool>,
2853    /// Constrains the set of functions traced when |enable_function_graph| is
2854    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2855    /// in which case all matching functions will be traced. See kernel
2856    /// documentation on ftrace "set_ftrace_filter" file for more details.
2857    /// Android:
2858    /// * Available only on debuggable builds.
2859    /// * Introduced in: Android U.
2860    #[prost(string, repeated, tag = "20")]
2861    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2862    /// If |enable_function_graph| is true, trace this set of functions *and* all
2863    /// of its callees. Supports globs. Can be set together with
2864    /// |function_filters|, in which case only callees matching the filter will be
2865    /// traced. If setting both, you most likely want all roots to also be
2866    /// included in |function_filters|.
2867    /// Android:
2868    /// * Available only on debuggable builds.
2869    /// * Introduced in: Android U.
2870    #[prost(string, repeated, tag = "21")]
2871    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2872    /// If |enable_function_graph| is true, only trace the specified
2873    /// number of calls down the stack. Sets the max_graph_depth value
2874    /// in sys/kernel/tracing/
2875    ///
2876    /// Only respected for the first tracing session that enables
2877    /// function_graph tracing.
2878    ///
2879    /// Introduced in: perfetto v51.
2880    /// Supported on: Android 25Q3+.
2881    #[prost(uint32, optional, tag = "33")]
2882    pub function_graph_max_depth: ::core::option::Option<u32>,
2883    /// Ftrace events to record, specific for kprobes and kretprobes
2884    #[prost(message, repeated, tag = "30")]
2885    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2886    /// If true, does not clear kernel ftrace buffers when starting the trace.
2887    /// This makes sense only if this is the first ftrace data source instance
2888    /// created after the daemon has been started. Can be useful for gathering boot
2889    /// traces, if ftrace has been separately configured (e.g. via kernel
2890    /// commandline).
2891    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2892    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2893    /// anything besides ftrace. Otherwise timestamps might be skewed.
2894    #[prost(bool, optional, tag = "23")]
2895    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2896    /// If true, overrides the default timestamp clock and uses a raw hardware
2897    /// based monotonic clock for getting timestamps.
2898    /// * Introduced in: Android U.
2899    #[prost(bool, optional, tag = "24")]
2900    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2901    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2902    /// for event recording. Normally, this means
2903    /// `/sys/kernel/tracing/instances/$instance_name`.
2904    ///
2905    /// Names "hyp" and "hypervisor" are reserved.
2906    ///
2907    /// The instance must already exist, the tracing daemon *will not* create it
2908    /// for you as it typically doesn't have such permissions.
2909    /// Only a subset of features is guaranteed to work with non-default instances,
2910    /// at the time of writing:
2911    ///   * ftrace_events
2912    ///   * buffer_size_kb
2913    #[prost(string, optional, tag = "25")]
2914    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2915    /// For perfetto developer use. If true and on a debuggable android build,
2916    /// serialise raw tracing pages that the implementation cannot parse.
2917    #[prost(bool, optional, tag = "31")]
2918    pub debug_ftrace_abi: ::core::option::Option<bool>,
2919    /// Filter ftrace events by Thread ID (TID).
2920    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2921    ///
2922    /// Note: this is an exclusive feature, see:
2923    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2924    ///
2925    /// Introduced in: perfetto v52.
2926    /// Supported on: Android 25Q3+.
2927    #[prost(uint32, repeated, packed = "false", tag = "35")]
2928    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2929    #[prost(message, repeated, tag = "36")]
2930    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2931    /// This mask restricts tracing to a specific set of CPUs using a
2932    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2933    /// 32-bit chunk of the CPU mask.
2934    ///
2935    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2936    ///    - Rightmost chunk: CPUs 0-31
2937    ///    - 2nd chunk from right: CPUs 32-63
2938    ///    - ...and so on.
2939    ///
2940    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2941    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2942    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2943    /// chunk0 to 0-31.
2944    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2945    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2946    ///
2947    /// Note: This is an exclusive feature, see:
2948    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2949    ///
2950    /// Introduced in: perfetto v52.
2951    /// Supported on: Android 25Q3+.
2952    #[prost(string, optional, tag = "37")]
2953    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2954    /// No-op in perfetto v28+. Name preserved because of existing references in
2955    /// textproto configs.
2956    #[deprecated]
2957    #[prost(bool, optional, tag = "14")]
2958    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2959}
2960/// Nested message and enum types in `FtraceConfig`.
2961pub mod ftrace_config {
2962    /// Configuration for compact encoding of scheduler events. When enabled (and
2963    /// recording the relevant ftrace events), specific high-volume events are
2964    /// encoded in a denser format than normal.
2965    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2966    pub struct CompactSchedConfig {
2967        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2968        /// record those events in the compact format.
2969        ///
2970        /// If the field is unset, the default is:
2971        /// * perfetto v42.0+: enabled
2972        /// * before: disabled
2973        #[prost(bool, optional, tag = "1")]
2974        pub enabled: ::core::option::Option<bool>,
2975    }
2976    /// Optional filter for "ftrace/print" events.
2977    ///
2978    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2979    /// are processed in order), its `allow` field will be used as the outcome: if
2980    /// `allow` is true, the event will be included in the trace, otherwise it will
2981    /// be discarded. If an event does not match any rule, it will be allowed by
2982    /// default (a rule with an empty prefix and allow=false, disallows everything
2983    /// by default).
2984    #[derive(Clone, PartialEq, ::prost::Message)]
2985    pub struct PrintFilter {
2986        #[prost(message, repeated, tag = "1")]
2987        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2988    }
2989    /// Nested message and enum types in `PrintFilter`.
2990    pub mod print_filter {
2991        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2992        pub struct Rule {
2993            #[prost(bool, optional, tag = "2")]
2994            pub allow: ::core::option::Option<bool>,
2995            #[prost(oneof = "rule::Match", tags = "1, 3")]
2996            pub r#match: ::core::option::Option<rule::Match>,
2997        }
2998        /// Nested message and enum types in `Rule`.
2999        pub mod rule {
3000            /// Matches an atrace message of the form:
3001            /// <type>|pid|<prefix>...
3002            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3003            pub struct AtraceMessage {
3004                #[prost(string, optional, tag = "1")]
3005                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
3006                #[prost(string, optional, tag = "2")]
3007                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
3008            }
3009            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3010            pub enum Match {
3011                /// This rule matches if `prefix` matches exactly with the beginning of
3012                /// the "ftrace/print" "buf" field.
3013                #[prost(string, tag = "1")]
3014                Prefix(::prost::alloc::string::String),
3015                /// This rule matches if the "buf" field contains an atrace-style print
3016                /// message as specified in `atrace_msg`.
3017                #[prost(message, tag = "3")]
3018                AtraceMsg(AtraceMessage),
3019            }
3020        }
3021    }
3022    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3023    pub struct KprobeEvent {
3024        /// Kernel function name to attach to, for example "fuse_file_write_iter"
3025        #[prost(string, optional, tag = "1")]
3026        pub probe: ::core::option::Option<::prost::alloc::string::String>,
3027        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
3028        pub r#type: ::core::option::Option<i32>,
3029    }
3030    /// Nested message and enum types in `KprobeEvent`.
3031    pub mod kprobe_event {
3032        #[derive(
3033            Clone,
3034            Copy,
3035            Debug,
3036            PartialEq,
3037            Eq,
3038            Hash,
3039            PartialOrd,
3040            Ord,
3041            ::prost::Enumeration
3042        )]
3043        #[repr(i32)]
3044        pub enum KprobeType {
3045            Unknown = 0,
3046            Kprobe = 1,
3047            Kretprobe = 2,
3048            Both = 3,
3049        }
3050        impl KprobeType {
3051            /// String value of the enum field names used in the ProtoBuf definition.
3052            ///
3053            /// The values are not transformed in any way and thus are considered stable
3054            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3055            pub fn as_str_name(&self) -> &'static str {
3056                match self {
3057                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
3058                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
3059                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
3060                    Self::Both => "KPROBE_TYPE_BOTH",
3061                }
3062            }
3063            /// Creates an enum from field names used in the ProtoBuf definition.
3064            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3065                match value {
3066                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
3067                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
3068                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
3069                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
3070                    _ => None,
3071                }
3072            }
3073        }
3074    }
3075    /// Tracefs options to set directly in the tracefs instance. This is a very
3076    /// niche feature since almost all of the options deal with formatting textual
3077    /// output (the /trace file), which perfetto doesn't use.
3078    ///
3079    /// The options with a known use-case:
3080    /// * event-fork: when using `tids_to_trace` above, the kernel will
3081    ///    automatically add newly spawned descendant threads to the set of TIDs.
3082    ///
3083    /// Full list of options is available at
3084    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
3085    ///
3086    /// Note: this is an exclusive feature, see:
3087    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3088    ///
3089    /// Introduced in: perfetto v52.
3090    /// Supported on: Android 25Q3+.
3091    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3092    pub struct TracefsOption {
3093        /// The name of the tracefs option as found in tracefs/trace_options (without
3094        /// the "no" prefix).
3095        #[prost(string, optional, tag = "1")]
3096        pub name: ::core::option::Option<::prost::alloc::string::String>,
3097        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
3098        pub state: ::core::option::Option<i32>,
3099    }
3100    /// Nested message and enum types in `TracefsOption`.
3101    pub mod tracefs_option {
3102        #[derive(
3103            Clone,
3104            Copy,
3105            Debug,
3106            PartialEq,
3107            Eq,
3108            Hash,
3109            PartialOrd,
3110            Ord,
3111            ::prost::Enumeration
3112        )]
3113        #[repr(i32)]
3114        pub enum State {
3115            Unknown = 0,
3116            Enabled = 1,
3117            Disabled = 2,
3118        }
3119        impl State {
3120            /// String value of the enum field names used in the ProtoBuf definition.
3121            ///
3122            /// The values are not transformed in any way and thus are considered stable
3123            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3124            pub fn as_str_name(&self) -> &'static str {
3125                match self {
3126                    Self::Unknown => "STATE_UNKNOWN",
3127                    Self::Enabled => "STATE_ENABLED",
3128                    Self::Disabled => "STATE_DISABLED",
3129                }
3130            }
3131            /// Creates an enum from field names used in the ProtoBuf definition.
3132            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3133                match value {
3134                    "STATE_UNKNOWN" => Some(Self::Unknown),
3135                    "STATE_ENABLED" => Some(Self::Enabled),
3136                    "STATE_DISABLED" => Some(Self::Disabled),
3137                    _ => None,
3138                }
3139            }
3140        }
3141    }
3142    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
3143    /// should keep the symbol map in memory (and reuse it for future tracing
3144    /// sessions) or clear it (saving memory) and re-create it on each tracing
3145    /// session (wasting cpu and wall time).
3146    /// The tradeoff is roughly:
3147    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
3148    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
3149    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
3150    #[derive(
3151        Clone,
3152        Copy,
3153        Debug,
3154        PartialEq,
3155        Eq,
3156        Hash,
3157        PartialOrd,
3158        Ord,
3159        ::prost::Enumeration
3160    )]
3161    #[repr(i32)]
3162    pub enum KsymsMemPolicy {
3163        KsymsUnspecified = 0,
3164        KsymsCleanupOnStop = 1,
3165        KsymsRetain = 2,
3166    }
3167    impl KsymsMemPolicy {
3168        /// String value of the enum field names used in the ProtoBuf definition.
3169        ///
3170        /// The values are not transformed in any way and thus are considered stable
3171        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3172        pub fn as_str_name(&self) -> &'static str {
3173            match self {
3174                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
3175                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
3176                Self::KsymsRetain => "KSYMS_RETAIN",
3177            }
3178        }
3179        /// Creates an enum from field names used in the ProtoBuf definition.
3180        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3181            match value {
3182                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
3183                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
3184                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
3185                _ => None,
3186            }
3187        }
3188    }
3189}
3190#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3191pub struct FrozenFtraceConfig {
3192    /// The instance name which stores the previous boot ftrace data. Required.
3193    #[prost(string, optional, tag = "1")]
3194    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
3195}
3196#[derive(Clone, PartialEq, ::prost::Message)]
3197pub struct GpuCounterConfig {
3198    /// Desired sampling interval for counters.
3199    #[prost(uint64, optional, tag = "1")]
3200    pub counter_period_ns: ::core::option::Option<u64>,
3201    /// List of counter IDs to be sampled.
3202    #[prost(uint32, repeated, packed = "false", tag = "2")]
3203    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
3204    /// List of counter names to be sampled. Requires producer support; check
3205    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
3206    /// Glob patterns may be used to match multiple counters by name; check
3207    /// GpuCounterDescriptor.supports_counter_name_globs for support.
3208    #[prost(string, repeated, tag = "6")]
3209    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3210    /// Fix gpu clock rate during trace session.
3211    #[prost(bool, optional, tag = "4")]
3212    pub fix_gpu_clock: ::core::option::Option<bool>,
3213    /// Sample counters by instrumenting command buffers.
3214    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
3215    pub instrumented_sampling_mode: ::core::option::Option<
3216        gpu_counter_config::InstrumentedSamplingMode,
3217    >,
3218}
3219/// Nested message and enum types in `GpuCounterConfig`.
3220pub mod gpu_counter_config {
3221    /// Configuration for sampling counters by instrumenting command buffers.
3222    ///
3223    /// When instrumented_sampling_config is used (instead of the
3224    /// instrumented_sampling bool), the following steps determine whether
3225    /// instrumented counters are enabled for a given GPU activity:
3226    ///
3227    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
3228    ///     activity must match at least one filter. If empty, all activities
3229    ///     pass this step.
3230    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
3231    ///     activity must fall within a matching TX range. Activities in TX
3232    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
3233    ///     take precedence over includes). If both are empty, all activities
3234    ///     pass this step.
3235    /// 3. Range-based sampling: If activity_ranges is non-empty, only
3236    ///     activities within the specified skip/count ranges are instrumented.
3237    ///     If empty, all activities that passed the previous steps are
3238    ///     instrumented.
3239    #[derive(Clone, PartialEq, ::prost::Message)]
3240    pub struct InstrumentedSamplingConfig {
3241        /// GPU activity name filters. An activity matches if it matches any filter.
3242        #[prost(message, repeated, tag = "3")]
3243        pub activity_name_filters: ::prost::alloc::vec::Vec<
3244            instrumented_sampling_config::ActivityNameFilter,
3245        >,
3246        /// Glob patterns to use for including GPU activities in TX ranges. TX
3247        /// ranges are in-process annotations that mark different sections of GPU
3248        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
3249        /// activity is included if any range in its nesting hierarchy matches.
3250        /// Only activities that fall within a matching TX range will be
3251        /// instrumented.
3252        #[prost(string, repeated, tag = "6")]
3253        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
3254            ::prost::alloc::string::String,
3255        >,
3256        /// Glob patterns to use for excluding GPU activities from TX ranges.
3257        /// TX ranges can be nested, and an activity is excluded if any range
3258        /// in its nesting hierarchy matches. Excludes take precedence over
3259        /// includes.
3260        #[prost(string, repeated, tag = "7")]
3261        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
3262            ::prost::alloc::string::String,
3263        >,
3264        /// Ranges of GPU activities to instrument. Applied after activity name
3265        /// and TX range filters. If empty, all activities that passed the
3266        /// previous filters are instrumented.
3267        #[prost(message, repeated, tag = "5")]
3268        pub activity_ranges: ::prost::alloc::vec::Vec<
3269            instrumented_sampling_config::ActivityRange,
3270        >,
3271    }
3272    /// Nested message and enum types in `InstrumentedSamplingConfig`.
3273    pub mod instrumented_sampling_config {
3274        /// Filters GPU activities by name. Each filter specifies a glob pattern
3275        /// and the basis for matching (mangled or demangled kernel name).
3276        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3277        pub struct ActivityNameFilter {
3278            /// required. Glob pattern to use for GPU activity name filtering.
3279            #[prost(string, optional, tag = "1")]
3280            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
3281            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
3282            /// specified.
3283            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
3284            pub name_base: ::core::option::Option<i32>,
3285        }
3286        /// Nested message and enum types in `ActivityNameFilter`.
3287        pub mod activity_name_filter {
3288            #[derive(
3289                Clone,
3290                Copy,
3291                Debug,
3292                PartialEq,
3293                Eq,
3294                Hash,
3295                PartialOrd,
3296                Ord,
3297                ::prost::Enumeration
3298            )]
3299            #[repr(i32)]
3300            pub enum NameBase {
3301                /// Match against the mangled (compiler-encoded) kernel name.
3302                /// Example: for a kernel whose demangled name is
3303                /// "matmul(float*,int,int)", the mangled name might be
3304                /// "_Z6matmulPfii". The glob pattern is matched against this
3305                /// mangled form.
3306                MangledKernelName = 0,
3307                /// Match against the fully demangled kernel name, including
3308                /// parameters, templates, and qualifiers.
3309                /// Example: "matmul(float*,int,int)". The glob pattern is
3310                /// matched against this full demangled form.
3311                DemangledKernelName = 1,
3312                /// Match against only the function name portion of the
3313                /// demangled kernel name, without parameters, templates,
3314                /// return types, or namespaces.
3315                /// Example: "matmul". The glob pattern is matched against
3316                /// just the bare function name.
3317                FunctionName = 2,
3318            }
3319            impl NameBase {
3320                /// String value of the enum field names used in the ProtoBuf definition.
3321                ///
3322                /// The values are not transformed in any way and thus are considered stable
3323                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3324                pub fn as_str_name(&self) -> &'static str {
3325                    match self {
3326                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
3327                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
3328                        Self::FunctionName => "FUNCTION_NAME",
3329                    }
3330                }
3331                /// Creates an enum from field names used in the ProtoBuf definition.
3332                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3333                    match value {
3334                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
3335                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
3336                        "FUNCTION_NAME" => Some(Self::FunctionName),
3337                        _ => None,
3338                    }
3339                }
3340            }
3341        }
3342        /// Defines a range of GPU activities to instrument.
3343        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3344        pub struct ActivityRange {
3345            /// Number of GPU activities to skip before starting to instrument
3346            /// command buffers. Defaults to 0 if not specified.
3347            #[prost(uint32, optional, tag = "1")]
3348            pub skip: ::core::option::Option<u32>,
3349            /// Limit for the number of GPU activities to sample counters for by
3350            /// instrumenting command buffers. Defaults to UINT32_MAX (all
3351            /// remaining activities) if not specified.
3352            #[prost(uint32, optional, tag = "2")]
3353            pub count: ::core::option::Option<u32>,
3354        }
3355    }
3356    /// Sample counters by instrumenting command buffers.
3357    #[derive(Clone, PartialEq, ::prost::Oneof)]
3358    pub enum InstrumentedSamplingMode {
3359        #[prost(bool, tag = "3")]
3360        InstrumentedSampling(bool),
3361        #[prost(message, tag = "5")]
3362        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
3363    }
3364}
3365#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3366pub struct VulkanMemoryConfig {
3367    /// Tracking driver memory usage events
3368    #[prost(bool, optional, tag = "1")]
3369    pub track_driver_memory_usage: ::core::option::Option<bool>,
3370    /// Tracking device memory usage events
3371    #[prost(bool, optional, tag = "2")]
3372    pub track_device_memory_usage: ::core::option::Option<bool>,
3373}
3374#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3375pub struct GpuRenderStagesConfig {
3376    /// Enable to separate the color and depth/stencil load and store stages
3377    /// into a separate stages. If disabled, the depth/stencil load and store
3378    /// stages will be combined.  Disabled by default. This option has no effect if
3379    /// Low Overhead mode is enabled.
3380    #[prost(bool, optional, tag = "1")]
3381    pub full_loadstore: ::core::option::Option<bool>,
3382    /// Use the low overhead mode for traces. In this mode render stages are
3383    /// combined into a single workload stage. This provides less granular data but
3384    /// induces minimal GPU overhead. Disabled by default.
3385    #[prost(bool, optional, tag = "2")]
3386    pub low_overhead: ::core::option::Option<bool>,
3387    /// Trace metrics to capture for each render stage
3388    #[prost(string, repeated, tag = "3")]
3389    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3390}
3391/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
3392/// systems.
3393#[derive(Clone, PartialEq, ::prost::Message)]
3394pub struct InodeFileConfig {
3395    /// How long to pause between batches.
3396    #[prost(uint32, optional, tag = "1")]
3397    pub scan_interval_ms: ::core::option::Option<u32>,
3398    /// How long to wait before the first scan in order to accumulate inodes.
3399    #[prost(uint32, optional, tag = "2")]
3400    pub scan_delay_ms: ::core::option::Option<u32>,
3401    /// How many inodes to scan in one batch.
3402    #[prost(uint32, optional, tag = "3")]
3403    pub scan_batch_size: ::core::option::Option<u32>,
3404    /// Do not scan for inodes not found in the static map.
3405    #[prost(bool, optional, tag = "4")]
3406    pub do_not_scan: ::core::option::Option<bool>,
3407    /// If non-empty, only scan inodes corresponding to block devices named in
3408    /// this list.
3409    #[prost(string, repeated, tag = "5")]
3410    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3411    /// When encountering an inode belonging to a block device corresponding
3412    /// to one of the mount points in this map, scan its scan_roots instead.
3413    #[prost(message, repeated, tag = "6")]
3414    pub mount_point_mapping: ::prost::alloc::vec::Vec<
3415        inode_file_config::MountPointMappingEntry,
3416    >,
3417}
3418/// Nested message and enum types in `InodeFileConfig`.
3419pub mod inode_file_config {
3420    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3421    pub struct MountPointMappingEntry {
3422        #[prost(string, optional, tag = "1")]
3423        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
3424        #[prost(string, repeated, tag = "2")]
3425        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3426    }
3427}
3428#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3429pub struct ConsoleConfig {
3430    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
3431    pub output: ::core::option::Option<i32>,
3432    #[prost(bool, optional, tag = "2")]
3433    pub enable_colors: ::core::option::Option<bool>,
3434}
3435/// Nested message and enum types in `ConsoleConfig`.
3436pub mod console_config {
3437    #[derive(
3438        Clone,
3439        Copy,
3440        Debug,
3441        PartialEq,
3442        Eq,
3443        Hash,
3444        PartialOrd,
3445        Ord,
3446        ::prost::Enumeration
3447    )]
3448    #[repr(i32)]
3449    pub enum Output {
3450        Unspecified = 0,
3451        Stdout = 1,
3452        Stderr = 2,
3453    }
3454    impl Output {
3455        /// String value of the enum field names used in the ProtoBuf definition.
3456        ///
3457        /// The values are not transformed in any way and thus are considered stable
3458        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3459        pub fn as_str_name(&self) -> &'static str {
3460            match self {
3461                Self::Unspecified => "OUTPUT_UNSPECIFIED",
3462                Self::Stdout => "OUTPUT_STDOUT",
3463                Self::Stderr => "OUTPUT_STDERR",
3464            }
3465        }
3466        /// Creates an enum from field names used in the ProtoBuf definition.
3467        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3468            match value {
3469                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
3470                "OUTPUT_STDOUT" => Some(Self::Stdout),
3471                "OUTPUT_STDERR" => Some(Self::Stderr),
3472                _ => None,
3473            }
3474        }
3475    }
3476}
3477/// Configuration for trace packet interception. Used for diverting trace data to
3478/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
3479/// Perfetto SDK.
3480#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3481pub struct InterceptorConfig {
3482    /// Matches the name given to RegisterInterceptor().
3483    #[prost(string, optional, tag = "1")]
3484    pub name: ::core::option::Option<::prost::alloc::string::String>,
3485    #[prost(message, optional, tag = "100")]
3486    pub console_config: ::core::option::Option<ConsoleConfig>,
3487}
3488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3489pub struct AndroidPowerConfig {
3490    #[prost(uint32, optional, tag = "1")]
3491    pub battery_poll_ms: ::core::option::Option<u32>,
3492    #[prost(
3493        enumeration = "android_power_config::BatteryCounters",
3494        repeated,
3495        packed = "false",
3496        tag = "2"
3497    )]
3498    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
3499    /// Where available enables per-power-rail measurements.
3500    #[prost(bool, optional, tag = "3")]
3501    pub collect_power_rails: ::core::option::Option<bool>,
3502    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
3503    /// Available from Android S.
3504    #[prost(bool, optional, tag = "4")]
3505    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
3506    /// Provides a breakdown of time in state for various subsystems.
3507    /// Available from Android U.
3508    #[prost(bool, optional, tag = "5")]
3509    pub collect_entity_state_residency: ::core::option::Option<bool>,
3510}
3511/// Nested message and enum types in `AndroidPowerConfig`.
3512pub mod android_power_config {
3513    #[derive(
3514        Clone,
3515        Copy,
3516        Debug,
3517        PartialEq,
3518        Eq,
3519        Hash,
3520        PartialOrd,
3521        Ord,
3522        ::prost::Enumeration
3523    )]
3524    #[repr(i32)]
3525    pub enum BatteryCounters {
3526        BatteryCounterUnspecified = 0,
3527        /// Coulomb counter.
3528        BatteryCounterCharge = 1,
3529        /// Charge (%).
3530        BatteryCounterCapacityPercent = 2,
3531        /// Instantaneous current.
3532        BatteryCounterCurrent = 3,
3533        /// Avg current.
3534        BatteryCounterCurrentAvg = 4,
3535        /// Instantaneous voltage.
3536        BatteryCounterVoltage = 5,
3537    }
3538    impl BatteryCounters {
3539        /// String value of the enum field names used in the ProtoBuf definition.
3540        ///
3541        /// The values are not transformed in any way and thus are considered stable
3542        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3543        pub fn as_str_name(&self) -> &'static str {
3544            match self {
3545                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
3546                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
3547                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
3548                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
3549                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
3550                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
3551            }
3552        }
3553        /// Creates an enum from field names used in the ProtoBuf definition.
3554        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3555            match value {
3556                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
3557                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
3558                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
3559                    Some(Self::BatteryCounterCapacityPercent)
3560                }
3561                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
3562                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
3563                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
3564                _ => None,
3565            }
3566        }
3567    }
3568}
3569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3570pub struct ProtoVmConfig {
3571    #[prost(uint32, optional, tag = "1")]
3572    pub memory_limit_kb: ::core::option::Option<u32>,
3573}
3574/// This enum is obtained by post-processing
3575/// AOSP/frameworks/proto_logging/stats/atoms.proto through
3576/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
3577/// enum value for each proto field defined in the upstream atoms.proto.
3578#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3579#[repr(i32)]
3580pub enum AtomId {
3581    AtomUnspecified = 0,
3582    AtomBleScanStateChanged = 2,
3583    AtomProcessStateChanged = 3,
3584    AtomBleScanResultReceived = 4,
3585    AtomSensorStateChanged = 5,
3586    AtomGpsScanStateChanged = 6,
3587    AtomSyncStateChanged = 7,
3588    AtomScheduledJobStateChanged = 8,
3589    AtomScreenBrightnessChanged = 9,
3590    AtomWakelockStateChanged = 10,
3591    AtomLongPartialWakelockStateChanged = 11,
3592    AtomMobileRadioPowerStateChanged = 12,
3593    AtomWifiRadioPowerStateChanged = 13,
3594    AtomActivityManagerSleepStateChanged = 14,
3595    AtomMemoryFactorStateChanged = 15,
3596    AtomExcessiveCpuUsageReported = 16,
3597    AtomCachedKillReported = 17,
3598    AtomProcessMemoryStatReported = 18,
3599    AtomLauncherEvent = 19,
3600    AtomBatterySaverModeStateChanged = 20,
3601    AtomDeviceIdleModeStateChanged = 21,
3602    AtomDeviceIdlingModeStateChanged = 22,
3603    AtomAudioStateChanged = 23,
3604    AtomMediaCodecStateChanged = 24,
3605    AtomCameraStateChanged = 25,
3606    AtomFlashlightStateChanged = 26,
3607    AtomUidProcessStateChanged = 27,
3608    AtomProcessLifeCycleStateChanged = 28,
3609    AtomScreenStateChanged = 29,
3610    AtomBatteryLevelChanged = 30,
3611    AtomChargingStateChanged = 31,
3612    AtomPluggedStateChanged = 32,
3613    AtomInteractiveStateChanged = 33,
3614    AtomTouchEventReported = 34,
3615    AtomWakeupAlarmOccurred = 35,
3616    AtomKernelWakeupReported = 36,
3617    AtomWifiLockStateChanged = 37,
3618    AtomWifiSignalStrengthChanged = 38,
3619    AtomWifiScanStateChanged = 39,
3620    AtomPhoneSignalStrengthChanged = 40,
3621    AtomSettingChanged = 41,
3622    AtomActivityForegroundStateChanged = 42,
3623    AtomIsolatedUidChanged = 43,
3624    AtomPacketWakeupOccurred = 44,
3625    AtomWallClockTimeShifted = 45,
3626    AtomAnomalyDetected = 46,
3627    AtomAppBreadcrumbReported = 47,
3628    AtomAppStartOccurred = 48,
3629    AtomAppStartCanceled = 49,
3630    AtomAppStartFullyDrawn = 50,
3631    AtomLmkKillOccurred = 51,
3632    AtomPictureInPictureStateChanged = 52,
3633    AtomWifiMulticastLockStateChanged = 53,
3634    AtomAppStartMemoryStateCaptured = 55,
3635    AtomShutdownSequenceReported = 56,
3636    AtomBootSequenceReported = 57,
3637    AtomOverlayStateChanged = 59,
3638    AtomForegroundServiceStateChanged = 60,
3639    AtomCallStateChanged = 61,
3640    AtomKeyguardStateChanged = 62,
3641    AtomKeyguardBouncerStateChanged = 63,
3642    AtomKeyguardBouncerPasswordEntered = 64,
3643    AtomAppDied = 65,
3644    AtomResourceConfigurationChanged = 66,
3645    AtomBluetoothEnabledStateChanged = 67,
3646    AtomBluetoothConnectionStateChanged = 68,
3647    AtomGpsSignalQualityChanged = 69,
3648    AtomUsbConnectorStateChanged = 70,
3649    AtomSpeakerImpedanceReported = 71,
3650    AtomHardwareFailed = 72,
3651    AtomPhysicalDropDetected = 73,
3652    AtomChargeCyclesReported = 74,
3653    AtomMobileConnectionStateChanged = 75,
3654    AtomMobileRadioTechnologyChanged = 76,
3655    AtomUsbDeviceAttached = 77,
3656    AtomAppCrashOccurred = 78,
3657    AtomAnrOccurred = 79,
3658    AtomWtfOccurred = 80,
3659    AtomLowMemReported = 81,
3660    AtomGenericAtom = 82,
3661    AtomVibratorStateChanged = 84,
3662    AtomDeferredJobStatsReported = 85,
3663    AtomThermalThrottling = 86,
3664    AtomBiometricAcquired = 87,
3665    AtomBiometricAuthenticated = 88,
3666    AtomBiometricErrorOccurred = 89,
3667    AtomUiEventReported = 90,
3668    AtomBatteryHealthSnapshot = 91,
3669    AtomSlowIo = 92,
3670    AtomBatteryCausedShutdown = 93,
3671    AtomPhoneServiceStateChanged = 94,
3672    AtomPhoneStateChanged = 95,
3673    AtomUserRestrictionChanged = 96,
3674    AtomSettingsUiChanged = 97,
3675    AtomConnectivityStateChanged = 98,
3676    AtomServiceStateChanged = 99,
3677    AtomServiceLaunchReported = 100,
3678    AtomFlagFlipUpdateOccurred = 101,
3679    AtomBinaryPushStateChanged = 102,
3680    AtomDevicePolicyEvent = 103,
3681    AtomDocsUiFileOpCanceled = 104,
3682    AtomDocsUiFileOpCopyMoveModeReported = 105,
3683    AtomDocsUiFileOpFailure = 106,
3684    AtomDocsUiProviderFileOp = 107,
3685    AtomDocsUiInvalidScopedAccessRequest = 108,
3686    AtomDocsUiLaunchReported = 109,
3687    AtomDocsUiRootVisited = 110,
3688    AtomDocsUiStartupMs = 111,
3689    AtomDocsUiUserActionReported = 112,
3690    AtomWifiEnabledStateChanged = 113,
3691    AtomWifiRunningStateChanged = 114,
3692    AtomAppCompacted = 115,
3693    AtomNetworkDnsEventReported = 116,
3694    AtomDocsUiPickerLaunchedFromReported = 117,
3695    AtomDocsUiPickResultReported = 118,
3696    AtomDocsUiSearchModeReported = 119,
3697    AtomDocsUiSearchTypeReported = 120,
3698    AtomDataStallEvent = 121,
3699    AtomRescuePartyResetReported = 122,
3700    AtomSignedConfigReported = 123,
3701    AtomGnssNiEventReported = 124,
3702    AtomBluetoothLinkLayerConnectionEvent = 125,
3703    AtomBluetoothAclConnectionStateChanged = 126,
3704    AtomBluetoothScoConnectionStateChanged = 127,
3705    AtomAppDowngraded = 128,
3706    AtomAppOptimizedAfterDowngraded = 129,
3707    AtomLowStorageStateChanged = 130,
3708    AtomGnssNfwNotificationReported = 131,
3709    AtomGnssConfigurationReported = 132,
3710    AtomUsbPortOverheatEventReported = 133,
3711    AtomNfcErrorOccurred = 134,
3712    AtomNfcStateChanged = 135,
3713    AtomNfcBeamOccurred = 136,
3714    AtomNfcCardemulationOccurred = 137,
3715    AtomNfcTagOccurred = 138,
3716    AtomNfcHceTransactionOccurred = 139,
3717    AtomSeStateChanged = 140,
3718    AtomSeOmapiReported = 141,
3719    AtomBroadcastDispatchLatencyReported = 142,
3720    AtomAttentionManagerServiceResultReported = 143,
3721    AtomAdbConnectionChanged = 144,
3722    AtomSpeechDspStatReported = 145,
3723    AtomUsbContaminantReported = 146,
3724    AtomWatchdogRollbackOccurred = 147,
3725    AtomBiometricSystemHealthIssueDetected = 148,
3726    AtomBubbleUiChanged = 149,
3727    AtomScheduledJobConstraintChanged = 150,
3728    AtomBluetoothActiveDeviceChanged = 151,
3729    AtomBluetoothA2dpPlaybackStateChanged = 152,
3730    AtomBluetoothA2dpCodecConfigChanged = 153,
3731    AtomBluetoothA2dpCodecCapabilityChanged = 154,
3732    AtomBluetoothA2dpAudioUnderrunReported = 155,
3733    AtomBluetoothA2dpAudioOverrunReported = 156,
3734    AtomBluetoothDeviceRssiReported = 157,
3735    AtomBluetoothDeviceFailedContactCounterReported = 158,
3736    AtomBluetoothDeviceTxPowerLevelReported = 159,
3737    AtomBluetoothHciTimeoutReported = 160,
3738    AtomBluetoothQualityReportReported = 161,
3739    AtomBluetoothDeviceInfoReported = 162,
3740    AtomBluetoothRemoteVersionInfoReported = 163,
3741    AtomBluetoothSdpAttributeReported = 164,
3742    AtomBluetoothBondStateChanged = 165,
3743    AtomBluetoothClassicPairingEventReported = 166,
3744    AtomBluetoothSmpPairingEventReported = 167,
3745    AtomScreenTimeoutExtensionReported = 168,
3746    AtomProcessStartTime = 169,
3747    AtomPermissionGrantRequestResultReported = 170,
3748    AtomBluetoothSocketConnectionStateChanged = 171,
3749    AtomDeviceIdentifierAccessDenied = 172,
3750    AtomBubbleDeveloperErrorReported = 173,
3751    AtomAssistGestureStageReported = 174,
3752    AtomAssistGestureFeedbackReported = 175,
3753    AtomAssistGestureProgressReported = 176,
3754    AtomTouchGestureClassified = 177,
3755    AtomHiddenApiUsed = 178,
3756    AtomStyleUiChanged = 179,
3757    AtomPrivacyIndicatorsInteracted = 180,
3758    AtomAppInstallOnExternalStorageReported = 181,
3759    AtomNetworkStackReported = 182,
3760    AtomAppMovedStorageReported = 183,
3761    AtomBiometricEnrolled = 184,
3762    AtomSystemServerWatchdogOccurred = 185,
3763    AtomTombStoneOccurred = 186,
3764    AtomBluetoothClassOfDeviceReported = 187,
3765    AtomIntelligenceEventReported = 188,
3766    AtomThermalThrottlingSeverityStateChanged = 189,
3767    AtomRoleRequestResultReported = 190,
3768    AtomMediametricsAudiopolicyReported = 191,
3769    AtomMediametricsAudiorecordReported = 192,
3770    AtomMediametricsAudiothreadReported = 193,
3771    AtomMediametricsAudiotrackReported = 194,
3772    AtomMediametricsCodecReported = 195,
3773    AtomMediametricsDrmWidevineReported = 196,
3774    AtomMediametricsExtractorReported = 197,
3775    AtomMediametricsMediadrmReported = 198,
3776    AtomMediametricsNuplayerReported = 199,
3777    AtomMediametricsRecorderReported = 200,
3778    AtomMediametricsDrmmanagerReported = 201,
3779    AtomCarPowerStateChanged = 203,
3780    AtomGarageModeInfo = 204,
3781    AtomTestAtomReported = 205,
3782    AtomContentCaptureCallerMismatchReported = 206,
3783    AtomContentCaptureServiceEvents = 207,
3784    AtomContentCaptureSessionEvents = 208,
3785    AtomContentCaptureFlushed = 209,
3786    AtomLocationManagerApiUsageReported = 210,
3787    AtomReviewPermissionsFragmentResultReported = 211,
3788    AtomRuntimePermissionsUpgradeResult = 212,
3789    AtomGrantPermissionsActivityButtonActions = 213,
3790    AtomLocationAccessCheckNotificationAction = 214,
3791    AtomAppPermissionFragmentActionReported = 215,
3792    AtomAppPermissionFragmentViewed = 216,
3793    AtomAppPermissionsFragmentViewed = 217,
3794    AtomPermissionAppsFragmentViewed = 218,
3795    AtomTextSelectionEvent = 219,
3796    AtomTextLinkifyEvent = 220,
3797    AtomConversationActionsEvent = 221,
3798    AtomLanguageDetectionEvent = 222,
3799    AtomExclusionRectStateChanged = 223,
3800    AtomBackGestureReportedReported = 224,
3801    AtomUpdateEngineUpdateAttemptReported = 225,
3802    AtomUpdateEngineSuccessfulUpdateReported = 226,
3803    AtomCameraActionEvent = 227,
3804    AtomAppCompatibilityChangeReported = 228,
3805    AtomPerfettoUploaded = 229,
3806    AtomVmsClientConnectionStateChanged = 230,
3807    AtomMediaProviderScanOccurred = 233,
3808    AtomMediaContentDeleted = 234,
3809    AtomMediaProviderPermissionRequested = 235,
3810    AtomMediaProviderSchemaChanged = 236,
3811    AtomMediaProviderIdleMaintenanceFinished = 237,
3812    AtomRebootEscrowRecoveryReported = 238,
3813    AtomBootTimeEventDurationReported = 239,
3814    AtomBootTimeEventElapsedTimeReported = 240,
3815    AtomBootTimeEventUtcTimeReported = 241,
3816    AtomBootTimeEventErrorCodeReported = 242,
3817    AtomUserspaceRebootReported = 243,
3818    AtomNotificationReported = 244,
3819    AtomNotificationPanelReported = 245,
3820    AtomNotificationChannelModified = 246,
3821    AtomIntegrityCheckResultReported = 247,
3822    AtomIntegrityRulesPushed = 248,
3823    AtomCbMessageReported = 249,
3824    AtomCbMessageError = 250,
3825    AtomWifiHealthStatReported = 251,
3826    AtomWifiFailureStatReported = 252,
3827    AtomWifiConnectionResultReported = 253,
3828    AtomAppFreezeChanged = 254,
3829    AtomSnapshotMergeReported = 255,
3830    AtomForegroundServiceAppOpSessionEnded = 256,
3831    AtomDisplayJankReported = 257,
3832    AtomAppStandbyBucketChanged = 258,
3833    AtomSharesheetStarted = 259,
3834    AtomRankingSelected = 260,
3835    AtomTvsettingsUiInteracted = 261,
3836    AtomLauncherSnapshot = 262,
3837    AtomPackageInstallerV2Reported = 263,
3838    AtomUserLifecycleJourneyReported = 264,
3839    AtomUserLifecycleEventOccurred = 265,
3840    AtomAccessibilityShortcutReported = 266,
3841    AtomAccessibilityServiceReported = 267,
3842    AtomDocsUiDragAndDropReported = 268,
3843    AtomAppUsageEventOccurred = 269,
3844    AtomAutoRevokeNotificationClicked = 270,
3845    AtomAutoRevokeFragmentAppViewed = 271,
3846    AtomAutoRevokedAppInteraction = 272,
3847    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
3848    AtomEvsUsageStatsReported = 274,
3849    AtomAudioPowerUsageDataReported = 275,
3850    AtomTvTunerStateChanged = 276,
3851    AtomMediaoutputOpSwitchReported = 277,
3852    AtomCbMessageFiltered = 278,
3853    AtomTvTunerDvrStatus = 279,
3854    AtomTvCasSessionOpenStatus = 280,
3855    AtomAssistantInvocationReported = 281,
3856    AtomDisplayWakeReported = 282,
3857    AtomCarUserHalModifyUserRequestReported = 283,
3858    AtomCarUserHalModifyUserResponseReported = 284,
3859    AtomCarUserHalPostSwitchResponseReported = 285,
3860    AtomCarUserHalInitialUserInfoRequestReported = 286,
3861    AtomCarUserHalInitialUserInfoResponseReported = 287,
3862    AtomCarUserHalUserAssociationRequestReported = 288,
3863    AtomCarUserHalSetUserAssociationResponseReported = 289,
3864    AtomNetworkIpProvisioningReported = 290,
3865    AtomNetworkDhcpRenewReported = 291,
3866    AtomNetworkValidationReported = 292,
3867    AtomNetworkStackQuirkReported = 293,
3868    AtomMediametricsAudiorecorddeviceusageReported = 294,
3869    AtomMediametricsAudiothreaddeviceusageReported = 295,
3870    AtomMediametricsAudiotrackdeviceusageReported = 296,
3871    AtomMediametricsAudiodeviceconnectionReported = 297,
3872    AtomBlobCommitted = 298,
3873    AtomBlobLeased = 299,
3874    AtomBlobOpened = 300,
3875    AtomContactsProviderStatusReported = 301,
3876    AtomKeystoreKeyEventReported = 302,
3877    AtomNetworkTetheringReported = 303,
3878    AtomImeTouchReported = 304,
3879    AtomUiInteractionFrameInfoReported = 305,
3880    AtomUiActionLatencyReported = 306,
3881    AtomWifiDisconnectReported = 307,
3882    AtomWifiConnectionStateChanged = 308,
3883    AtomHdmiCecActiveSourceChanged = 309,
3884    AtomHdmiCecMessageReported = 310,
3885    AtomAirplaneMode = 311,
3886    AtomModemRestart = 312,
3887    AtomCarrierIdMismatchReported = 313,
3888    AtomCarrierIdTableUpdated = 314,
3889    AtomDataStallRecoveryReported = 315,
3890    AtomMediametricsMediaparserReported = 316,
3891    AtomTlsHandshakeReported = 317,
3892    AtomTextClassifierApiUsageReported = 318,
3893    AtomCarWatchdogKillStatsReported = 319,
3894    AtomMediametricsPlaybackReported = 320,
3895    AtomMediaNetworkInfoChanged = 321,
3896    AtomMediaPlaybackStateChanged = 322,
3897    AtomMediaPlaybackErrorReported = 323,
3898    AtomMediaPlaybackTrackChanged = 324,
3899    AtomWifiScanReported = 325,
3900    AtomWifiPnoScanReported = 326,
3901    AtomTifTuneChanged = 327,
3902    AtomAutoRotateReported = 328,
3903    AtomPerfettoTrigger = 329,
3904    AtomTranscodingData = 330,
3905    AtomImsServiceEntitlementUpdated = 331,
3906    AtomDeviceRotated = 333,
3907    AtomSimSpecificSettingsRestored = 334,
3908    AtomTextClassifierDownloadReported = 335,
3909    AtomPinStorageEvent = 336,
3910    AtomFaceDownReported = 337,
3911    AtomBluetoothHalCrashReasonReported = 338,
3912    AtomRebootEscrowPreparationReported = 339,
3913    AtomRebootEscrowLskfCaptureReported = 340,
3914    AtomRebootEscrowRebootReported = 341,
3915    AtomBinderLatencyReported = 342,
3916    AtomMediametricsAaudiostreamReported = 343,
3917    AtomMediaTranscodingSessionEnded = 344,
3918    AtomMagnificationUsageReported = 345,
3919    AtomMagnificationModeWithImeOnReported = 346,
3920    AtomAppSearchCallStatsReported = 347,
3921    AtomAppSearchPutDocumentStatsReported = 348,
3922    AtomDeviceControlChanged = 349,
3923    AtomDeviceStateChanged = 350,
3924    AtomInputdeviceRegistered = 351,
3925    AtomSmartspaceCardReported = 352,
3926    AtomAuthPromptAuthenticateInvoked = 353,
3927    AtomAuthManagerCanAuthenticateInvoked = 354,
3928    AtomAuthEnrollActionInvoked = 355,
3929    AtomAuthDeprecatedApiUsed = 356,
3930    AtomUnattendedRebootOccurred = 357,
3931    AtomLongRebootBlockingReported = 358,
3932    AtomLocationTimeZoneProviderStateChanged = 359,
3933    AtomFdtrackEventOccurred = 364,
3934    AtomTimeoutAutoExtendedReported = 365,
3935    AtomAlarmBatchDelivered = 367,
3936    AtomAlarmScheduled = 368,
3937    AtomCarWatchdogIoOveruseStatsReported = 369,
3938    AtomUserLevelHibernationStateChanged = 370,
3939    AtomAppSearchInitializeStatsReported = 371,
3940    AtomAppSearchQueryStatsReported = 372,
3941    AtomAppProcessDied = 373,
3942    AtomNetworkIpReachabilityMonitorReported = 374,
3943    AtomSlowInputEventReported = 375,
3944    AtomAnrOccurredProcessingStarted = 376,
3945    AtomAppSearchRemoveStatsReported = 377,
3946    AtomMediaCodecReported = 378,
3947    AtomPermissionUsageFragmentInteraction = 379,
3948    AtomPermissionDetailsInteraction = 380,
3949    AtomPrivacySensorToggleInteraction = 381,
3950    AtomPrivacyToggleDialogInteraction = 382,
3951    AtomAppSearchOptimizeStatsReported = 383,
3952    AtomNonA11yToolServiceWarningReport = 384,
3953    AtomAppCompatStateChanged = 386,
3954    AtomSizeCompatRestartButtonEventReported = 387,
3955    AtomSplitscreenUiChanged = 388,
3956    AtomNetworkDnsHandshakeReported = 389,
3957    AtomBluetoothCodePathCounter = 390,
3958    AtomBluetoothLeBatchScanReportDelay = 392,
3959    AtomAccessibilityFloatingMenuUiChanged = 393,
3960    AtomNeuralnetworksCompilationCompleted = 394,
3961    AtomNeuralnetworksExecutionCompleted = 395,
3962    AtomNeuralnetworksCompilationFailed = 396,
3963    AtomNeuralnetworksExecutionFailed = 397,
3964    AtomContextHubBooted = 398,
3965    AtomContextHubRestarted = 399,
3966    AtomContextHubLoadedNanoappSnapshotReported = 400,
3967    AtomChreCodeDownloadTransacted = 401,
3968    AtomUwbSessionInited = 402,
3969    AtomUwbSessionClosed = 403,
3970    AtomUwbFirstRangingReceived = 404,
3971    AtomUwbRangingMeasurementReceived = 405,
3972    AtomTextClassifierDownloadWorkScheduled = 406,
3973    AtomTextClassifierDownloadWorkCompleted = 407,
3974    AtomClipboardCleared = 408,
3975    AtomVmCreationRequested = 409,
3976    AtomNearbyDeviceScanStateChanged = 410,
3977    AtomApplicationLocalesChanged = 412,
3978    AtomMediametricsAudiotrackstatusReported = 413,
3979    AtomFoldStateDurationReported = 414,
3980    AtomLocationTimeZoneProviderControllerStateChanged = 415,
3981    AtomDisplayHbmStateChanged = 416,
3982    AtomDisplayHbmBrightnessChanged = 417,
3983    AtomPersistentUriPermissionsFlushed = 418,
3984    AtomEarlyBootCompOsArtifactsCheckReported = 419,
3985    AtomVbmetaDigestReported = 420,
3986    AtomApexInfoGathered = 421,
3987    AtomPvmInfoGathered = 422,
3988    AtomWearSettingsUiInteracted = 423,
3989    AtomTracingServiceReportEvent = 424,
3990    AtomMediametricsAudiorecordstatusReported = 425,
3991    AtomLauncherLatency = 426,
3992    AtomDropboxEntryDropped = 427,
3993    AtomWifiP2pConnectionReported = 428,
3994    AtomGameStateChanged = 429,
3995    AtomHotwordDetectorCreateRequested = 430,
3996    AtomHotwordDetectionServiceInitResultReported = 431,
3997    AtomHotwordDetectionServiceRestarted = 432,
3998    AtomHotwordDetectorKeyphraseTriggered = 433,
3999    AtomHotwordDetectorEvents = 434,
4000    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
4001    AtomContactsIndexerUpdateStatsReported = 440,
4002    AtomAppBackgroundRestrictionsInfo = 441,
4003    AtomMmsSmsProviderGetThreadIdFailed = 442,
4004    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
4005    AtomPermissionReminderNotificationInteracted = 444,
4006    AtomRecentPermissionDecisionsInteracted = 445,
4007    AtomGnssPsdsDownloadReported = 446,
4008    AtomLeAudioConnectionSessionReported = 447,
4009    AtomLeAudioBroadcastSessionReported = 448,
4010    AtomDreamUiEventReported = 449,
4011    AtomTaskManagerEventReported = 450,
4012    AtomCdmAssociationAction = 451,
4013    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
4014    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
4015    AtomAccessibilityTextReadingOptionsChanged = 454,
4016    AtomWifiSetupFailureCrashReported = 455,
4017    AtomUwbDeviceErrorReported = 456,
4018    AtomIsolatedCompilationScheduled = 457,
4019    AtomIsolatedCompilationEnded = 458,
4020    AtomOnsOpportunisticEsimProvisioningComplete = 459,
4021    AtomSystemServerPreWatchdogOccurred = 460,
4022    AtomTelephonyAnomalyDetected = 461,
4023    AtomLetterboxPositionChanged = 462,
4024    AtomRemoteKeyProvisioningAttempt = 463,
4025    AtomRemoteKeyProvisioningNetworkInfo = 464,
4026    AtomRemoteKeyProvisioningTiming = 465,
4027    AtomMediaoutputOpInteractionReport = 466,
4028    AtomSyncExemptionOccurred = 468,
4029    AtomAutofillPresentationEventReported = 469,
4030    AtomDockStateChanged = 470,
4031    AtomSafetySourceStateCollected = 471,
4032    AtomSafetyCenterSystemEventReported = 472,
4033    AtomSafetyCenterInteractionReported = 473,
4034    AtomSettingsProviderSettingChanged = 474,
4035    AtomBroadcastDeliveryEventReported = 475,
4036    AtomServiceRequestEventReported = 476,
4037    AtomProviderAcquisitionEventReported = 477,
4038    AtomBluetoothDeviceNameReported = 478,
4039    AtomCbConfigUpdated = 479,
4040    AtomCbModuleErrorReported = 480,
4041    AtomCbServiceFeatureChanged = 481,
4042    AtomCbReceiverFeatureChanged = 482,
4043    AtomPrivacySignalNotificationInteraction = 484,
4044    AtomPrivacySignalIssueCardInteraction = 485,
4045    AtomPrivacySignalsJobFailure = 486,
4046    AtomVibrationReported = 487,
4047    AtomUwbRangingStart = 489,
4048    AtomAppCompactedV2 = 491,
4049    AtomDisplayBrightnessChanged = 494,
4050    AtomActivityActionBlocked = 495,
4051    AtomNetworkDnsServerSupportReported = 504,
4052    AtomVmBooted = 505,
4053    AtomVmExited = 506,
4054    AtomAmbientBrightnessStatsReported = 507,
4055    AtomMediametricsSpatializercapabilitiesReported = 508,
4056    AtomMediametricsSpatializerdeviceenabledReported = 509,
4057    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
4058    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
4059    AtomHearingAidInfoReported = 513,
4060    AtomDeviceWideJobConstraintChanged = 514,
4061    AtomAmbientModeChanged = 515,
4062    AtomAnrLatencyReported = 516,
4063    AtomResourceApiInfo = 517,
4064    AtomSystemDefaultNetworkChanged = 518,
4065    AtomIwlanSetupDataCallResultReported = 519,
4066    AtomIwlanPdnDisconnectedReasonReported = 520,
4067    AtomAirplaneModeSessionReported = 521,
4068    AtomVmCpuStatusReported = 522,
4069    AtomVmMemStatusReported = 523,
4070    AtomPackageInstallationSessionReported = 524,
4071    AtomDefaultNetworkRematchInfo = 525,
4072    AtomNetworkSelectionPerformance = 526,
4073    AtomNetworkNsdReported = 527,
4074    AtomBluetoothDisconnectionReasonReported = 529,
4075    AtomBluetoothLocalVersionsReported = 530,
4076    AtomBluetoothRemoteSupportedFeaturesReported = 531,
4077    AtomBluetoothLocalSupportedFeaturesReported = 532,
4078    AtomBluetoothGattAppInfo = 533,
4079    AtomBrightnessConfigurationUpdated = 534,
4080    AtomWearMediaOutputSwitcherLaunched = 538,
4081    AtomWearMediaOutputSwitcherFinished = 539,
4082    AtomWearMediaOutputSwitcherConnectionReported = 540,
4083    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
4084    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
4085    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
4086    AtomPackageManagerSnapshotReported = 544,
4087    AtomPackageManagerAppsFilterCacheBuildReported = 545,
4088    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
4089    AtomLauncherImpressionEvent = 547,
4090    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
4091    AtomWsWatchFaceEdited = 551,
4092    AtomWsWatchFaceFavoriteActionReported = 552,
4093    AtomWsWatchFaceSetActionReported = 553,
4094    AtomPackageUninstallationReported = 554,
4095    AtomGameModeChanged = 555,
4096    AtomGameModeConfigurationChanged = 556,
4097    AtomBedtimeModeStateChanged = 557,
4098    AtomNetworkSliceSessionEnded = 558,
4099    AtomNetworkSliceDailyDataUsageReported = 559,
4100    AtomNfcTagTypeOccurred = 560,
4101    AtomNfcAidConflictOccurred = 561,
4102    AtomNfcReaderConflictOccurred = 562,
4103    AtomWsTileListChanged = 563,
4104    AtomGetTypeAccessedWithoutPermission = 564,
4105    AtomMobileBundledAppInfoGathered = 566,
4106    AtomWsWatchFaceComplicationSetChanged = 567,
4107    AtomMediaDrmCreated = 568,
4108    AtomMediaDrmErrored = 569,
4109    AtomMediaDrmSessionOpened = 570,
4110    AtomMediaDrmSessionClosed = 571,
4111    AtomUserSelectedResolution = 572,
4112    AtomUnsafeIntentEventReported = 573,
4113    AtomPerformanceHintSessionReported = 574,
4114    AtomMediametricsMidiDeviceCloseReported = 576,
4115    AtomBiometricTouchReported = 577,
4116    AtomHotwordAudioEgressEventReported = 578,
4117    AtomLocationEnabledStateChanged = 580,
4118    AtomImeRequestFinished = 581,
4119    AtomUsbComplianceWarningsReported = 582,
4120    AtomAppSupportedLocalesChanged = 583,
4121    AtomMediaProviderVolumeRecoveryReported = 586,
4122    AtomBiometricPropertiesCollected = 587,
4123    AtomKernelWakeupAttributed = 588,
4124    AtomScreenStateChangedV2 = 589,
4125    AtomWsBackupActionReported = 590,
4126    AtomWsRestoreActionReported = 591,
4127    AtomDeviceLogAccessEventReported = 592,
4128    AtomMediaSessionUpdated = 594,
4129    AtomWearOobeStateChanged = 595,
4130    AtomWsNotificationUpdated = 596,
4131    AtomNetworkValidationFailureStatsDailyReported = 601,
4132    AtomWsComplicationTapped = 602,
4133    AtomWsNotificationBlocking = 780,
4134    AtomWsNotificationBridgemodeUpdated = 822,
4135    AtomWsNotificationDismissalActioned = 823,
4136    AtomWsNotificationActioned = 824,
4137    AtomWsNotificationLatency = 880,
4138    AtomWifiBytesTransfer = 10000,
4139    AtomWifiBytesTransferByFgBg = 10001,
4140    AtomMobileBytesTransfer = 10002,
4141    AtomMobileBytesTransferByFgBg = 10003,
4142    AtomBluetoothBytesTransfer = 10006,
4143    AtomKernelWakelock = 10004,
4144    AtomSubsystemSleepState = 10005,
4145    AtomCpuTimePerUid = 10009,
4146    AtomCpuTimePerUidFreq = 10010,
4147    AtomWifiActivityInfo = 10011,
4148    AtomModemActivityInfo = 10012,
4149    AtomBluetoothActivityInfo = 10007,
4150    AtomProcessMemoryState = 10013,
4151    AtomSystemElapsedRealtime = 10014,
4152    AtomSystemUptime = 10015,
4153    AtomCpuActiveTime = 10016,
4154    AtomCpuClusterTime = 10017,
4155    AtomDiskSpace = 10018,
4156    AtomRemainingBatteryCapacity = 10019,
4157    AtomFullBatteryCapacity = 10020,
4158    AtomTemperature = 10021,
4159    AtomBinderCalls = 10022,
4160    AtomBinderCallsExceptions = 10023,
4161    AtomLooperStats = 10024,
4162    AtomDiskStats = 10025,
4163    AtomDirectoryUsage = 10026,
4164    AtomAppSize = 10027,
4165    AtomCategorySize = 10028,
4166    AtomProcStats = 10029,
4167    AtomBatteryVoltage = 10030,
4168    AtomNumFingerprintsEnrolled = 10031,
4169    AtomDiskIo = 10032,
4170    AtomPowerProfile = 10033,
4171    AtomProcStatsPkgProc = 10034,
4172    AtomProcessCpuTime = 10035,
4173    AtomCpuTimePerThreadFreq = 10037,
4174    AtomOnDevicePowerMeasurement = 10038,
4175    AtomDeviceCalculatedPowerUse = 10039,
4176    AtomProcessMemoryHighWaterMark = 10042,
4177    AtomBatteryLevel = 10043,
4178    AtomBuildInformation = 10044,
4179    AtomBatteryCycleCount = 10045,
4180    AtomDebugElapsedClock = 10046,
4181    AtomDebugFailingElapsedClock = 10047,
4182    AtomNumFacesEnrolled = 10048,
4183    AtomRoleHolder = 10049,
4184    AtomDangerousPermissionState = 10050,
4185    AtomTrainInfo = 10051,
4186    AtomTimeZoneDataInfo = 10052,
4187    AtomExternalStorageInfo = 10053,
4188    AtomGpuStatsGlobalInfo = 10054,
4189    AtomGpuStatsAppInfo = 10055,
4190    AtomSystemIonHeapSize = 10056,
4191    AtomAppsOnExternalStorageInfo = 10057,
4192    AtomFaceSettings = 10058,
4193    AtomCoolingDevice = 10059,
4194    AtomAppOps = 10060,
4195    AtomProcessSystemIonHeapSize = 10061,
4196    AtomSurfaceflingerStatsGlobalInfo = 10062,
4197    AtomSurfaceflingerStatsLayerInfo = 10063,
4198    AtomProcessMemorySnapshot = 10064,
4199    AtomVmsClientStats = 10065,
4200    AtomNotificationRemoteViews = 10066,
4201    AtomDangerousPermissionStateSampled = 10067,
4202    AtomGraphicsStats = 10068,
4203    AtomRuntimeAppOpAccess = 10069,
4204    AtomIonHeapSize = 10070,
4205    AtomPackageNotificationPreferences = 10071,
4206    AtomPackageNotificationChannelPreferences = 10072,
4207    AtomPackageNotificationChannelGroupPreferences = 10073,
4208    AtomGnssStats = 10074,
4209    AtomAttributedAppOps = 10075,
4210    AtomVoiceCallSession = 10076,
4211    AtomVoiceCallRatUsage = 10077,
4212    AtomSimSlotState = 10078,
4213    AtomSupportedRadioAccessFamily = 10079,
4214    AtomSettingSnapshot = 10080,
4215    AtomBlobInfo = 10081,
4216    AtomDataUsageBytesTransfer = 10082,
4217    AtomBytesTransferByTagAndMetered = 10083,
4218    AtomDndModeRule = 10084,
4219    AtomGeneralExternalStorageAccessStats = 10085,
4220    AtomIncomingSms = 10086,
4221    AtomOutgoingSms = 10087,
4222    AtomCarrierIdTableVersion = 10088,
4223    AtomDataCallSession = 10089,
4224    AtomCellularServiceState = 10090,
4225    AtomCellularDataServiceSwitch = 10091,
4226    AtomSystemMemory = 10092,
4227    AtomImsRegistrationTermination = 10093,
4228    AtomImsRegistrationStats = 10094,
4229    AtomCpuTimePerClusterFreq = 10095,
4230    AtomCpuCyclesPerUidCluster = 10096,
4231    AtomDeviceRotatedData = 10097,
4232    AtomCpuCyclesPerThreadGroupCluster = 10098,
4233    AtomMediaDrmActivityInfo = 10099,
4234    AtomOemManagedBytesTransfer = 10100,
4235    AtomGnssPowerStats = 10101,
4236    AtomTimeZoneDetectorState = 10102,
4237    AtomKeystore2StorageStats = 10103,
4238    AtomRkpPoolStats = 10104,
4239    AtomProcessDmabufMemory = 10105,
4240    AtomPendingAlarmInfo = 10106,
4241    AtomUserLevelHibernatedApps = 10107,
4242    AtomLauncherLayoutSnapshot = 10108,
4243    AtomGlobalHibernatedApps = 10109,
4244    AtomInputEventLatencySketch = 10110,
4245    AtomBatteryUsageStatsBeforeReset = 10111,
4246    AtomBatteryUsageStatsSinceReset = 10112,
4247    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
4248    AtomInstalledIncrementalPackage = 10114,
4249    AtomTelephonyNetworkRequests = 10115,
4250    AtomAppSearchStorageInfo = 10116,
4251    AtomVmstat = 10117,
4252    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
4253    AtomKeystore2KeyCreationWithAuthInfo = 10119,
4254    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
4255    AtomKeystore2AtomWithOverflow = 10121,
4256    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
4257    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
4258    AtomRkpErrorStats = 10124,
4259    AtomKeystore2CrashStats = 10125,
4260    AtomVendorApexInfo = 10126,
4261    AtomAccessibilityShortcutStats = 10127,
4262    AtomAccessibilityFloatingMenuStats = 10128,
4263    AtomDataUsageBytesTransferV2 = 10129,
4264    AtomMediaCapabilities = 10130,
4265    AtomCarWatchdogSystemIoUsageSummary = 10131,
4266    AtomCarWatchdogUidIoUsageSummary = 10132,
4267    AtomImsRegistrationFeatureTagStats = 10133,
4268    AtomRcsClientProvisioningStats = 10134,
4269    AtomRcsAcsProvisioningStats = 10135,
4270    AtomSipDelegateStats = 10136,
4271    AtomSipTransportFeatureTagStats = 10137,
4272    AtomSipMessageResponse = 10138,
4273    AtomSipTransportSession = 10139,
4274    AtomImsDedicatedBearerListenerEvent = 10140,
4275    AtomImsDedicatedBearerEvent = 10141,
4276    AtomImsRegistrationServiceDescStats = 10142,
4277    AtomUceEventStats = 10143,
4278    AtomPresenceNotifyEvent = 10144,
4279    AtomGbaEvent = 10145,
4280    AtomPerSimStatus = 10146,
4281    AtomGpuWorkPerUid = 10147,
4282    AtomPersistentUriPermissionsAmountPerPackage = 10148,
4283    AtomSignedPartitionInfo = 10149,
4284    AtomPinnedFileSizesPerPackage = 10150,
4285    AtomPendingIntentsPerPackage = 10151,
4286    AtomUserInfo = 10152,
4287    AtomTelephonyNetworkRequestsV2 = 10153,
4288    AtomDeviceTelephonyProperties = 10154,
4289    AtomRemoteKeyProvisioningErrorCounts = 10155,
4290    AtomSafetyState = 10156,
4291    AtomIncomingMms = 10157,
4292    AtomOutgoingMms = 10158,
4293    AtomMultiUserInfo = 10160,
4294    AtomNetworkBpfMapInfo = 10161,
4295    AtomOutgoingShortCodeSms = 10162,
4296    AtomConnectivityStateSample = 10163,
4297    AtomNetworkSelectionRematchReasonsInfo = 10164,
4298    AtomGameModeInfo = 10165,
4299    AtomGameModeConfiguration = 10166,
4300    AtomGameModeListener = 10167,
4301    AtomNetworkSliceRequestCount = 10168,
4302    AtomWsTileSnapshot = 10169,
4303    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
4304    AtomProcessState = 10171,
4305    AtomProcessAssociation = 10172,
4306    AtomAdpfSystemComponentInfo = 10173,
4307    AtomNotificationMemoryUse = 10174,
4308    AtomHdrCapabilities = 10175,
4309    AtomWsFavouriteWatchFaceListSnapshot = 10176,
4310    AtomWifiAwareNdpReported = 638,
4311    AtomWifiAwareAttachReported = 639,
4312    AtomWifiSelfRecoveryTriggered = 661,
4313    AtomSoftApStarted = 680,
4314    AtomSoftApStopped = 681,
4315    AtomWifiLockReleased = 687,
4316    AtomWifiLockDeactivated = 688,
4317    AtomWifiConfigSaved = 689,
4318    AtomWifiAwareResourceUsingChanged = 690,
4319    AtomWifiAwareHalApiCalled = 691,
4320    AtomWifiLocalOnlyRequestReceived = 692,
4321    AtomWifiLocalOnlyRequestScanTriggered = 693,
4322    AtomWifiThreadTaskExecuted = 694,
4323    AtomWifiStateChanged = 700,
4324    AtomPnoScanStarted = 719,
4325    AtomPnoScanStopped = 720,
4326    AtomWifiIsUnusableReported = 722,
4327    AtomWifiApCapabilitiesReported = 723,
4328    AtomSoftApStateChanged = 805,
4329    AtomScorerPredictionResultReported = 884,
4330    AtomWifiAwareCapabilities = 10190,
4331    AtomWifiModuleInfo = 10193,
4332    AtomWifiSettingInfo = 10194,
4333    AtomWifiComplexSettingInfo = 10195,
4334    AtomWifiConfiguredNetworkInfo = 10198,
4335    AtomWearPowerMenuOpened = 731,
4336    AtomWearAssistantOpened = 755,
4337    AtomFirstOverlayStateChanged = 917,
4338    AtomWsWearTimeSession = 610,
4339    AtomWsIncomingCallActionReported = 626,
4340    AtomWsCallDisconnectionReported = 627,
4341    AtomWsCallDurationReported = 628,
4342    AtomWsCallUserExperienceLatencyReported = 629,
4343    AtomWsCallInteractionReported = 630,
4344    AtomWsOnBodyStateChanged = 787,
4345    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
4346    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
4347    AtomWsComplicationsImpactedNotificationEventReported = 804,
4348    AtomWsRemoteEventUsageReported = 920,
4349    AtomWsNotificationManagedDismissalSync = 941,
4350    AtomWsBugreportEventReported = 964,
4351    AtomWsStandaloneModeSnapshot = 10197,
4352    AtomWsFavoriteWatchFaceSnapshot = 10206,
4353    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
4354    AtomWsWatchFaceCustomizationSnapshot = 10227,
4355    AtomWearAdaptiveSuspendStatsReported = 619,
4356    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
4357    AtomWearPowerAnomalyServiceEventStatsReported = 621,
4358    AtomWearTimeSyncRequested = 911,
4359    AtomWearTimeUpdateStarted = 912,
4360    AtomWearTimeSyncAttemptCompleted = 913,
4361    AtomWearTimeChanged = 914,
4362    AtomWearSetupWizardDeviceStatusReported = 953,
4363    AtomWearSetupWizardPairingCompleted = 954,
4364    AtomWearSetupWizardConnectionEstablished = 955,
4365    AtomWearSetupWizardCheckinCompleted = 956,
4366    AtomWearSetupWizardCompanionTimeReported = 957,
4367    AtomWearSetupWizardStatusReported = 958,
4368    AtomWearSetupWizardHeartbeatReported = 959,
4369    AtomWearSetupWizardFrpTriggered = 960,
4370    AtomWearSetupWizardSystemUpdateTriggered = 961,
4371    AtomWearSetupWizardPhoneSwitchTriggered = 962,
4372    AtomRendererInitialized = 736,
4373    AtomSchemaVersionReceived = 737,
4374    AtomLayoutInspected = 741,
4375    AtomLayoutExpressionInspected = 742,
4376    AtomLayoutAnimationsInspected = 743,
4377    AtomMaterialComponentsInspected = 744,
4378    AtomTileRequested = 745,
4379    AtomStateResponseReceived = 746,
4380    AtomTileResponseReceived = 747,
4381    AtomInflationFinished = 748,
4382    AtomInflationFailed = 749,
4383    AtomIgnoredInflationFailuresReported = 750,
4384    AtomDrawableRendered = 751,
4385    AtomWearModeStateChanged = 715,
4386    AtomMediaActionReported = 608,
4387    AtomMediaControlsLaunched = 609,
4388    AtomMediaSessionStateChanged = 677,
4389    AtomMediaControlApiUsageReported = 966,
4390    AtomMediaSubscriptionChanged = 990,
4391    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
4392    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
4393    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
4394    AtomMediatorUpdated = 721,
4395    AtomSysproxyBluetoothBytesTransfer = 10196,
4396    AtomSysproxyConnectionUpdated = 786,
4397    AtomWearCompanionConnectionState = 921,
4398    AtomSysproxyServiceStateUpdated = 949,
4399    AtomUwbActivityInfo = 10188,
4400    AtomTestUprobestatsAtomReported = 915,
4401    AtomTvLowPowerStandbyPolicy = 679,
4402    AtomExternalTvInputEvent = 717,
4403    AtomBootIntegrityInfoReported = 775,
4404    AtomThreadnetworkTelemetryDataReported = 738,
4405    AtomThreadnetworkTopoEntryRepeated = 739,
4406    AtomThreadnetworkDeviceInfoReported = 740,
4407    AtomCellularRadioPowerStateChanged = 713,
4408    AtomEmergencyNumbersInfo = 10180,
4409    AtomDataNetworkValidation = 10207,
4410    AtomDataRatStateChanged = 854,
4411    AtomConnectedChannelChanged = 882,
4412    AtomCellularIdentifierDisclosed = 800,
4413    AtomSatelliteController = 10182,
4414    AtomSatelliteSession = 10183,
4415    AtomSatelliteIncomingDatagram = 10184,
4416    AtomSatelliteOutgoingDatagram = 10185,
4417    AtomSatelliteProvision = 10186,
4418    AtomSatelliteSosMessageRecommender = 10187,
4419    AtomCarrierRoamingSatelliteSession = 10211,
4420    AtomCarrierRoamingSatelliteControllerStats = 10212,
4421    AtomControllerStatsPerPackage = 10213,
4422    AtomSatelliteEntitlement = 10214,
4423    AtomSatelliteConfigUpdater = 10215,
4424    AtomSatelliteAccessController = 10219,
4425    AtomQualifiedRatListChanged = 634,
4426    AtomQnsImsCallDropStats = 635,
4427    AtomQnsFallbackRestrictionChanged = 636,
4428    AtomQnsRatPreferenceMismatchInfo = 10177,
4429    AtomQnsHandoverTimeMillis = 10178,
4430    AtomQnsHandoverPingpong = 10179,
4431    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
4432    AtomEmergencyNumberDialed = 637,
4433    AtomCallStats = 10221,
4434    AtomCallAudioRouteStats = 10222,
4435    AtomTelecomApiStats = 10223,
4436    AtomTelecomErrorStats = 10224,
4437    AtomLockscreenShortcutSelected = 611,
4438    AtomLockscreenShortcutTriggered = 612,
4439    AtomLauncherImpressionEventV2 = 716,
4440    AtomDisplaySwitchLatencyTracked = 753,
4441    AtomNotificationListenerService = 829,
4442    AtomNavHandleTouchPoints = 869,
4443    AtomCommunalHubWidgetEventReported = 908,
4444    AtomPeripheralTutorialLaunched = 942,
4445    AtomContextualEducationTriggered = 971,
4446    AtomCommunalHubSnapshot = 10226,
4447    AtomTestExtensionAtomReported = 660,
4448    AtomTestRestrictedAtomReported = 672,
4449    AtomStatsSocketLossReported = 752,
4450    AtomSettingsSpaReported = 622,
4451    AtomSelinuxAuditLog = 799,
4452    AtomSandboxApiCalled = 488,
4453    AtomSandboxActivityEventOccurred = 735,
4454    AtomSdkSandboxRestrictedAccessInSession = 796,
4455    AtomSandboxSdkStorage = 10159,
4456    AtomRkpdPoolStats = 664,
4457    AtomRkpdClientOperation = 665,
4458    AtomRangingSessionConfigured = 993,
4459    AtomRangingSessionStarted = 994,
4460    AtomRangingSessionClosed = 995,
4461    AtomRangingTechnologyStarted = 996,
4462    AtomRangingTechnologyStopped = 997,
4463    AtomMediaProviderDatabaseRollbackReported = 784,
4464    AtomBackupSetupStatusReported = 785,
4465    AtomScreenOffReported = 776,
4466    AtomScreenTimeoutOverrideReported = 836,
4467    AtomScreenInteractiveSessionReported = 837,
4468    AtomScreenDimReported = 867,
4469    AtomAtom9999 = 9999,
4470    AtomAtom99999 = 99999,
4471    AtomPhotopickerSessionInfoReported = 886,
4472    AtomPhotopickerApiInfoReported = 887,
4473    AtomPhotopickerUiEventLogged = 888,
4474    AtomPhotopickerMediaItemStatusReported = 889,
4475    AtomPhotopickerPreviewInfoLogged = 890,
4476    AtomPhotopickerMenuInteractionLogged = 891,
4477    AtomPhotopickerBannerInteractionLogged = 892,
4478    AtomPhotopickerMediaLibraryInfoLogged = 893,
4479    AtomPhotopickerPageInfoLogged = 894,
4480    AtomPhotopickerMediaGridSyncInfoReported = 895,
4481    AtomPhotopickerAlbumSyncInfoReported = 896,
4482    AtomPhotopickerSearchInfoReported = 897,
4483    AtomSearchDataExtractionDetailsReported = 898,
4484    AtomEmbeddedPhotopickerInfoReported = 899,
4485    AtomPermissionRationaleDialogViewed = 645,
4486    AtomPermissionRationaleDialogActionReported = 646,
4487    AtomAppDataSharingUpdatesNotificationInteraction = 647,
4488    AtomAppDataSharingUpdatesFragmentViewed = 648,
4489    AtomAppDataSharingUpdatesFragmentActionReported = 649,
4490    AtomEnhancedConfirmationDialogResultReported = 827,
4491    AtomEnhancedConfirmationRestrictionCleared = 828,
4492    AtomPressureStallInformation = 10229,
4493    AtomPdfLoadReported = 859,
4494    AtomPdfApiUsageReported = 860,
4495    AtomPdfSearchReported = 861,
4496    AtomComponentStateChangedReported = 863,
4497    AtomOndevicepersonalizationApiCalled = 711,
4498    AtomOndevicepersonalizationTraceEvent = 952,
4499    AtomNfcObserveModeStateChanged = 855,
4500    AtomNfcFieldChanged = 856,
4501    AtomNfcPollingLoopNotificationReported = 857,
4502    AtomNfcProprietaryCapabilitiesReported = 858,
4503    AtomNfcExitFrameTableChanged = 1036,
4504    AtomNfcAutoTransactReported = 1038,
4505    AtomMicroxrDeviceBootCompleteReported = 901,
4506    AtomMteState = 10181,
4507    AtomZramMaintenanceExecuted = 1015,
4508    AtomZramSetupExecuted = 1029,
4509    AtomZramMmStatMmd = 10232,
4510    AtomZramBdStatMmd = 10233,
4511    AtomMediaEditingEndedReported = 798,
4512    AtomMediaCodecReclaimRequestCompleted = 600,
4513    AtomMediaCodecStarted = 641,
4514    AtomMediaCodecStopped = 642,
4515    AtomMediaCodecRendered = 684,
4516    AtomEmergencyStateChanged = 633,
4517    AtomChreSignificantMotionStateChanged = 868,
4518    AtomPopulationDensityProviderLoadingReported = 1002,
4519    AtomDensityBasedCoarseLocationsUsageReported = 1003,
4520    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
4521    AtomKernelOomKillOccurred = 754,
4522    AtomKeyboardConfigured = 682,
4523    AtomKeyboardSystemsEventReported = 683,
4524    AtomInputdeviceUsageReported = 686,
4525    AtomInputEventLatencyReported = 932,
4526    AtomTouchpadUsage = 10191,
4527    AtomIkeSessionTerminated = 678,
4528    AtomIkeLivenessCheckSessionValidated = 760,
4529    AtomNegotiatedSecurityAssociation = 821,
4530    AtomHotwordEgressSizeAtomReported = 761,
4531    AtomHealthConnectUiImpression = 623,
4532    AtomHealthConnectUiInteraction = 624,
4533    AtomHealthConnectAppOpenedReported = 625,
4534    AtomHealthConnectApiCalled = 616,
4535    AtomHealthConnectUsageStats = 617,
4536    AtomHealthConnectStorageStats = 618,
4537    AtomHealthConnectApiInvoked = 643,
4538    AtomExerciseRouteApiCalled = 654,
4539    AtomHealthConnectExportInvoked = 907,
4540    AtomHealthConnectImportInvoked = 918,
4541    AtomHealthConnectExportImportStatsReported = 919,
4542    AtomHealthConnectPermissionStats = 963,
4543    AtomHealthConnectPhrApiInvoked = 980,
4544    AtomHealthConnectPhrUsageStats = 981,
4545    AtomHealthConnectPhrStorageStats = 984,
4546    AtomHealthConnectRestrictedEcosystemStats = 985,
4547    AtomHealthConnectEcosystemStats = 986,
4548    AtomHdmiEarcStatusReported = 701,
4549    AtomHdmiSoundbarModeStatusReported = 724,
4550    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
4551    AtomBatteryHealth = 10220,
4552    AtomBiometricUnenrolled = 944,
4553    AtomBiometricEnumerated = 945,
4554    AtomApplicationGrammaticalInflectionChanged = 584,
4555    AtomSystemGrammaticalInflectionChanged = 816,
4556    AtomFullScreenIntentLaunched = 631,
4557    AtomBalAllowed = 632,
4558    AtomInTaskActivityStarted = 685,
4559    AtomDeviceOrientationChanged = 906,
4560    AtomCachedAppsHighWatermark = 10189,
4561    AtomStylusPredictionMetricsReported = 718,
4562    AtomUserRiskEventReported = 725,
4563    AtomMediaProjectionStateChanged = 729,
4564    AtomMediaProjectionTargetChanged = 730,
4565    AtomExcessiveBinderProxyCountReported = 853,
4566    AtomProxyBytesTransferByFgBg = 10200,
4567    AtomMobileBytesTransferByProcState = 10204,
4568    AtomBiometricFrrNotification = 817,
4569    AtomSensitiveContentMediaProjectionSession = 830,
4570    AtomSensitiveNotificationAppProtectionSession = 831,
4571    AtomSensitiveNotificationAppProtectionApplied = 832,
4572    AtomSensitiveNotificationRedaction = 833,
4573    AtomSensitiveContentAppProtection = 835,
4574    AtomAppRestrictionStateChanged = 866,
4575    AtomBatteryUsageStatsPerUid = 10209,
4576    AtomPostgcMemorySnapshot = 924,
4577    AtomPowerSaveTempAllowlistChanged = 926,
4578    AtomAppOpAccessTracked = 931,
4579    AtomContentOrFileUriEventReported = 933,
4580    AtomDeviceIdleTempAllowlistUpdated = 940,
4581    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
4582    AtomFrameworkWakelockInfo = 10230,
4583    AtomJankFrameCountByWidgetReported = 950,
4584    AtomIntentCreatorTokenAdded = 978,
4585    AtomNotificationChannelClassification = 983,
4586    AtomCameraStatusForCompatibilityChanged = 999,
4587    AtomFederatedComputeApiCalled = 712,
4588    AtomFederatedComputeTrainingEventReported = 771,
4589    AtomExampleIteratorNextLatencyReported = 838,
4590    AtomFederatedComputeTraceEventReported = 992,
4591    AtomExpressEventReported = 528,
4592    AtomExpressHistogramSampleReported = 593,
4593    AtomExpressUidEventReported = 644,
4594    AtomExpressUidHistogramSampleReported = 658,
4595    AtomDreamSettingChanged = 705,
4596    AtomDreamSettingSnapshot = 10192,
4597    AtomDndStateChanged = 657,
4598    AtomExternalDisplayStateChanged = 806,
4599    AtomDisplayModeDirectorVoteChanged = 792,
4600    AtomDevicePolicyManagementMode = 10216,
4601    AtomDevicePolicyState = 10217,
4602    AtomDeviceLockCheckInRequestReported = 726,
4603    AtomDeviceLockProvisioningCompleteReported = 727,
4604    AtomDeviceLockKioskAppRequestReported = 728,
4605    AtomDeviceLockCheckInRetryReported = 789,
4606    AtomDeviceLockProvisionFailureReported = 790,
4607    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
4608    AtomDesktopModeUiChanged = 818,
4609    AtomDesktopModeSessionTaskUpdate = 819,
4610    AtomDesktopModeTaskSizeUpdated = 935,
4611    AtomCronetEngineCreated = 703,
4612    AtomCronetTrafficReported = 704,
4613    AtomCronetEngineBuilderInitialized = 762,
4614    AtomCronetHttpFlagsInitialized = 763,
4615    AtomCronetInitialized = 764,
4616    AtomCredentialManagerApiCalled = 585,
4617    AtomCredentialManagerInitPhaseReported = 651,
4618    AtomCredentialManagerCandidatePhaseReported = 652,
4619    AtomCredentialManagerFinalPhaseReported = 653,
4620    AtomCredentialManagerTotalReported = 667,
4621    AtomCredentialManagerFinalnouidReported = 668,
4622    AtomCredentialManagerGetReported = 669,
4623    AtomCredentialManagerAuthClickReported = 670,
4624    AtomCredentialManagerApiv2Called = 671,
4625    AtomCpuPolicy = 10199,
4626    AtomVpnConnectionStateChanged = 850,
4627    AtomVpnConnectionReported = 851,
4628    AtomIpClientRaInfoReported = 778,
4629    AtomApfSessionInfoReported = 777,
4630    AtomCoreNetworkingTerribleErrorOccurred = 979,
4631    AtomNetworkStatsRecorderFileOperated = 783,
4632    AtomDailyKeepaliveInfoReported = 650,
4633    AtomNetworkRequestStateChanged = 779,
4634    AtomTetheringActiveSessionsReported = 925,
4635    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
4636    AtomHardwareRendererEvent = 946,
4637    AtomTextureViewEvent = 947,
4638    AtomSurfaceControlEvent = 948,
4639    AtomImageDecoded = 977,
4640    AtomCertificateTransparencyLogListStateChanged = 934,
4641    AtomConscryptServiceUsed = 965,
4642    AtomCertificateTransparencyVerificationReported = 989,
4643    AtomCameraFeatureCombinationQueryEvent = 900,
4644    AtomBroadcastSent = 922,
4645    AtomBluetoothHashedDeviceNameReported = 613,
4646    AtomBluetoothL2capCocClientConnection = 614,
4647    AtomBluetoothL2capCocServerConnection = 615,
4648    AtomBluetoothLeSessionConnected = 656,
4649    AtomRestrictedBluetoothDeviceNameReported = 666,
4650    AtomBluetoothProfileConnectionAttempted = 696,
4651    AtomBluetoothContentProfileErrorReported = 781,
4652    AtomBluetoothRfcommConnectionAttempted = 782,
4653    AtomRemoteDeviceInformationWithMetricId = 862,
4654    AtomLeAppScanStateChanged = 870,
4655    AtomLeRadioScanStopped = 871,
4656    AtomLeScanResultReceived = 872,
4657    AtomLeScanAbused = 873,
4658    AtomLeAdvStateChanged = 874,
4659    AtomLeAdvErrorReported = 875,
4660    AtomA2dpSessionReported = 904,
4661    AtomBluetoothCrossLayerEventReported = 916,
4662    AtomBroadcastAudioSessionReported = 927,
4663    AtomBroadcastAudioSyncReported = 928,
4664    AtomBluetoothRfcommConnectionReportedAtClose = 982,
4665    AtomBluetoothLeConnection = 988,
4666    AtomHearingDeviceActiveEventReported = 1021,
4667    AtomBackportedFixStatusReported = 987,
4668    AtomPluginInitialized = 655,
4669    AtomCarSystemUiDataSubscriptionEventReported = 974,
4670    AtomCarSettingsDataSubscriptionEventReported = 975,
4671    AtomCarQcLibEventReported = 976,
4672    AtomCarWakeupFromSuspendReported = 852,
4673    AtomCarRecentsEventReported = 770,
4674    AtomCarCalmModeEventReported = 797,
4675    AtomAutofillUiEventReported = 603,
4676    AtomAutofillFillRequestReported = 604,
4677    AtomAutofillFillResponseReported = 605,
4678    AtomAutofillSaveEventReported = 606,
4679    AtomAutofillSessionCommitted = 607,
4680    AtomAutofillFieldClassificationEventReported = 659,
4681    AtomOdrefreshReported = 366,
4682    AtomOdsignReported = 548,
4683    AtomBackgroundDexoptJobEnded = 467,
4684    AtomPrerebootDexoptJobEnded = 883,
4685    AtomArtDatumReported = 332,
4686    AtomArtDeviceDatumReported = 550,
4687    AtomArtDatumDeltaReported = 565,
4688    AtomArtDex2oatReported = 929,
4689    AtomArtDeviceStatus = 10205,
4690    AtomAppSearchSetSchemaStatsReported = 385,
4691    AtomAppSearchSchemaMigrationStatsReported = 579,
4692    AtomAppSearchUsageSearchIntentStatsReported = 825,
4693    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
4694    AtomAppSearchAppsIndexerStatsReported = 909,
4695    AtomAppFunctionsRequestReported = 998,
4696    AtomApexInstallationRequested = 732,
4697    AtomApexInstallationStaged = 733,
4698    AtomApexInstallationEnded = 734,
4699    AtomAiWallpapersButtonPressed = 706,
4700    AtomAiWallpapersTemplateSelected = 707,
4701    AtomAiWallpapersTermSelected = 708,
4702    AtomAiWallpapersWallpaperSet = 709,
4703    AtomAiWallpapersSessionSummary = 710,
4704    AtomJsscriptengineLatencyReported = 483,
4705    AtomAdServicesApiCalled = 435,
4706    AtomAdServicesMesurementReportsUploaded = 436,
4707    AtomMobileDataDownloadFileGroupStatusReported = 490,
4708    AtomMobileDataDownloadDownloadResultReported = 502,
4709    AtomAdServicesSettingsUsageReported = 493,
4710    AtomBackgroundFetchProcessReported = 496,
4711    AtomUpdateCustomAudienceProcessReported = 497,
4712    AtomRunAdBiddingProcessReported = 498,
4713    AtomRunAdScoringProcessReported = 499,
4714    AtomRunAdSelectionProcessReported = 500,
4715    AtomRunAdBiddingPerCaProcessReported = 501,
4716    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
4717    AtomAdServicesMeasurementRegistrations = 512,
4718    AtomAdServicesGetTopicsReported = 535,
4719    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
4720    AtomAdServicesEpochComputationClassifierReported = 537,
4721    AtomAdServicesBackCompatGetTopicsReported = 598,
4722    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
4723    AtomAdServicesMeasurementDebugKeys = 640,
4724    AtomAdServicesErrorReported = 662,
4725    AtomAdServicesBackgroundJobsExecutionReported = 663,
4726    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
4727    AtomAdServicesMeasurementAttribution = 674,
4728    AtomAdServicesMeasurementJobs = 675,
4729    AtomAdServicesMeasurementWipeout = 676,
4730    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
4731    AtomAdServicesEnrollmentDataStored = 697,
4732    AtomAdServicesEnrollmentFileDownloaded = 698,
4733    AtomAdServicesEnrollmentMatched = 699,
4734    AtomAdServicesConsentMigrated = 702,
4735    AtomAdServicesEnrollmentFailed = 714,
4736    AtomAdServicesMeasurementClickVerification = 756,
4737    AtomAdServicesEncryptionKeyFetched = 765,
4738    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
4739    AtomDestinationRegisteredBeacons = 767,
4740    AtomReportInteractionApiCalled = 768,
4741    AtomInteractionReportingTableCleared = 769,
4742    AtomAppManifestConfigHelperCalled = 788,
4743    AtomAdFilteringProcessJoinCaReported = 793,
4744    AtomAdFilteringProcessAdSelectionReported = 794,
4745    AtomAdCounterHistogramUpdaterReported = 795,
4746    AtomSignatureVerification = 807,
4747    AtomKAnonImmediateSignJoinStatusReported = 808,
4748    AtomKAnonBackgroundJobStatusReported = 809,
4749    AtomKAnonInitializeStatusReported = 810,
4750    AtomKAnonSignStatusReported = 811,
4751    AtomKAnonJoinStatusReported = 812,
4752    AtomKAnonKeyAttestationStatusReported = 813,
4753    AtomGetAdSelectionDataApiCalled = 814,
4754    AtomGetAdSelectionDataBuyerInputGenerated = 815,
4755    AtomBackgroundJobSchedulingReported = 834,
4756    AtomTopicsEncryptionEpochComputationReported = 840,
4757    AtomTopicsEncryptionGetTopicsReported = 841,
4758    AtomAdservicesShellCommandCalled = 842,
4759    AtomUpdateSignalsApiCalled = 843,
4760    AtomEncodingJobRun = 844,
4761    AtomEncodingJsFetch = 845,
4762    AtomEncodingJsExecution = 846,
4763    AtomPersistAdSelectionResultCalled = 847,
4764    AtomServerAuctionKeyFetchCalled = 848,
4765    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
4766    AtomAdServicesMeasurementProcessOdpRegistration = 864,
4767    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
4768    AtomSelectAdsFromOutcomesApiCalled = 876,
4769    AtomReportImpressionApiCalled = 877,
4770    AtomAdServicesEnrollmentTransactionStats = 885,
4771    AtomAdServicesCobaltLoggerEventReported = 902,
4772    AtomAdServicesCobaltPeriodicJobEventReported = 903,
4773    AtomUpdateSignalsProcessReported = 905,
4774    AtomTopicsScheduleEpochJobSettingReported = 930,
4775    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
4776    AtomScheduledCustomAudienceUpdatePerformed = 968,
4777    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
4778    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
4779    AtomThermalStatusCalled = 772,
4780    AtomThermalHeadroomCalled = 773,
4781    AtomThermalHeadroomThresholdsCalled = 774,
4782    AtomAdpfHintSessionTidCleanup = 839,
4783    AtomThermalHeadroomThresholds = 10201,
4784    AtomAdpfSessionSnapshot = 10218,
4785    AtomAdaptiveAuthUnlockAfterLockReported = 820,
4786    AtomAccountManagerEvent = 951,
4787    AtomAccessibilityCheckResultReported = 910,
4788}
4789impl AtomId {
4790    /// String value of the enum field names used in the ProtoBuf definition.
4791    ///
4792    /// The values are not transformed in any way and thus are considered stable
4793    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4794    pub fn as_str_name(&self) -> &'static str {
4795        match self {
4796            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
4797            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
4798            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
4799            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
4800            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
4801            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
4802            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
4803            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
4804            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
4805            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
4806            Self::AtomLongPartialWakelockStateChanged => {
4807                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
4808            }
4809            Self::AtomMobileRadioPowerStateChanged => {
4810                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
4811            }
4812            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
4813            Self::AtomActivityManagerSleepStateChanged => {
4814                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
4815            }
4816            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
4817            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
4818            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
4819            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
4820            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
4821            Self::AtomBatterySaverModeStateChanged => {
4822                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
4823            }
4824            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
4825            Self::AtomDeviceIdlingModeStateChanged => {
4826                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
4827            }
4828            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
4829            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
4830            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
4831            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
4832            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
4833            Self::AtomProcessLifeCycleStateChanged => {
4834                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
4835            }
4836            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
4837            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
4838            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
4839            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
4840            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
4841            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
4842            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
4843            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
4844            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
4845            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
4846            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
4847            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
4848            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
4849            Self::AtomActivityForegroundStateChanged => {
4850                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
4851            }
4852            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
4853            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
4854            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
4855            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
4856            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
4857            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
4858            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
4859            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
4860            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
4861            Self::AtomPictureInPictureStateChanged => {
4862                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
4863            }
4864            Self::AtomWifiMulticastLockStateChanged => {
4865                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
4866            }
4867            Self::AtomAppStartMemoryStateCaptured => {
4868                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
4869            }
4870            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
4871            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
4872            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
4873            Self::AtomForegroundServiceStateChanged => {
4874                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
4875            }
4876            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
4877            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
4878            Self::AtomKeyguardBouncerStateChanged => {
4879                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
4880            }
4881            Self::AtomKeyguardBouncerPasswordEntered => {
4882                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
4883            }
4884            Self::AtomAppDied => "ATOM_APP_DIED",
4885            Self::AtomResourceConfigurationChanged => {
4886                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
4887            }
4888            Self::AtomBluetoothEnabledStateChanged => {
4889                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
4890            }
4891            Self::AtomBluetoothConnectionStateChanged => {
4892                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
4893            }
4894            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
4895            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
4896            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
4897            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
4898            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
4899            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
4900            Self::AtomMobileConnectionStateChanged => {
4901                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
4902            }
4903            Self::AtomMobileRadioTechnologyChanged => {
4904                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
4905            }
4906            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
4907            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
4908            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
4909            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
4910            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
4911            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
4912            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
4913            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
4914            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
4915            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
4916            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
4917            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
4918            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
4919            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
4920            Self::AtomSlowIo => "ATOM_SLOW_IO",
4921            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
4922            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
4923            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
4924            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
4925            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
4926            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
4927            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
4928            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
4929            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
4930            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
4931            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
4932            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
4933            Self::AtomDocsUiFileOpCopyMoveModeReported => {
4934                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
4935            }
4936            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
4937            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
4938            Self::AtomDocsUiInvalidScopedAccessRequest => {
4939                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
4940            }
4941            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
4942            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
4943            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
4944            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
4945            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
4946            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
4947            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
4948            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
4949            Self::AtomDocsUiPickerLaunchedFromReported => {
4950                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
4951            }
4952            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
4953            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
4954            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
4955            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
4956            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
4957            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
4958            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
4959            Self::AtomBluetoothLinkLayerConnectionEvent => {
4960                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
4961            }
4962            Self::AtomBluetoothAclConnectionStateChanged => {
4963                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
4964            }
4965            Self::AtomBluetoothScoConnectionStateChanged => {
4966                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
4967            }
4968            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
4969            Self::AtomAppOptimizedAfterDowngraded => {
4970                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
4971            }
4972            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
4973            Self::AtomGnssNfwNotificationReported => {
4974                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
4975            }
4976            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
4977            Self::AtomUsbPortOverheatEventReported => {
4978                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
4979            }
4980            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
4981            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
4982            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
4983            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
4984            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
4985            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
4986            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
4987            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
4988            Self::AtomBroadcastDispatchLatencyReported => {
4989                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
4990            }
4991            Self::AtomAttentionManagerServiceResultReported => {
4992                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
4993            }
4994            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
4995            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
4996            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
4997            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
4998            Self::AtomBiometricSystemHealthIssueDetected => {
4999                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
5000            }
5001            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
5002            Self::AtomScheduledJobConstraintChanged => {
5003                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
5004            }
5005            Self::AtomBluetoothActiveDeviceChanged => {
5006                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
5007            }
5008            Self::AtomBluetoothA2dpPlaybackStateChanged => {
5009                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
5010            }
5011            Self::AtomBluetoothA2dpCodecConfigChanged => {
5012                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
5013            }
5014            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
5015                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
5016            }
5017            Self::AtomBluetoothA2dpAudioUnderrunReported => {
5018                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
5019            }
5020            Self::AtomBluetoothA2dpAudioOverrunReported => {
5021                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
5022            }
5023            Self::AtomBluetoothDeviceRssiReported => {
5024                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
5025            }
5026            Self::AtomBluetoothDeviceFailedContactCounterReported => {
5027                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
5028            }
5029            Self::AtomBluetoothDeviceTxPowerLevelReported => {
5030                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
5031            }
5032            Self::AtomBluetoothHciTimeoutReported => {
5033                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
5034            }
5035            Self::AtomBluetoothQualityReportReported => {
5036                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
5037            }
5038            Self::AtomBluetoothDeviceInfoReported => {
5039                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
5040            }
5041            Self::AtomBluetoothRemoteVersionInfoReported => {
5042                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
5043            }
5044            Self::AtomBluetoothSdpAttributeReported => {
5045                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
5046            }
5047            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
5048            Self::AtomBluetoothClassicPairingEventReported => {
5049                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
5050            }
5051            Self::AtomBluetoothSmpPairingEventReported => {
5052                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
5053            }
5054            Self::AtomScreenTimeoutExtensionReported => {
5055                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
5056            }
5057            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
5058            Self::AtomPermissionGrantRequestResultReported => {
5059                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
5060            }
5061            Self::AtomBluetoothSocketConnectionStateChanged => {
5062                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
5063            }
5064            Self::AtomDeviceIdentifierAccessDenied => {
5065                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
5066            }
5067            Self::AtomBubbleDeveloperErrorReported => {
5068                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
5069            }
5070            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
5071            Self::AtomAssistGestureFeedbackReported => {
5072                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
5073            }
5074            Self::AtomAssistGestureProgressReported => {
5075                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
5076            }
5077            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
5078            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
5079            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
5080            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
5081            Self::AtomAppInstallOnExternalStorageReported => {
5082                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
5083            }
5084            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
5085            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
5086            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
5087            Self::AtomSystemServerWatchdogOccurred => {
5088                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
5089            }
5090            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
5091            Self::AtomBluetoothClassOfDeviceReported => {
5092                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
5093            }
5094            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
5095            Self::AtomThermalThrottlingSeverityStateChanged => {
5096                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
5097            }
5098            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
5099            Self::AtomMediametricsAudiopolicyReported => {
5100                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
5101            }
5102            Self::AtomMediametricsAudiorecordReported => {
5103                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
5104            }
5105            Self::AtomMediametricsAudiothreadReported => {
5106                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
5107            }
5108            Self::AtomMediametricsAudiotrackReported => {
5109                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
5110            }
5111            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
5112            Self::AtomMediametricsDrmWidevineReported => {
5113                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
5114            }
5115            Self::AtomMediametricsExtractorReported => {
5116                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
5117            }
5118            Self::AtomMediametricsMediadrmReported => {
5119                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
5120            }
5121            Self::AtomMediametricsNuplayerReported => {
5122                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
5123            }
5124            Self::AtomMediametricsRecorderReported => {
5125                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
5126            }
5127            Self::AtomMediametricsDrmmanagerReported => {
5128                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
5129            }
5130            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
5131            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
5132            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
5133            Self::AtomContentCaptureCallerMismatchReported => {
5134                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
5135            }
5136            Self::AtomContentCaptureServiceEvents => {
5137                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
5138            }
5139            Self::AtomContentCaptureSessionEvents => {
5140                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
5141            }
5142            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
5143            Self::AtomLocationManagerApiUsageReported => {
5144                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
5145            }
5146            Self::AtomReviewPermissionsFragmentResultReported => {
5147                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
5148            }
5149            Self::AtomRuntimePermissionsUpgradeResult => {
5150                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
5151            }
5152            Self::AtomGrantPermissionsActivityButtonActions => {
5153                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
5154            }
5155            Self::AtomLocationAccessCheckNotificationAction => {
5156                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
5157            }
5158            Self::AtomAppPermissionFragmentActionReported => {
5159                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
5160            }
5161            Self::AtomAppPermissionFragmentViewed => {
5162                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
5163            }
5164            Self::AtomAppPermissionsFragmentViewed => {
5165                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
5166            }
5167            Self::AtomPermissionAppsFragmentViewed => {
5168                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
5169            }
5170            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
5171            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
5172            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
5173            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
5174            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
5175            Self::AtomBackGestureReportedReported => {
5176                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
5177            }
5178            Self::AtomUpdateEngineUpdateAttemptReported => {
5179                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
5180            }
5181            Self::AtomUpdateEngineSuccessfulUpdateReported => {
5182                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
5183            }
5184            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
5185            Self::AtomAppCompatibilityChangeReported => {
5186                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
5187            }
5188            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
5189            Self::AtomVmsClientConnectionStateChanged => {
5190                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
5191            }
5192            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
5193            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
5194            Self::AtomMediaProviderPermissionRequested => {
5195                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
5196            }
5197            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
5198            Self::AtomMediaProviderIdleMaintenanceFinished => {
5199                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
5200            }
5201            Self::AtomRebootEscrowRecoveryReported => {
5202                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
5203            }
5204            Self::AtomBootTimeEventDurationReported => {
5205                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
5206            }
5207            Self::AtomBootTimeEventElapsedTimeReported => {
5208                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
5209            }
5210            Self::AtomBootTimeEventUtcTimeReported => {
5211                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
5212            }
5213            Self::AtomBootTimeEventErrorCodeReported => {
5214                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
5215            }
5216            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
5217            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
5218            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
5219            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
5220            Self::AtomIntegrityCheckResultReported => {
5221                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
5222            }
5223            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
5224            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
5225            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
5226            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
5227            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
5228            Self::AtomWifiConnectionResultReported => {
5229                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
5230            }
5231            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
5232            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
5233            Self::AtomForegroundServiceAppOpSessionEnded => {
5234                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
5235            }
5236            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
5237            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
5238            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
5239            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
5240            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
5241            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
5242            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
5243            Self::AtomUserLifecycleJourneyReported => {
5244                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
5245            }
5246            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
5247            Self::AtomAccessibilityShortcutReported => {
5248                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
5249            }
5250            Self::AtomAccessibilityServiceReported => {
5251                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
5252            }
5253            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
5254            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
5255            Self::AtomAutoRevokeNotificationClicked => {
5256                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
5257            }
5258            Self::AtomAutoRevokeFragmentAppViewed => {
5259                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
5260            }
5261            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
5262            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
5263                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
5264            }
5265            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
5266            Self::AtomAudioPowerUsageDataReported => {
5267                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
5268            }
5269            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
5270            Self::AtomMediaoutputOpSwitchReported => {
5271                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
5272            }
5273            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
5274            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
5275            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
5276            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
5277            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
5278            Self::AtomCarUserHalModifyUserRequestReported => {
5279                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
5280            }
5281            Self::AtomCarUserHalModifyUserResponseReported => {
5282                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
5283            }
5284            Self::AtomCarUserHalPostSwitchResponseReported => {
5285                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
5286            }
5287            Self::AtomCarUserHalInitialUserInfoRequestReported => {
5288                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
5289            }
5290            Self::AtomCarUserHalInitialUserInfoResponseReported => {
5291                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
5292            }
5293            Self::AtomCarUserHalUserAssociationRequestReported => {
5294                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
5295            }
5296            Self::AtomCarUserHalSetUserAssociationResponseReported => {
5297                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
5298            }
5299            Self::AtomNetworkIpProvisioningReported => {
5300                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
5301            }
5302            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
5303            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
5304            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
5305            Self::AtomMediametricsAudiorecorddeviceusageReported => {
5306                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
5307            }
5308            Self::AtomMediametricsAudiothreaddeviceusageReported => {
5309                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
5310            }
5311            Self::AtomMediametricsAudiotrackdeviceusageReported => {
5312                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
5313            }
5314            Self::AtomMediametricsAudiodeviceconnectionReported => {
5315                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
5316            }
5317            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
5318            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
5319            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
5320            Self::AtomContactsProviderStatusReported => {
5321                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
5322            }
5323            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
5324            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
5325            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
5326            Self::AtomUiInteractionFrameInfoReported => {
5327                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
5328            }
5329            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
5330            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
5331            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
5332            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
5333            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
5334            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
5335            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
5336            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
5337            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
5338            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
5339            Self::AtomMediametricsMediaparserReported => {
5340                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
5341            }
5342            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
5343            Self::AtomTextClassifierApiUsageReported => {
5344                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
5345            }
5346            Self::AtomCarWatchdogKillStatsReported => {
5347                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
5348            }
5349            Self::AtomMediametricsPlaybackReported => {
5350                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
5351            }
5352            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
5353            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
5354            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
5355            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
5356            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
5357            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
5358            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
5359            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
5360            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
5361            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
5362            Self::AtomImsServiceEntitlementUpdated => {
5363                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
5364            }
5365            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
5366            Self::AtomSimSpecificSettingsRestored => {
5367                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
5368            }
5369            Self::AtomTextClassifierDownloadReported => {
5370                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
5371            }
5372            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
5373            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
5374            Self::AtomBluetoothHalCrashReasonReported => {
5375                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
5376            }
5377            Self::AtomRebootEscrowPreparationReported => {
5378                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
5379            }
5380            Self::AtomRebootEscrowLskfCaptureReported => {
5381                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
5382            }
5383            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
5384            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
5385            Self::AtomMediametricsAaudiostreamReported => {
5386                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
5387            }
5388            Self::AtomMediaTranscodingSessionEnded => {
5389                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
5390            }
5391            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
5392            Self::AtomMagnificationModeWithImeOnReported => {
5393                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
5394            }
5395            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
5396            Self::AtomAppSearchPutDocumentStatsReported => {
5397                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
5398            }
5399            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
5400            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
5401            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
5402            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
5403            Self::AtomAuthPromptAuthenticateInvoked => {
5404                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
5405            }
5406            Self::AtomAuthManagerCanAuthenticateInvoked => {
5407                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
5408            }
5409            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
5410            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
5411            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
5412            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
5413            Self::AtomLocationTimeZoneProviderStateChanged => {
5414                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
5415            }
5416            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
5417            Self::AtomTimeoutAutoExtendedReported => {
5418                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
5419            }
5420            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
5421            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
5422            Self::AtomCarWatchdogIoOveruseStatsReported => {
5423                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
5424            }
5425            Self::AtomUserLevelHibernationStateChanged => {
5426                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
5427            }
5428            Self::AtomAppSearchInitializeStatsReported => {
5429                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
5430            }
5431            Self::AtomAppSearchQueryStatsReported => {
5432                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
5433            }
5434            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
5435            Self::AtomNetworkIpReachabilityMonitorReported => {
5436                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
5437            }
5438            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
5439            Self::AtomAnrOccurredProcessingStarted => {
5440                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
5441            }
5442            Self::AtomAppSearchRemoveStatsReported => {
5443                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
5444            }
5445            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
5446            Self::AtomPermissionUsageFragmentInteraction => {
5447                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
5448            }
5449            Self::AtomPermissionDetailsInteraction => {
5450                "ATOM_PERMISSION_DETAILS_INTERACTION"
5451            }
5452            Self::AtomPrivacySensorToggleInteraction => {
5453                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
5454            }
5455            Self::AtomPrivacyToggleDialogInteraction => {
5456                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
5457            }
5458            Self::AtomAppSearchOptimizeStatsReported => {
5459                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
5460            }
5461            Self::AtomNonA11yToolServiceWarningReport => {
5462                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
5463            }
5464            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
5465            Self::AtomSizeCompatRestartButtonEventReported => {
5466                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
5467            }
5468            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
5469            Self::AtomNetworkDnsHandshakeReported => {
5470                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
5471            }
5472            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
5473            Self::AtomBluetoothLeBatchScanReportDelay => {
5474                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
5475            }
5476            Self::AtomAccessibilityFloatingMenuUiChanged => {
5477                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
5478            }
5479            Self::AtomNeuralnetworksCompilationCompleted => {
5480                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
5481            }
5482            Self::AtomNeuralnetworksExecutionCompleted => {
5483                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
5484            }
5485            Self::AtomNeuralnetworksCompilationFailed => {
5486                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
5487            }
5488            Self::AtomNeuralnetworksExecutionFailed => {
5489                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
5490            }
5491            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
5492            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
5493            Self::AtomContextHubLoadedNanoappSnapshotReported => {
5494                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
5495            }
5496            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
5497            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
5498            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
5499            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
5500            Self::AtomUwbRangingMeasurementReceived => {
5501                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
5502            }
5503            Self::AtomTextClassifierDownloadWorkScheduled => {
5504                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
5505            }
5506            Self::AtomTextClassifierDownloadWorkCompleted => {
5507                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
5508            }
5509            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
5510            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
5511            Self::AtomNearbyDeviceScanStateChanged => {
5512                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
5513            }
5514            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
5515            Self::AtomMediametricsAudiotrackstatusReported => {
5516                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
5517            }
5518            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
5519            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
5520                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
5521            }
5522            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
5523            Self::AtomDisplayHbmBrightnessChanged => {
5524                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
5525            }
5526            Self::AtomPersistentUriPermissionsFlushed => {
5527                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
5528            }
5529            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
5530                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
5531            }
5532            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
5533            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
5534            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
5535            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
5536            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
5537            Self::AtomMediametricsAudiorecordstatusReported => {
5538                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
5539            }
5540            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
5541            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
5542            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
5543            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
5544            Self::AtomHotwordDetectorCreateRequested => {
5545                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
5546            }
5547            Self::AtomHotwordDetectionServiceInitResultReported => {
5548                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
5549            }
5550            Self::AtomHotwordDetectionServiceRestarted => {
5551                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
5552            }
5553            Self::AtomHotwordDetectorKeyphraseTriggered => {
5554                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
5555            }
5556            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
5557            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
5558                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
5559            }
5560            Self::AtomContactsIndexerUpdateStatsReported => {
5561                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
5562            }
5563            Self::AtomAppBackgroundRestrictionsInfo => {
5564                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
5565            }
5566            Self::AtomMmsSmsProviderGetThreadIdFailed => {
5567                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
5568            }
5569            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
5570                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
5571            }
5572            Self::AtomPermissionReminderNotificationInteracted => {
5573                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
5574            }
5575            Self::AtomRecentPermissionDecisionsInteracted => {
5576                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
5577            }
5578            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
5579            Self::AtomLeAudioConnectionSessionReported => {
5580                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
5581            }
5582            Self::AtomLeAudioBroadcastSessionReported => {
5583                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
5584            }
5585            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
5586            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
5587            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
5588            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
5589                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
5590            }
5591            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
5592                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
5593            }
5594            Self::AtomAccessibilityTextReadingOptionsChanged => {
5595                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
5596            }
5597            Self::AtomWifiSetupFailureCrashReported => {
5598                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
5599            }
5600            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
5601            Self::AtomIsolatedCompilationScheduled => {
5602                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
5603            }
5604            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
5605            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
5606                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
5607            }
5608            Self::AtomSystemServerPreWatchdogOccurred => {
5609                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
5610            }
5611            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
5612            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
5613            Self::AtomRemoteKeyProvisioningAttempt => {
5614                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
5615            }
5616            Self::AtomRemoteKeyProvisioningNetworkInfo => {
5617                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
5618            }
5619            Self::AtomRemoteKeyProvisioningTiming => {
5620                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
5621            }
5622            Self::AtomMediaoutputOpInteractionReport => {
5623                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
5624            }
5625            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
5626            Self::AtomAutofillPresentationEventReported => {
5627                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
5628            }
5629            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
5630            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
5631            Self::AtomSafetyCenterSystemEventReported => {
5632                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
5633            }
5634            Self::AtomSafetyCenterInteractionReported => {
5635                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
5636            }
5637            Self::AtomSettingsProviderSettingChanged => {
5638                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
5639            }
5640            Self::AtomBroadcastDeliveryEventReported => {
5641                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
5642            }
5643            Self::AtomServiceRequestEventReported => {
5644                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
5645            }
5646            Self::AtomProviderAcquisitionEventReported => {
5647                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
5648            }
5649            Self::AtomBluetoothDeviceNameReported => {
5650                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
5651            }
5652            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
5653            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
5654            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
5655            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
5656            Self::AtomPrivacySignalNotificationInteraction => {
5657                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
5658            }
5659            Self::AtomPrivacySignalIssueCardInteraction => {
5660                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
5661            }
5662            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
5663            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
5664            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
5665            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
5666            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
5667            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
5668            Self::AtomNetworkDnsServerSupportReported => {
5669                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
5670            }
5671            Self::AtomVmBooted => "ATOM_VM_BOOTED",
5672            Self::AtomVmExited => "ATOM_VM_EXITED",
5673            Self::AtomAmbientBrightnessStatsReported => {
5674                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
5675            }
5676            Self::AtomMediametricsSpatializercapabilitiesReported => {
5677                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
5678            }
5679            Self::AtomMediametricsSpatializerdeviceenabledReported => {
5680                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
5681            }
5682            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
5683                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
5684            }
5685            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
5686                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
5687            }
5688            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
5689            Self::AtomDeviceWideJobConstraintChanged => {
5690                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
5691            }
5692            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
5693            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
5694            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
5695            Self::AtomSystemDefaultNetworkChanged => {
5696                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
5697            }
5698            Self::AtomIwlanSetupDataCallResultReported => {
5699                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
5700            }
5701            Self::AtomIwlanPdnDisconnectedReasonReported => {
5702                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
5703            }
5704            Self::AtomAirplaneModeSessionReported => {
5705                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
5706            }
5707            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
5708            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
5709            Self::AtomPackageInstallationSessionReported => {
5710                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
5711            }
5712            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
5713            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
5714            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
5715            Self::AtomBluetoothDisconnectionReasonReported => {
5716                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
5717            }
5718            Self::AtomBluetoothLocalVersionsReported => {
5719                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
5720            }
5721            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
5722                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
5723            }
5724            Self::AtomBluetoothLocalSupportedFeaturesReported => {
5725                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
5726            }
5727            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
5728            Self::AtomBrightnessConfigurationUpdated => {
5729                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
5730            }
5731            Self::AtomWearMediaOutputSwitcherLaunched => {
5732                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
5733            }
5734            Self::AtomWearMediaOutputSwitcherFinished => {
5735                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
5736            }
5737            Self::AtomWearMediaOutputSwitcherConnectionReported => {
5738                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
5739            }
5740            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
5741                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
5742            }
5743            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
5744                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
5745            }
5746            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
5747                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
5748            }
5749            Self::AtomPackageManagerSnapshotReported => {
5750                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
5751            }
5752            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
5753                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
5754            }
5755            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
5756                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
5757            }
5758            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
5759            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
5760                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
5761            }
5762            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
5763            Self::AtomWsWatchFaceFavoriteActionReported => {
5764                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
5765            }
5766            Self::AtomWsWatchFaceSetActionReported => {
5767                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
5768            }
5769            Self::AtomPackageUninstallationReported => {
5770                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
5771            }
5772            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
5773            Self::AtomGameModeConfigurationChanged => {
5774                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
5775            }
5776            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
5777            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
5778            Self::AtomNetworkSliceDailyDataUsageReported => {
5779                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
5780            }
5781            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
5782            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
5783            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
5784            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
5785            Self::AtomGetTypeAccessedWithoutPermission => {
5786                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
5787            }
5788            Self::AtomMobileBundledAppInfoGathered => {
5789                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
5790            }
5791            Self::AtomWsWatchFaceComplicationSetChanged => {
5792                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
5793            }
5794            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
5795            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
5796            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
5797            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
5798            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
5799            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
5800            Self::AtomPerformanceHintSessionReported => {
5801                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
5802            }
5803            Self::AtomMediametricsMidiDeviceCloseReported => {
5804                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
5805            }
5806            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
5807            Self::AtomHotwordAudioEgressEventReported => {
5808                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
5809            }
5810            Self::AtomLocationEnabledStateChanged => {
5811                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
5812            }
5813            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
5814            Self::AtomUsbComplianceWarningsReported => {
5815                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
5816            }
5817            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
5818            Self::AtomMediaProviderVolumeRecoveryReported => {
5819                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
5820            }
5821            Self::AtomBiometricPropertiesCollected => {
5822                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
5823            }
5824            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
5825            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
5826            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
5827            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
5828            Self::AtomDeviceLogAccessEventReported => {
5829                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
5830            }
5831            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
5832            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
5833            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
5834            Self::AtomNetworkValidationFailureStatsDailyReported => {
5835                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
5836            }
5837            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
5838            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
5839            Self::AtomWsNotificationBridgemodeUpdated => {
5840                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
5841            }
5842            Self::AtomWsNotificationDismissalActioned => {
5843                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
5844            }
5845            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
5846            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
5847            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
5848            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
5849            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
5850            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
5851            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
5852            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
5853            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
5854            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
5855            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
5856            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
5857            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
5858            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
5859            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
5860            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
5861            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
5862            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
5863            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
5864            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
5865            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
5866            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
5867            Self::AtomTemperature => "ATOM_TEMPERATURE",
5868            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
5869            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
5870            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
5871            Self::AtomDiskStats => "ATOM_DISK_STATS",
5872            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
5873            Self::AtomAppSize => "ATOM_APP_SIZE",
5874            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
5875            Self::AtomProcStats => "ATOM_PROC_STATS",
5876            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
5877            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
5878            Self::AtomDiskIo => "ATOM_DISK_IO",
5879            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
5880            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
5881            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
5882            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
5883            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
5884            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
5885            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
5886            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
5887            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
5888            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
5889            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
5890            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
5891            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
5892            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
5893            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
5894            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
5895            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
5896            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
5897            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
5898            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
5899            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
5900            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
5901            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
5902            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
5903            Self::AtomAppOps => "ATOM_APP_OPS",
5904            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
5905            Self::AtomSurfaceflingerStatsGlobalInfo => {
5906                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
5907            }
5908            Self::AtomSurfaceflingerStatsLayerInfo => {
5909                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
5910            }
5911            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
5912            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
5913            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
5914            Self::AtomDangerousPermissionStateSampled => {
5915                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
5916            }
5917            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
5918            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
5919            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
5920            Self::AtomPackageNotificationPreferences => {
5921                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
5922            }
5923            Self::AtomPackageNotificationChannelPreferences => {
5924                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
5925            }
5926            Self::AtomPackageNotificationChannelGroupPreferences => {
5927                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
5928            }
5929            Self::AtomGnssStats => "ATOM_GNSS_STATS",
5930            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
5931            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
5932            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
5933            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
5934            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
5935            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
5936            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
5937            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
5938            Self::AtomBytesTransferByTagAndMetered => {
5939                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
5940            }
5941            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
5942            Self::AtomGeneralExternalStorageAccessStats => {
5943                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
5944            }
5945            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
5946            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
5947            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
5948            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
5949            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
5950            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
5951            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
5952            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
5953            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
5954            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
5955            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
5956            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
5957            Self::AtomCpuCyclesPerThreadGroupCluster => {
5958                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
5959            }
5960            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
5961            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
5962            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
5963            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
5964            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
5965            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
5966            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
5967            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
5968            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
5969            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
5970            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
5971            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
5972            Self::AtomBatteryUsageStatsBeforeReset => {
5973                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
5974            }
5975            Self::AtomBatteryUsageStatsSinceReset => {
5976                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
5977            }
5978            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
5979                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
5980            }
5981            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
5982            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
5983            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
5984            Self::AtomVmstat => "ATOM_VMSTAT",
5985            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
5986                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
5987            }
5988            Self::AtomKeystore2KeyCreationWithAuthInfo => {
5989                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
5990            }
5991            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
5992                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
5993            }
5994            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
5995            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
5996                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
5997            }
5998            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
5999                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
6000            }
6001            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
6002            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
6003            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
6004            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
6005            Self::AtomAccessibilityFloatingMenuStats => {
6006                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
6007            }
6008            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
6009            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
6010            Self::AtomCarWatchdogSystemIoUsageSummary => {
6011                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
6012            }
6013            Self::AtomCarWatchdogUidIoUsageSummary => {
6014                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
6015            }
6016            Self::AtomImsRegistrationFeatureTagStats => {
6017                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
6018            }
6019            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
6020            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
6021            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
6022            Self::AtomSipTransportFeatureTagStats => {
6023                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
6024            }
6025            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
6026            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
6027            Self::AtomImsDedicatedBearerListenerEvent => {
6028                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
6029            }
6030            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
6031            Self::AtomImsRegistrationServiceDescStats => {
6032                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
6033            }
6034            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
6035            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
6036            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
6037            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
6038            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
6039            Self::AtomPersistentUriPermissionsAmountPerPackage => {
6040                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
6041            }
6042            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
6043            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
6044            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
6045            Self::AtomUserInfo => "ATOM_USER_INFO",
6046            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
6047            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
6048            Self::AtomRemoteKeyProvisioningErrorCounts => {
6049                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
6050            }
6051            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
6052            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
6053            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
6054            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
6055            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
6056            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
6057            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
6058            Self::AtomNetworkSelectionRematchReasonsInfo => {
6059                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
6060            }
6061            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
6062            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
6063            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
6064            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
6065            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
6066            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
6067                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
6068            }
6069            Self::AtomProcessState => "ATOM_PROCESS_STATE",
6070            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
6071            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
6072            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
6073            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
6074            Self::AtomWsFavouriteWatchFaceListSnapshot => {
6075                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
6076            }
6077            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
6078            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
6079            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
6080            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
6081            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
6082            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
6083            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
6084            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
6085            Self::AtomWifiAwareResourceUsingChanged => {
6086                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
6087            }
6088            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
6089            Self::AtomWifiLocalOnlyRequestReceived => {
6090                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
6091            }
6092            Self::AtomWifiLocalOnlyRequestScanTriggered => {
6093                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
6094            }
6095            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
6096            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
6097            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
6098            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
6099            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
6100            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
6101            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
6102            Self::AtomScorerPredictionResultReported => {
6103                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
6104            }
6105            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
6106            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
6107            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
6108            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
6109            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
6110            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
6111            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
6112            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
6113            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
6114            Self::AtomWsIncomingCallActionReported => {
6115                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
6116            }
6117            Self::AtomWsCallDisconnectionReported => {
6118                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
6119            }
6120            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
6121            Self::AtomWsCallUserExperienceLatencyReported => {
6122                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
6123            }
6124            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
6125            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
6126            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
6127                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
6128            }
6129            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
6130                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
6131            }
6132            Self::AtomWsComplicationsImpactedNotificationEventReported => {
6133                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
6134            }
6135            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
6136            Self::AtomWsNotificationManagedDismissalSync => {
6137                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
6138            }
6139            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
6140            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
6141            Self::AtomWsFavoriteWatchFaceSnapshot => {
6142                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
6143            }
6144            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
6145                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
6146            }
6147            Self::AtomWsWatchFaceCustomizationSnapshot => {
6148                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
6149            }
6150            Self::AtomWearAdaptiveSuspendStatsReported => {
6151                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
6152            }
6153            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
6154                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
6155            }
6156            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
6157                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
6158            }
6159            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
6160            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
6161            Self::AtomWearTimeSyncAttemptCompleted => {
6162                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
6163            }
6164            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
6165            Self::AtomWearSetupWizardDeviceStatusReported => {
6166                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
6167            }
6168            Self::AtomWearSetupWizardPairingCompleted => {
6169                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
6170            }
6171            Self::AtomWearSetupWizardConnectionEstablished => {
6172                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
6173            }
6174            Self::AtomWearSetupWizardCheckinCompleted => {
6175                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
6176            }
6177            Self::AtomWearSetupWizardCompanionTimeReported => {
6178                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
6179            }
6180            Self::AtomWearSetupWizardStatusReported => {
6181                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
6182            }
6183            Self::AtomWearSetupWizardHeartbeatReported => {
6184                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
6185            }
6186            Self::AtomWearSetupWizardFrpTriggered => {
6187                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
6188            }
6189            Self::AtomWearSetupWizardSystemUpdateTriggered => {
6190                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
6191            }
6192            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
6193                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
6194            }
6195            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
6196            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
6197            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
6198            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
6199            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
6200            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
6201            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
6202            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
6203            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
6204            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
6205            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
6206            Self::AtomIgnoredInflationFailuresReported => {
6207                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
6208            }
6209            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
6210            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
6211            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
6212            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
6213            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
6214            Self::AtomMediaControlApiUsageReported => {
6215                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
6216            }
6217            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
6218            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
6219                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
6220            }
6221            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
6222                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
6223            }
6224            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
6225                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
6226            }
6227            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
6228            Self::AtomSysproxyBluetoothBytesTransfer => {
6229                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
6230            }
6231            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
6232            Self::AtomWearCompanionConnectionState => {
6233                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
6234            }
6235            Self::AtomSysproxyServiceStateUpdated => {
6236                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
6237            }
6238            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
6239            Self::AtomTestUprobestatsAtomReported => {
6240                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
6241            }
6242            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
6243            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
6244            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
6245            Self::AtomThreadnetworkTelemetryDataReported => {
6246                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
6247            }
6248            Self::AtomThreadnetworkTopoEntryRepeated => {
6249                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
6250            }
6251            Self::AtomThreadnetworkDeviceInfoReported => {
6252                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
6253            }
6254            Self::AtomCellularRadioPowerStateChanged => {
6255                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
6256            }
6257            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
6258            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
6259            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
6260            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
6261            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
6262            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
6263            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
6264            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
6265            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
6266            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
6267            Self::AtomSatelliteSosMessageRecommender => {
6268                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
6269            }
6270            Self::AtomCarrierRoamingSatelliteSession => {
6271                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
6272            }
6273            Self::AtomCarrierRoamingSatelliteControllerStats => {
6274                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
6275            }
6276            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
6277            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
6278            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
6279            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
6280            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
6281            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
6282            Self::AtomQnsFallbackRestrictionChanged => {
6283                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
6284            }
6285            Self::AtomQnsRatPreferenceMismatchInfo => {
6286                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
6287            }
6288            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
6289            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
6290            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
6291                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
6292            }
6293            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
6294            Self::AtomCallStats => "ATOM_CALL_STATS",
6295            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
6296            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
6297            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
6298            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
6299            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
6300            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
6301            Self::AtomDisplaySwitchLatencyTracked => {
6302                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
6303            }
6304            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
6305            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
6306            Self::AtomCommunalHubWidgetEventReported => {
6307                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
6308            }
6309            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
6310            Self::AtomContextualEducationTriggered => {
6311                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
6312            }
6313            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
6314            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
6315            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
6316            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
6317            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
6318            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
6319            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
6320            Self::AtomSandboxActivityEventOccurred => {
6321                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
6322            }
6323            Self::AtomSdkSandboxRestrictedAccessInSession => {
6324                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
6325            }
6326            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
6327            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
6328            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
6329            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
6330            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
6331            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
6332            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
6333            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
6334            Self::AtomMediaProviderDatabaseRollbackReported => {
6335                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
6336            }
6337            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
6338            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
6339            Self::AtomScreenTimeoutOverrideReported => {
6340                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
6341            }
6342            Self::AtomScreenInteractiveSessionReported => {
6343                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
6344            }
6345            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
6346            Self::AtomAtom9999 => "ATOM_ATOM_9999",
6347            Self::AtomAtom99999 => "ATOM_ATOM_99999",
6348            Self::AtomPhotopickerSessionInfoReported => {
6349                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
6350            }
6351            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
6352            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
6353            Self::AtomPhotopickerMediaItemStatusReported => {
6354                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
6355            }
6356            Self::AtomPhotopickerPreviewInfoLogged => {
6357                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
6358            }
6359            Self::AtomPhotopickerMenuInteractionLogged => {
6360                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
6361            }
6362            Self::AtomPhotopickerBannerInteractionLogged => {
6363                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
6364            }
6365            Self::AtomPhotopickerMediaLibraryInfoLogged => {
6366                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
6367            }
6368            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
6369            Self::AtomPhotopickerMediaGridSyncInfoReported => {
6370                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
6371            }
6372            Self::AtomPhotopickerAlbumSyncInfoReported => {
6373                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
6374            }
6375            Self::AtomPhotopickerSearchInfoReported => {
6376                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
6377            }
6378            Self::AtomSearchDataExtractionDetailsReported => {
6379                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
6380            }
6381            Self::AtomEmbeddedPhotopickerInfoReported => {
6382                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
6383            }
6384            Self::AtomPermissionRationaleDialogViewed => {
6385                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
6386            }
6387            Self::AtomPermissionRationaleDialogActionReported => {
6388                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
6389            }
6390            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
6391                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
6392            }
6393            Self::AtomAppDataSharingUpdatesFragmentViewed => {
6394                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
6395            }
6396            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
6397                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
6398            }
6399            Self::AtomEnhancedConfirmationDialogResultReported => {
6400                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
6401            }
6402            Self::AtomEnhancedConfirmationRestrictionCleared => {
6403                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
6404            }
6405            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
6406            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
6407            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
6408            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
6409            Self::AtomComponentStateChangedReported => {
6410                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
6411            }
6412            Self::AtomOndevicepersonalizationApiCalled => {
6413                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
6414            }
6415            Self::AtomOndevicepersonalizationTraceEvent => {
6416                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
6417            }
6418            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
6419            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
6420            Self::AtomNfcPollingLoopNotificationReported => {
6421                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
6422            }
6423            Self::AtomNfcProprietaryCapabilitiesReported => {
6424                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
6425            }
6426            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
6427            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
6428            Self::AtomMicroxrDeviceBootCompleteReported => {
6429                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
6430            }
6431            Self::AtomMteState => "ATOM_MTE_STATE",
6432            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
6433            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
6434            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
6435            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
6436            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
6437            Self::AtomMediaCodecReclaimRequestCompleted => {
6438                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
6439            }
6440            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
6441            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
6442            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
6443            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
6444            Self::AtomChreSignificantMotionStateChanged => {
6445                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
6446            }
6447            Self::AtomPopulationDensityProviderLoadingReported => {
6448                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
6449            }
6450            Self::AtomDensityBasedCoarseLocationsUsageReported => {
6451                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
6452            }
6453            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
6454                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
6455            }
6456            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
6457            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
6458            Self::AtomKeyboardSystemsEventReported => {
6459                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
6460            }
6461            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
6462            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
6463            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
6464            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
6465            Self::AtomIkeLivenessCheckSessionValidated => {
6466                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
6467            }
6468            Self::AtomNegotiatedSecurityAssociation => {
6469                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
6470            }
6471            Self::AtomHotwordEgressSizeAtomReported => {
6472                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
6473            }
6474            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
6475            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
6476            Self::AtomHealthConnectAppOpenedReported => {
6477                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
6478            }
6479            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
6480            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
6481            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
6482            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
6483            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
6484            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
6485            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
6486            Self::AtomHealthConnectExportImportStatsReported => {
6487                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
6488            }
6489            Self::AtomHealthConnectPermissionStats => {
6490                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
6491            }
6492            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
6493            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
6494            Self::AtomHealthConnectPhrStorageStats => {
6495                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
6496            }
6497            Self::AtomHealthConnectRestrictedEcosystemStats => {
6498                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
6499            }
6500            Self::AtomHealthConnectEcosystemStats => {
6501                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
6502            }
6503            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
6504            Self::AtomHdmiSoundbarModeStatusReported => {
6505                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
6506            }
6507            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
6508                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
6509            }
6510            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
6511            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
6512            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
6513            Self::AtomApplicationGrammaticalInflectionChanged => {
6514                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
6515            }
6516            Self::AtomSystemGrammaticalInflectionChanged => {
6517                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
6518            }
6519            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
6520            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
6521            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
6522            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
6523            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
6524            Self::AtomStylusPredictionMetricsReported => {
6525                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
6526            }
6527            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
6528            Self::AtomMediaProjectionStateChanged => {
6529                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
6530            }
6531            Self::AtomMediaProjectionTargetChanged => {
6532                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
6533            }
6534            Self::AtomExcessiveBinderProxyCountReported => {
6535                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
6536            }
6537            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
6538            Self::AtomMobileBytesTransferByProcState => {
6539                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
6540            }
6541            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
6542            Self::AtomSensitiveContentMediaProjectionSession => {
6543                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
6544            }
6545            Self::AtomSensitiveNotificationAppProtectionSession => {
6546                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
6547            }
6548            Self::AtomSensitiveNotificationAppProtectionApplied => {
6549                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
6550            }
6551            Self::AtomSensitiveNotificationRedaction => {
6552                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
6553            }
6554            Self::AtomSensitiveContentAppProtection => {
6555                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
6556            }
6557            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
6558            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
6559            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
6560            Self::AtomPowerSaveTempAllowlistChanged => {
6561                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
6562            }
6563            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
6564            Self::AtomContentOrFileUriEventReported => {
6565                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
6566            }
6567            Self::AtomDeviceIdleTempAllowlistUpdated => {
6568                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
6569            }
6570            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
6571                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
6572            }
6573            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
6574            Self::AtomJankFrameCountByWidgetReported => {
6575                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
6576            }
6577            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
6578            Self::AtomNotificationChannelClassification => {
6579                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
6580            }
6581            Self::AtomCameraStatusForCompatibilityChanged => {
6582                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
6583            }
6584            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
6585            Self::AtomFederatedComputeTrainingEventReported => {
6586                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
6587            }
6588            Self::AtomExampleIteratorNextLatencyReported => {
6589                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
6590            }
6591            Self::AtomFederatedComputeTraceEventReported => {
6592                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
6593            }
6594            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
6595            Self::AtomExpressHistogramSampleReported => {
6596                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
6597            }
6598            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
6599            Self::AtomExpressUidHistogramSampleReported => {
6600                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
6601            }
6602            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
6603            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
6604            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
6605            Self::AtomExternalDisplayStateChanged => {
6606                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
6607            }
6608            Self::AtomDisplayModeDirectorVoteChanged => {
6609                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
6610            }
6611            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
6612            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
6613            Self::AtomDeviceLockCheckInRequestReported => {
6614                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
6615            }
6616            Self::AtomDeviceLockProvisioningCompleteReported => {
6617                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
6618            }
6619            Self::AtomDeviceLockKioskAppRequestReported => {
6620                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
6621            }
6622            Self::AtomDeviceLockCheckInRetryReported => {
6623                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
6624            }
6625            Self::AtomDeviceLockProvisionFailureReported => {
6626                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
6627            }
6628            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
6629                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
6630            }
6631            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
6632            Self::AtomDesktopModeSessionTaskUpdate => {
6633                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
6634            }
6635            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
6636            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
6637            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
6638            Self::AtomCronetEngineBuilderInitialized => {
6639                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
6640            }
6641            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
6642            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
6643            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
6644            Self::AtomCredentialManagerInitPhaseReported => {
6645                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
6646            }
6647            Self::AtomCredentialManagerCandidatePhaseReported => {
6648                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
6649            }
6650            Self::AtomCredentialManagerFinalPhaseReported => {
6651                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
6652            }
6653            Self::AtomCredentialManagerTotalReported => {
6654                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
6655            }
6656            Self::AtomCredentialManagerFinalnouidReported => {
6657                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
6658            }
6659            Self::AtomCredentialManagerGetReported => {
6660                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
6661            }
6662            Self::AtomCredentialManagerAuthClickReported => {
6663                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
6664            }
6665            Self::AtomCredentialManagerApiv2Called => {
6666                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
6667            }
6668            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
6669            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
6670            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
6671            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
6672            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
6673            Self::AtomCoreNetworkingTerribleErrorOccurred => {
6674                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
6675            }
6676            Self::AtomNetworkStatsRecorderFileOperated => {
6677                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
6678            }
6679            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
6680            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
6681            Self::AtomTetheringActiveSessionsReported => {
6682                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
6683            }
6684            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
6685                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
6686            }
6687            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
6688            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
6689            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
6690            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
6691            Self::AtomCertificateTransparencyLogListStateChanged => {
6692                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
6693            }
6694            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
6695            Self::AtomCertificateTransparencyVerificationReported => {
6696                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
6697            }
6698            Self::AtomCameraFeatureCombinationQueryEvent => {
6699                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
6700            }
6701            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
6702            Self::AtomBluetoothHashedDeviceNameReported => {
6703                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
6704            }
6705            Self::AtomBluetoothL2capCocClientConnection => {
6706                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
6707            }
6708            Self::AtomBluetoothL2capCocServerConnection => {
6709                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
6710            }
6711            Self::AtomBluetoothLeSessionConnected => {
6712                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
6713            }
6714            Self::AtomRestrictedBluetoothDeviceNameReported => {
6715                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
6716            }
6717            Self::AtomBluetoothProfileConnectionAttempted => {
6718                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
6719            }
6720            Self::AtomBluetoothContentProfileErrorReported => {
6721                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
6722            }
6723            Self::AtomBluetoothRfcommConnectionAttempted => {
6724                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
6725            }
6726            Self::AtomRemoteDeviceInformationWithMetricId => {
6727                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
6728            }
6729            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
6730            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
6731            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
6732            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
6733            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
6734            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
6735            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
6736            Self::AtomBluetoothCrossLayerEventReported => {
6737                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
6738            }
6739            Self::AtomBroadcastAudioSessionReported => {
6740                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
6741            }
6742            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
6743            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
6744                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
6745            }
6746            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
6747            Self::AtomHearingDeviceActiveEventReported => {
6748                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
6749            }
6750            Self::AtomBackportedFixStatusReported => {
6751                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
6752            }
6753            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
6754            Self::AtomCarSystemUiDataSubscriptionEventReported => {
6755                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
6756            }
6757            Self::AtomCarSettingsDataSubscriptionEventReported => {
6758                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
6759            }
6760            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
6761            Self::AtomCarWakeupFromSuspendReported => {
6762                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
6763            }
6764            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
6765            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
6766            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
6767            Self::AtomAutofillFillRequestReported => {
6768                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
6769            }
6770            Self::AtomAutofillFillResponseReported => {
6771                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
6772            }
6773            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
6774            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
6775            Self::AtomAutofillFieldClassificationEventReported => {
6776                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
6777            }
6778            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
6779            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
6780            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
6781            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
6782            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
6783            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
6784            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
6785            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
6786            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
6787            Self::AtomAppSearchSetSchemaStatsReported => {
6788                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
6789            }
6790            Self::AtomAppSearchSchemaMigrationStatsReported => {
6791                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
6792            }
6793            Self::AtomAppSearchUsageSearchIntentStatsReported => {
6794                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
6795            }
6796            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
6797                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
6798            }
6799            Self::AtomAppSearchAppsIndexerStatsReported => {
6800                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
6801            }
6802            Self::AtomAppFunctionsRequestReported => {
6803                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
6804            }
6805            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
6806            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
6807            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
6808            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
6809            Self::AtomAiWallpapersTemplateSelected => {
6810                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
6811            }
6812            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
6813            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
6814            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
6815            Self::AtomJsscriptengineLatencyReported => {
6816                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
6817            }
6818            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
6819            Self::AtomAdServicesMesurementReportsUploaded => {
6820                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
6821            }
6822            Self::AtomMobileDataDownloadFileGroupStatusReported => {
6823                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
6824            }
6825            Self::AtomMobileDataDownloadDownloadResultReported => {
6826                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
6827            }
6828            Self::AtomAdServicesSettingsUsageReported => {
6829                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
6830            }
6831            Self::AtomBackgroundFetchProcessReported => {
6832                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
6833            }
6834            Self::AtomUpdateCustomAudienceProcessReported => {
6835                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
6836            }
6837            Self::AtomRunAdBiddingProcessReported => {
6838                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
6839            }
6840            Self::AtomRunAdScoringProcessReported => {
6841                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
6842            }
6843            Self::AtomRunAdSelectionProcessReported => {
6844                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
6845            }
6846            Self::AtomRunAdBiddingPerCaProcessReported => {
6847                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
6848            }
6849            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
6850                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
6851            }
6852            Self::AtomAdServicesMeasurementRegistrations => {
6853                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
6854            }
6855            Self::AtomAdServicesGetTopicsReported => {
6856                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
6857            }
6858            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
6859                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
6860            }
6861            Self::AtomAdServicesEpochComputationClassifierReported => {
6862                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6863            }
6864            Self::AtomAdServicesBackCompatGetTopicsReported => {
6865                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
6866            }
6867            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
6868                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6869            }
6870            Self::AtomAdServicesMeasurementDebugKeys => {
6871                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
6872            }
6873            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
6874            Self::AtomAdServicesBackgroundJobsExecutionReported => {
6875                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
6876            }
6877            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
6878                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
6879            }
6880            Self::AtomAdServicesMeasurementAttribution => {
6881                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
6882            }
6883            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
6884            Self::AtomAdServicesMeasurementWipeout => {
6885                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
6886            }
6887            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
6888                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
6889            }
6890            Self::AtomAdServicesEnrollmentDataStored => {
6891                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
6892            }
6893            Self::AtomAdServicesEnrollmentFileDownloaded => {
6894                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
6895            }
6896            Self::AtomAdServicesEnrollmentMatched => {
6897                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
6898            }
6899            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
6900            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
6901            Self::AtomAdServicesMeasurementClickVerification => {
6902                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
6903            }
6904            Self::AtomAdServicesEncryptionKeyFetched => {
6905                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
6906            }
6907            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
6908                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
6909            }
6910            Self::AtomDestinationRegisteredBeacons => {
6911                "ATOM_DESTINATION_REGISTERED_BEACONS"
6912            }
6913            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
6914            Self::AtomInteractionReportingTableCleared => {
6915                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
6916            }
6917            Self::AtomAppManifestConfigHelperCalled => {
6918                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
6919            }
6920            Self::AtomAdFilteringProcessJoinCaReported => {
6921                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
6922            }
6923            Self::AtomAdFilteringProcessAdSelectionReported => {
6924                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
6925            }
6926            Self::AtomAdCounterHistogramUpdaterReported => {
6927                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
6928            }
6929            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
6930            Self::AtomKAnonImmediateSignJoinStatusReported => {
6931                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
6932            }
6933            Self::AtomKAnonBackgroundJobStatusReported => {
6934                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
6935            }
6936            Self::AtomKAnonInitializeStatusReported => {
6937                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
6938            }
6939            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
6940            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
6941            Self::AtomKAnonKeyAttestationStatusReported => {
6942                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
6943            }
6944            Self::AtomGetAdSelectionDataApiCalled => {
6945                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
6946            }
6947            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
6948                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
6949            }
6950            Self::AtomBackgroundJobSchedulingReported => {
6951                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
6952            }
6953            Self::AtomTopicsEncryptionEpochComputationReported => {
6954                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
6955            }
6956            Self::AtomTopicsEncryptionGetTopicsReported => {
6957                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
6958            }
6959            Self::AtomAdservicesShellCommandCalled => {
6960                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
6961            }
6962            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
6963            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
6964            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
6965            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
6966            Self::AtomPersistAdSelectionResultCalled => {
6967                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
6968            }
6969            Self::AtomServerAuctionKeyFetchCalled => {
6970                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
6971            }
6972            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
6973                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
6974            }
6975            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
6976                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
6977            }
6978            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
6979                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
6980            }
6981            Self::AtomSelectAdsFromOutcomesApiCalled => {
6982                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
6983            }
6984            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
6985            Self::AtomAdServicesEnrollmentTransactionStats => {
6986                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
6987            }
6988            Self::AtomAdServicesCobaltLoggerEventReported => {
6989                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
6990            }
6991            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
6992                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
6993            }
6994            Self::AtomUpdateSignalsProcessReported => {
6995                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
6996            }
6997            Self::AtomTopicsScheduleEpochJobSettingReported => {
6998                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
6999            }
7000            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
7001                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
7002            }
7003            Self::AtomScheduledCustomAudienceUpdatePerformed => {
7004                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
7005            }
7006            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
7007                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
7008            }
7009            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
7010                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
7011            }
7012            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
7013            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
7014            Self::AtomThermalHeadroomThresholdsCalled => {
7015                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
7016            }
7017            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
7018            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
7019            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
7020            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
7021                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
7022            }
7023            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
7024            Self::AtomAccessibilityCheckResultReported => {
7025                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
7026            }
7027        }
7028    }
7029    /// Creates an enum from field names used in the ProtoBuf definition.
7030    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7031        match value {
7032            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
7033            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
7034            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
7035            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
7036            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
7037            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
7038            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
7039            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
7040                Some(Self::AtomScheduledJobStateChanged)
7041            }
7042            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
7043            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
7044            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
7045                Some(Self::AtomLongPartialWakelockStateChanged)
7046            }
7047            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
7048                Some(Self::AtomMobileRadioPowerStateChanged)
7049            }
7050            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
7051                Some(Self::AtomWifiRadioPowerStateChanged)
7052            }
7053            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
7054                Some(Self::AtomActivityManagerSleepStateChanged)
7055            }
7056            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
7057                Some(Self::AtomMemoryFactorStateChanged)
7058            }
7059            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
7060                Some(Self::AtomExcessiveCpuUsageReported)
7061            }
7062            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
7063            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
7064                Some(Self::AtomProcessMemoryStatReported)
7065            }
7066            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
7067            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
7068                Some(Self::AtomBatterySaverModeStateChanged)
7069            }
7070            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
7071                Some(Self::AtomDeviceIdleModeStateChanged)
7072            }
7073            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
7074                Some(Self::AtomDeviceIdlingModeStateChanged)
7075            }
7076            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
7077            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
7078            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
7079            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
7080            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
7081            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
7082                Some(Self::AtomProcessLifeCycleStateChanged)
7083            }
7084            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
7085            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
7086            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
7087            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
7088            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
7089            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
7090            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
7091            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
7092            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
7093            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
7094                Some(Self::AtomWifiSignalStrengthChanged)
7095            }
7096            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
7097            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
7098                Some(Self::AtomPhoneSignalStrengthChanged)
7099            }
7100            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
7101            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
7102                Some(Self::AtomActivityForegroundStateChanged)
7103            }
7104            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
7105            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
7106            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
7107            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
7108            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
7109            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
7110            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
7111            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
7112            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
7113            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
7114                Some(Self::AtomPictureInPictureStateChanged)
7115            }
7116            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
7117                Some(Self::AtomWifiMulticastLockStateChanged)
7118            }
7119            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
7120                Some(Self::AtomAppStartMemoryStateCaptured)
7121            }
7122            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
7123            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
7124            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
7125            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
7126                Some(Self::AtomForegroundServiceStateChanged)
7127            }
7128            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
7129            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
7130            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
7131                Some(Self::AtomKeyguardBouncerStateChanged)
7132            }
7133            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
7134                Some(Self::AtomKeyguardBouncerPasswordEntered)
7135            }
7136            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
7137            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
7138                Some(Self::AtomResourceConfigurationChanged)
7139            }
7140            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
7141                Some(Self::AtomBluetoothEnabledStateChanged)
7142            }
7143            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
7144                Some(Self::AtomBluetoothConnectionStateChanged)
7145            }
7146            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
7147            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
7148                Some(Self::AtomUsbConnectorStateChanged)
7149            }
7150            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
7151            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
7152            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
7153            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
7154            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
7155                Some(Self::AtomMobileConnectionStateChanged)
7156            }
7157            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
7158                Some(Self::AtomMobileRadioTechnologyChanged)
7159            }
7160            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
7161            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
7162            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
7163            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
7164            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
7165            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
7166            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
7167            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
7168                Some(Self::AtomDeferredJobStatsReported)
7169            }
7170            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
7171            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
7172            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
7173            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
7174            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
7175            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
7176            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
7177            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
7178            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
7179                Some(Self::AtomPhoneServiceStateChanged)
7180            }
7181            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
7182            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
7183            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
7184            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
7185            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
7186            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
7187            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
7188            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
7189            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
7190            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
7191            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
7192                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
7193            }
7194            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
7195            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
7196            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
7197                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
7198            }
7199            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
7200            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
7201            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
7202            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
7203                Some(Self::AtomDocsUiUserActionReported)
7204            }
7205            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
7206            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
7207            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
7208            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
7209            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
7210                Some(Self::AtomDocsUiPickerLaunchedFromReported)
7211            }
7212            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
7213                Some(Self::AtomDocsUiPickResultReported)
7214            }
7215            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
7216                Some(Self::AtomDocsUiSearchModeReported)
7217            }
7218            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
7219                Some(Self::AtomDocsUiSearchTypeReported)
7220            }
7221            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
7222            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
7223                Some(Self::AtomRescuePartyResetReported)
7224            }
7225            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
7226            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
7227            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
7228                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
7229            }
7230            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
7231                Some(Self::AtomBluetoothAclConnectionStateChanged)
7232            }
7233            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
7234                Some(Self::AtomBluetoothScoConnectionStateChanged)
7235            }
7236            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
7237            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
7238                Some(Self::AtomAppOptimizedAfterDowngraded)
7239            }
7240            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
7241            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
7242                Some(Self::AtomGnssNfwNotificationReported)
7243            }
7244            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
7245                Some(Self::AtomGnssConfigurationReported)
7246            }
7247            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
7248                Some(Self::AtomUsbPortOverheatEventReported)
7249            }
7250            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
7251            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
7252            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
7253            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
7254            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
7255            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
7256                Some(Self::AtomNfcHceTransactionOccurred)
7257            }
7258            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
7259            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
7260            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
7261                Some(Self::AtomBroadcastDispatchLatencyReported)
7262            }
7263            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
7264                Some(Self::AtomAttentionManagerServiceResultReported)
7265            }
7266            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
7267            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
7268            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
7269            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
7270            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
7271                Some(Self::AtomBiometricSystemHealthIssueDetected)
7272            }
7273            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
7274            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
7275                Some(Self::AtomScheduledJobConstraintChanged)
7276            }
7277            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
7278                Some(Self::AtomBluetoothActiveDeviceChanged)
7279            }
7280            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
7281                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
7282            }
7283            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
7284                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
7285            }
7286            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
7287                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
7288            }
7289            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
7290                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
7291            }
7292            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
7293                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
7294            }
7295            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
7296                Some(Self::AtomBluetoothDeviceRssiReported)
7297            }
7298            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
7299                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
7300            }
7301            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
7302                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
7303            }
7304            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
7305                Some(Self::AtomBluetoothHciTimeoutReported)
7306            }
7307            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
7308                Some(Self::AtomBluetoothQualityReportReported)
7309            }
7310            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
7311                Some(Self::AtomBluetoothDeviceInfoReported)
7312            }
7313            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
7314                Some(Self::AtomBluetoothRemoteVersionInfoReported)
7315            }
7316            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
7317                Some(Self::AtomBluetoothSdpAttributeReported)
7318            }
7319            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
7320                Some(Self::AtomBluetoothBondStateChanged)
7321            }
7322            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
7323                Some(Self::AtomBluetoothClassicPairingEventReported)
7324            }
7325            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
7326                Some(Self::AtomBluetoothSmpPairingEventReported)
7327            }
7328            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
7329                Some(Self::AtomScreenTimeoutExtensionReported)
7330            }
7331            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
7332            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
7333                Some(Self::AtomPermissionGrantRequestResultReported)
7334            }
7335            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
7336                Some(Self::AtomBluetoothSocketConnectionStateChanged)
7337            }
7338            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
7339                Some(Self::AtomDeviceIdentifierAccessDenied)
7340            }
7341            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
7342                Some(Self::AtomBubbleDeveloperErrorReported)
7343            }
7344            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
7345                Some(Self::AtomAssistGestureStageReported)
7346            }
7347            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
7348                Some(Self::AtomAssistGestureFeedbackReported)
7349            }
7350            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
7351                Some(Self::AtomAssistGestureProgressReported)
7352            }
7353            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
7354            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
7355            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
7356            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
7357                Some(Self::AtomPrivacyIndicatorsInteracted)
7358            }
7359            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
7360                Some(Self::AtomAppInstallOnExternalStorageReported)
7361            }
7362            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
7363            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
7364            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
7365            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
7366                Some(Self::AtomSystemServerWatchdogOccurred)
7367            }
7368            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
7369            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
7370                Some(Self::AtomBluetoothClassOfDeviceReported)
7371            }
7372            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
7373                Some(Self::AtomIntelligenceEventReported)
7374            }
7375            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
7376                Some(Self::AtomThermalThrottlingSeverityStateChanged)
7377            }
7378            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
7379                Some(Self::AtomRoleRequestResultReported)
7380            }
7381            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
7382                Some(Self::AtomMediametricsAudiopolicyReported)
7383            }
7384            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
7385                Some(Self::AtomMediametricsAudiorecordReported)
7386            }
7387            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
7388                Some(Self::AtomMediametricsAudiothreadReported)
7389            }
7390            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
7391                Some(Self::AtomMediametricsAudiotrackReported)
7392            }
7393            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
7394                Some(Self::AtomMediametricsCodecReported)
7395            }
7396            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
7397                Some(Self::AtomMediametricsDrmWidevineReported)
7398            }
7399            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
7400                Some(Self::AtomMediametricsExtractorReported)
7401            }
7402            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
7403                Some(Self::AtomMediametricsMediadrmReported)
7404            }
7405            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
7406                Some(Self::AtomMediametricsNuplayerReported)
7407            }
7408            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
7409                Some(Self::AtomMediametricsRecorderReported)
7410            }
7411            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
7412                Some(Self::AtomMediametricsDrmmanagerReported)
7413            }
7414            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
7415            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
7416            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
7417            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
7418                Some(Self::AtomContentCaptureCallerMismatchReported)
7419            }
7420            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
7421                Some(Self::AtomContentCaptureServiceEvents)
7422            }
7423            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
7424                Some(Self::AtomContentCaptureSessionEvents)
7425            }
7426            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
7427            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
7428                Some(Self::AtomLocationManagerApiUsageReported)
7429            }
7430            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
7431                Some(Self::AtomReviewPermissionsFragmentResultReported)
7432            }
7433            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
7434                Some(Self::AtomRuntimePermissionsUpgradeResult)
7435            }
7436            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
7437                Some(Self::AtomGrantPermissionsActivityButtonActions)
7438            }
7439            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
7440                Some(Self::AtomLocationAccessCheckNotificationAction)
7441            }
7442            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
7443                Some(Self::AtomAppPermissionFragmentActionReported)
7444            }
7445            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
7446                Some(Self::AtomAppPermissionFragmentViewed)
7447            }
7448            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
7449                Some(Self::AtomAppPermissionsFragmentViewed)
7450            }
7451            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
7452                Some(Self::AtomPermissionAppsFragmentViewed)
7453            }
7454            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
7455            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
7456            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
7457            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
7458            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
7459                Some(Self::AtomExclusionRectStateChanged)
7460            }
7461            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
7462                Some(Self::AtomBackGestureReportedReported)
7463            }
7464            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
7465                Some(Self::AtomUpdateEngineUpdateAttemptReported)
7466            }
7467            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
7468                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
7469            }
7470            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
7471            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
7472                Some(Self::AtomAppCompatibilityChangeReported)
7473            }
7474            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
7475            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
7476                Some(Self::AtomVmsClientConnectionStateChanged)
7477            }
7478            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
7479                Some(Self::AtomMediaProviderScanOccurred)
7480            }
7481            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
7482            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
7483                Some(Self::AtomMediaProviderPermissionRequested)
7484            }
7485            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
7486                Some(Self::AtomMediaProviderSchemaChanged)
7487            }
7488            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
7489                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
7490            }
7491            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
7492                Some(Self::AtomRebootEscrowRecoveryReported)
7493            }
7494            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
7495                Some(Self::AtomBootTimeEventDurationReported)
7496            }
7497            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
7498                Some(Self::AtomBootTimeEventElapsedTimeReported)
7499            }
7500            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
7501                Some(Self::AtomBootTimeEventUtcTimeReported)
7502            }
7503            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
7504                Some(Self::AtomBootTimeEventErrorCodeReported)
7505            }
7506            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
7507            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
7508            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
7509                Some(Self::AtomNotificationPanelReported)
7510            }
7511            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
7512                Some(Self::AtomNotificationChannelModified)
7513            }
7514            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
7515                Some(Self::AtomIntegrityCheckResultReported)
7516            }
7517            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
7518            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
7519            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
7520            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
7521            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
7522            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
7523                Some(Self::AtomWifiConnectionResultReported)
7524            }
7525            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
7526            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
7527            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
7528                Some(Self::AtomForegroundServiceAppOpSessionEnded)
7529            }
7530            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
7531            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
7532            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
7533            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
7534            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
7535            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
7536            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
7537                Some(Self::AtomPackageInstallerV2Reported)
7538            }
7539            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
7540                Some(Self::AtomUserLifecycleJourneyReported)
7541            }
7542            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
7543                Some(Self::AtomUserLifecycleEventOccurred)
7544            }
7545            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
7546                Some(Self::AtomAccessibilityShortcutReported)
7547            }
7548            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
7549                Some(Self::AtomAccessibilityServiceReported)
7550            }
7551            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
7552                Some(Self::AtomDocsUiDragAndDropReported)
7553            }
7554            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
7555            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
7556                Some(Self::AtomAutoRevokeNotificationClicked)
7557            }
7558            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
7559                Some(Self::AtomAutoRevokeFragmentAppViewed)
7560            }
7561            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
7562                Some(Self::AtomAutoRevokedAppInteraction)
7563            }
7564            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
7565                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
7566            }
7567            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
7568            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
7569                Some(Self::AtomAudioPowerUsageDataReported)
7570            }
7571            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
7572            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
7573                Some(Self::AtomMediaoutputOpSwitchReported)
7574            }
7575            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
7576            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
7577            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
7578            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
7579                Some(Self::AtomAssistantInvocationReported)
7580            }
7581            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
7582            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
7583                Some(Self::AtomCarUserHalModifyUserRequestReported)
7584            }
7585            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
7586                Some(Self::AtomCarUserHalModifyUserResponseReported)
7587            }
7588            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
7589                Some(Self::AtomCarUserHalPostSwitchResponseReported)
7590            }
7591            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
7592                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
7593            }
7594            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
7595                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
7596            }
7597            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
7598                Some(Self::AtomCarUserHalUserAssociationRequestReported)
7599            }
7600            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
7601                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
7602            }
7603            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
7604                Some(Self::AtomNetworkIpProvisioningReported)
7605            }
7606            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
7607                Some(Self::AtomNetworkDhcpRenewReported)
7608            }
7609            "ATOM_NETWORK_VALIDATION_REPORTED" => {
7610                Some(Self::AtomNetworkValidationReported)
7611            }
7612            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
7613                Some(Self::AtomNetworkStackQuirkReported)
7614            }
7615            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
7616                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
7617            }
7618            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
7619                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
7620            }
7621            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
7622                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
7623            }
7624            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
7625                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
7626            }
7627            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
7628            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
7629            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
7630            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
7631                Some(Self::AtomContactsProviderStatusReported)
7632            }
7633            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
7634                Some(Self::AtomKeystoreKeyEventReported)
7635            }
7636            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
7637            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
7638            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
7639                Some(Self::AtomUiInteractionFrameInfoReported)
7640            }
7641            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
7642            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
7643            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
7644                Some(Self::AtomWifiConnectionStateChanged)
7645            }
7646            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
7647                Some(Self::AtomHdmiCecActiveSourceChanged)
7648            }
7649            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
7650            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
7651            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
7652            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
7653                Some(Self::AtomCarrierIdMismatchReported)
7654            }
7655            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
7656            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
7657                Some(Self::AtomDataStallRecoveryReported)
7658            }
7659            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
7660                Some(Self::AtomMediametricsMediaparserReported)
7661            }
7662            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
7663            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
7664                Some(Self::AtomTextClassifierApiUsageReported)
7665            }
7666            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
7667                Some(Self::AtomCarWatchdogKillStatsReported)
7668            }
7669            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
7670                Some(Self::AtomMediametricsPlaybackReported)
7671            }
7672            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
7673            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
7674                Some(Self::AtomMediaPlaybackStateChanged)
7675            }
7676            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
7677                Some(Self::AtomMediaPlaybackErrorReported)
7678            }
7679            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
7680                Some(Self::AtomMediaPlaybackTrackChanged)
7681            }
7682            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
7683            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
7684            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
7685            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
7686            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
7687            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
7688            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
7689                Some(Self::AtomImsServiceEntitlementUpdated)
7690            }
7691            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
7692            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
7693                Some(Self::AtomSimSpecificSettingsRestored)
7694            }
7695            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
7696                Some(Self::AtomTextClassifierDownloadReported)
7697            }
7698            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
7699            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
7700            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
7701                Some(Self::AtomBluetoothHalCrashReasonReported)
7702            }
7703            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
7704                Some(Self::AtomRebootEscrowPreparationReported)
7705            }
7706            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
7707                Some(Self::AtomRebootEscrowLskfCaptureReported)
7708            }
7709            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
7710                Some(Self::AtomRebootEscrowRebootReported)
7711            }
7712            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
7713            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
7714                Some(Self::AtomMediametricsAaudiostreamReported)
7715            }
7716            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
7717                Some(Self::AtomMediaTranscodingSessionEnded)
7718            }
7719            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
7720                Some(Self::AtomMagnificationUsageReported)
7721            }
7722            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
7723                Some(Self::AtomMagnificationModeWithImeOnReported)
7724            }
7725            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
7726                Some(Self::AtomAppSearchCallStatsReported)
7727            }
7728            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
7729                Some(Self::AtomAppSearchPutDocumentStatsReported)
7730            }
7731            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
7732            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
7733            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
7734            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
7735            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
7736                Some(Self::AtomAuthPromptAuthenticateInvoked)
7737            }
7738            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
7739                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
7740            }
7741            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
7742            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
7743            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
7744            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
7745                Some(Self::AtomLongRebootBlockingReported)
7746            }
7747            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
7748                Some(Self::AtomLocationTimeZoneProviderStateChanged)
7749            }
7750            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
7751            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
7752                Some(Self::AtomTimeoutAutoExtendedReported)
7753            }
7754            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
7755            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
7756            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
7757                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
7758            }
7759            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
7760                Some(Self::AtomUserLevelHibernationStateChanged)
7761            }
7762            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
7763                Some(Self::AtomAppSearchInitializeStatsReported)
7764            }
7765            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
7766                Some(Self::AtomAppSearchQueryStatsReported)
7767            }
7768            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
7769            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
7770                Some(Self::AtomNetworkIpReachabilityMonitorReported)
7771            }
7772            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
7773            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
7774                Some(Self::AtomAnrOccurredProcessingStarted)
7775            }
7776            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
7777                Some(Self::AtomAppSearchRemoveStatsReported)
7778            }
7779            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
7780            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
7781                Some(Self::AtomPermissionUsageFragmentInteraction)
7782            }
7783            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
7784                Some(Self::AtomPermissionDetailsInteraction)
7785            }
7786            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
7787                Some(Self::AtomPrivacySensorToggleInteraction)
7788            }
7789            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
7790                Some(Self::AtomPrivacyToggleDialogInteraction)
7791            }
7792            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
7793                Some(Self::AtomAppSearchOptimizeStatsReported)
7794            }
7795            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
7796                Some(Self::AtomNonA11yToolServiceWarningReport)
7797            }
7798            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
7799            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
7800                Some(Self::AtomSizeCompatRestartButtonEventReported)
7801            }
7802            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
7803            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
7804                Some(Self::AtomNetworkDnsHandshakeReported)
7805            }
7806            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
7807                Some(Self::AtomBluetoothCodePathCounter)
7808            }
7809            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
7810                Some(Self::AtomBluetoothLeBatchScanReportDelay)
7811            }
7812            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
7813                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
7814            }
7815            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
7816                Some(Self::AtomNeuralnetworksCompilationCompleted)
7817            }
7818            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
7819                Some(Self::AtomNeuralnetworksExecutionCompleted)
7820            }
7821            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
7822                Some(Self::AtomNeuralnetworksCompilationFailed)
7823            }
7824            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
7825                Some(Self::AtomNeuralnetworksExecutionFailed)
7826            }
7827            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
7828            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
7829            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
7830                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
7831            }
7832            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
7833                Some(Self::AtomChreCodeDownloadTransacted)
7834            }
7835            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
7836            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
7837            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
7838            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
7839                Some(Self::AtomUwbRangingMeasurementReceived)
7840            }
7841            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
7842                Some(Self::AtomTextClassifierDownloadWorkScheduled)
7843            }
7844            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
7845                Some(Self::AtomTextClassifierDownloadWorkCompleted)
7846            }
7847            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
7848            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
7849            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
7850                Some(Self::AtomNearbyDeviceScanStateChanged)
7851            }
7852            "ATOM_APPLICATION_LOCALES_CHANGED" => {
7853                Some(Self::AtomApplicationLocalesChanged)
7854            }
7855            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
7856                Some(Self::AtomMediametricsAudiotrackstatusReported)
7857            }
7858            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
7859                Some(Self::AtomFoldStateDurationReported)
7860            }
7861            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
7862                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
7863            }
7864            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
7865            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
7866                Some(Self::AtomDisplayHbmBrightnessChanged)
7867            }
7868            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
7869                Some(Self::AtomPersistentUriPermissionsFlushed)
7870            }
7871            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
7872                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
7873            }
7874            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
7875            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
7876            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
7877            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
7878                Some(Self::AtomWearSettingsUiInteracted)
7879            }
7880            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
7881                Some(Self::AtomTracingServiceReportEvent)
7882            }
7883            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
7884                Some(Self::AtomMediametricsAudiorecordstatusReported)
7885            }
7886            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
7887            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
7888            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
7889                Some(Self::AtomWifiP2pConnectionReported)
7890            }
7891            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
7892            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
7893                Some(Self::AtomHotwordDetectorCreateRequested)
7894            }
7895            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
7896                Some(Self::AtomHotwordDetectionServiceInitResultReported)
7897            }
7898            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
7899                Some(Self::AtomHotwordDetectionServiceRestarted)
7900            }
7901            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
7902                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
7903            }
7904            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
7905            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
7906                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
7907            }
7908            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
7909                Some(Self::AtomContactsIndexerUpdateStatsReported)
7910            }
7911            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
7912                Some(Self::AtomAppBackgroundRestrictionsInfo)
7913            }
7914            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
7915                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
7916            }
7917            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
7918                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
7919            }
7920            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
7921                Some(Self::AtomPermissionReminderNotificationInteracted)
7922            }
7923            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
7924                Some(Self::AtomRecentPermissionDecisionsInteracted)
7925            }
7926            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
7927                Some(Self::AtomGnssPsdsDownloadReported)
7928            }
7929            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
7930                Some(Self::AtomLeAudioConnectionSessionReported)
7931            }
7932            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
7933                Some(Self::AtomLeAudioBroadcastSessionReported)
7934            }
7935            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
7936            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
7937                Some(Self::AtomTaskManagerEventReported)
7938            }
7939            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
7940            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
7941                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
7942            }
7943            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
7944                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
7945            }
7946            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
7947                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
7948            }
7949            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
7950                Some(Self::AtomWifiSetupFailureCrashReported)
7951            }
7952            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
7953            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
7954                Some(Self::AtomIsolatedCompilationScheduled)
7955            }
7956            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
7957            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
7958                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
7959            }
7960            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
7961                Some(Self::AtomSystemServerPreWatchdogOccurred)
7962            }
7963            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
7964            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
7965            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
7966                Some(Self::AtomRemoteKeyProvisioningAttempt)
7967            }
7968            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
7969                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
7970            }
7971            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
7972                Some(Self::AtomRemoteKeyProvisioningTiming)
7973            }
7974            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
7975                Some(Self::AtomMediaoutputOpInteractionReport)
7976            }
7977            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
7978            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
7979                Some(Self::AtomAutofillPresentationEventReported)
7980            }
7981            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
7982            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
7983                Some(Self::AtomSafetySourceStateCollected)
7984            }
7985            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
7986                Some(Self::AtomSafetyCenterSystemEventReported)
7987            }
7988            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
7989                Some(Self::AtomSafetyCenterInteractionReported)
7990            }
7991            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
7992                Some(Self::AtomSettingsProviderSettingChanged)
7993            }
7994            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
7995                Some(Self::AtomBroadcastDeliveryEventReported)
7996            }
7997            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
7998                Some(Self::AtomServiceRequestEventReported)
7999            }
8000            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
8001                Some(Self::AtomProviderAcquisitionEventReported)
8002            }
8003            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
8004                Some(Self::AtomBluetoothDeviceNameReported)
8005            }
8006            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
8007            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
8008            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
8009            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
8010                Some(Self::AtomCbReceiverFeatureChanged)
8011            }
8012            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
8013                Some(Self::AtomPrivacySignalNotificationInteraction)
8014            }
8015            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
8016                Some(Self::AtomPrivacySignalIssueCardInteraction)
8017            }
8018            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
8019                Some(Self::AtomPrivacySignalsJobFailure)
8020            }
8021            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
8022            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
8023            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
8024            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
8025            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
8026            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
8027                Some(Self::AtomNetworkDnsServerSupportReported)
8028            }
8029            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
8030            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
8031            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
8032                Some(Self::AtomAmbientBrightnessStatsReported)
8033            }
8034            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
8035                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
8036            }
8037            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
8038                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
8039            }
8040            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
8041                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
8042            }
8043            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
8044                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
8045            }
8046            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
8047            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
8048                Some(Self::AtomDeviceWideJobConstraintChanged)
8049            }
8050            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
8051            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
8052            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
8053            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
8054                Some(Self::AtomSystemDefaultNetworkChanged)
8055            }
8056            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
8057                Some(Self::AtomIwlanSetupDataCallResultReported)
8058            }
8059            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
8060                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
8061            }
8062            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
8063                Some(Self::AtomAirplaneModeSessionReported)
8064            }
8065            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
8066            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
8067            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
8068                Some(Self::AtomPackageInstallationSessionReported)
8069            }
8070            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
8071                Some(Self::AtomDefaultNetworkRematchInfo)
8072            }
8073            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
8074                Some(Self::AtomNetworkSelectionPerformance)
8075            }
8076            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
8077            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
8078                Some(Self::AtomBluetoothDisconnectionReasonReported)
8079            }
8080            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
8081                Some(Self::AtomBluetoothLocalVersionsReported)
8082            }
8083            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
8084                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
8085            }
8086            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
8087                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
8088            }
8089            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
8090            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
8091                Some(Self::AtomBrightnessConfigurationUpdated)
8092            }
8093            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
8094                Some(Self::AtomWearMediaOutputSwitcherLaunched)
8095            }
8096            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
8097                Some(Self::AtomWearMediaOutputSwitcherFinished)
8098            }
8099            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
8100                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
8101            }
8102            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
8103                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
8104            }
8105            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
8106                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
8107            }
8108            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
8109                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
8110            }
8111            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
8112                Some(Self::AtomPackageManagerSnapshotReported)
8113            }
8114            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
8115                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
8116            }
8117            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
8118                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
8119            }
8120            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
8121            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
8122                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
8123            }
8124            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
8125            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
8126                Some(Self::AtomWsWatchFaceFavoriteActionReported)
8127            }
8128            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
8129                Some(Self::AtomWsWatchFaceSetActionReported)
8130            }
8131            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
8132                Some(Self::AtomPackageUninstallationReported)
8133            }
8134            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
8135            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
8136                Some(Self::AtomGameModeConfigurationChanged)
8137            }
8138            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
8139            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
8140                Some(Self::AtomNetworkSliceSessionEnded)
8141            }
8142            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
8143                Some(Self::AtomNetworkSliceDailyDataUsageReported)
8144            }
8145            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
8146            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
8147            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
8148                Some(Self::AtomNfcReaderConflictOccurred)
8149            }
8150            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
8151            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
8152                Some(Self::AtomGetTypeAccessedWithoutPermission)
8153            }
8154            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
8155                Some(Self::AtomMobileBundledAppInfoGathered)
8156            }
8157            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
8158                Some(Self::AtomWsWatchFaceComplicationSetChanged)
8159            }
8160            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
8161            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
8162            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
8163            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
8164            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
8165            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
8166                Some(Self::AtomUnsafeIntentEventReported)
8167            }
8168            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
8169                Some(Self::AtomPerformanceHintSessionReported)
8170            }
8171            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
8172                Some(Self::AtomMediametricsMidiDeviceCloseReported)
8173            }
8174            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
8175            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
8176                Some(Self::AtomHotwordAudioEgressEventReported)
8177            }
8178            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
8179                Some(Self::AtomLocationEnabledStateChanged)
8180            }
8181            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
8182            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
8183                Some(Self::AtomUsbComplianceWarningsReported)
8184            }
8185            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
8186                Some(Self::AtomAppSupportedLocalesChanged)
8187            }
8188            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
8189                Some(Self::AtomMediaProviderVolumeRecoveryReported)
8190            }
8191            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
8192                Some(Self::AtomBiometricPropertiesCollected)
8193            }
8194            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
8195            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
8196            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
8197            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
8198            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
8199                Some(Self::AtomDeviceLogAccessEventReported)
8200            }
8201            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
8202            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
8203            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
8204            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
8205                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
8206            }
8207            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
8208            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
8209            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
8210                Some(Self::AtomWsNotificationBridgemodeUpdated)
8211            }
8212            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
8213                Some(Self::AtomWsNotificationDismissalActioned)
8214            }
8215            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
8216            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
8217            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
8218            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
8219                Some(Self::AtomWifiBytesTransferByFgBg)
8220            }
8221            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
8222            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
8223                Some(Self::AtomMobileBytesTransferByFgBg)
8224            }
8225            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
8226            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
8227            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
8228            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
8229            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
8230            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
8231            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
8232            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
8233            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
8234            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
8235            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
8236            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
8237            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
8238            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
8239            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
8240            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
8241            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
8242            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
8243            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
8244            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
8245            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
8246            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
8247            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
8248            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
8249            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
8250            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
8251            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
8252            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
8253            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
8254            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
8255            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
8256            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
8257            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
8258                Some(Self::AtomOnDevicePowerMeasurement)
8259            }
8260            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
8261                Some(Self::AtomDeviceCalculatedPowerUse)
8262            }
8263            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
8264                Some(Self::AtomProcessMemoryHighWaterMark)
8265            }
8266            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
8267            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
8268            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
8269            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
8270            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
8271                Some(Self::AtomDebugFailingElapsedClock)
8272            }
8273            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
8274            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
8275            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
8276            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
8277            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
8278            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
8279            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
8280            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
8281            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
8282            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
8283                Some(Self::AtomAppsOnExternalStorageInfo)
8284            }
8285            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
8286            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
8287            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
8288            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
8289                Some(Self::AtomProcessSystemIonHeapSize)
8290            }
8291            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
8292                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
8293            }
8294            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
8295                Some(Self::AtomSurfaceflingerStatsLayerInfo)
8296            }
8297            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
8298            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
8299            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
8300            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
8301                Some(Self::AtomDangerousPermissionStateSampled)
8302            }
8303            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
8304            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
8305            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
8306            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
8307                Some(Self::AtomPackageNotificationPreferences)
8308            }
8309            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
8310                Some(Self::AtomPackageNotificationChannelPreferences)
8311            }
8312            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
8313                Some(Self::AtomPackageNotificationChannelGroupPreferences)
8314            }
8315            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
8316            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
8317            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
8318            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
8319            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
8320            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
8321                Some(Self::AtomSupportedRadioAccessFamily)
8322            }
8323            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
8324            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
8325            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
8326            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
8327                Some(Self::AtomBytesTransferByTagAndMetered)
8328            }
8329            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
8330            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
8331                Some(Self::AtomGeneralExternalStorageAccessStats)
8332            }
8333            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
8334            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
8335            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
8336            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
8337            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
8338            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
8339                Some(Self::AtomCellularDataServiceSwitch)
8340            }
8341            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
8342            "ATOM_IMS_REGISTRATION_TERMINATION" => {
8343                Some(Self::AtomImsRegistrationTermination)
8344            }
8345            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
8346            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
8347            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
8348            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
8349            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
8350                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
8351            }
8352            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
8353            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
8354            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
8355            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
8356            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
8357            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
8358            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
8359            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
8360            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
8361            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
8362            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
8363            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
8364            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
8365                Some(Self::AtomBatteryUsageStatsBeforeReset)
8366            }
8367            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
8368                Some(Self::AtomBatteryUsageStatsSinceReset)
8369            }
8370            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
8371                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
8372            }
8373            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
8374                Some(Self::AtomInstalledIncrementalPackage)
8375            }
8376            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
8377            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
8378            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
8379            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
8380                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
8381            }
8382            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
8383                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
8384            }
8385            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
8386                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
8387            }
8388            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
8389                Some(Self::AtomKeystore2AtomWithOverflow)
8390            }
8391            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
8392                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
8393            }
8394            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
8395                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
8396            }
8397            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
8398            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
8399            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
8400            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
8401                Some(Self::AtomAccessibilityShortcutStats)
8402            }
8403            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
8404                Some(Self::AtomAccessibilityFloatingMenuStats)
8405            }
8406            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
8407                Some(Self::AtomDataUsageBytesTransferV2)
8408            }
8409            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
8410            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
8411                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
8412            }
8413            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
8414                Some(Self::AtomCarWatchdogUidIoUsageSummary)
8415            }
8416            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
8417                Some(Self::AtomImsRegistrationFeatureTagStats)
8418            }
8419            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
8420                Some(Self::AtomRcsClientProvisioningStats)
8421            }
8422            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
8423            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
8424            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
8425                Some(Self::AtomSipTransportFeatureTagStats)
8426            }
8427            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
8428            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
8429            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
8430                Some(Self::AtomImsDedicatedBearerListenerEvent)
8431            }
8432            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
8433            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
8434                Some(Self::AtomImsRegistrationServiceDescStats)
8435            }
8436            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
8437            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
8438            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
8439            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
8440            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
8441            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
8442                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
8443            }
8444            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
8445            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
8446                Some(Self::AtomPinnedFileSizesPerPackage)
8447            }
8448            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
8449                Some(Self::AtomPendingIntentsPerPackage)
8450            }
8451            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
8452            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
8453                Some(Self::AtomTelephonyNetworkRequestsV2)
8454            }
8455            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
8456                Some(Self::AtomDeviceTelephonyProperties)
8457            }
8458            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
8459                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
8460            }
8461            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
8462            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
8463            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
8464            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
8465            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
8466            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
8467            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
8468            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
8469                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
8470            }
8471            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
8472            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
8473            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
8474            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
8475                Some(Self::AtomNetworkSliceRequestCount)
8476            }
8477            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
8478            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
8479                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
8480            }
8481            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
8482            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
8483            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
8484            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
8485            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
8486            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
8487                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
8488            }
8489            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
8490            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
8491            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
8492                Some(Self::AtomWifiSelfRecoveryTriggered)
8493            }
8494            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
8495            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
8496            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
8497            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
8498            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
8499            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
8500                Some(Self::AtomWifiAwareResourceUsingChanged)
8501            }
8502            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
8503            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
8504                Some(Self::AtomWifiLocalOnlyRequestReceived)
8505            }
8506            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
8507                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
8508            }
8509            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
8510            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
8511            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
8512            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
8513            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
8514            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
8515                Some(Self::AtomWifiApCapabilitiesReported)
8516            }
8517            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
8518            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
8519                Some(Self::AtomScorerPredictionResultReported)
8520            }
8521            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
8522            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
8523            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
8524            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
8525            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
8526                Some(Self::AtomWifiConfiguredNetworkInfo)
8527            }
8528            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
8529            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
8530            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
8531                Some(Self::AtomFirstOverlayStateChanged)
8532            }
8533            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
8534            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
8535                Some(Self::AtomWsIncomingCallActionReported)
8536            }
8537            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
8538                Some(Self::AtomWsCallDisconnectionReported)
8539            }
8540            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
8541            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
8542                Some(Self::AtomWsCallUserExperienceLatencyReported)
8543            }
8544            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
8545                Some(Self::AtomWsCallInteractionReported)
8546            }
8547            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
8548            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
8549                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
8550            }
8551            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
8552                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
8553            }
8554            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
8555                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
8556            }
8557            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
8558                Some(Self::AtomWsRemoteEventUsageReported)
8559            }
8560            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
8561                Some(Self::AtomWsNotificationManagedDismissalSync)
8562            }
8563            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
8564                Some(Self::AtomWsBugreportEventReported)
8565            }
8566            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
8567                Some(Self::AtomWsStandaloneModeSnapshot)
8568            }
8569            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
8570                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
8571            }
8572            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
8573                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
8574            }
8575            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
8576                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
8577            }
8578            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
8579                Some(Self::AtomWearAdaptiveSuspendStatsReported)
8580            }
8581            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
8582                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
8583            }
8584            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
8585                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
8586            }
8587            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
8588            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
8589            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
8590                Some(Self::AtomWearTimeSyncAttemptCompleted)
8591            }
8592            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
8593            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
8594                Some(Self::AtomWearSetupWizardDeviceStatusReported)
8595            }
8596            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
8597                Some(Self::AtomWearSetupWizardPairingCompleted)
8598            }
8599            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
8600                Some(Self::AtomWearSetupWizardConnectionEstablished)
8601            }
8602            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
8603                Some(Self::AtomWearSetupWizardCheckinCompleted)
8604            }
8605            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
8606                Some(Self::AtomWearSetupWizardCompanionTimeReported)
8607            }
8608            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
8609                Some(Self::AtomWearSetupWizardStatusReported)
8610            }
8611            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
8612                Some(Self::AtomWearSetupWizardHeartbeatReported)
8613            }
8614            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
8615                Some(Self::AtomWearSetupWizardFrpTriggered)
8616            }
8617            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
8618                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
8619            }
8620            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
8621                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
8622            }
8623            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
8624            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
8625            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
8626            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
8627                Some(Self::AtomLayoutExpressionInspected)
8628            }
8629            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
8630                Some(Self::AtomLayoutAnimationsInspected)
8631            }
8632            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
8633                Some(Self::AtomMaterialComponentsInspected)
8634            }
8635            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
8636            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
8637            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
8638            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
8639            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
8640            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
8641                Some(Self::AtomIgnoredInflationFailuresReported)
8642            }
8643            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
8644            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
8645            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
8646            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
8647            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
8648                Some(Self::AtomMediaSessionStateChanged)
8649            }
8650            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
8651                Some(Self::AtomMediaControlApiUsageReported)
8652            }
8653            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
8654            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
8655                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
8656            }
8657            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
8658                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
8659            }
8660            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
8661                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
8662            }
8663            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
8664            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
8665                Some(Self::AtomSysproxyBluetoothBytesTransfer)
8666            }
8667            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
8668                Some(Self::AtomSysproxyConnectionUpdated)
8669            }
8670            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
8671                Some(Self::AtomWearCompanionConnectionState)
8672            }
8673            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
8674                Some(Self::AtomSysproxyServiceStateUpdated)
8675            }
8676            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
8677            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
8678                Some(Self::AtomTestUprobestatsAtomReported)
8679            }
8680            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
8681            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
8682            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
8683                Some(Self::AtomBootIntegrityInfoReported)
8684            }
8685            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
8686                Some(Self::AtomThreadnetworkTelemetryDataReported)
8687            }
8688            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
8689                Some(Self::AtomThreadnetworkTopoEntryRepeated)
8690            }
8691            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
8692                Some(Self::AtomThreadnetworkDeviceInfoReported)
8693            }
8694            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
8695                Some(Self::AtomCellularRadioPowerStateChanged)
8696            }
8697            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
8698            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
8699            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
8700            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
8701            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
8702                Some(Self::AtomCellularIdentifierDisclosed)
8703            }
8704            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
8705            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
8706            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
8707                Some(Self::AtomSatelliteIncomingDatagram)
8708            }
8709            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
8710                Some(Self::AtomSatelliteOutgoingDatagram)
8711            }
8712            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
8713            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
8714                Some(Self::AtomSatelliteSosMessageRecommender)
8715            }
8716            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
8717                Some(Self::AtomCarrierRoamingSatelliteSession)
8718            }
8719            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
8720                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
8721            }
8722            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
8723                Some(Self::AtomControllerStatsPerPackage)
8724            }
8725            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
8726            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
8727            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
8728                Some(Self::AtomSatelliteAccessController)
8729            }
8730            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
8731            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
8732            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
8733                Some(Self::AtomQnsFallbackRestrictionChanged)
8734            }
8735            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
8736                Some(Self::AtomQnsRatPreferenceMismatchInfo)
8737            }
8738            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
8739            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
8740            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
8741                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
8742            }
8743            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
8744            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
8745            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
8746            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
8747            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
8748            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
8749                Some(Self::AtomLockscreenShortcutSelected)
8750            }
8751            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
8752                Some(Self::AtomLockscreenShortcutTriggered)
8753            }
8754            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
8755                Some(Self::AtomLauncherImpressionEventV2)
8756            }
8757            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
8758                Some(Self::AtomDisplaySwitchLatencyTracked)
8759            }
8760            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
8761                Some(Self::AtomNotificationListenerService)
8762            }
8763            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
8764            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
8765                Some(Self::AtomCommunalHubWidgetEventReported)
8766            }
8767            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
8768                Some(Self::AtomPeripheralTutorialLaunched)
8769            }
8770            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
8771                Some(Self::AtomContextualEducationTriggered)
8772            }
8773            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
8774            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
8775                Some(Self::AtomTestExtensionAtomReported)
8776            }
8777            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
8778                Some(Self::AtomTestRestrictedAtomReported)
8779            }
8780            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
8781            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
8782            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
8783            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
8784            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
8785                Some(Self::AtomSandboxActivityEventOccurred)
8786            }
8787            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
8788                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
8789            }
8790            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
8791            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
8792            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
8793            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
8794            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
8795            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
8796            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
8797            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
8798            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
8799                Some(Self::AtomMediaProviderDatabaseRollbackReported)
8800            }
8801            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
8802                Some(Self::AtomBackupSetupStatusReported)
8803            }
8804            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
8805            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
8806                Some(Self::AtomScreenTimeoutOverrideReported)
8807            }
8808            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
8809                Some(Self::AtomScreenInteractiveSessionReported)
8810            }
8811            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
8812            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
8813            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
8814            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
8815                Some(Self::AtomPhotopickerSessionInfoReported)
8816            }
8817            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
8818                Some(Self::AtomPhotopickerApiInfoReported)
8819            }
8820            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
8821                Some(Self::AtomPhotopickerUiEventLogged)
8822            }
8823            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
8824                Some(Self::AtomPhotopickerMediaItemStatusReported)
8825            }
8826            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
8827                Some(Self::AtomPhotopickerPreviewInfoLogged)
8828            }
8829            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
8830                Some(Self::AtomPhotopickerMenuInteractionLogged)
8831            }
8832            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
8833                Some(Self::AtomPhotopickerBannerInteractionLogged)
8834            }
8835            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
8836                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
8837            }
8838            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
8839                Some(Self::AtomPhotopickerPageInfoLogged)
8840            }
8841            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
8842                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
8843            }
8844            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
8845                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
8846            }
8847            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
8848                Some(Self::AtomPhotopickerSearchInfoReported)
8849            }
8850            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
8851                Some(Self::AtomSearchDataExtractionDetailsReported)
8852            }
8853            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
8854                Some(Self::AtomEmbeddedPhotopickerInfoReported)
8855            }
8856            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
8857                Some(Self::AtomPermissionRationaleDialogViewed)
8858            }
8859            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
8860                Some(Self::AtomPermissionRationaleDialogActionReported)
8861            }
8862            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
8863                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
8864            }
8865            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
8866                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
8867            }
8868            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
8869                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
8870            }
8871            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
8872                Some(Self::AtomEnhancedConfirmationDialogResultReported)
8873            }
8874            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
8875                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
8876            }
8877            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
8878            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
8879            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
8880            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
8881            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
8882                Some(Self::AtomComponentStateChangedReported)
8883            }
8884            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
8885                Some(Self::AtomOndevicepersonalizationApiCalled)
8886            }
8887            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
8888                Some(Self::AtomOndevicepersonalizationTraceEvent)
8889            }
8890            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
8891                Some(Self::AtomNfcObserveModeStateChanged)
8892            }
8893            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
8894            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
8895                Some(Self::AtomNfcPollingLoopNotificationReported)
8896            }
8897            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
8898                Some(Self::AtomNfcProprietaryCapabilitiesReported)
8899            }
8900            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
8901                Some(Self::AtomNfcExitFrameTableChanged)
8902            }
8903            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
8904            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
8905                Some(Self::AtomMicroxrDeviceBootCompleteReported)
8906            }
8907            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
8908            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
8909            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
8910            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
8911            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
8912            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
8913                Some(Self::AtomMediaEditingEndedReported)
8914            }
8915            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
8916                Some(Self::AtomMediaCodecReclaimRequestCompleted)
8917            }
8918            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
8919            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
8920            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
8921            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
8922            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
8923                Some(Self::AtomChreSignificantMotionStateChanged)
8924            }
8925            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
8926                Some(Self::AtomPopulationDensityProviderLoadingReported)
8927            }
8928            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
8929                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
8930            }
8931            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
8932                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
8933            }
8934            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
8935            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
8936            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
8937                Some(Self::AtomKeyboardSystemsEventReported)
8938            }
8939            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
8940            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
8941                Some(Self::AtomInputEventLatencyReported)
8942            }
8943            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
8944            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
8945            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
8946                Some(Self::AtomIkeLivenessCheckSessionValidated)
8947            }
8948            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
8949                Some(Self::AtomNegotiatedSecurityAssociation)
8950            }
8951            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
8952                Some(Self::AtomHotwordEgressSizeAtomReported)
8953            }
8954            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
8955                Some(Self::AtomHealthConnectUiImpression)
8956            }
8957            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
8958                Some(Self::AtomHealthConnectUiInteraction)
8959            }
8960            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
8961                Some(Self::AtomHealthConnectAppOpenedReported)
8962            }
8963            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
8964            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
8965            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
8966                Some(Self::AtomHealthConnectStorageStats)
8967            }
8968            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
8969            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
8970            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
8971                Some(Self::AtomHealthConnectExportInvoked)
8972            }
8973            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
8974                Some(Self::AtomHealthConnectImportInvoked)
8975            }
8976            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
8977                Some(Self::AtomHealthConnectExportImportStatsReported)
8978            }
8979            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
8980                Some(Self::AtomHealthConnectPermissionStats)
8981            }
8982            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
8983                Some(Self::AtomHealthConnectPhrApiInvoked)
8984            }
8985            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
8986                Some(Self::AtomHealthConnectPhrUsageStats)
8987            }
8988            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
8989                Some(Self::AtomHealthConnectPhrStorageStats)
8990            }
8991            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
8992                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
8993            }
8994            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
8995                Some(Self::AtomHealthConnectEcosystemStats)
8996            }
8997            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
8998            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
8999                Some(Self::AtomHdmiSoundbarModeStatusReported)
9000            }
9001            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
9002                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
9003            }
9004            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
9005            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
9006            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
9007            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
9008                Some(Self::AtomApplicationGrammaticalInflectionChanged)
9009            }
9010            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
9011                Some(Self::AtomSystemGrammaticalInflectionChanged)
9012            }
9013            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
9014                Some(Self::AtomFullScreenIntentLaunched)
9015            }
9016            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
9017            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
9018            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
9019            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
9020            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
9021                Some(Self::AtomStylusPredictionMetricsReported)
9022            }
9023            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
9024            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
9025                Some(Self::AtomMediaProjectionStateChanged)
9026            }
9027            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
9028                Some(Self::AtomMediaProjectionTargetChanged)
9029            }
9030            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
9031                Some(Self::AtomExcessiveBinderProxyCountReported)
9032            }
9033            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
9034                Some(Self::AtomProxyBytesTransferByFgBg)
9035            }
9036            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
9037                Some(Self::AtomMobileBytesTransferByProcState)
9038            }
9039            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
9040            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
9041                Some(Self::AtomSensitiveContentMediaProjectionSession)
9042            }
9043            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
9044                Some(Self::AtomSensitiveNotificationAppProtectionSession)
9045            }
9046            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
9047                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
9048            }
9049            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
9050                Some(Self::AtomSensitiveNotificationRedaction)
9051            }
9052            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
9053                Some(Self::AtomSensitiveContentAppProtection)
9054            }
9055            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
9056                Some(Self::AtomAppRestrictionStateChanged)
9057            }
9058            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
9059            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
9060            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
9061                Some(Self::AtomPowerSaveTempAllowlistChanged)
9062            }
9063            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
9064            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
9065                Some(Self::AtomContentOrFileUriEventReported)
9066            }
9067            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
9068                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
9069            }
9070            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
9071                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
9072            }
9073            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
9074            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
9075                Some(Self::AtomJankFrameCountByWidgetReported)
9076            }
9077            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
9078            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
9079                Some(Self::AtomNotificationChannelClassification)
9080            }
9081            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
9082                Some(Self::AtomCameraStatusForCompatibilityChanged)
9083            }
9084            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
9085                Some(Self::AtomFederatedComputeApiCalled)
9086            }
9087            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
9088                Some(Self::AtomFederatedComputeTrainingEventReported)
9089            }
9090            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
9091                Some(Self::AtomExampleIteratorNextLatencyReported)
9092            }
9093            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
9094                Some(Self::AtomFederatedComputeTraceEventReported)
9095            }
9096            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
9097            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
9098                Some(Self::AtomExpressHistogramSampleReported)
9099            }
9100            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
9101            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
9102                Some(Self::AtomExpressUidHistogramSampleReported)
9103            }
9104            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
9105            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
9106            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
9107            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
9108                Some(Self::AtomExternalDisplayStateChanged)
9109            }
9110            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
9111                Some(Self::AtomDisplayModeDirectorVoteChanged)
9112            }
9113            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
9114                Some(Self::AtomDevicePolicyManagementMode)
9115            }
9116            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
9117            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
9118                Some(Self::AtomDeviceLockCheckInRequestReported)
9119            }
9120            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
9121                Some(Self::AtomDeviceLockProvisioningCompleteReported)
9122            }
9123            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
9124                Some(Self::AtomDeviceLockKioskAppRequestReported)
9125            }
9126            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
9127                Some(Self::AtomDeviceLockCheckInRetryReported)
9128            }
9129            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
9130                Some(Self::AtomDeviceLockProvisionFailureReported)
9131            }
9132            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
9133                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
9134            }
9135            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
9136            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
9137                Some(Self::AtomDesktopModeSessionTaskUpdate)
9138            }
9139            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
9140                Some(Self::AtomDesktopModeTaskSizeUpdated)
9141            }
9142            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
9143            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
9144            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
9145                Some(Self::AtomCronetEngineBuilderInitialized)
9146            }
9147            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
9148                Some(Self::AtomCronetHttpFlagsInitialized)
9149            }
9150            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
9151            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
9152                Some(Self::AtomCredentialManagerApiCalled)
9153            }
9154            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
9155                Some(Self::AtomCredentialManagerInitPhaseReported)
9156            }
9157            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
9158                Some(Self::AtomCredentialManagerCandidatePhaseReported)
9159            }
9160            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
9161                Some(Self::AtomCredentialManagerFinalPhaseReported)
9162            }
9163            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
9164                Some(Self::AtomCredentialManagerTotalReported)
9165            }
9166            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
9167                Some(Self::AtomCredentialManagerFinalnouidReported)
9168            }
9169            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
9170                Some(Self::AtomCredentialManagerGetReported)
9171            }
9172            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
9173                Some(Self::AtomCredentialManagerAuthClickReported)
9174            }
9175            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
9176                Some(Self::AtomCredentialManagerApiv2Called)
9177            }
9178            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
9179            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
9180                Some(Self::AtomVpnConnectionStateChanged)
9181            }
9182            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
9183            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
9184            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
9185            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
9186                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
9187            }
9188            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
9189                Some(Self::AtomNetworkStatsRecorderFileOperated)
9190            }
9191            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
9192                Some(Self::AtomDailyKeepaliveInfoReported)
9193            }
9194            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
9195                Some(Self::AtomNetworkRequestStateChanged)
9196            }
9197            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
9198                Some(Self::AtomTetheringActiveSessionsReported)
9199            }
9200            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
9201                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
9202            }
9203            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
9204            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
9205            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
9206            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
9207            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
9208                Some(Self::AtomCertificateTransparencyLogListStateChanged)
9209            }
9210            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
9211            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
9212                Some(Self::AtomCertificateTransparencyVerificationReported)
9213            }
9214            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
9215                Some(Self::AtomCameraFeatureCombinationQueryEvent)
9216            }
9217            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
9218            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
9219                Some(Self::AtomBluetoothHashedDeviceNameReported)
9220            }
9221            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
9222                Some(Self::AtomBluetoothL2capCocClientConnection)
9223            }
9224            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
9225                Some(Self::AtomBluetoothL2capCocServerConnection)
9226            }
9227            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
9228                Some(Self::AtomBluetoothLeSessionConnected)
9229            }
9230            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
9231                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
9232            }
9233            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
9234                Some(Self::AtomBluetoothProfileConnectionAttempted)
9235            }
9236            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
9237                Some(Self::AtomBluetoothContentProfileErrorReported)
9238            }
9239            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
9240                Some(Self::AtomBluetoothRfcommConnectionAttempted)
9241            }
9242            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
9243                Some(Self::AtomRemoteDeviceInformationWithMetricId)
9244            }
9245            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
9246            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
9247            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
9248            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
9249            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
9250            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
9251            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
9252            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
9253                Some(Self::AtomBluetoothCrossLayerEventReported)
9254            }
9255            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
9256                Some(Self::AtomBroadcastAudioSessionReported)
9257            }
9258            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
9259                Some(Self::AtomBroadcastAudioSyncReported)
9260            }
9261            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
9262                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
9263            }
9264            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
9265            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
9266                Some(Self::AtomHearingDeviceActiveEventReported)
9267            }
9268            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
9269                Some(Self::AtomBackportedFixStatusReported)
9270            }
9271            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
9272            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9273                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
9274            }
9275            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9276                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
9277            }
9278            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
9279            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
9280                Some(Self::AtomCarWakeupFromSuspendReported)
9281            }
9282            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
9283            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
9284                Some(Self::AtomCarCalmModeEventReported)
9285            }
9286            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
9287            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
9288                Some(Self::AtomAutofillFillRequestReported)
9289            }
9290            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
9291                Some(Self::AtomAutofillFillResponseReported)
9292            }
9293            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
9294                Some(Self::AtomAutofillSaveEventReported)
9295            }
9296            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
9297            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
9298                Some(Self::AtomAutofillFieldClassificationEventReported)
9299            }
9300            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
9301            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
9302            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
9303                Some(Self::AtomBackgroundDexoptJobEnded)
9304            }
9305            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
9306            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
9307            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
9308            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
9309            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
9310            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
9311            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
9312                Some(Self::AtomAppSearchSetSchemaStatsReported)
9313            }
9314            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
9315                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
9316            }
9317            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
9318                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
9319            }
9320            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
9321                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
9322            }
9323            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
9324                Some(Self::AtomAppSearchAppsIndexerStatsReported)
9325            }
9326            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
9327                Some(Self::AtomAppFunctionsRequestReported)
9328            }
9329            "ATOM_APEX_INSTALLATION_REQUESTED" => {
9330                Some(Self::AtomApexInstallationRequested)
9331            }
9332            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
9333            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
9334            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
9335                Some(Self::AtomAiWallpapersButtonPressed)
9336            }
9337            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
9338                Some(Self::AtomAiWallpapersTemplateSelected)
9339            }
9340            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
9341                Some(Self::AtomAiWallpapersTermSelected)
9342            }
9343            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
9344                Some(Self::AtomAiWallpapersWallpaperSet)
9345            }
9346            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
9347                Some(Self::AtomAiWallpapersSessionSummary)
9348            }
9349            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
9350                Some(Self::AtomJsscriptengineLatencyReported)
9351            }
9352            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
9353            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
9354                Some(Self::AtomAdServicesMesurementReportsUploaded)
9355            }
9356            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
9357                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
9358            }
9359            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
9360                Some(Self::AtomMobileDataDownloadDownloadResultReported)
9361            }
9362            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
9363                Some(Self::AtomAdServicesSettingsUsageReported)
9364            }
9365            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
9366                Some(Self::AtomBackgroundFetchProcessReported)
9367            }
9368            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
9369                Some(Self::AtomUpdateCustomAudienceProcessReported)
9370            }
9371            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
9372                Some(Self::AtomRunAdBiddingProcessReported)
9373            }
9374            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
9375                Some(Self::AtomRunAdScoringProcessReported)
9376            }
9377            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
9378                Some(Self::AtomRunAdSelectionProcessReported)
9379            }
9380            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
9381                Some(Self::AtomRunAdBiddingPerCaProcessReported)
9382            }
9383            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
9384                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
9385            }
9386            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
9387                Some(Self::AtomAdServicesMeasurementRegistrations)
9388            }
9389            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
9390                Some(Self::AtomAdServicesGetTopicsReported)
9391            }
9392            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
9393                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
9394            }
9395            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9396                Some(Self::AtomAdServicesEpochComputationClassifierReported)
9397            }
9398            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
9399                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
9400            }
9401            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9402                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
9403            }
9404            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
9405                Some(Self::AtomAdServicesMeasurementDebugKeys)
9406            }
9407            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
9408            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
9409                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
9410            }
9411            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
9412                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
9413            }
9414            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
9415                Some(Self::AtomAdServicesMeasurementAttribution)
9416            }
9417            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
9418                Some(Self::AtomAdServicesMeasurementJobs)
9419            }
9420            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
9421                Some(Self::AtomAdServicesMeasurementWipeout)
9422            }
9423            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
9424                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
9425            }
9426            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
9427                Some(Self::AtomAdServicesEnrollmentDataStored)
9428            }
9429            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
9430                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
9431            }
9432            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
9433                Some(Self::AtomAdServicesEnrollmentMatched)
9434            }
9435            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
9436                Some(Self::AtomAdServicesConsentMigrated)
9437            }
9438            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
9439                Some(Self::AtomAdServicesEnrollmentFailed)
9440            }
9441            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
9442                Some(Self::AtomAdServicesMeasurementClickVerification)
9443            }
9444            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
9445                Some(Self::AtomAdServicesEncryptionKeyFetched)
9446            }
9447            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
9448                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
9449            }
9450            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
9451                Some(Self::AtomDestinationRegisteredBeacons)
9452            }
9453            "ATOM_REPORT_INTERACTION_API_CALLED" => {
9454                Some(Self::AtomReportInteractionApiCalled)
9455            }
9456            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
9457                Some(Self::AtomInteractionReportingTableCleared)
9458            }
9459            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
9460                Some(Self::AtomAppManifestConfigHelperCalled)
9461            }
9462            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
9463                Some(Self::AtomAdFilteringProcessJoinCaReported)
9464            }
9465            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
9466                Some(Self::AtomAdFilteringProcessAdSelectionReported)
9467            }
9468            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
9469                Some(Self::AtomAdCounterHistogramUpdaterReported)
9470            }
9471            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
9472            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
9473                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
9474            }
9475            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
9476                Some(Self::AtomKAnonBackgroundJobStatusReported)
9477            }
9478            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
9479                Some(Self::AtomKAnonInitializeStatusReported)
9480            }
9481            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
9482            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
9483            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
9484                Some(Self::AtomKAnonKeyAttestationStatusReported)
9485            }
9486            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
9487                Some(Self::AtomGetAdSelectionDataApiCalled)
9488            }
9489            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
9490                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
9491            }
9492            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
9493                Some(Self::AtomBackgroundJobSchedulingReported)
9494            }
9495            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
9496                Some(Self::AtomTopicsEncryptionEpochComputationReported)
9497            }
9498            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
9499                Some(Self::AtomTopicsEncryptionGetTopicsReported)
9500            }
9501            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
9502                Some(Self::AtomAdservicesShellCommandCalled)
9503            }
9504            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
9505            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
9506            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
9507            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
9508            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
9509                Some(Self::AtomPersistAdSelectionResultCalled)
9510            }
9511            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
9512                Some(Self::AtomServerAuctionKeyFetchCalled)
9513            }
9514            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
9515                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
9516            }
9517            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
9518                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
9519            }
9520            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
9521                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
9522            }
9523            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
9524                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
9525            }
9526            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
9527                Some(Self::AtomReportImpressionApiCalled)
9528            }
9529            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
9530                Some(Self::AtomAdServicesEnrollmentTransactionStats)
9531            }
9532            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
9533                Some(Self::AtomAdServicesCobaltLoggerEventReported)
9534            }
9535            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
9536                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
9537            }
9538            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
9539                Some(Self::AtomUpdateSignalsProcessReported)
9540            }
9541            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
9542                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
9543            }
9544            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
9545                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
9546            }
9547            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
9548                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
9549            }
9550            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
9551                Some(
9552                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
9553                )
9554            }
9555            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
9556                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
9557            }
9558            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
9559            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
9560            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
9561                Some(Self::AtomThermalHeadroomThresholdsCalled)
9562            }
9563            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
9564                Some(Self::AtomAdpfHintSessionTidCleanup)
9565            }
9566            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
9567                Some(Self::AtomThermalHeadroomThresholds)
9568            }
9569            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
9570            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
9571                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
9572            }
9573            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
9574            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
9575                Some(Self::AtomAccessibilityCheckResultReported)
9576            }
9577            _ => None,
9578        }
9579    }
9580}
9581/// This file is named 'statsd_tracing_config.proto' rather than
9582/// 'statsd_config.proto' (which would be more consistent with the other
9583/// config protos) so it doesn't show up and confuse folks looking for
9584/// the existing statsd_config.proto for configuring statsd itself.
9585/// Same for the config proto itself.
9586#[derive(Clone, PartialEq, ::prost::Message)]
9587pub struct StatsdTracingConfig {
9588    /// This is for the common case of the atom id being known in the enum AtomId.
9589    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9590    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
9591    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
9592    /// (e.g. non-upstream atoms that don't exist in AOSP).
9593    #[prost(int32, repeated, packed = "false", tag = "2")]
9594    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
9595    #[prost(message, repeated, tag = "3")]
9596    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
9597}
9598#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9599pub struct StatsdPullAtomConfig {
9600    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9601    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9602    #[prost(int32, repeated, packed = "false", tag = "2")]
9603    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9604    #[prost(int32, optional, tag = "3")]
9605    pub pull_frequency_ms: ::core::option::Option<i32>,
9606    #[prost(string, repeated, tag = "4")]
9607    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9608}
9609/// Configuration that allows to boost the priority of the 'traced' or
9610/// 'traced_probs' processes, by changing the scheduler configuration.
9611/// Only supported on Linux and Android the boosted process must have
9612/// 'CAP_SYS_NICE' capability.
9613#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9614pub struct PriorityBoostConfig {
9615    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
9616    pub policy: ::core::option::Option<i32>,
9617    #[prost(uint32, optional, tag = "2")]
9618    pub priority: ::core::option::Option<u32>,
9619}
9620/// Nested message and enum types in `PriorityBoostConfig`.
9621pub mod priority_boost_config {
9622    #[derive(
9623        Clone,
9624        Copy,
9625        Debug,
9626        PartialEq,
9627        Eq,
9628        Hash,
9629        PartialOrd,
9630        Ord,
9631        ::prost::Enumeration
9632    )]
9633    #[repr(i32)]
9634    pub enum BoostPolicy {
9635        PolicyUnspecified = 0,
9636        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
9637        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
9638        /// than default 0, 20 is the highest priority.
9639        /// Note: this is the opposite semantic of the cmdline nice, and is done for
9640        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
9641        PolicySchedOther = 1,
9642        /// The Real-time policy, Priority range: \[1; 99\]
9643        PolicySchedFifo = 2,
9644    }
9645    impl BoostPolicy {
9646        /// String value of the enum field names used in the ProtoBuf definition.
9647        ///
9648        /// The values are not transformed in any way and thus are considered stable
9649        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9650        pub fn as_str_name(&self) -> &'static str {
9651            match self {
9652                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
9653                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
9654                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
9655            }
9656        }
9657        /// Creates an enum from field names used in the ProtoBuf definition.
9658        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9659            match value {
9660                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
9661                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
9662                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
9663                _ => None,
9664            }
9665        }
9666    }
9667}
9668/// Config for polling process-related information from /proc/pid/status and
9669/// related files on Linux.
9670///
9671/// Data source name: "linux.process_stats".
9672#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9673pub struct ProcessStatsConfig {
9674    #[prost(
9675        enumeration = "process_stats_config::Quirks",
9676        repeated,
9677        packed = "false",
9678        tag = "1"
9679    )]
9680    pub quirks: ::prost::alloc::vec::Vec<i32>,
9681    /// If enabled all processes will be scanned and dumped when the trace starts.
9682    #[prost(bool, optional, tag = "2")]
9683    pub scan_all_processes_on_start: ::core::option::Option<bool>,
9684    /// If enabled thread names are also recoded (this is redundant if sched_switch
9685    /// is enabled).
9686    #[prost(bool, optional, tag = "3")]
9687    pub record_thread_names: ::core::option::Option<bool>,
9688    /// If > 0 samples counters (see process_stats.proto) from
9689    /// /proc/pid/status and oom_score_adj every X ms.
9690    /// This is required to be > 100ms to avoid excessive CPU usage.
9691    #[prost(uint32, optional, tag = "4")]
9692    pub proc_stats_poll_ms: ::core::option::Option<u32>,
9693    /// Explicit caching period during which the polling won't re-emit identical
9694    /// counter values. This is required to be either = 0 or a multiple of
9695    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
9696    /// rounded down to the nearest multiple.
9697    #[prost(uint32, optional, tag = "6")]
9698    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
9699    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
9700    /// /proc/pid/smaps_rollup.
9701    ///
9702    /// Android: does NOT work with the system daemons by default, as it requires
9703    /// running the recording process (traced_probes or tracebox) as root. It is
9704    /// possible to avoid the root requirement, but the exact steps depend on the
9705    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
9706    /// check, and might be further covered by the procfs "hidepid" mount option.
9707    #[prost(bool, optional, tag = "10")]
9708    pub scan_smaps_rollup: ::core::option::Option<bool>,
9709    /// If true: process descriptions will include process age (starttime in
9710    /// /proc/pid/stat).
9711    /// Introduced in: perfetto v44.
9712    #[prost(bool, optional, tag = "11")]
9713    pub record_process_age: ::core::option::Option<bool>,
9714    /// If true and |proc_stats_poll_ms| is set, process stats will include time
9715    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
9716    /// Introduced in: perfetto v44.
9717    #[prost(bool, optional, tag = "12")]
9718    pub record_process_runtime: ::core::option::Option<bool>,
9719    /// If true obtain per-process dmabuf resident set size from
9720    /// /proc/pid/dmabuf_rss.
9721    /// This feature is not in upstream linux, and is available only on some
9722    /// Android kernels.
9723    #[prost(bool, optional, tag = "13")]
9724    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
9725    /// WARNING: unmaintained and deprecated. If true this will resolve file
9726    /// descriptors for each process so these can be mapped to their actual device
9727    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
9728    /// or new fds opened after initially scanning a process will not be
9729    /// recognized.
9730    #[prost(bool, optional, tag = "9")]
9731    pub resolve_process_fds: ::core::option::Option<bool>,
9732    /// If true, do *not* write a ProcessTree::Thread message for the main thread
9733    /// of a process. This was the default behaviour before perfetto v58.
9734    ///
9735    /// Added in perfetto v58.
9736    #[prost(bool, optional, tag = "14")]
9737    pub skip_main_thread_message: ::core::option::Option<bool>,
9738}
9739/// Nested message and enum types in `ProcessStatsConfig`.
9740pub mod process_stats_config {
9741    #[derive(
9742        Clone,
9743        Copy,
9744        Debug,
9745        PartialEq,
9746        Eq,
9747        Hash,
9748        PartialOrd,
9749        Ord,
9750        ::prost::Enumeration
9751    )]
9752    #[repr(i32)]
9753    pub enum Quirks {
9754        Unspecified = 0,
9755        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
9756        /// startup is now disabled by default and can be re-enabled using the
9757        /// |scan_all_processes_on_start| arg.
9758        #[deprecated]
9759        DisableInitialDump = 1,
9760        /// If set, disables the special interaction with "linux.ftrace" data source,
9761        /// where the process stats rescrapes any thread id seen in the ftrace
9762        /// stream.
9763        DisableOnDemand = 2,
9764    }
9765    impl Quirks {
9766        /// String value of the enum field names used in the ProtoBuf definition.
9767        ///
9768        /// The values are not transformed in any way and thus are considered stable
9769        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9770        pub fn as_str_name(&self) -> &'static str {
9771            match self {
9772                Self::Unspecified => "QUIRKS_UNSPECIFIED",
9773                #[allow(deprecated)]
9774                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
9775                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
9776            }
9777        }
9778        /// Creates an enum from field names used in the ProtoBuf definition.
9779        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9780            match value {
9781                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
9782                "DISABLE_INITIAL_DUMP" => {
9783                    Some(#[allow(deprecated)] Self::DisableInitialDump)
9784                }
9785                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
9786                _ => None,
9787            }
9788        }
9789    }
9790}
9791/// Configuration for go/heapprofd.
9792/// Next id: 28
9793#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9794pub struct HeapprofdConfig {
9795    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
9796    ///
9797    /// These are:
9798    /// * All heaps if heap_sampling_intervals is empty.
9799    /// * Those profiled due to all_heaps and not named in heaps if
9800    ///    heap_sampling_intervals is not empty.
9801    /// * The implicit libc.malloc heap if heaps is empty.
9802    ///
9803    /// Set to 1 for perfect accuracy.
9804    /// Otherwise, sample every sample_interval_bytes on average.
9805    ///
9806    /// See
9807    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
9808    /// for more details.
9809    ///
9810    /// BUGS
9811    /// Before Android 12, setting this to 0 would crash the target process.
9812    ///
9813    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
9814    /// this field or with heap_sampling_intervals), otherwise the producer will
9815    /// not start.
9816    #[prost(uint64, optional, tag = "1")]
9817    pub sampling_interval_bytes: ::core::option::Option<u64>,
9818    /// If less than the given numbers of bytes are left free in the shared
9819    /// memory buffer, increase sampling interval by a factor of two.
9820    /// Adaptive sampling is disabled when set to 0.
9821    #[prost(uint64, optional, tag = "24")]
9822    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
9823    /// Stop doubling the sampling_interval once the sampling interval has reached
9824    /// this value.
9825    #[prost(uint64, optional, tag = "25")]
9826    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
9827    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
9828    /// as the following section (A), and on newer versions are both (A) and (B):
9829    ///
9830    /// (A) E.g. surfaceflinger, com.android.phone
9831    /// This input is normalized in the following way: if it contains slashes,
9832    /// everything up to the last slash is discarded. If it contains "@",
9833    /// everything after the first @ is discared.
9834    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
9835    /// This transformation is also applied to the processes' command lines when
9836    /// matching.
9837    ///
9838    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
9839    /// case it is matched against running processes' command lines using glob
9840    /// semantics. If the pattern starts with '/' it is matched against the full
9841    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
9842    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
9843    /// normalized as described above.
9844    /// Wildcard patterns are supported only for profiling already-running
9845    /// processes. A config must set no_startup=true if using wildcards, or it will
9846    /// be rejected.
9847    #[prost(string, repeated, tag = "2")]
9848    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9849    /// For watermark based triggering or local debugging.
9850    #[prost(uint64, repeated, packed = "false", tag = "4")]
9851    pub pid: ::prost::alloc::vec::Vec<u64>,
9852    /// Only profile target if it was installed by one of the packages given.
9853    /// Special values are:
9854    /// * @system: installed on the system partition
9855    /// * @product: installed on the product partition
9856    /// * @null: sideloaded
9857    /// Supported on Android 12+.
9858    #[prost(string, repeated, tag = "26")]
9859    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9860    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
9861    /// "malloc".
9862    ///
9863    /// Introduced in Android 12.
9864    #[prost(string, repeated, tag = "20")]
9865    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9866    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
9867    /// combination with all_heaps;
9868    ///
9869    /// Introduced in Android 12.
9870    #[prost(string, repeated, tag = "27")]
9871    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9872    #[prost(bool, optional, tag = "23")]
9873    pub stream_allocations: ::core::option::Option<bool>,
9874    /// If given, needs to be the same length as heaps and gives the sampling
9875    /// interval for the respective entry in heaps.
9876    ///
9877    /// Otherwise, sampling_interval_bytes is used.
9878    ///
9879    /// It is recommended to set sampling_interval_bytes to a reasonable default
9880    /// value when using this, as a value of 0 for sampling_interval_bytes will
9881    /// crash the target process before Android 12.
9882    ///
9883    /// Introduced in Android 12.
9884    ///
9885    /// All values must be non-zero or the producer will not start.
9886    #[prost(uint64, repeated, packed = "false", tag = "22")]
9887    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
9888    /// Sample all heaps registered by target process. Introduced in Android 12.
9889    #[prost(bool, optional, tag = "21")]
9890    pub all_heaps: ::core::option::Option<bool>,
9891    /// Profile all processes eligible for profiling on the system.
9892    /// See
9893    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
9894    /// for which processes are eligible.
9895    ///
9896    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
9897    /// will crash when trying to launch a new process as it will have an
9898    /// unexpected open socket to heapprofd.
9899    ///
9900    /// heapprofd will likely be overloaded by the amount of data for low
9901    /// sampling intervals.
9902    #[prost(bool, optional, tag = "5")]
9903    pub all: ::core::option::Option<bool>,
9904    /// Do not profile processes whose anon RSS + swap < given value.
9905    /// Introduced in Android 11.
9906    #[prost(uint32, optional, tag = "15")]
9907    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
9908    /// Stop profile if heapprofd memory usage goes beyond the given value.
9909    /// Introduced in Android 11.
9910    #[prost(uint32, optional, tag = "16")]
9911    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
9912    /// Stop profile if heapprofd CPU time since start of this data-source
9913    /// goes beyond given value.
9914    /// Introduced in Android 11.
9915    #[prost(uint64, optional, tag = "17")]
9916    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
9917    /// Do not emit function names for mappings starting with this prefix.
9918    /// E.g. /system to not emit symbols for any system libraries.
9919    #[prost(string, repeated, tag = "7")]
9920    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9921    /// Dump at a predefined interval.
9922    #[prost(message, optional, tag = "6")]
9923    pub continuous_dump_config: ::core::option::Option<
9924        heapprofd_config::ContinuousDumpConfig,
9925    >,
9926    /// Size of the shared memory buffer between the profiled processes and
9927    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
9928    /// MiB.
9929    ///
9930    /// Needs to be:
9931    /// * at least 8192,
9932    /// * a power of two,
9933    /// * a multiple of 4096.
9934    #[prost(uint64, optional, tag = "8")]
9935    pub shmem_size_bytes: ::core::option::Option<u64>,
9936    /// When the shmem buffer is full, block the client instead of ending the
9937    /// trace. Use with caution as this will significantly slow down the target
9938    /// process.
9939    #[prost(bool, optional, tag = "9")]
9940    pub block_client: ::core::option::Option<bool>,
9941    /// If set, stop the trace session after blocking the client for this
9942    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
9943    /// Introduced in Android 11.
9944    #[prost(uint32, optional, tag = "14")]
9945    pub block_client_timeout_us: ::core::option::Option<u32>,
9946    /// Do not profile processes from startup, only match already running
9947    /// processes.
9948    ///
9949    /// Can not be set at the same time as no_running.
9950    /// Introduced in Android 11.
9951    #[prost(bool, optional, tag = "10")]
9952    pub no_startup: ::core::option::Option<bool>,
9953    /// Do not profile running processes. Only match processes on startup.
9954    ///
9955    /// Can not be set at the same time as no_startup.
9956    /// Introduced in Android 11.
9957    #[prost(bool, optional, tag = "11")]
9958    pub no_running: ::core::option::Option<bool>,
9959    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
9960    /// at the point in time when the sampled heap usage of the process was at its
9961    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
9962    /// self_allocated and self_freed to not be set.
9963    /// Introduced in Android 11.
9964    #[prost(bool, optional, tag = "13")]
9965    pub dump_at_max: ::core::option::Option<bool>,
9966    /// Escape hatch if the session is being torn down because of a forked child
9967    /// that shares memory space, but is not correctly identified as a vforked
9968    /// child.
9969    /// Introduced in Android 11.
9970    #[prost(bool, optional, tag = "18")]
9971    pub disable_fork_teardown: ::core::option::Option<bool>,
9972    /// We try to automatically detect when a target applicatation vforks but then
9973    /// does a memory allocation (or free). This auto-detection can be disabled
9974    /// with this.
9975    /// Introduced in Android 11.
9976    #[prost(bool, optional, tag = "19")]
9977    pub disable_vfork_detection: ::core::option::Option<bool>,
9978}
9979/// Nested message and enum types in `HeapprofdConfig`.
9980pub mod heapprofd_config {
9981    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9982    pub struct ContinuousDumpConfig {
9983        /// ms to wait before first dump.
9984        #[prost(uint32, optional, tag = "5")]
9985        pub dump_phase_ms: ::core::option::Option<u32>,
9986        /// ms to wait between following dumps.
9987        #[prost(uint32, optional, tag = "6")]
9988        pub dump_interval_ms: ::core::option::Option<u32>,
9989    }
9990}
9991/// Config for the "linux.smaps" data source, describes one-shot or periodic
9992/// /proc/pid/smaps collection.
9993///
9994/// A valid config must specify at least one |target_cmdline|. Example:
9995///
9996/// data_sources {
9997///    config {
9998///      name: "linux.smaps"
9999///      process_smaps_config {
10000///        scope {
10001///          target_cmdline: "top"
10002///          target_cmdline: "tmux"
10003///        }
10004///      }
10005///    }
10006/// }
10007#[derive(Clone, PartialEq, ::prost::Message)]
10008pub struct ProcessSmapsConfig {
10009    /// Which fields to record per process.
10010    /// If unset, defaults to {size, rss, anon, swap}, aggregated by path name.
10011    #[prost(message, optional, tag = "1")]
10012    pub smaps_config: ::core::option::Option<SmapsConfig>,
10013    #[prost(message, optional, tag = "2")]
10014    pub scope: ::core::option::Option<process_smaps_config::Scope>,
10015    /// How often to recapture the smaps, including re-evaluating which processes
10016    /// match the |scope|. May be overridden by the implementation (at the time of
10017    /// writing, \[1s, 24hr\] range).
10018    /// If zero or unset, each process is captured only once at start.
10019    #[prost(uint32, optional, tag = "3")]
10020    pub read_period_ms: ::core::option::Option<u32>,
10021}
10022/// Nested message and enum types in `ProcessSmapsConfig`.
10023pub mod process_smaps_config {
10024    /// Which processes to record. At least one field must be set.
10025    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10026    pub struct Scope {
10027        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10028        /// comm string).
10029        ///
10030        /// This field can specify a single wildcard (*), and the profiler will
10031        /// attempt to match it in two possible ways:
10032        /// * if the pattern starts with a '/', then it is matched against the first
10033        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10034        ///    "/bin/echo".
10035        /// * otherwise the pattern is matched against the part of argv0
10036        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10037        ///    For example "echo" would match "/bin/echo".
10038        ///
10039        /// Implementation note: at most 511 characters of cmdline are considered.
10040        #[prost(string, repeated, tag = "1")]
10041        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10042    }
10043}
10044/// Describes what to record from /proc/pid/smaps.
10045#[derive(Clone, PartialEq, ::prost::Message)]
10046pub struct SmapsConfig {
10047    /// Set of fields to collect.
10048    /// If unset, defaults to: size, rss, anonymous, swap.
10049    #[prost(
10050        enumeration = "smaps_config::VmaField",
10051        repeated,
10052        packed = "false",
10053        tag = "1"
10054    )]
10055    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
10056    /// If false, mappings are aggregated by their path name.
10057    /// If true, each mapping is serialised separately.
10058    #[prost(bool, optional, tag = "2")]
10059    pub unaggregated: ::core::option::Option<bool>,
10060    /// Optional ordered list of redaction rules for the name of the mapping.
10061    /// Note that all mappings will still be emitted, these rules only affect the
10062    /// emitted name.
10063    /// If unset, all names are written as is.
10064    /// If set, the first matching rule decides on the action.
10065    /// If no rules match, the name is written as is.
10066    #[prost(message, repeated, tag = "3")]
10067    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
10068}
10069/// Nested message and enum types in `SmapsConfig`.
10070pub mod smaps_config {
10071    #[derive(
10072        Clone,
10073        Copy,
10074        Debug,
10075        PartialEq,
10076        Eq,
10077        Hash,
10078        PartialOrd,
10079        Ord,
10080        ::prost::Enumeration
10081    )]
10082    #[repr(i32)]
10083    pub enum VmaField {
10084        Unknown = 0,
10085        Size = 1,
10086        Rss = 2,
10087        Anonymous = 3,
10088        Swap = 4,
10089        SharedClean = 5,
10090        SharedDirty = 6,
10091        PrivateClean = 7,
10092        PrivateDirty = 8,
10093        Locked = 9,
10094        Pss = 10,
10095        PssDirty = 11,
10096        SwapPss = 12,
10097    }
10098    impl VmaField {
10099        /// String value of the enum field names used in the ProtoBuf definition.
10100        ///
10101        /// The values are not transformed in any way and thus are considered stable
10102        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10103        pub fn as_str_name(&self) -> &'static str {
10104            match self {
10105                Self::Unknown => "VMA_FIELD_UNKNOWN",
10106                Self::Size => "VMA_FIELD_SIZE",
10107                Self::Rss => "VMA_FIELD_RSS",
10108                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
10109                Self::Swap => "VMA_FIELD_SWAP",
10110                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
10111                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
10112                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
10113                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
10114                Self::Locked => "VMA_FIELD_LOCKED",
10115                Self::Pss => "VMA_FIELD_PSS",
10116                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
10117                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
10118            }
10119        }
10120        /// Creates an enum from field names used in the ProtoBuf definition.
10121        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10122            match value {
10123                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
10124                "VMA_FIELD_SIZE" => Some(Self::Size),
10125                "VMA_FIELD_RSS" => Some(Self::Rss),
10126                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
10127                "VMA_FIELD_SWAP" => Some(Self::Swap),
10128                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
10129                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
10130                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
10131                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
10132                "VMA_FIELD_LOCKED" => Some(Self::Locked),
10133                "VMA_FIELD_PSS" => Some(Self::Pss),
10134                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
10135                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
10136                _ => None,
10137            }
10138        }
10139    }
10140}
10141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10142pub struct RedactionRule {
10143    /// The pattern to match against.
10144    #[prost(string, optional, tag = "1")]
10145    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
10146    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
10147    pub match_mode: ::core::option::Option<i32>,
10148    /// If the pattern matches, keep the entire name. In other words, do not
10149    /// redact. This option exists since the rules are evaluated in order, so a
10150    /// more specific allow rule with keep_full can match before a more general
10151    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
10152    /// |keep_path_elements|.
10153    #[prost(bool, optional, tag = "3")]
10154    pub keep_full: ::core::option::Option<bool>,
10155    /// If the pattern matches, replace the name with this string (defaulting to
10156    /// <pf_redacted> if unset). The final emitted name might be further augmented
10157    /// by the options below keeping parts of the original name.
10158    #[prost(string, optional, tag = "4")]
10159    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
10160    /// If the pattern matches, keep the file extension, if any.
10161    /// Can be combined with |keep_path_elements|.
10162    #[prost(bool, optional, tag = "5")]
10163    pub keep_file_extension: ::core::option::Option<bool>,
10164    /// If the pattern matches, keep the first N path elements (as separated by
10165    /// '/'). If the name is not a path, this option does nothing. Can be combined
10166    /// with |keep_file_extension|.
10167    #[prost(uint32, optional, tag = "6")]
10168    pub keep_path_elements: ::core::option::Option<u32>,
10169}
10170/// Nested message and enum types in `RedactionRule`.
10171pub mod redaction_rule {
10172    /// How to match |pattern| against the name of the mapping.
10173    /// Note for future extensions: unrecognised enums are treated as always
10174    /// matching.
10175    #[derive(
10176        Clone,
10177        Copy,
10178        Debug,
10179        PartialEq,
10180        Eq,
10181        Hash,
10182        PartialOrd,
10183        Ord,
10184        ::prost::Enumeration
10185    )]
10186    #[repr(i32)]
10187    pub enum MatchMode {
10188        Unknown = 0,
10189        /// The pattern matches if it is a prefix of the mapping name.
10190        Prefix = 1,
10191        /// The pattern is matched against the mapping name as a pathname glob
10192        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
10193        /// The key distinction is that path separators in the name are *not* matched
10194        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
10195        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
10196        /// Note: any "(deleted)" suffix is excluded before matching.
10197        GlobPath = 2,
10198        /// The pattern is matched against the mapping name without special-casing
10199        /// path separators. So a pattern of the form "/usr/*/llvm" would match
10200        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
10201        /// Note: any "(deleted)" suffix is excluded before matching.
10202        GlobString = 3,
10203    }
10204    impl MatchMode {
10205        /// String value of the enum field names used in the ProtoBuf definition.
10206        ///
10207        /// The values are not transformed in any way and thus are considered stable
10208        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10209        pub fn as_str_name(&self) -> &'static str {
10210            match self {
10211                Self::Unknown => "MATCH_MODE_UNKNOWN",
10212                Self::Prefix => "MATCH_MODE_PREFIX",
10213                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
10214                Self::GlobString => "MATCH_MODE_GLOB_STRING",
10215            }
10216        }
10217        /// Creates an enum from field names used in the ProtoBuf definition.
10218        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10219            match value {
10220                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
10221                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
10222                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
10223                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
10224                _ => None,
10225            }
10226        }
10227    }
10228}
10229/// Configuration for managed app heap graph snapshots.
10230#[derive(Clone, PartialEq, ::prost::Message)]
10231pub struct JavaHprofConfig {
10232    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10233    /// comm string). The semantics of this field were changed since its original
10234    /// introduction.
10235    ///
10236    /// On Android T+ (13+), this field can specify a single wildcard (*), and
10237    /// the profiler will attempt to match it in two possible ways:
10238    /// * if the pattern starts with a '/', then it is matched against the first
10239    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10240    ///    "/bin/echo".
10241    /// * otherwise the pattern is matched against the part of argv0
10242    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10243    ///    For example "echo" would match "/bin/echo".
10244    ///
10245    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10246    /// normalized prior to an exact string comparison. Normalization is as
10247    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10248    /// the string contains forward slashes, trim everything up to and including
10249    /// the last one.
10250    ///
10251    /// Implementation note: in either case, at most 511 characters of cmdline
10252    /// are considered.
10253    #[prost(string, repeated, tag = "1")]
10254    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10255    /// For watermark based triggering or local debugging.
10256    #[prost(uint64, repeated, packed = "false", tag = "2")]
10257    pub pid: ::prost::alloc::vec::Vec<u64>,
10258    /// Only profile target if it was installed by one of the packages given.
10259    /// Special values are:
10260    /// * @system: installed on the system partition
10261    /// * @product: installed on the product partition
10262    /// * @null: sideloaded
10263    /// Supported on Android 12+.
10264    #[prost(string, repeated, tag = "7")]
10265    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10266    /// Dump at a predefined interval.
10267    #[prost(message, optional, tag = "3")]
10268    pub continuous_dump_config: ::core::option::Option<
10269        java_hprof_config::ContinuousDumpConfig,
10270    >,
10271    /// Do not profile processes whose anon RSS + swap < given value.
10272    #[prost(uint32, optional, tag = "4")]
10273    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
10274    /// Do not profile processes whose Java heap size < given value.
10275    #[prost(uint32, optional, tag = "9")]
10276    pub min_java_heap_size_kb: ::core::option::Option<u32>,
10277    /// Include the process' /proc/self/smaps.
10278    /// This only shows maps that:
10279    /// * start with /system
10280    /// * start with /vendor
10281    /// * start with /data/app
10282    /// * contain "extracted in memory from Y", where Y matches any of the above
10283    ///
10284    /// Superseded by |smaps_config| in perfetto v58+.
10285    #[prost(bool, optional, tag = "5")]
10286    pub dump_smaps: ::core::option::Option<bool>,
10287    /// If set, include /proc/self/smaps memory mappings.
10288    ///
10289    /// Added in perfetto v58.
10290    #[prost(message, optional, tag = "8")]
10291    pub smaps_config: ::core::option::Option<SmapsConfig>,
10292    /// Exclude objects of the following types from the profile. This can be
10293    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
10294    #[prost(string, repeated, tag = "6")]
10295    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10296    /// Dump the callsite of the thread triggering the OutOfMemoryError.
10297    /// Only applicable to OutOfMemoryError heap dumps
10298    #[prost(bool, optional, tag = "10")]
10299    pub dump_oome_callstack: ::core::option::Option<bool>,
10300}
10301/// Nested message and enum types in `JavaHprofConfig`.
10302pub mod java_hprof_config {
10303    /// If dump_interval_ms != 0, the following configuration is used.
10304    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10305    pub struct ContinuousDumpConfig {
10306        /// ms to wait before first continuous dump.
10307        /// A dump is always created at the beginning of the trace.
10308        #[prost(uint32, optional, tag = "1")]
10309        pub dump_phase_ms: ::core::option::Option<u32>,
10310        /// ms to wait between following dumps.
10311        #[prost(uint32, optional, tag = "2")]
10312        pub dump_interval_ms: ::core::option::Option<u32>,
10313        /// If true, scans all the processes to find `process_cmdline` and filter by
10314        /// `min_anonymous_memory_kb` only at data source start. Default on Android
10315        /// S-.
10316        ///
10317        /// If false, rescans all the processes to find on every dump. Default on
10318        /// Android T+.
10319        #[prost(bool, optional, tag = "3")]
10320        pub scan_pids_only_on_start: ::core::option::Option<bool>,
10321    }
10322}
10323#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10324pub struct PerfEvents {}
10325/// Nested message and enum types in `PerfEvents`.
10326pub mod perf_events {
10327    /// The primary event to count. If recording multiple events, this
10328    /// counter is the "group leader".
10329    /// Commented from the perspective of its use in |PerfEventConfig|.
10330    /// Next id: 13
10331    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10332    pub struct Timebase {
10333        /// Optional modifiers for the event. Modelled after the perftool's
10334        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
10335        /// Currently supported: count scoping such as :u, :k, :uk, ...
10336        /// Modifiers can differ between the timebase and followers.
10337        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
10338        pub modifiers: ::prost::alloc::vec::Vec<i32>,
10339        /// If set, samples will be timestamped with the given clock.
10340        /// If unset, the clock is chosen by the implementation.
10341        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
10342        /// used for hardware events (due to interrupt safety), for which the
10343        /// recommendation is to use one of the monotonic clocks.
10344        #[prost(enumeration = "PerfClock", optional, tag = "11")]
10345        pub timestamp_clock: ::core::option::Option<i32>,
10346        /// Optional arbitrary name for the event, to identify it in the parsed
10347        /// trace. Does *not* affect the profiling itself. If unset, the trace
10348        /// parser will choose a suitable name.
10349        #[prost(string, optional, tag = "10")]
10350        pub name: ::core::option::Option<::prost::alloc::string::String>,
10351        /// How often to snapshot the counter, along with any follower events and
10352        /// any additional sampled data such as callstacks.
10353        ///
10354        /// This choice also controls how the readings are taken:
10355        /// * With |frequency| or |period|, samples are taken by the kernel
10356        ///    into a ring buffer. Analogous to `perf record`.
10357        /// * With |poll_period_ms|, the userspace periodically snapshots
10358        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10359        /// Prefer the sampling options unless you're recording PMUs whose
10360        /// perf drivers only support the reading mode.
10361        ///
10362        /// If unset, an implementation-defined sampling default is used.
10363        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
10364        pub interval: ::core::option::Option<timebase::Interval>,
10365        /// Counting event to use as the timebase.
10366        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10367        /// which is what you usually want.
10368        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
10369        pub event: ::core::option::Option<timebase::Event>,
10370    }
10371    /// Nested message and enum types in `Timebase`.
10372    pub mod timebase {
10373        /// How often to snapshot the counter, along with any follower events and
10374        /// any additional sampled data such as callstacks.
10375        ///
10376        /// This choice also controls how the readings are taken:
10377        /// * With |frequency| or |period|, samples are taken by the kernel
10378        ///    into a ring buffer. Analogous to `perf record`.
10379        /// * With |poll_period_ms|, the userspace periodically snapshots
10380        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10381        /// Prefer the sampling options unless you're recording PMUs whose
10382        /// perf drivers only support the reading mode.
10383        ///
10384        /// If unset, an implementation-defined sampling default is used.
10385        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
10386        pub enum Interval {
10387            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
10388            /// same as 1/period.
10389            /// Details: the actual sampling will still be based on a period, but the
10390            /// kernel will dynamically adjust it based on the observed event rate, to
10391            /// approximate this frequency. Works best with steady-rate events like
10392            /// timers.
10393            /// Not guaranteed to be honored as the kernel can throttle the sampling
10394            /// rate if it's too high.
10395            #[prost(uint64, tag = "2")]
10396            Frequency(u64),
10397            /// Per-cpu sampling will occur every |period| counts of |event|.
10398            /// Prefer |frequency| by default, as it's easier to oversample with a
10399            /// fixed period.
10400            /// Not guaranteed to be honored as the kernel can throttle the sampling
10401            /// rate if it's too high.
10402            #[prost(uint64, tag = "1")]
10403            Period(u64),
10404            /// Per-cpu values are read by the userspace every interval. If using this
10405            /// mode, only follower events are supported. Options such as
10406            /// |PerfEventConfig.CallstackSampling| are incompatible.
10407            /// The period can't be guaranteed to be exact since the readings are taken
10408            /// by userspace.
10409            #[prost(uint32, tag = "6")]
10410            PollPeriodMs(u32),
10411        }
10412        /// Counting event to use as the timebase.
10413        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10414        /// which is what you usually want.
10415        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10416        pub enum Event {
10417            #[prost(enumeration = "super::Counter", tag = "4")]
10418            Counter(i32),
10419            #[prost(message, tag = "3")]
10420            Tracepoint(super::Tracepoint),
10421            #[prost(message, tag = "5")]
10422            RawEvent(super::RawEvent),
10423        }
10424    }
10425    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10426    pub struct Tracepoint {
10427        /// Group and name for the tracepoint, acceptable forms:
10428        /// * "sched/sched_switch"
10429        /// * "sched:sched_switch"
10430        #[prost(string, optional, tag = "1")]
10431        pub name: ::core::option::Option<::prost::alloc::string::String>,
10432        /// Optional field-level filter for the tracepoint. Only events matching this
10433        /// filter will be counted (and therefore contribute to the sampling period).
10434        /// Example: "prev_pid >= 42 && next_pid == 0".
10435        /// For full syntax, see kernel documentation on "Event filtering":
10436        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
10437        #[prost(string, optional, tag = "2")]
10438        pub filter: ::core::option::Option<::prost::alloc::string::String>,
10439    }
10440    /// Syscall-level description of the event, propagated to the perf_event_attr
10441    /// struct. Primarily for local use-cases, since the event availability and
10442    /// encoding is hardware-specific.
10443    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10444    pub struct RawEvent {
10445        /// Either |type| or |pmu_name| can be set.
10446        #[prost(uint32, optional, tag = "1")]
10447        pub r#type: ::core::option::Option<u32>,
10448        #[prost(uint64, optional, tag = "2")]
10449        pub config: ::core::option::Option<u64>,
10450        #[prost(uint64, optional, tag = "3")]
10451        pub config1: ::core::option::Option<u64>,
10452        #[prost(uint64, optional, tag = "4")]
10453        pub config2: ::core::option::Option<u64>,
10454        /// The name of a dynamic PMU under /sys/bus/event_source/devices
10455        /// (e.g. "armv8_pmuv3").
10456        /// If set, leave |type| unset.
10457        /// Android: the relevant sysfs paths are not allowlisted by default, so
10458        /// this option will require a rooted device with selinux disabled.
10459        #[prost(string, optional, tag = "5")]
10460        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
10461    }
10462    /// Builtin counter names from the uapi header. Commented with their perf tool
10463    /// aliases.
10464    /// TODO(rsavitski): consider generating enums for cache events (should be
10465    /// finite), and generally make this list as extensive as possible. Excluding
10466    /// things like dynamic PMUs since those don't fit into a static enum.
10467    /// Next id: 21
10468    #[derive(
10469        Clone,
10470        Copy,
10471        Debug,
10472        PartialEq,
10473        Eq,
10474        Hash,
10475        PartialOrd,
10476        Ord,
10477        ::prost::Enumeration
10478    )]
10479    #[repr(i32)]
10480    pub enum Counter {
10481        UnknownCounter = 0,
10482        /// cpu-clock
10483        SwCpuClock = 1,
10484        /// page-faults, faults
10485        SwPageFaults = 2,
10486        /// task-clock
10487        SwTaskClock = 3,
10488        /// context-switches, cs
10489        SwContextSwitches = 4,
10490        /// cpu-migrations, migrations
10491        SwCpuMigrations = 5,
10492        /// minor-faults
10493        SwPageFaultsMin = 6,
10494        /// major-faults
10495        SwPageFaultsMaj = 7,
10496        /// alignment-faults
10497        SwAlignmentFaults = 8,
10498        /// emulation-faults
10499        SwEmulationFaults = 9,
10500        /// dummy
10501        SwDummy = 20,
10502        /// cpu-cycles, cycles
10503        HwCpuCycles = 10,
10504        /// instructions
10505        HwInstructions = 11,
10506        /// cache-references
10507        HwCacheReferences = 12,
10508        /// cache-misses
10509        HwCacheMisses = 13,
10510        /// branch-instructions, branches
10511        HwBranchInstructions = 14,
10512        /// branch-misses
10513        HwBranchMisses = 15,
10514        /// bus-cycles
10515        HwBusCycles = 16,
10516        /// stalled-cycles-frontend, idle-cycles-frontend
10517        HwStalledCyclesFrontend = 17,
10518        /// stalled-cycles-backend, idle-cycles-backend
10519        HwStalledCyclesBackend = 18,
10520        /// ref-cycles
10521        HwRefCpuCycles = 19,
10522    }
10523    impl Counter {
10524        /// String value of the enum field names used in the ProtoBuf definition.
10525        ///
10526        /// The values are not transformed in any way and thus are considered stable
10527        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10528        pub fn as_str_name(&self) -> &'static str {
10529            match self {
10530                Self::UnknownCounter => "UNKNOWN_COUNTER",
10531                Self::SwCpuClock => "SW_CPU_CLOCK",
10532                Self::SwPageFaults => "SW_PAGE_FAULTS",
10533                Self::SwTaskClock => "SW_TASK_CLOCK",
10534                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
10535                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
10536                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
10537                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
10538                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
10539                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
10540                Self::SwDummy => "SW_DUMMY",
10541                Self::HwCpuCycles => "HW_CPU_CYCLES",
10542                Self::HwInstructions => "HW_INSTRUCTIONS",
10543                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
10544                Self::HwCacheMisses => "HW_CACHE_MISSES",
10545                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
10546                Self::HwBranchMisses => "HW_BRANCH_MISSES",
10547                Self::HwBusCycles => "HW_BUS_CYCLES",
10548                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
10549                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
10550                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
10551            }
10552        }
10553        /// Creates an enum from field names used in the ProtoBuf definition.
10554        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10555            match value {
10556                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
10557                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
10558                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
10559                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
10560                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
10561                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
10562                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
10563                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
10564                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
10565                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
10566                "SW_DUMMY" => Some(Self::SwDummy),
10567                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
10568                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
10569                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
10570                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
10571                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
10572                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
10573                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
10574                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
10575                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
10576                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
10577                _ => None,
10578            }
10579        }
10580    }
10581    /// Subset of clocks that is supported by perf timestamping.
10582    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
10583    /// would require additions to the trace clock synchronisation logic.
10584    #[derive(
10585        Clone,
10586        Copy,
10587        Debug,
10588        PartialEq,
10589        Eq,
10590        Hash,
10591        PartialOrd,
10592        Ord,
10593        ::prost::Enumeration
10594    )]
10595    #[repr(i32)]
10596    pub enum PerfClock {
10597        UnknownPerfClock = 0,
10598        Realtime = 1,
10599        Monotonic = 2,
10600        MonotonicRaw = 3,
10601        Boottime = 4,
10602    }
10603    impl PerfClock {
10604        /// String value of the enum field names used in the ProtoBuf definition.
10605        ///
10606        /// The values are not transformed in any way and thus are considered stable
10607        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10608        pub fn as_str_name(&self) -> &'static str {
10609            match self {
10610                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
10611                Self::Realtime => "PERF_CLOCK_REALTIME",
10612                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
10613                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
10614                Self::Boottime => "PERF_CLOCK_BOOTTIME",
10615            }
10616        }
10617        /// Creates an enum from field names used in the ProtoBuf definition.
10618        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10619            match value {
10620                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
10621                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
10622                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
10623                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
10624                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
10625                _ => None,
10626            }
10627        }
10628    }
10629    #[derive(
10630        Clone,
10631        Copy,
10632        Debug,
10633        PartialEq,
10634        Eq,
10635        Hash,
10636        PartialOrd,
10637        Ord,
10638        ::prost::Enumeration
10639    )]
10640    #[repr(i32)]
10641    pub enum EventModifier {
10642        UnknownEventModifier = 0,
10643        /// count only while in userspace
10644        CountUserspace = 1,
10645        /// count only while in kernel
10646        CountKernel = 2,
10647        /// count only while in hypervisor
10648        CountHypervisor = 3,
10649    }
10650    impl EventModifier {
10651        /// String value of the enum field names used in the ProtoBuf definition.
10652        ///
10653        /// The values are not transformed in any way and thus are considered stable
10654        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10655        pub fn as_str_name(&self) -> &'static str {
10656            match self {
10657                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
10658                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
10659                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
10660                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
10661            }
10662        }
10663        /// Creates an enum from field names used in the ProtoBuf definition.
10664        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10665            match value {
10666                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
10667                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
10668                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
10669                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
10670                _ => None,
10671            }
10672        }
10673    }
10674}
10675/// Additional events associated with a leader.
10676/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
10677#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10678pub struct FollowerEvent {
10679    /// Modifiers can differ between the timebase and followers.
10680    #[prost(
10681        enumeration = "perf_events::EventModifier",
10682        repeated,
10683        packed = "false",
10684        tag = "5"
10685    )]
10686    pub modifiers: ::prost::alloc::vec::Vec<i32>,
10687    /// Optional arbitrary name for the event, to identify it in the parsed
10688    /// trace. Does *not* affect the profiling itself. If unset, the trace
10689    /// parser will choose a suitable name.
10690    #[prost(string, optional, tag = "4")]
10691    pub name: ::core::option::Option<::prost::alloc::string::String>,
10692    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
10693    pub event: ::core::option::Option<follower_event::Event>,
10694}
10695/// Nested message and enum types in `FollowerEvent`.
10696pub mod follower_event {
10697    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10698    pub enum Event {
10699        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
10700        Counter(i32),
10701        #[prost(message, tag = "2")]
10702        Tracepoint(super::perf_events::Tracepoint),
10703        #[prost(message, tag = "3")]
10704        RawEvent(super::perf_events::RawEvent),
10705    }
10706}
10707/// Configuration for the traced_perf profiler.
10708///
10709/// Example config for basic cpu profiling:
10710///    perf_event_config {
10711///      timebase {
10712///        frequency: 80
10713///      }
10714///      callstack_sampling {
10715///        scope {
10716///          target_cmdline: "surfaceflinger"
10717///          target_cmdline: "system_server"
10718///        }
10719///        kernel_frames: true
10720///      }
10721///    }
10722///
10723/// Next id: 23
10724#[derive(Clone, PartialEq, ::prost::Message)]
10725pub struct PerfEventConfig {
10726    /// What event to sample on, and how often.
10727    /// Defined in common/perf_events.proto.
10728    #[prost(message, optional, tag = "15")]
10729    pub timebase: ::core::option::Option<perf_events::Timebase>,
10730    /// Other events associated with the leader described in the timebase.
10731    #[prost(message, repeated, tag = "19")]
10732    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
10733    /// If set, the profiler will sample userspace processes' callstacks at the
10734    /// interval specified by the |timebase|.
10735    /// If unset, the profiler will record only the event counts.
10736    #[prost(message, optional, tag = "16")]
10737    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
10738    /// List of cpu indices for counting. If empty, the default is all cpus.
10739    ///
10740    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
10741    /// counter-only traces. A future change will likely reorganise the options,
10742    /// but this field will continue to be supported.
10743    ///
10744    /// Available since: perfetto v50.
10745    #[prost(uint32, repeated, packed = "false", tag = "20")]
10746    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
10747    /// Allow failure of perf_event_open
10748    #[prost(bool, optional, tag = "21")]
10749    pub ignore_open_failure: ::core::option::Option<bool>,
10750    /// If not empty, consider only CPUs whose CPUID matches one of these values.
10751    #[prost(string, repeated, tag = "22")]
10752    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10753    /// How often the per-cpu ring buffers are read by the producer.
10754    /// If unset, an implementation-defined default is used.
10755    #[prost(uint32, optional, tag = "8")]
10756    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
10757    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
10758    /// kernel. If set, must be a power of two.
10759    /// If unset, an implementation-defined default is used.
10760    #[prost(uint32, optional, tag = "3")]
10761    pub ring_buffer_pages: ::core::option::Option<u32>,
10762    /// Drop samples if the heap memory held by the samples in the unwinder queue
10763    /// is above the given limit. This counts the memory across all concurrent data
10764    /// sources (not just this one's), and there is no fairness guarantee - the
10765    /// whole quota might be used up by a concurrent source.
10766    #[prost(uint64, optional, tag = "17")]
10767    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
10768    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
10769    /// footprint exceeds this value.
10770    #[prost(uint32, optional, tag = "13")]
10771    pub max_daemon_memory_kb: ::core::option::Option<u32>,
10772    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
10773    /// sampled process. This is primarily for Android, where this lookup is
10774    /// asynchronous. As long as the producer is waiting, the associated samples
10775    /// will be kept enqueued (putting pressure on the capacity of the shared
10776    /// unwinding queue). Once a lookup for a process expires, all associated
10777    /// samples are discarded. However, if the lookup still succeeds after the
10778    /// timeout, future samples will be handled normally.
10779    /// If unset, an implementation-defined default is used.
10780    #[prost(uint32, optional, tag = "9")]
10781    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
10782    /// Optional period for clearing state cached by the userspace unwinder. This
10783    /// is a heavy operation that is only necessary for traces that target a wide
10784    /// set of processes, and require the memory footprint to be reset
10785    /// periodically. To effectively disable the cache clearing, set to a value
10786    /// greater than your trace duration.
10787    ///
10788    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
10789    ///
10790    /// If zero or unset:
10791    /// * before perfetto v52: no cache clearing.
10792    /// * perfetto v52+: implementation chooses an infrequent default.
10793    #[prost(uint32, optional, tag = "10")]
10794    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
10795    /// If set, only profile target if it was installed by a package with one of
10796    /// these names. Special values:
10797    /// * "@system": installed on the system partition
10798    /// * "@product": installed on the product partition
10799    /// * "@null": sideloaded
10800    /// Supported on Android 12+.
10801    #[prost(string, repeated, tag = "18")]
10802    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10803    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
10804    /// We rely on this to detect such configs.
10805    #[prost(bool, optional, tag = "1")]
10806    pub all_cpus: ::core::option::Option<bool>,
10807    #[prost(uint32, optional, tag = "2")]
10808    pub sampling_frequency: ::core::option::Option<u32>,
10809    #[prost(bool, optional, tag = "12")]
10810    pub kernel_frames: ::core::option::Option<bool>,
10811    #[prost(int32, repeated, packed = "false", tag = "4")]
10812    pub target_pid: ::prost::alloc::vec::Vec<i32>,
10813    #[prost(string, repeated, tag = "5")]
10814    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10815    #[prost(int32, repeated, packed = "false", tag = "6")]
10816    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10817    #[prost(string, repeated, tag = "7")]
10818    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10819    #[prost(uint32, optional, tag = "11")]
10820    pub additional_cmdline_count: ::core::option::Option<u32>,
10821}
10822/// Nested message and enum types in `PerfEventConfig`.
10823pub mod perf_event_config {
10824    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10825    pub struct CallstackSampling {
10826        /// Defines a set of processes for which samples are retained/skipped. If
10827        /// unset, all samples are kept, but beware that it will be very heavy on the
10828        /// stack unwinder, which might start dropping samples due to overload.
10829        #[prost(message, optional, tag = "1")]
10830        pub scope: ::core::option::Option<Scope>,
10831        /// If true, callstacks will include the kernel-space frames. Such frames can
10832        /// be identified by a magical "kernel" string as their mapping name.
10833        /// Requires traced_perf to be running as root, or kptr_restrict to have been
10834        /// manually unrestricted. On Android, the platform should do the right thing
10835        /// on debug builds.
10836        /// This does *not* disclose KASLR, as only the function names are emitted.
10837        #[prost(bool, optional, tag = "2")]
10838        pub kernel_frames: ::core::option::Option<bool>,
10839        /// Whether to record and unwind userspace callstacks. If unset, defaults to
10840        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
10841        /// as the most common default (this defaulting is only applicable if the
10842        /// outer CallstackSampling message is explicitly set).
10843        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
10844        pub user_frames: ::core::option::Option<i32>,
10845    }
10846    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10847    pub struct Scope {
10848        /// Process ID (TGID) allowlist. If this list is not empty, only matching
10849        /// samples will be retained. If multiple allow/deny-lists are
10850        /// specified by the config, then all of them are evaluated for each sampled
10851        /// process.
10852        #[prost(int32, repeated, packed = "false", tag = "1")]
10853        pub target_pid: ::prost::alloc::vec::Vec<i32>,
10854        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10855        /// comm string). The semantics of this field were changed since its original
10856        /// introduction.
10857        ///
10858        /// On Android T+ (13+), this field can specify a single wildcard (*), and
10859        /// the profiler will attempt to match it in two possible ways:
10860        /// * if the pattern starts with a '/', then it is matched against the first
10861        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10862        ///    "/bin/echo".
10863        /// * otherwise the pattern is matched against the part of argv0
10864        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10865        ///    For example "echo" would match "/bin/echo".
10866        ///
10867        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10868        /// normalized prior to an exact string comparison. Normalization is as
10869        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10870        /// the string contains forward slashes, trim everything up to and including
10871        /// the last one.
10872        ///
10873        /// Implementation note: in either case, at most 511 characters of cmdline
10874        /// are considered.
10875        #[prost(string, repeated, tag = "2")]
10876        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10877        /// List of excluded pids.
10878        #[prost(int32, repeated, packed = "false", tag = "3")]
10879        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10880        /// List of excluded cmdlines. See description of |target_cmdline| for how
10881        /// this is handled.
10882        #[prost(string, repeated, tag = "4")]
10883        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10884        /// Number of additional command lines to sample. Only those which are
10885        /// neither explicitly included nor excluded will be considered. Processes
10886        /// are accepted on a first come, first served basis.
10887        #[prost(uint32, optional, tag = "5")]
10888        pub additional_cmdline_count: ::core::option::Option<u32>,
10889        /// If set to N, all encountered processes will be put into one of the N
10890        /// possible bins, and only one randomly-chosen bin will be selected for
10891        /// unwinding. The binning is simply "pid % N", under the assumption that
10892        /// low-order bits of pids are roughly uniformly distributed. Other explicit
10893        /// inclusions/exclusions in this |Scope| message are still respected.
10894        ///
10895        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
10896        /// values will be queryable in trace processor under the "stats" table as
10897        /// "perf_process_shard_count" and "perf_chosen_process_shard".
10898        ///
10899        /// NB: all data sources in a config that set |process_shard_count| must set
10900        /// it to the same value. The profiler will choose one bin for all those data
10901        /// sources.
10902        #[prost(uint32, optional, tag = "6")]
10903        pub process_shard_count: ::core::option::Option<u32>,
10904    }
10905    /// Userspace unwinding mode.
10906    #[derive(
10907        Clone,
10908        Copy,
10909        Debug,
10910        PartialEq,
10911        Eq,
10912        Hash,
10913        PartialOrd,
10914        Ord,
10915        ::prost::Enumeration
10916    )]
10917    #[repr(i32)]
10918    pub enum UnwindMode {
10919        UnwindUnknown = 0,
10920        /// Do not unwind userspace:
10921        UnwindSkip = 1,
10922        /// Use libunwindstack (default):
10923        UnwindDwarf = 2,
10924        /// Use userspace frame pointer unwinder:
10925        UnwindFramePointer = 3,
10926        /// Ask the kernel to unwind the userspace stack via frame pointers, using
10927        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
10928        /// sample, which avoids the per-sample copy cost and the depth limit
10929        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
10930        /// (including system libraries) is built with frame pointers - the kernel
10931        /// walks the chain and returns instruction addresses, which still need to
10932        /// be symbolized offline using the recorded process mappings.
10933        UnwindKernelFramePointer = 4,
10934    }
10935    impl UnwindMode {
10936        /// String value of the enum field names used in the ProtoBuf definition.
10937        ///
10938        /// The values are not transformed in any way and thus are considered stable
10939        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10940        pub fn as_str_name(&self) -> &'static str {
10941            match self {
10942                Self::UnwindUnknown => "UNWIND_UNKNOWN",
10943                Self::UnwindSkip => "UNWIND_SKIP",
10944                Self::UnwindDwarf => "UNWIND_DWARF",
10945                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
10946                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
10947            }
10948        }
10949        /// Creates an enum from field names used in the ProtoBuf definition.
10950        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10951            match value {
10952                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
10953                "UNWIND_SKIP" => Some(Self::UnwindSkip),
10954                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
10955                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
10956                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
10957                _ => None,
10958            }
10959        }
10960    }
10961}
10962/// Counter definitions for Linux's /proc/meminfo.
10963#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10964#[repr(i32)]
10965pub enum MeminfoCounters {
10966    MeminfoUnspecified = 0,
10967    MeminfoMemTotal = 1,
10968    MeminfoMemFree = 2,
10969    MeminfoMemAvailable = 3,
10970    MeminfoBuffers = 4,
10971    MeminfoCached = 5,
10972    MeminfoSwapCached = 6,
10973    MeminfoActive = 7,
10974    MeminfoInactive = 8,
10975    MeminfoActiveAnon = 9,
10976    MeminfoInactiveAnon = 10,
10977    MeminfoActiveFile = 11,
10978    MeminfoInactiveFile = 12,
10979    MeminfoUnevictable = 13,
10980    MeminfoMlocked = 14,
10981    MeminfoSwapTotal = 15,
10982    MeminfoSwapFree = 16,
10983    MeminfoDirty = 17,
10984    MeminfoWriteback = 18,
10985    MeminfoAnonPages = 19,
10986    MeminfoMapped = 20,
10987    MeminfoShmem = 21,
10988    MeminfoSlab = 22,
10989    MeminfoSlabReclaimable = 23,
10990    MeminfoSlabUnreclaimable = 24,
10991    MeminfoKernelStack = 25,
10992    MeminfoPageTables = 26,
10993    MeminfoCommitLimit = 27,
10994    MeminfoCommitedAs = 28,
10995    MeminfoVmallocTotal = 29,
10996    MeminfoVmallocUsed = 30,
10997    MeminfoVmallocChunk = 31,
10998    MeminfoCmaTotal = 32,
10999    MeminfoCmaFree = 33,
11000    MeminfoGpu = 34,
11001    MeminfoZram = 35,
11002    MeminfoMisc = 36,
11003    MeminfoIonHeap = 37,
11004    MeminfoIonHeapPool = 38,
11005}
11006impl MeminfoCounters {
11007    /// String value of the enum field names used in the ProtoBuf definition.
11008    ///
11009    /// The values are not transformed in any way and thus are considered stable
11010    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11011    pub fn as_str_name(&self) -> &'static str {
11012        match self {
11013            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
11014            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
11015            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
11016            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
11017            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
11018            Self::MeminfoCached => "MEMINFO_CACHED",
11019            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
11020            Self::MeminfoActive => "MEMINFO_ACTIVE",
11021            Self::MeminfoInactive => "MEMINFO_INACTIVE",
11022            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
11023            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
11024            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
11025            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
11026            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
11027            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
11028            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
11029            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
11030            Self::MeminfoDirty => "MEMINFO_DIRTY",
11031            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
11032            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
11033            Self::MeminfoMapped => "MEMINFO_MAPPED",
11034            Self::MeminfoShmem => "MEMINFO_SHMEM",
11035            Self::MeminfoSlab => "MEMINFO_SLAB",
11036            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
11037            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
11038            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
11039            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
11040            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
11041            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
11042            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
11043            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
11044            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
11045            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
11046            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
11047            Self::MeminfoGpu => "MEMINFO_GPU",
11048            Self::MeminfoZram => "MEMINFO_ZRAM",
11049            Self::MeminfoMisc => "MEMINFO_MISC",
11050            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
11051            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
11052        }
11053    }
11054    /// Creates an enum from field names used in the ProtoBuf definition.
11055    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11056        match value {
11057            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
11058            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
11059            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
11060            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
11061            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
11062            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
11063            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
11064            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
11065            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
11066            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
11067            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
11068            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
11069            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
11070            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
11071            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
11072            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
11073            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
11074            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
11075            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
11076            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
11077            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
11078            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
11079            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
11080            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
11081            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
11082            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
11083            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
11084            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
11085            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
11086            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
11087            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
11088            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
11089            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
11090            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
11091            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
11092            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
11093            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
11094            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
11095            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
11096            _ => None,
11097        }
11098    }
11099}
11100/// Counter definitions for Linux's /proc/vmstat.
11101#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11102#[repr(i32)]
11103pub enum VmstatCounters {
11104    VmstatUnspecified = 0,
11105    VmstatNrFreePages = 1,
11106    VmstatNrAllocBatch = 2,
11107    VmstatNrInactiveAnon = 3,
11108    VmstatNrActiveAnon = 4,
11109    VmstatNrInactiveFile = 5,
11110    VmstatNrActiveFile = 6,
11111    VmstatNrUnevictable = 7,
11112    VmstatNrMlock = 8,
11113    VmstatNrAnonPages = 9,
11114    VmstatNrMapped = 10,
11115    VmstatNrFilePages = 11,
11116    VmstatNrDirty = 12,
11117    VmstatNrWriteback = 13,
11118    VmstatNrSlabReclaimable = 14,
11119    VmstatNrSlabUnreclaimable = 15,
11120    VmstatNrPageTablePages = 16,
11121    VmstatNrKernelStack = 17,
11122    VmstatNrOverhead = 18,
11123    VmstatNrUnstable = 19,
11124    VmstatNrBounce = 20,
11125    VmstatNrVmscanWrite = 21,
11126    VmstatNrVmscanImmediateReclaim = 22,
11127    VmstatNrWritebackTemp = 23,
11128    VmstatNrIsolatedAnon = 24,
11129    VmstatNrIsolatedFile = 25,
11130    VmstatNrShmem = 26,
11131    VmstatNrDirtied = 27,
11132    VmstatNrWritten = 28,
11133    VmstatNrPagesScanned = 29,
11134    VmstatWorkingsetRefault = 30,
11135    VmstatWorkingsetActivate = 31,
11136    VmstatWorkingsetNodereclaim = 32,
11137    VmstatNrAnonTransparentHugepages = 33,
11138    VmstatNrFreeCma = 34,
11139    VmstatNrSwapcache = 35,
11140    VmstatNrDirtyThreshold = 36,
11141    VmstatNrDirtyBackgroundThreshold = 37,
11142    VmstatPgpgin = 38,
11143    VmstatPgpgout = 39,
11144    VmstatPgpgoutclean = 40,
11145    VmstatPswpin = 41,
11146    VmstatPswpout = 42,
11147    VmstatPgallocDma = 43,
11148    VmstatPgallocNormal = 44,
11149    VmstatPgallocMovable = 45,
11150    VmstatPgfree = 46,
11151    VmstatPgactivate = 47,
11152    VmstatPgdeactivate = 48,
11153    VmstatPgfault = 49,
11154    VmstatPgmajfault = 50,
11155    VmstatPgrefillDma = 51,
11156    VmstatPgrefillNormal = 52,
11157    VmstatPgrefillMovable = 53,
11158    VmstatPgstealKswapdDma = 54,
11159    VmstatPgstealKswapdNormal = 55,
11160    VmstatPgstealKswapdMovable = 56,
11161    VmstatPgstealDirectDma = 57,
11162    VmstatPgstealDirectNormal = 58,
11163    VmstatPgstealDirectMovable = 59,
11164    VmstatPgscanKswapdDma = 60,
11165    VmstatPgscanKswapdNormal = 61,
11166    VmstatPgscanKswapdMovable = 62,
11167    VmstatPgscanDirectDma = 63,
11168    VmstatPgscanDirectNormal = 64,
11169    VmstatPgscanDirectMovable = 65,
11170    VmstatPgscanDirectThrottle = 66,
11171    VmstatPginodesteal = 67,
11172    VmstatSlabsScanned = 68,
11173    VmstatKswapdInodesteal = 69,
11174    VmstatKswapdLowWmarkHitQuickly = 70,
11175    VmstatKswapdHighWmarkHitQuickly = 71,
11176    VmstatPageoutrun = 72,
11177    VmstatAllocstall = 73,
11178    VmstatPgrotated = 74,
11179    VmstatDropPagecache = 75,
11180    VmstatDropSlab = 76,
11181    VmstatPgmigrateSuccess = 77,
11182    VmstatPgmigrateFail = 78,
11183    VmstatCompactMigrateScanned = 79,
11184    VmstatCompactFreeScanned = 80,
11185    VmstatCompactIsolated = 81,
11186    VmstatCompactStall = 82,
11187    VmstatCompactFail = 83,
11188    VmstatCompactSuccess = 84,
11189    VmstatCompactDaemonWake = 85,
11190    VmstatUnevictablePgsCulled = 86,
11191    VmstatUnevictablePgsScanned = 87,
11192    VmstatUnevictablePgsRescued = 88,
11193    VmstatUnevictablePgsMlocked = 89,
11194    VmstatUnevictablePgsMunlocked = 90,
11195    VmstatUnevictablePgsCleared = 91,
11196    VmstatUnevictablePgsStranded = 92,
11197    VmstatNrZspages = 93,
11198    VmstatNrIonHeap = 94,
11199    VmstatNrGpuHeap = 95,
11200    VmstatAllocstallDma = 96,
11201    VmstatAllocstallMovable = 97,
11202    VmstatAllocstallNormal = 98,
11203    VmstatCompactDaemonFreeScanned = 99,
11204    VmstatCompactDaemonMigrateScanned = 100,
11205    VmstatNrFastrpc = 101,
11206    VmstatNrIndirectlyReclaimable = 102,
11207    VmstatNrIonHeapPool = 103,
11208    VmstatNrKernelMiscReclaimable = 104,
11209    VmstatNrShadowCallStackBytes = 105,
11210    VmstatNrShmemHugepages = 106,
11211    VmstatNrShmemPmdmapped = 107,
11212    VmstatNrUnreclaimablePages = 108,
11213    VmstatNrZoneActiveAnon = 109,
11214    VmstatNrZoneActiveFile = 110,
11215    VmstatNrZoneInactiveAnon = 111,
11216    VmstatNrZoneInactiveFile = 112,
11217    VmstatNrZoneUnevictable = 113,
11218    VmstatNrZoneWritePending = 114,
11219    VmstatOomKill = 115,
11220    VmstatPglazyfree = 116,
11221    VmstatPglazyfreed = 117,
11222    VmstatPgrefill = 118,
11223    VmstatPgscanDirect = 119,
11224    VmstatPgscanKswapd = 120,
11225    VmstatPgskipDma = 121,
11226    VmstatPgskipMovable = 122,
11227    VmstatPgskipNormal = 123,
11228    VmstatPgstealDirect = 124,
11229    VmstatPgstealKswapd = 125,
11230    VmstatSwapRa = 126,
11231    VmstatSwapRaHit = 127,
11232    VmstatWorkingsetRestore = 128,
11233    VmstatAllocstallDevice = 129,
11234    VmstatAllocstallDma32 = 130,
11235    VmstatBalloonDeflate = 131,
11236    VmstatBalloonInflate = 132,
11237    VmstatBalloonMigrate = 133,
11238    VmstatCmaAllocFail = 134,
11239    VmstatCmaAllocSuccess = 135,
11240    VmstatNrFileHugepages = 136,
11241    VmstatNrFilePmdmapped = 137,
11242    VmstatNrFollPinAcquired = 138,
11243    VmstatNrFollPinReleased = 139,
11244    VmstatNrSecPageTablePages = 140,
11245    VmstatNrShadowCallStack = 141,
11246    VmstatNrSwapcached = 142,
11247    VmstatNrThrottledWritten = 143,
11248    VmstatPgallocDevice = 144,
11249    VmstatPgallocDma32 = 145,
11250    VmstatPgdemoteDirect = 146,
11251    VmstatPgdemoteKswapd = 147,
11252    VmstatPgreuse = 148,
11253    VmstatPgscanAnon = 149,
11254    VmstatPgscanFile = 150,
11255    VmstatPgskipDevice = 151,
11256    VmstatPgskipDma32 = 152,
11257    VmstatPgstealAnon = 153,
11258    VmstatPgstealFile = 154,
11259    VmstatThpCollapseAlloc = 155,
11260    VmstatThpCollapseAllocFailed = 156,
11261    VmstatThpDeferredSplitPage = 157,
11262    VmstatThpFaultAlloc = 158,
11263    VmstatThpFaultFallback = 159,
11264    VmstatThpFaultFallbackCharge = 160,
11265    VmstatThpFileAlloc = 161,
11266    VmstatThpFileFallback = 162,
11267    VmstatThpFileFallbackCharge = 163,
11268    VmstatThpFileMapped = 164,
11269    VmstatThpMigrationFail = 165,
11270    VmstatThpMigrationSplit = 166,
11271    VmstatThpMigrationSuccess = 167,
11272    VmstatThpScanExceedNonePte = 168,
11273    VmstatThpScanExceedSharePte = 169,
11274    VmstatThpScanExceedSwapPte = 170,
11275    VmstatThpSplitPage = 171,
11276    VmstatThpSplitPageFailed = 172,
11277    VmstatThpSplitPmd = 173,
11278    VmstatThpSwpout = 174,
11279    VmstatThpSwpoutFallback = 175,
11280    VmstatThpZeroPageAlloc = 176,
11281    VmstatThpZeroPageAllocFailed = 177,
11282    VmstatVmaLockAbort = 178,
11283    VmstatVmaLockMiss = 179,
11284    VmstatVmaLockRetry = 180,
11285    VmstatVmaLockSuccess = 181,
11286    VmstatWorkingsetActivateAnon = 182,
11287    VmstatWorkingsetActivateFile = 183,
11288    VmstatWorkingsetNodes = 184,
11289    VmstatWorkingsetRefaultAnon = 185,
11290    VmstatWorkingsetRefaultFile = 186,
11291    VmstatWorkingsetRestoreAnon = 187,
11292    VmstatWorkingsetRestoreFile = 188,
11293}
11294impl VmstatCounters {
11295    /// String value of the enum field names used in the ProtoBuf definition.
11296    ///
11297    /// The values are not transformed in any way and thus are considered stable
11298    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11299    pub fn as_str_name(&self) -> &'static str {
11300        match self {
11301            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
11302            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
11303            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
11304            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
11305            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
11306            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
11307            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
11308            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
11309            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
11310            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
11311            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
11312            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
11313            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
11314            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
11315            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
11316            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
11317            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
11318            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
11319            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
11320            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
11321            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
11322            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
11323            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
11324            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
11325            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
11326            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
11327            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
11328            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
11329            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
11330            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
11331            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
11332            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
11333            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
11334            Self::VmstatNrAnonTransparentHugepages => {
11335                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
11336            }
11337            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
11338            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
11339            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
11340            Self::VmstatNrDirtyBackgroundThreshold => {
11341                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
11342            }
11343            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
11344            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
11345            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
11346            Self::VmstatPswpin => "VMSTAT_PSWPIN",
11347            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
11348            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
11349            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
11350            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
11351            Self::VmstatPgfree => "VMSTAT_PGFREE",
11352            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
11353            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
11354            Self::VmstatPgfault => "VMSTAT_PGFAULT",
11355            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
11356            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
11357            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
11358            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
11359            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
11360            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
11361            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
11362            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
11363            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
11364            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
11365            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
11366            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
11367            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
11368            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
11369            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
11370            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
11371            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
11372            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
11373            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
11374            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
11375            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
11376            Self::VmstatKswapdHighWmarkHitQuickly => {
11377                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
11378            }
11379            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
11380            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
11381            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
11382            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
11383            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
11384            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
11385            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
11386            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
11387            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
11388            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
11389            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
11390            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
11391            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
11392            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
11393            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
11394            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
11395            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
11396            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
11397            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
11398            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
11399            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
11400            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
11401            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
11402            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
11403            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
11404            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
11405            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
11406            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
11407            Self::VmstatCompactDaemonMigrateScanned => {
11408                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
11409            }
11410            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
11411            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
11412            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
11413            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
11414            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
11415            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
11416            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
11417            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
11418            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
11419            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
11420            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
11421            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
11422            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
11423            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
11424            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
11425            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
11426            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
11427            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
11428            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
11429            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
11430            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
11431            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
11432            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
11433            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
11434            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
11435            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
11436            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
11437            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
11438            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
11439            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
11440            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
11441            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
11442            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
11443            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
11444            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
11445            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
11446            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
11447            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
11448            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
11449            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
11450            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
11451            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
11452            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
11453            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
11454            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
11455            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
11456            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
11457            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
11458            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
11459            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
11460            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
11461            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
11462            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
11463            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
11464            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
11465            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
11466            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
11467            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
11468            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
11469            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
11470            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
11471            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
11472            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
11473            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
11474            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
11475            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
11476            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
11477            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
11478            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
11479            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
11480            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
11481            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
11482            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
11483            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
11484            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
11485            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
11486            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
11487            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
11488            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
11489            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
11490            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
11491            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
11492            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
11493            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
11494            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
11495            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
11496            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
11497            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
11498        }
11499    }
11500    /// Creates an enum from field names used in the ProtoBuf definition.
11501    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11502        match value {
11503            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
11504            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
11505            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
11506            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
11507            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
11508            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
11509            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
11510            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
11511            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
11512            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
11513            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
11514            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
11515            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
11516            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
11517            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
11518            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
11519            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
11520            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
11521            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
11522            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
11523            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
11524            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
11525            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
11526                Some(Self::VmstatNrVmscanImmediateReclaim)
11527            }
11528            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
11529            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
11530            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
11531            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
11532            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
11533            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
11534            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
11535            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
11536            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
11537            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
11538            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
11539                Some(Self::VmstatNrAnonTransparentHugepages)
11540            }
11541            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
11542            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
11543            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
11544            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
11545                Some(Self::VmstatNrDirtyBackgroundThreshold)
11546            }
11547            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
11548            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
11549            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
11550            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
11551            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
11552            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
11553            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
11554            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
11555            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
11556            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
11557            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
11558            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
11559            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
11560            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
11561            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
11562            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
11563            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
11564            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
11565            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
11566            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
11567            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
11568            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
11569            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
11570            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
11571            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
11572            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
11573            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
11574            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
11575            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
11576            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
11577            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
11578            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
11579            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
11580                Some(Self::VmstatKswapdLowWmarkHitQuickly)
11581            }
11582            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
11583                Some(Self::VmstatKswapdHighWmarkHitQuickly)
11584            }
11585            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
11586            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
11587            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
11588            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
11589            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
11590            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
11591            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
11592            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
11593            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
11594            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
11595            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
11596            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
11597            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
11598            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
11599            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
11600            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
11601            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
11602            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
11603            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
11604                Some(Self::VmstatUnevictablePgsMunlocked)
11605            }
11606            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
11607            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
11608            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
11609            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
11610            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
11611            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
11612            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
11613            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
11614            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
11615                Some(Self::VmstatCompactDaemonFreeScanned)
11616            }
11617            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
11618                Some(Self::VmstatCompactDaemonMigrateScanned)
11619            }
11620            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
11621            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
11622                Some(Self::VmstatNrIndirectlyReclaimable)
11623            }
11624            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
11625            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
11626                Some(Self::VmstatNrKernelMiscReclaimable)
11627            }
11628            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
11629                Some(Self::VmstatNrShadowCallStackBytes)
11630            }
11631            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
11632            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
11633            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
11634            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
11635            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
11636            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
11637            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
11638            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
11639            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
11640            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
11641            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
11642            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
11643            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
11644            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
11645            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
11646            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
11647            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
11648            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
11649            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
11650            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
11651            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
11652            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
11653            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
11654            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
11655            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
11656            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
11657            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
11658            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
11659            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
11660            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
11661            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
11662            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
11663            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
11664            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
11665            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
11666            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
11667            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
11668            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
11669            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
11670            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
11671            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
11672            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
11673            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
11674            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
11675            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
11676            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
11677            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
11678            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
11679            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
11680            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
11681            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
11682                Some(Self::VmstatThpCollapseAllocFailed)
11683            }
11684            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
11685            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
11686            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
11687            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
11688                Some(Self::VmstatThpFaultFallbackCharge)
11689            }
11690            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
11691            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
11692            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
11693            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
11694            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
11695            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
11696            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
11697            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
11698            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
11699            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
11700            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
11701            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
11702            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
11703            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
11704            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
11705            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
11706            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
11707                Some(Self::VmstatThpZeroPageAllocFailed)
11708            }
11709            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
11710            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
11711            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
11712            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
11713            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
11714            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
11715            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
11716            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
11717            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
11718            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
11719            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
11720            _ => None,
11721        }
11722    }
11723}
11724/// This file defines the configuration for the Linux /proc poller data source,
11725/// which injects counters in the trace.
11726/// Counters that are needed in the trace must be explicitly listed in the
11727/// *_counters fields. This is to avoid spamming the trace with all counters
11728/// at all times.
11729/// The sampling rate is configurable. All polling rates (*_period_ms) need
11730/// to be integer multiples of each other.
11731/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
11732/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
11733#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11734pub struct SysStatsConfig {
11735    /// Polls /proc/meminfo every X ms, if non-zero.
11736    /// This is required to be > 10ms to avoid excessive CPU usage.
11737    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
11738    #[prost(uint32, optional, tag = "1")]
11739    pub meminfo_period_ms: ::core::option::Option<u32>,
11740    /// If empty all known counters are reported. Otherwise, only the counters
11741    /// specified below are reported.
11742    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
11743    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
11744    /// Polls /proc/vmstat every X ms, if non-zero.
11745    /// This is required to be > 10ms to avoid excessive CPU usage.
11746    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
11747    #[prost(uint32, optional, tag = "3")]
11748    pub vmstat_period_ms: ::core::option::Option<u32>,
11749    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
11750    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
11751    /// Pols /proc/stat every X ms, if non-zero.
11752    /// This is required to be > 10ms to avoid excessive CPU usage.
11753    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
11754    #[prost(uint32, optional, tag = "5")]
11755    pub stat_period_ms: ::core::option::Option<u32>,
11756    #[prost(
11757        enumeration = "sys_stats_config::StatCounters",
11758        repeated,
11759        packed = "false",
11760        tag = "6"
11761    )]
11762    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
11763    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
11764    /// This is required to be > 10ms to avoid excessive CPU usage.
11765    /// This option can be used to record unchanging values.
11766    /// Updates from frequency changes can come from ftrace/set_clock_rate.
11767    #[prost(uint32, optional, tag = "7")]
11768    pub devfreq_period_ms: ::core::option::Option<u32>,
11769    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
11770    /// This is required to be > 10ms to avoid excessive CPU usage.
11771    #[prost(uint32, optional, tag = "8")]
11772    pub cpufreq_period_ms: ::core::option::Option<u32>,
11773    /// Polls /proc/buddyinfo every X ms, if non-zero.
11774    /// This is required to be > 10ms to avoid excessive CPU usage.
11775    #[prost(uint32, optional, tag = "9")]
11776    pub buddyinfo_period_ms: ::core::option::Option<u32>,
11777    /// Polls /proc/diskstats every X ms, if non-zero.
11778    /// This is required to be > 10ms to avoid excessive CPU usage.
11779    #[prost(uint32, optional, tag = "10")]
11780    pub diskstat_period_ms: ::core::option::Option<u32>,
11781    /// Polls /proc/pressure/* every X ms, if non-zero.
11782    /// This is required to be > 10ms to avoid excessive CPU usage.
11783    #[prost(uint32, optional, tag = "11")]
11784    pub psi_period_ms: ::core::option::Option<u32>,
11785    /// Polls /sys/class/thermal/* every X ms, if non-zero.
11786    /// This is required to be > 10ms to avoid excessive CPU usage.
11787    #[prost(uint32, optional, tag = "12")]
11788    pub thermal_period_ms: ::core::option::Option<u32>,
11789    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
11790    /// This is required to be > 10ms to avoid excessive CPU usage.
11791    #[prost(uint32, optional, tag = "13")]
11792    pub cpuidle_period_ms: ::core::option::Option<u32>,
11793    /// Polls device-specific GPU frequency info every X ms, if non-zero.
11794    /// This is required to be > 10ms to avoid excessive CPU usage.
11795    #[prost(uint32, optional, tag = "14")]
11796    pub gpufreq_period_ms: ::core::option::Option<u32>,
11797    /// Polls /proc/slabinfo every X ms, if non-zero.
11798    /// This is required to be > 10ms to avoid excessive CPU usage.
11799    #[prost(uint32, optional, tag = "15")]
11800    pub slab_period_ms: ::core::option::Option<u32>,
11801}
11802/// Nested message and enum types in `SysStatsConfig`.
11803pub mod sys_stats_config {
11804    #[derive(
11805        Clone,
11806        Copy,
11807        Debug,
11808        PartialEq,
11809        Eq,
11810        Hash,
11811        PartialOrd,
11812        Ord,
11813        ::prost::Enumeration
11814    )]
11815    #[repr(i32)]
11816    pub enum StatCounters {
11817        StatUnspecified = 0,
11818        StatCpuTimes = 1,
11819        StatIrqCounts = 2,
11820        StatSoftirqCounts = 3,
11821        StatForkCount = 4,
11822    }
11823    impl StatCounters {
11824        /// String value of the enum field names used in the ProtoBuf definition.
11825        ///
11826        /// The values are not transformed in any way and thus are considered stable
11827        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11828        pub fn as_str_name(&self) -> &'static str {
11829            match self {
11830                Self::StatUnspecified => "STAT_UNSPECIFIED",
11831                Self::StatCpuTimes => "STAT_CPU_TIMES",
11832                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
11833                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
11834                Self::StatForkCount => "STAT_FORK_COUNT",
11835            }
11836        }
11837        /// Creates an enum from field names used in the ProtoBuf definition.
11838        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11839            match value {
11840                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
11841                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
11842                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
11843                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
11844                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
11845                _ => None,
11846            }
11847        }
11848    }
11849}
11850/// The configuration for a fake producer used in tests.
11851#[derive(Clone, PartialEq, ::prost::Message)]
11852pub struct TestConfig {
11853    /// The number of messages the fake producer should send.
11854    #[prost(uint32, optional, tag = "1")]
11855    pub message_count: ::core::option::Option<u32>,
11856    /// The maximum number of messages which should be sent each second.
11857    /// The actual obserced speed may be lower if the producer is unable to
11858    /// work fast enough.
11859    /// If this is zero or unset, the producer will send as fast as possible.
11860    #[prost(uint32, optional, tag = "2")]
11861    pub max_messages_per_second: ::core::option::Option<u32>,
11862    /// The seed value for a simple multiplicative congruential pseudo-random
11863    /// number sequence.
11864    #[prost(uint32, optional, tag = "3")]
11865    pub seed: ::core::option::Option<u32>,
11866    /// The size of each message in bytes. Should be greater than or equal 5 to
11867    /// account for the number of bytes needed to encode the random number and a
11868    /// null byte for the string.
11869    #[prost(uint32, optional, tag = "4")]
11870    pub message_size: ::core::option::Option<u32>,
11871    /// Whether the producer should send a event batch when the data source is
11872    /// is initially registered.
11873    #[prost(bool, optional, tag = "5")]
11874    pub send_batch_on_register: ::core::option::Option<bool>,
11875    #[prost(message, optional, tag = "6")]
11876    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
11877}
11878/// Nested message and enum types in `TestConfig`.
11879pub mod test_config {
11880    #[derive(Clone, PartialEq, ::prost::Message)]
11881    pub struct DummyFields {
11882        #[prost(uint32, optional, tag = "1")]
11883        pub field_uint32: ::core::option::Option<u32>,
11884        #[prost(int32, optional, tag = "2")]
11885        pub field_int32: ::core::option::Option<i32>,
11886        #[prost(uint64, optional, tag = "3")]
11887        pub field_uint64: ::core::option::Option<u64>,
11888        #[prost(int64, optional, tag = "4")]
11889        pub field_int64: ::core::option::Option<i64>,
11890        #[prost(fixed64, optional, tag = "5")]
11891        pub field_fixed64: ::core::option::Option<u64>,
11892        #[prost(sfixed64, optional, tag = "6")]
11893        pub field_sfixed64: ::core::option::Option<i64>,
11894        #[prost(fixed32, optional, tag = "7")]
11895        pub field_fixed32: ::core::option::Option<u32>,
11896        #[prost(sfixed32, optional, tag = "8")]
11897        pub field_sfixed32: ::core::option::Option<i32>,
11898        #[prost(double, optional, tag = "9")]
11899        pub field_double: ::core::option::Option<f64>,
11900        #[prost(float, optional, tag = "10")]
11901        pub field_float: ::core::option::Option<f32>,
11902        #[prost(sint64, optional, tag = "11")]
11903        pub field_sint64: ::core::option::Option<i64>,
11904        #[prost(sint32, optional, tag = "12")]
11905        pub field_sint32: ::core::option::Option<i32>,
11906        #[prost(string, optional, tag = "13")]
11907        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
11908        #[prost(bytes = "vec", optional, tag = "14")]
11909        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11910    }
11911}
11912/// The following fields define the set of enabled trace categories. Each list
11913/// item is a glob.
11914///
11915/// To determine if category is enabled, it is checked against the filters in
11916/// the following order:
11917///
11918///    1. Exact matches in enabled categories.
11919///    2. Exact matches in enabled tags.
11920///    3. Exact matches in disabled categories.
11921///    4. Exact matches in disabled tags.
11922///    5. Pattern matches in enabled categories.
11923///    6. Pattern matches in enabled tags.
11924///    7. Pattern matches in disabled categories.
11925///    8. Pattern matches in disabled tags.
11926///
11927/// If none of the steps produced a match:
11928///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
11929///   default.
11930///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
11931///
11932/// Examples:
11933///
11934///   - To enable all non-slow/debug categories:
11935///
11936///        enabled_categories: "*"
11937///
11938///   - To enable specific categories:
11939///
11940///        disabled_categories: "*"
11941///        enabled_categories: "my_category"
11942///        enabled_categories: "my_category2"
11943///
11944///   - To enable only categories with a specific tag:
11945///
11946///        disabled_tags: "*"
11947///        enabled_tags: "my_tag"
11948///
11949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11950pub struct TrackEventConfig {
11951    /// Default: \[\]
11952    #[prost(string, repeated, tag = "1")]
11953    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11954    /// Default: \[\]
11955    #[prost(string, repeated, tag = "2")]
11956    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11957    /// Default: \["slow", "debug"\]
11958    #[prost(string, repeated, tag = "3")]
11959    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11960    /// Default: \[\]
11961    #[prost(string, repeated, tag = "4")]
11962    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11963    /// Default: false (i.e. enabled by default)
11964    #[prost(bool, optional, tag = "5")]
11965    pub disable_incremental_timestamps: ::core::option::Option<bool>,
11966    /// Allows to specify a custom unit different than the default (ns).
11967    /// Also affects thread timestamps if enable_thread_time_sampling = true.
11968    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
11969    /// 3000 ns = 3 us.
11970    /// Default: 1 (if unset, it should be read as 1).
11971    #[prost(uint64, optional, tag = "6")]
11972    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
11973    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
11974    /// When true, any debug annotations provided as arguments to the
11975    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
11976    /// still be emitted even if set to true.
11977    #[prost(bool, optional, tag = "7")]
11978    pub filter_debug_annotations: ::core::option::Option<bool>,
11979    /// Default: false (i.e. disabled)
11980    /// When true, the SDK samples and emits the current thread time counter value
11981    /// for each event on the current thread's track. This value represents the
11982    /// total CPU time consumed by that thread since its creation.
11983    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
11984    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
11985    #[prost(bool, optional, tag = "8")]
11986    pub enable_thread_time_sampling: ::core::option::Option<bool>,
11987    /// When enable_thread_time_sampling is true, and this is specified, thread
11988    /// time is sampled only if the elapsed wall time >
11989    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
11990    /// Effectively, this means thread time will have a leeway of
11991    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
11992    #[prost(uint64, optional, tag = "10")]
11993    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
11994    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
11995    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
11996    /// out.
11997    #[prost(bool, optional, tag = "9")]
11998    pub filter_dynamic_event_names: ::core::option::Option<bool>,
11999}
12000/// This data-source does a one-off recording of system information when
12001/// the trace starts.
12002/// Currently this includes:
12003/// - Values of
12004/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
12005/// datasource has no configuration options at present.
12006#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12007pub struct SystemInfoConfig {
12008    /// If true, records hardware interrupt ID-to-name mappings from
12009    /// /proc/interrupts.
12010    #[prost(bool, optional, tag = "1")]
12011    pub irq_names: ::core::option::Option<bool>,
12012}
12013#[derive(Clone, PartialEq, ::prost::Message)]
12014pub struct ChromiumHistogramSamplesConfig {
12015    /// List of histograms to record. If no histogram is specified, all histograms
12016    /// are recorded.
12017    #[prost(message, repeated, tag = "1")]
12018    pub histograms: ::prost::alloc::vec::Vec<
12019        chromium_histogram_samples_config::HistogramSample,
12020    >,
12021    /// Default: false (i.e. histogram names are NOT filtered out by default)
12022    /// When true, histogram_name will be filtered out.
12023    #[prost(bool, optional, tag = "2")]
12024    pub filter_histogram_names: ::core::option::Option<bool>,
12025}
12026/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
12027pub mod chromium_histogram_samples_config {
12028    /// Records when a value within the specified bounds \[min_value, max_value\] is
12029    /// emitted into a Chrome histogram.
12030    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12031    pub struct HistogramSample {
12032        #[prost(string, optional, tag = "1")]
12033        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
12034        #[prost(int64, optional, tag = "2")]
12035        pub min_value: ::core::option::Option<i64>,
12036        #[prost(int64, optional, tag = "3")]
12037        pub max_value: ::core::option::Option<i64>,
12038    }
12039}
12040#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12041pub struct ChromiumSamplingHeapProfilerConfig {
12042    /// Sampling interval in bytes.
12043    #[prost(uint64, optional, tag = "1")]
12044    pub sampling_interval_bytes: ::core::option::Option<u64>,
12045    /// Sampling interval in milliseconds.
12046    #[prost(uint32, optional, tag = "2")]
12047    pub sampling_interval_ms: ::core::option::Option<u32>,
12048}
12049#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12050pub struct ChromiumStackSamplingProfilerConfig {
12051    /// Sampling interval in milliseconds.
12052    #[prost(uint32, optional, tag = "1")]
12053    pub sampling_interval_ms: ::core::option::Option<u32>,
12054}
12055/// Configuration for the "linux.systemd_journald" data source.
12056/// Next field id: 4
12057#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12058pub struct SystemdJournaldConfig {
12059    /// Minimum syslog priority level to capture (inclusive).
12060    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
12061    /// Default (0 / unset): capture all priorities (equivalent to 7).
12062    #[prost(uint32, optional, tag = "1")]
12063    pub min_prio: ::core::option::Option<u32>,
12064    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
12065    /// matches one of these strings.
12066    #[prost(string, repeated, tag = "2")]
12067    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12068    /// If non-empty, only capture journal entries from these systemd unit names.
12069    #[prost(string, repeated, tag = "3")]
12070    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12071}
12072/// QnxConfig is used with trace_qnx_probes build from
12073/// <https://github.com/qnx-ports/perfetto>
12074#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12075pub struct QnxConfig {
12076    /// The number of buffers that tracelog will init for the QNX trace.
12077    #[prost(uint32, optional, tag = "1")]
12078    pub qnx_kernel_buffers: ::core::option::Option<u32>,
12079    /// The number of kernel buffers that tracelog will init for the QNX trace.
12080    #[prost(uint32, optional, tag = "2")]
12081    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
12082    /// Flag indicating whether the QNX kernel tracing should produce wide
12083    /// events which contain additional data or fast events which are most
12084    /// concise. In fast mode we lose the priority information
12085    #[prost(bool, optional, tag = "3")]
12086    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
12087    /// The number of pages initialized by default the parser's page cache.
12088    #[prost(uint32, optional, tag = "4")]
12089    pub qnx_cache_pages: ::core::option::Option<u32>,
12090    /// The max pages the page cache should allocate (must be at least as big)
12091    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
12092    /// unbounded. The cache will prefer to re-use existing pages so growth will
12093    /// only happen when needed (when parser is not keeping up).
12094    #[prost(int32, optional, tag = "5")]
12095    pub qnx_cache_max_pages: ::core::option::Option<i32>,
12096    /// The initial size of the the buffer used to hold the trace header values
12097    /// this dynamic buffer will grow as needed but reallocs can be avoided by
12098    /// selecting an initial size large enough to hold all the initial header
12099    /// data.
12100    #[prost(uint32, optional, tag = "6")]
12101    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
12102}
12103/// The configuration that is passed to each data source when starting tracing.
12104/// Next id: 147
12105#[derive(Clone, PartialEq, ::prost::Message)]
12106pub struct DataSourceConfig {
12107    /// Data source unique name, e.g., "linux.ftrace". This must match
12108    /// the name passed by the data source when it registers (see
12109    /// RegisterDataSource()).
12110    #[prost(string, optional, tag = "1")]
12111    pub name: ::core::option::Option<::prost::alloc::string::String>,
12112    /// The index of the logging buffer where TracePacket(s) will be stored.
12113    /// This field is quite subtle as it has a double semantic:
12114    /// 1) When the config is passed, this field is a 0-based index relative to the
12115    ///     buffer array in the TraceConfig and defines the mapping between data
12116    ///     sources and config. From v54 this is optional because the user can
12117    ///     instead use target_buffer_name.
12118    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
12119    ///     producer, it overwrites this field with the global buffer index (which
12120    ///     depends on other tracing sessions active). This tells the producer which
12121    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
12122    ///     service always sets the resolved global id, even when using
12123    ///     `target_buffer_name`.
12124    /// In hindsight we should have used two different fields given even in v0 they
12125    /// had a different semantic. But now it's too late as this would be a major
12126    /// protocol breaking change.
12127    #[prost(uint32, optional, tag = "2")]
12128    pub target_buffer: ::core::option::Option<u32>,
12129    /// Alternative to |target_buffer|. References a buffer by name (as specified
12130    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
12131    /// readable and less error-prone than using buffer indices.
12132    /// If both |target_buffer| and |target_buffer_name| are specified, they must
12133    /// refer to the same buffer, otherwise the service will reject the config.
12134    /// Using both fields allows configs to work with both old and new versions
12135    /// of the tracing service. Introduced in v54.
12136    #[prost(string, optional, tag = "11")]
12137    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
12138    /// Set by the service to indicate the duration of the trace.
12139    /// DO NOT SET in consumer as this will be overridden by the service.
12140    #[prost(uint32, optional, tag = "3")]
12141    pub trace_duration_ms: ::core::option::Option<u32>,
12142    /// If true, |trace_duration_ms| should count also time in suspend. This
12143    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
12144    #[prost(bool, optional, tag = "122")]
12145    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12146    /// Set by the service to indicate how long it waits after StopDataSource.
12147    /// DO NOT SET in consumer as this will be overridden by the service.
12148    #[prost(uint32, optional, tag = "7")]
12149    pub stop_timeout_ms: ::core::option::Option<u32>,
12150    /// Set by the service to indicate whether this tracing session has extra
12151    /// guardrails.
12152    /// DO NOT SET in consumer as this will be overridden by the service.
12153    #[prost(bool, optional, tag = "6")]
12154    pub enable_extra_guardrails: ::core::option::Option<bool>,
12155    /// Set by the service to indicate which user initiated this trace.
12156    /// DO NOT SET in consumer as this will be overridden by the service.
12157    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
12158    pub session_initiator: ::core::option::Option<i32>,
12159    /// Set by the service to indicate which tracing session the data source
12160    /// belongs to. The intended use case for this is checking if two data sources,
12161    /// one of which produces metadata for the other one, belong to the same trace
12162    /// session and hence should be linked together.
12163    /// This field was introduced in Aug 2018 after Android P.
12164    /// DO NOT SET in consumer as this will be overridden by the service.
12165    #[prost(uint64, optional, tag = "4")]
12166    pub tracing_session_id: ::core::option::Option<u64>,
12167    /// How to behave when the producer runs out of space in the shared memory
12168    /// buffer. This is only honored by some data sources (in the SDK, the data
12169    /// sources registered with a configurable buffer exhausted policy).
12170    #[prost(
12171        enumeration = "data_source_config::BufferExhaustedPolicy",
12172        optional,
12173        tag = "9"
12174    )]
12175    pub buffer_exhausted_policy: ::core::option::Option<i32>,
12176    #[prost(message, optional, tag = "10")]
12177    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12178    /// TODO(primiano): today when we enable a protovm_config, we actually accept
12179    /// that if N producers advertise M different versions of the same program we
12180    /// will create M instances of that program.
12181    /// To overcome this, we could move the program to the TraceConfig. But doing
12182    /// so would bloat the trace config size too big and create problems to statsd.
12183    /// Once the config store (b/482305876) exists we should move protovm programs
12184    /// onto that.
12185    #[prost(message, optional, tag = "12")]
12186    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
12187    /// Data source name: linux.ftrace
12188    #[prost(message, optional, tag = "100")]
12189    pub ftrace_config: ::core::option::Option<FtraceConfig>,
12190    /// Data source name: linux.inode_file_map
12191    #[prost(message, optional, tag = "102")]
12192    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
12193    /// Data source name: linux.process_stats
12194    #[prost(message, optional, tag = "103")]
12195    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
12196    /// Data source name: linux.sys_stats
12197    #[prost(message, optional, tag = "104")]
12198    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
12199    /// Data source name: android.heapprofd
12200    /// Introduced in Android 10.
12201    #[prost(message, optional, tag = "105")]
12202    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
12203    /// Data source name: android.java_hprof
12204    /// Introduced in Android 11.
12205    #[prost(message, optional, tag = "110")]
12206    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
12207    /// Data source name: android.power
12208    #[prost(message, optional, tag = "106")]
12209    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
12210    /// Data source name: android.log
12211    #[prost(message, optional, tag = "107")]
12212    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
12213    /// Data source name: gpu.counters
12214    #[prost(message, optional, tag = "108")]
12215    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
12216    /// Data source name: android.game_interventions
12217    #[prost(message, optional, tag = "116")]
12218    pub android_game_intervention_list_config: ::core::option::Option<
12219        AndroidGameInterventionListConfig,
12220    >,
12221    /// Data source name: android.packages_list
12222    #[prost(message, optional, tag = "109")]
12223    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
12224    /// Data source name: linux.perf
12225    #[prost(message, optional, tag = "111")]
12226    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
12227    /// Data source name: vulkan.memory_tracker
12228    #[prost(message, optional, tag = "112")]
12229    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
12230    /// Data source name: track_event
12231    #[prost(message, optional, tag = "113")]
12232    pub track_event_config: ::core::option::Option<TrackEventConfig>,
12233    /// Data source name: android.polled_state
12234    #[prost(message, optional, tag = "114")]
12235    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
12236    /// Data source name: android.system_property
12237    #[prost(message, optional, tag = "118")]
12238    pub android_system_property_config: ::core::option::Option<
12239        AndroidSystemPropertyConfig,
12240    >,
12241    /// Data source name: android.statsd
12242    #[prost(message, optional, tag = "117")]
12243    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
12244    /// Data source name: linux.system_info
12245    #[prost(message, optional, tag = "119")]
12246    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
12247    /// Data source name: linux.frozen_ftrace
12248    #[prost(message, optional, tag = "136")]
12249    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
12250    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
12251    /// avoid proto serialization and de-serialization there because that would
12252    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
12253    /// C++ class for it so it can pass around plain C++ objets.
12254    #[prost(message, optional, tag = "101")]
12255    pub chrome_config: ::core::option::Option<ChromeConfig>,
12256    /// Data source name: code.v8.dev
12257    #[prost(message, optional, tag = "127")]
12258    pub v8_config: ::core::option::Option<V8Config>,
12259    /// If an interceptor is specified here, packets for this data source will be
12260    /// rerouted to the interceptor instead of the main trace buffer. This can be
12261    /// used, for example, to write trace data into ETW or for logging trace points
12262    /// to the console.
12263    ///
12264    /// Note that interceptors are only supported by data sources registered
12265    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
12266    /// traced_probes) may not support interception.
12267    #[prost(message, optional, tag = "115")]
12268    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
12269    /// Data source name: android.network_packets.
12270    /// Introduced in Android 14 (U).
12271    #[prost(message, optional, tag = "120")]
12272    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
12273    /// Data source name: android.surfaceflinger.layers
12274    #[prost(message, optional, tag = "121")]
12275    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
12276    /// Data source name: android.surfaceflinger.transactions
12277    #[prost(message, optional, tag = "123")]
12278    pub surfaceflinger_transactions_config: ::core::option::Option<
12279        SurfaceFlingerTransactionsConfig,
12280    >,
12281    /// Data source name: android.sdk_sysprop_guard
12282    /// Introduced in Android 14 (U) QPR1.
12283    #[prost(message, optional, tag = "124")]
12284    pub android_sdk_sysprop_guard_config: ::core::option::Option<
12285        AndroidSdkSyspropGuardConfig,
12286    >,
12287    /// Data source name: windows.etw
12288    #[prost(message, optional, tag = "125")]
12289    pub etw_config: ::core::option::Option<EtwConfig>,
12290    /// Data source name: android.protolog
12291    #[prost(message, optional, tag = "126")]
12292    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
12293    /// Data source name: android.input.inputevent
12294    #[prost(message, optional, tag = "128")]
12295    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
12296    /// Data source name: android.pixel.modem
12297    #[prost(message, optional, tag = "129")]
12298    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
12299    /// Data source name: android.windowmanager
12300    #[prost(message, optional, tag = "130")]
12301    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
12302    /// Data source name: org.chromium.system_metrics
12303    #[prost(message, optional, tag = "131")]
12304    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
12305    /// Data source name: android.kernel_wakelocks
12306    #[prost(message, optional, tag = "132")]
12307    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
12308    /// Data source name: gpu.renderstages
12309    #[prost(message, optional, tag = "133")]
12310    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
12311    /// Data source name: org.chromium.histogram_samples
12312    #[prost(message, optional, tag = "134")]
12313    pub chromium_histogram_samples: ::core::option::Option<
12314        ChromiumHistogramSamplesConfig,
12315    >,
12316    /// Data source name: android.app_wakelocks
12317    #[prost(message, optional, tag = "135")]
12318    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
12319    /// Data source name: android.cpu_per_uid
12320    #[prost(message, optional, tag = "137")]
12321    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
12322    /// Data source name: android.user_list
12323    #[prost(message, optional, tag = "138")]
12324    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
12325    /// Data source name: android.inputmethod
12326    #[prost(message, optional, tag = "139")]
12327    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
12328    /// Data source name: android.aflags
12329    #[prost(message, optional, tag = "140")]
12330    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
12331    /// Data source name: linux.systemd_journald
12332    #[prost(message, optional, tag = "141")]
12333    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
12334    /// Data source name: android.display.video
12335    #[prost(message, optional, tag = "142")]
12336    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
12337    /// Data source name: org.chromium.sampler_profiler
12338    #[prost(message, optional, tag = "143")]
12339    pub chromium_stack_sampling_profiler: ::core::option::Option<
12340        ChromiumStackSamplingProfilerConfig,
12341    >,
12342    /// Data source name: org.chromium.native_heap_profiler
12343    #[prost(message, optional, tag = "144")]
12344    pub chromium_sampling_heap_profiler: ::core::option::Option<
12345        ChromiumSamplingHeapProfilerConfig,
12346    >,
12347    /// Data source name: android.process_state
12348    #[prost(message, optional, tag = "145")]
12349    pub android_process_state_config: ::core::option::Option<AndroidProcessStateConfig>,
12350    /// Data source name: linux.smaps
12351    #[prost(message, optional, tag = "146")]
12352    pub process_smaps_config: ::core::option::Option<ProcessSmapsConfig>,
12353    /// Data source name: qnx.kernel
12354    #[prost(message, optional, tag = "150")]
12355    pub qnx_config: ::core::option::Option<QnxConfig>,
12356    /// This is a fallback mechanism to send a free-form text config to the
12357    /// producer. In theory this should never be needed. All the code that
12358    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
12359    /// the trace config proto and propagate unknown fields. However, if anything
12360    /// in the pipeline (client or backend) ends up breaking this forward compat
12361    /// plan, this field will become the escape hatch to allow future data sources
12362    /// to get some meaningful configuration.
12363    #[prost(string, optional, tag = "1000")]
12364    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
12365    /// This field is only used for testing.
12366    #[prost(message, optional, tag = "1001")]
12367    pub for_testing: ::core::option::Option<TestConfig>,
12368}
12369/// Nested message and enum types in `DataSourceConfig`.
12370pub mod data_source_config {
12371    #[derive(
12372        Clone,
12373        Copy,
12374        Debug,
12375        PartialEq,
12376        Eq,
12377        Hash,
12378        PartialOrd,
12379        Ord,
12380        ::prost::Enumeration
12381    )]
12382    #[repr(i32)]
12383    pub enum SessionInitiator {
12384        Unspecified = 0,
12385        /// This trace was initiated from a trusted system app has DUMP and
12386        /// USAGE_STATS permission. This system app is expected to not expose the
12387        /// trace to the user of the device.
12388        /// This is determined by checking the UID initiating the trace.
12389        TrustedSystem = 1,
12390    }
12391    impl SessionInitiator {
12392        /// String value of the enum field names used in the ProtoBuf definition.
12393        ///
12394        /// The values are not transformed in any way and thus are considered stable
12395        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12396        pub fn as_str_name(&self) -> &'static str {
12397            match self {
12398                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
12399                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
12400            }
12401        }
12402        /// Creates an enum from field names used in the ProtoBuf definition.
12403        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12404            match value {
12405                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
12406                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
12407                _ => None,
12408            }
12409        }
12410    }
12411    #[derive(
12412        Clone,
12413        Copy,
12414        Debug,
12415        PartialEq,
12416        Eq,
12417        Hash,
12418        PartialOrd,
12419        Ord,
12420        ::prost::Enumeration
12421    )]
12422    #[repr(i32)]
12423    pub enum BufferExhaustedPolicy {
12424        /// The data source will use its default buffer exhausted policy, specified
12425        /// by the code when the data source is registered.
12426        BufferExhaustedUnspecified = 0,
12427        /// The data source will drop packets when there's no space in the shared
12428        /// memory buffer.
12429        BufferExhaustedDrop = 1,
12430        /// The data source will wait when there's no space in the shared memory
12431        /// buffer. If there's still not space, after a few seconds, the whole
12432        /// producer process will be aborted.
12433        BufferExhaustedStallThenAbort = 2,
12434        /// The data source will wait when there's no space in the shared memory
12435        /// buffer.  If there's still not space, after a few seconds, the data source
12436        /// will drop packets.
12437        BufferExhaustedStallThenDrop = 3,
12438    }
12439    impl BufferExhaustedPolicy {
12440        /// String value of the enum field names used in the ProtoBuf definition.
12441        ///
12442        /// The values are not transformed in any way and thus are considered stable
12443        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12444        pub fn as_str_name(&self) -> &'static str {
12445            match self {
12446                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
12447                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
12448                Self::BufferExhaustedStallThenAbort => {
12449                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
12450                }
12451                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
12452            }
12453        }
12454        /// Creates an enum from field names used in the ProtoBuf definition.
12455        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12456            match value {
12457                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
12458                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
12459                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
12460                    Some(Self::BufferExhaustedStallThenAbort)
12461                }
12462                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
12463                    Some(Self::BufferExhaustedStallThenDrop)
12464                }
12465                _ => None,
12466            }
12467        }
12468    }
12469}
12470/// The overall config that is used when starting a new tracing session through
12471/// ProducerPort::StartTracing().
12472/// It contains the general config for the logging buffer(s) and the configs for
12473/// all the data source being enabled.
12474///
12475/// Next id: 50.
12476#[derive(Clone, PartialEq, ::prost::Message)]
12477pub struct TraceConfig {
12478    #[prost(message, repeated, tag = "1")]
12479    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
12480    #[prost(message, repeated, tag = "2")]
12481    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
12482    #[prost(message, optional, tag = "20")]
12483    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
12484    /// If specified, the trace will be stopped |duration_ms| after starting.
12485    /// This does *not* count the time the system is suspended, so we will run
12486    /// for duration_ms of system activity, not wall time.
12487    ///
12488    /// However in case of traces with triggers, see
12489    /// TriggerConfig.trigger_timeout_ms instead.
12490    #[prost(uint32, optional, tag = "3")]
12491    pub duration_ms: ::core::option::Option<u32>,
12492    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
12493    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
12494    /// Linux/Android, no-op on other platforms. This is used when dealing with
12495    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
12496    /// wall-time, making them more likely to hit device reboots (and hence loss).
12497    /// This option also changes consistently the semantic of
12498    /// TriggerConfig.stop_delay_ms.
12499    #[prost(bool, optional, tag = "36")]
12500    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12501    /// This is set when --dropbox is passed to the Perfetto command line client
12502    /// and enables guardrails that limit resource usage for traces requested
12503    /// by statsd.
12504    #[prost(bool, optional, tag = "4")]
12505    pub enable_extra_guardrails: ::core::option::Option<bool>,
12506    /// Reject producers that are not running under the same UID as the tracing
12507    /// service.
12508    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
12509    pub lockdown_mode: ::core::option::Option<i32>,
12510    #[prost(message, repeated, tag = "6")]
12511    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
12512    /// Statsd-specific metadata.
12513    #[prost(message, optional, tag = "7")]
12514    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
12515    /// When true && |output_path| is empty, the EnableTracing() request must
12516    /// provide a file descriptor. The service will then periodically read packets
12517    /// out of the trace buffer and store it into the passed file.
12518    /// If |output_path| is not empty no fd should be passed, the service
12519    /// will create a new file and write into that (see comment below).
12520    #[prost(bool, optional, tag = "8")]
12521    pub write_into_file: ::core::option::Option<bool>,
12522    /// This must point to a non-existing file. If the file exists the service
12523    /// will NOT overwrite and will fail instead as a security precaution.
12524    /// On Android, when this is used with the system traced, the path must be
12525    /// within /data/misc/perfetto-traces/ or the trace will fail.
12526    /// This option has been introduced in Android R. Before R write_into_file
12527    /// can be used only with the "pass a file descriptor over IPC" mode.
12528    #[prost(string, optional, tag = "29")]
12529    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
12530    /// Optional. If non-zero tunes the write period. A min value of 100ms is
12531    /// enforced (i.e. smaller values are ignored).
12532    #[prost(uint32, optional, tag = "9")]
12533    pub file_write_period_ms: ::core::option::Option<u32>,
12534    /// Optional. When non zero the periodic write stops once at most X bytes
12535    /// have been written into the file. Tracing is disabled when this limit is
12536    /// reached, even if |duration_ms| has not been reached yet.
12537    #[prost(uint64, optional, tag = "10")]
12538    pub max_file_size_bytes: ::core::option::Option<u64>,
12539    #[prost(message, optional, tag = "11")]
12540    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
12541    /// When true, data sources are not started until an explicit call to
12542    /// StartTracing() on the consumer port. This is to support early
12543    /// initialization and fast trace triggering. This can be used only when the
12544    /// Consumer explicitly triggers the StartTracing() method.
12545    /// This should not be used in a remote trace config via statsd, doing so will
12546    /// result in a hung trace session.
12547    #[prost(bool, optional, tag = "12")]
12548    pub deferred_start: ::core::option::Option<bool>,
12549    /// When set, it periodically issues a Flush() to all data source, forcing them
12550    /// to commit their data into the tracing service. This can be used for
12551    /// quasi-real-time streaming mode and to guarantee some partial ordering of
12552    /// events in the trace in windows of X ms.
12553    ///
12554    /// Warning: Perfetto automatically handles periodic flushing so in most
12555    /// scenarios setting this field is not needed. High frequency flushing can
12556    /// significantly impact performance.
12557    #[prost(uint32, optional, tag = "13")]
12558    pub flush_period_ms: ::core::option::Option<u32>,
12559    /// Wait for this long for producers to acknowledge flush requests.
12560    /// Default 5s.
12561    #[prost(uint32, optional, tag = "14")]
12562    pub flush_timeout_ms: ::core::option::Option<u32>,
12563    /// Wait for this long for producers to acknowledge stop requests.
12564    /// Default 5s.
12565    #[prost(uint32, optional, tag = "23")]
12566    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
12567    /// Android-only. If set, sends an intent to the Traceur system app when the
12568    /// trace ends to notify it about the trace readiness.
12569    #[prost(bool, optional, tag = "16")]
12570    pub notify_traceur: ::core::option::Option<bool>,
12571    /// This field was introduced in Android S.
12572    /// Android-only. If set to a value > 0, marks the trace session as a candidate
12573    /// for being attached to a bugreport. This field effectively acts as a z-index
12574    /// for bugreports. When Android's dumpstate runs perfetto
12575    /// --save-for-bugreport, traced will pick the tracing session with the highest
12576    /// score (score <= 0 is ignored) and:
12577    /// On Android S, T:  will steal its contents, save the trace into
12578    ///      a known path and stop prematurely.
12579    /// On Android U+: will create a read-only snapshot and save that into a known
12580    ///      path, without stoppin the original tracing session.
12581    /// When this field is set the tracing session becomes eligible to be cloned
12582    /// by other UIDs.
12583    #[prost(int32, optional, tag = "30")]
12584    pub bugreport_score: ::core::option::Option<i32>,
12585    /// When set, defines name of the file that will be saved under
12586    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
12587    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
12588    /// starting from the highest `bugreport_score`.
12589    /// Introduced in v42 / Android V.
12590    #[prost(string, optional, tag = "38")]
12591    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
12592    #[prost(message, optional, tag = "17")]
12593    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
12594    /// When this is non-empty the perfetto command line tool will ignore the rest
12595    /// of this TraceConfig and instead connect to the perfetto service as a
12596    /// producer and send these triggers, potentially stopping or starting traces
12597    /// that were previous configured to use a TriggerConfig.
12598    #[prost(string, repeated, tag = "18")]
12599    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12600    #[prost(message, optional, tag = "21")]
12601    pub incremental_state_config: ::core::option::Option<
12602        trace_config::IncrementalStateConfig,
12603    >,
12604    /// No longer needed as we unconditionally allow tracing on user builds.
12605    #[deprecated]
12606    #[prost(bool, optional, tag = "19")]
12607    pub allow_user_build_tracing: ::core::option::Option<bool>,
12608    /// If set the tracing service will ensure there is at most one tracing session
12609    /// with this key.
12610    #[prost(string, optional, tag = "22")]
12611    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
12612    #[deprecated]
12613    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
12614    pub compression_type: ::core::option::Option<i32>,
12615    #[prost(message, optional, tag = "47")]
12616    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
12617    #[prost(message, optional, tag = "25")]
12618    pub incident_report_config: ::core::option::Option<
12619        trace_config::IncidentReportConfig,
12620    >,
12621    /// Android-only. Not for general use. If specified, sets the logging to statsd
12622    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
12623    /// this to enabled (if not explicitly set in the config) when specifying
12624    /// --upload.
12625    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
12626    pub statsd_logging: ::core::option::Option<i32>,
12627    /// An identifier clients can use to tie this trace to other logging.
12628    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
12629    /// Trace UUID. If this field is set, the tracing service will respect the
12630    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
12631    /// gap-less snapshotting is not used.
12632    #[deprecated]
12633    #[prost(int64, optional, tag = "27")]
12634    pub trace_uuid_msb: ::core::option::Option<i64>,
12635    #[deprecated]
12636    #[prost(int64, optional, tag = "28")]
12637    pub trace_uuid_lsb: ::core::option::Option<i64>,
12638    #[prost(message, optional, tag = "33")]
12639    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
12640    #[prost(message, optional, tag = "34")]
12641    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
12642    #[prost(message, optional, tag = "35")]
12643    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
12644    #[prost(message, repeated, tag = "39")]
12645    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
12646    /// Priority boost to be applied to the traced process, when the session is
12647    /// running.
12648    #[prost(message, optional, tag = "40")]
12649    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12650    /// When set to a value > 0, this tracing session will be started in
12651    /// "exclusive mode". This has the following semantics:
12652    /// - It can only be set by shell or root users.
12653    /// - A new exclusive session will only be started if its priority is strictly
12654    ///    higher than any other active tracing session.
12655    /// - If a new exclusive session is started, all other existing tracing
12656    ///    sessions (exclusive or not) are aborted.
12657    /// - While an exclusive session is active, any new non-exclusive session (or
12658    ///    any exclusive session with a lower or equal priority) will be rejected.
12659    ///
12660    /// Introduced in: perfetto v52.
12661    /// Supported on: Android 25Q3+.
12662    #[prost(uint32, optional, tag = "41")]
12663    pub exclusive_prio: ::core::option::Option<u32>,
12664    /// Configures how the service should handle flushing data from producers
12665    /// before periodically writing the trace into the output file.
12666    /// Only applicable when |write_into_file| is true.
12667    ///
12668    /// By default, if |write_into_file| is set, the service periodically issues
12669    /// a Flush() to all data sources before writing buffers into the file.
12670    /// This ensures the file always contains the latest available data.
12671    ///
12672    /// Introduced in: perfetto v54.
12673    /// Supported on: Android 26Q1+.
12674    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
12675    pub write_flush_mode: ::core::option::Option<i32>,
12676    /// Whether to sync the output file to storage after each periodic write pass.
12677    /// Only applicable when |write_into_file| is true.
12678    ///
12679    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
12680    /// sync to storage on every write.
12681    ///
12682    /// Introduced in: perfetto v54.
12683    /// Supported on: Android 26Q1+.
12684    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
12685    pub fflush_post_write: ::core::option::Option<i32>,
12686    /// When true, data sources in remote producers (machines connected via
12687    /// traced_relay) will be matched by default. When false (the default), data
12688    /// sources only match the host machine. In either case, an explicit
12689    /// |DataSource.machine_name_filter| takes priority.
12690    ///
12691    /// NB: perfetto versions before v54 do not have this option and match across
12692    /// machines by default. To be compatible across this version boundary, either
12693    /// set this field to true, or set an explicit machine_name_filter on all data
12694    /// sources.
12695    ///
12696    /// Introduced in: perfetto v54.
12697    #[prost(bool, optional, tag = "43")]
12698    pub trace_all_machines: ::core::option::Option<bool>,
12699    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
12700    /// into it and surfaced by trace_processor in the `metadata` table (see
12701    /// common/trace_attributes.proto). Typically set via
12702    /// `perfetto --add-attribute key=value`.
12703    ///
12704    /// Introduced in: perfetto v58.
12705    #[prost(message, optional, tag = "48")]
12706    pub trace_attributes: ::core::option::Option<TraceAttributes>,
12707    /// Android-only. Not for general use. If set to true, writes trace chunks to a
12708    /// persistent file
12709    /// (/data/misc/perfetto-traces/persistent/$unique_session_name.tmp) that
12710    /// survives device reboots (e.g. during OTA updates or battery depletion).
12711    ///
12712    /// Introduced in: perfetto v59.
12713    /// Supported on: Android 26Q4+.
12714    #[prost(bool, optional, tag = "49")]
12715    pub persist_trace_across_reboots: ::core::option::Option<bool>,
12716}
12717/// Nested message and enum types in `TraceConfig`.
12718pub mod trace_config {
12719    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12720    pub struct BufferConfig {
12721        #[prost(uint32, optional, tag = "1")]
12722        pub size_kb: ::core::option::Option<u32>,
12723        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
12724        pub fill_policy: ::core::option::Option<i32>,
12725        /// When true the buffer is moved (rather than copied) onto the cloned
12726        /// session, and an empty buffer of the same size is allocated in the source
12727        /// tracing session. This feature will likely get deprecated in the future.
12728        /// It been introduced mainly to support the surfaceflinger snapshot dump
12729        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
12730        /// that case we don't want to retain another in-memory copy of the buffer.
12731        #[prost(bool, optional, tag = "5")]
12732        pub transfer_on_clone: ::core::option::Option<bool>,
12733        /// Used in conjunction with transfer_on_clone. When true the buffer is
12734        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
12735        /// that if the data source took too long to write the data in a previous
12736        /// clone-related flush, we don't end up with a mixture of leftovers from
12737        /// the previous write and new data.
12738        #[prost(bool, optional, tag = "6")]
12739        pub clear_before_clone: ::core::option::Option<bool>,
12740        /// Optional name for this buffer. If set, data sources can reference this
12741        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
12742        /// using the buffer index. Buffer names must be unique within a tracing
12743        /// session. This provides a more human-readable and less error-prone way to
12744        /// configure which buffer a data source writes to.
12745        #[prost(string, optional, tag = "7")]
12746        pub name: ::core::option::Option<::prost::alloc::string::String>,
12747        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
12748        pub experimental_mode: ::core::option::Option<i32>,
12749    }
12750    /// Nested message and enum types in `BufferConfig`.
12751    pub mod buffer_config {
12752        #[derive(
12753            Clone,
12754            Copy,
12755            Debug,
12756            PartialEq,
12757            Eq,
12758            Hash,
12759            PartialOrd,
12760            Ord,
12761            ::prost::Enumeration
12762        )]
12763        #[repr(i32)]
12764        pub enum FillPolicy {
12765            Unspecified = 0,
12766            /// Default behavior. The buffer operates as a conventional ring buffer.
12767            /// If the writer is faster than the reader (or if the reader reads only
12768            /// after tracing is stopped) newly written packets will overwrite old
12769            /// packets.
12770            RingBuffer = 1,
12771            /// Behaves like RING_BUFFER as long as there is space in the buffer or
12772            /// the reader catches up with the writer. As soon as the writer hits
12773            /// an unread chunk, it stops accepting new data in the buffer.
12774            Discard = 2,
12775        }
12776        impl FillPolicy {
12777            /// String value of the enum field names used in the ProtoBuf definition.
12778            ///
12779            /// The values are not transformed in any way and thus are considered stable
12780            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12781            pub fn as_str_name(&self) -> &'static str {
12782                match self {
12783                    Self::Unspecified => "UNSPECIFIED",
12784                    Self::RingBuffer => "RING_BUFFER",
12785                    Self::Discard => "DISCARD",
12786                }
12787            }
12788            /// Creates an enum from field names used in the ProtoBuf definition.
12789            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12790                match value {
12791                    "UNSPECIFIED" => Some(Self::Unspecified),
12792                    "RING_BUFFER" => Some(Self::RingBuffer),
12793                    "DISCARD" => Some(Self::Discard),
12794                    _ => None,
12795                }
12796            }
12797        }
12798        /// When true, uses the experimental TraceBufferV2 implementation for this
12799        /// buffer. This is for testing purposes only and may be removed in future
12800        /// versions.
12801        #[derive(
12802            Clone,
12803            Copy,
12804            Debug,
12805            PartialEq,
12806            Eq,
12807            Hash,
12808            PartialOrd,
12809            Ord,
12810            ::prost::Enumeration
12811        )]
12812        #[repr(i32)]
12813        pub enum ExperimentalMode {
12814            /// Use the default V1 implementation.
12815            ModeUnspecified = 0,
12816            /// Use TraceBufferV2.
12817            TraceBufferV2 = 1,
12818        }
12819        impl ExperimentalMode {
12820            /// String value of the enum field names used in the ProtoBuf definition.
12821            ///
12822            /// The values are not transformed in any way and thus are considered stable
12823            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12824            pub fn as_str_name(&self) -> &'static str {
12825                match self {
12826                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
12827                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
12828                }
12829            }
12830            /// Creates an enum from field names used in the ProtoBuf definition.
12831            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12832                match value {
12833                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
12834                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
12835                    _ => None,
12836                }
12837            }
12838        }
12839    }
12840    #[derive(Clone, PartialEq, ::prost::Message)]
12841    pub struct DataSource {
12842        /// Filters and data-source specific config. It contains also the unique name
12843        /// of the data source, the one passed in the  DataSourceDescriptor when they
12844        /// register on the service.
12845        #[prost(message, optional, tag = "1")]
12846        pub config: ::core::option::Option<super::DataSourceConfig>,
12847        /// Optional. If multiple producers (~processes) expose the same data source
12848        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
12849        /// the data source is enabled only for producers whose names match any of
12850        /// the filters.
12851        /// |producer_name_filter| has to be an exact match, while
12852        /// |producer_name_regex_filter| is a regular expression.
12853        /// This allows to enable a data source only for specific processes.
12854        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
12855        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
12856        #[prost(string, repeated, tag = "2")]
12857        pub producer_name_filter: ::prost::alloc::vec::Vec<
12858            ::prost::alloc::string::String,
12859        >,
12860        #[prost(string, repeated, tag = "3")]
12861        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
12862            ::prost::alloc::string::String,
12863        >,
12864        /// Filter by machine names. The name of a machine is determined by the
12865        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
12866        /// variable is not set then the
12867        /// persist.traced_relay.machine_name system property is used. If the
12868        /// sysprop isn't set or not in an Android system, then the machine name by
12869        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
12870        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
12871        /// to the host machine, which is the machine running traced.
12872        #[prost(string, repeated, tag = "4")]
12873        pub machine_name_filter: ::prost::alloc::vec::Vec<
12874            ::prost::alloc::string::String,
12875        >,
12876    }
12877    /// Config for disabling builtin data sources in the tracing service.
12878    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12879    pub struct BuiltinDataSource {
12880        /// Disable emitting clock timestamps into the trace.
12881        #[prost(bool, optional, tag = "1")]
12882        pub disable_clock_snapshotting: ::core::option::Option<bool>,
12883        /// Disable echoing the original trace config in the trace.
12884        #[prost(bool, optional, tag = "2")]
12885        pub disable_trace_config: ::core::option::Option<bool>,
12886        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
12887        #[prost(bool, optional, tag = "3")]
12888        pub disable_system_info: ::core::option::Option<bool>,
12889        /// Disable emitting events for data-source state changes (e.g. the marker
12890        /// for all data sources having ACKed the start of the trace).
12891        #[prost(bool, optional, tag = "4")]
12892        pub disable_service_events: ::core::option::Option<bool>,
12893        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
12894        /// also ClockSnapshot's primary_trace_clock. The configured value is written
12895        /// into the trace as part of the ClockSnapshots emitted by the service.
12896        /// Trace processor will attempt to translate packet/event timestamps from
12897        /// various data sources (and their chosen clock domains) to this domain
12898        /// during import. Added in Android R.
12899        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
12900        pub primary_trace_clock: ::core::option::Option<i32>,
12901        /// Time interval in between snapshotting of sync markers, clock snapshots,
12902        /// stats, and other periodic service-emitted events. Note that the service
12903        /// only keeps track of the first and the most recent snapshot until
12904        /// ReadBuffers() is called.
12905        #[prost(uint32, optional, tag = "6")]
12906        pub snapshot_interval_ms: ::core::option::Option<u32>,
12907        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
12908        /// clock should be used for periodic snapshots of service-emitted events.
12909        /// This means, if a snapshot *should* have happened during suspend, it will
12910        /// happen immediately after the device resumes.
12911        ///
12912        /// Choosing a clock like this is done on best-effort basis; not all
12913        /// platforms (e.g. Windows) expose a clock which can be used for periodic
12914        /// tasks counting suspend. If such a clock is not available, the service
12915        /// falls back to the best-available alternative.
12916        ///
12917        /// Introduced in Android S.
12918        /// TODO(lalitm): deprecate this in T and make this the default if nothing
12919        /// crashes in S.
12920        #[prost(bool, optional, tag = "7")]
12921        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
12922        /// Disables the reporting of per-trace-writer histograms in TraceStats.
12923        #[prost(bool, optional, tag = "8")]
12924        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
12925        /// Disable emitting extension descriptors into the trace.
12926        #[prost(bool, optional, tag = "9")]
12927        pub disable_extension_descriptors: ::core::option::Option<bool>,
12928        /// Emit state changes of other tracing sessions running concurrently
12929        /// with this one (see ConcurrentSessionEvent).
12930        ///
12931        /// Introduced in v58 / Android 26Q3+.
12932        #[prost(bool, optional, tag = "10")]
12933        pub enable_concurrent_session_events: ::core::option::Option<bool>,
12934    }
12935    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12936    pub struct ProducerConfig {
12937        /// Identifies the producer for which this config is for.
12938        #[prost(string, optional, tag = "1")]
12939        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
12940        /// Specifies the preferred size of the shared memory buffer. If the size is
12941        /// larger than the max size, the max will be used. If it is smaller than
12942        /// the page size or doesn't fit pages evenly into it, it will fall back to
12943        /// the size specified by the producer or finally the default shared memory
12944        /// size.
12945        #[prost(uint32, optional, tag = "2")]
12946        pub shm_size_kb: ::core::option::Option<u32>,
12947        /// Specifies the preferred size of each page in the shared memory buffer.
12948        /// Must be an integer multiple of 4K.
12949        #[prost(uint32, optional, tag = "3")]
12950        pub page_size_kb: ::core::option::Option<u32>,
12951    }
12952    /// Contains statsd-specific metadata about an alert associated with the trace.
12953    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12954    pub struct StatsdMetadata {
12955        /// The identifier of the alert which triggered this trace.
12956        #[prost(int64, optional, tag = "1")]
12957        pub triggering_alert_id: ::core::option::Option<i64>,
12958        /// The uid which registered the triggering configuration with statsd.
12959        #[prost(int32, optional, tag = "2")]
12960        pub triggering_config_uid: ::core::option::Option<i32>,
12961        /// The identifier of the config which triggered the alert.
12962        #[prost(int64, optional, tag = "3")]
12963        pub triggering_config_id: ::core::option::Option<i64>,
12964        /// The identifier of the subscription which triggered this trace.
12965        #[prost(int64, optional, tag = "4")]
12966        pub triggering_subscription_id: ::core::option::Option<i64>,
12967    }
12968    /// Contains flags which override the default values of the guardrails inside
12969    /// Perfetto.
12970    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12971    pub struct GuardrailOverrides {
12972        /// Override the default limit (in bytes) for uploading data to server within
12973        /// a 24 hour period.
12974        /// On R-, this override only affected userdebug builds. Since S, it also
12975        /// affects user builds.
12976        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
12977        /// was removed from Perfetto.
12978        #[deprecated]
12979        #[prost(uint64, optional, tag = "1")]
12980        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
12981        /// Overrides the guardrail for maximum trace buffer size.
12982        /// Available on U+
12983        #[prost(uint32, optional, tag = "2")]
12984        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
12985    }
12986    /// Triggers allow producers to start or stop the tracing session when an event
12987    /// occurs.
12988    ///
12989    /// For example if we are tracing probabilistically, most traces will be
12990    /// uninteresting. Triggers allow us to keep only the interesting ones such as
12991    /// those traces during which the device temperature reached a certain
12992    /// threshold. In this case the producer can activate a trigger to keep
12993    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
12994    /// (START_TRACING) because it knows something is about to happen.
12995    #[derive(Clone, PartialEq, ::prost::Message)]
12996    pub struct TriggerConfig {
12997        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
12998        pub trigger_mode: ::core::option::Option<i32>,
12999        /// This flag is really a workaround for b/274931668. This is needed only
13000        /// when deploying configs to different versions of the tracing service.
13001        /// When this is set to true this has the same effect of setting trigger_mode
13002        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
13003        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
13004        /// versions of Android and fall back to STOP_TRACING on older versions where
13005        /// CLONE_SNAPSHOT did not exist.
13006        /// When using this flag, trigger_mode must be set to STOP_TRACING.
13007        #[prost(bool, optional, tag = "5")]
13008        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
13009        /// A list of triggers which are related to this configuration. If ANY
13010        /// trigger is seen then an action will be performed based on |trigger_mode|.
13011        #[prost(message, repeated, tag = "2")]
13012        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
13013        /// Required and must be positive if a TriggerConfig is specified. This is
13014        /// how long this TraceConfig should wait for a trigger to arrive. After this
13015        /// period of time if no trigger is seen the TracingSession will be cleaned
13016        /// up.
13017        #[prost(uint32, optional, tag = "3")]
13018        pub trigger_timeout_ms: ::core::option::Option<u32>,
13019    }
13020    /// Nested message and enum types in `TriggerConfig`.
13021    pub mod trigger_config {
13022        #[derive(Clone, PartialEq, ::prost::Message)]
13023        pub struct Trigger {
13024            /// The producer must specify this name to activate the trigger.
13025            #[prost(string, optional, tag = "1")]
13026            pub name: ::core::option::Option<::prost::alloc::string::String>,
13027            /// An std::regex that will match the producer that can activate this
13028            /// trigger. This is optional. If unset any producers can activate this
13029            /// trigger.
13030            #[prost(string, optional, tag = "2")]
13031            pub producer_name_regex: ::core::option::Option<
13032                ::prost::alloc::string::String,
13033            >,
13034            /// After a trigger is received either in START_TRACING or STOP_TRACING
13035            /// mode then the trace will end |stop_delay_ms| after triggering.
13036            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
13037            /// snapshot.
13038            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
13039            /// based on wall-clock, counting also time in suspend.
13040            #[prost(uint32, optional, tag = "3")]
13041            pub stop_delay_ms: ::core::option::Option<u32>,
13042            /// Limits the number of traces this trigger can start/stop in a rolling
13043            /// 24 hour window. If this field is unset or zero, no limit is applied and
13044            /// activiation of this trigger *always* starts/stops the trace.
13045            #[prost(uint32, optional, tag = "4")]
13046            pub max_per_24_h: ::core::option::Option<u32>,
13047            /// A value between 0 and 1 which encodes the probability of skipping a
13048            /// trigger with this name. This is useful for reducing the probability
13049            /// of high-frequency triggers from dominating trace finaization. If this
13050            /// field is unset or zero, the trigger will *never* be skipped. If this
13051            /// field is greater than or equal to 1, this trigger will *always* be
13052            /// skipped i.e. it will be as if this trigger was never included in the
13053            /// first place.
13054            /// This probability check is applied *before* any other limits. For
13055            /// example, if |max_per_24_h| is also set, first we will check if the
13056            /// probability bar is met and only then will we check the |max_per_24_h|
13057            /// limit.
13058            #[prost(double, optional, tag = "5")]
13059            pub skip_probability: ::core::option::Option<f64>,
13060        }
13061        #[derive(
13062            Clone,
13063            Copy,
13064            Debug,
13065            PartialEq,
13066            Eq,
13067            Hash,
13068            PartialOrd,
13069            Ord,
13070            ::prost::Enumeration
13071        )]
13072        #[repr(i32)]
13073        pub enum TriggerMode {
13074            Unspecified = 0,
13075            /// When this mode is chosen, data sources are not started until one of the
13076            /// |triggers| are received. This supports early initialization and fast
13077            /// starting of the tracing system. On triggering, the session will then
13078            /// record for |stop_delay_ms|. However if no trigger is seen
13079            /// after |trigger_timeout_ms| the session will be stopped and no data will
13080            /// be returned.
13081            StartTracing = 1,
13082            /// When this mode is chosen, the session will be started via the normal
13083            /// EnableTracing() & StartTracing(). If no trigger is ever seen
13084            /// the session will be stopped after |trigger_timeout_ms| and no data will
13085            /// be returned. However if triggered the trace will stop after
13086            /// |stop_delay_ms| and any data in the buffer will be returned to the
13087            /// consumer.
13088            StopTracing = 2,
13089            /// When this mode is chosen, this causes a snapshot of the current tracing
13090            /// session to be created after |stop_delay_ms| while the current tracing
13091            /// session continues undisturbed (% an extra flush). This mode can be
13092            /// used only when the tracing session is handled by the "perfetto" cmdline
13093            /// client (which is true in 90% of cases). Part of the business logic
13094            /// necessary for this behavior, and ensuing file handling, lives in
13095            /// perfetto_cmd.cc . On other consumers, this causes only a notification
13096            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
13097            /// consumer is supposed to call CloneSession() itself after the event.
13098            /// Use use_clone_snapshot_if_available=true when targeting older versions
13099            /// of perfetto.
13100            CloneSnapshot = 4,
13101        }
13102        impl TriggerMode {
13103            /// String value of the enum field names used in the ProtoBuf definition.
13104            ///
13105            /// The values are not transformed in any way and thus are considered stable
13106            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13107            pub fn as_str_name(&self) -> &'static str {
13108                match self {
13109                    Self::Unspecified => "UNSPECIFIED",
13110                    Self::StartTracing => "START_TRACING",
13111                    Self::StopTracing => "STOP_TRACING",
13112                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
13113                }
13114            }
13115            /// Creates an enum from field names used in the ProtoBuf definition.
13116            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13117                match value {
13118                    "UNSPECIFIED" => Some(Self::Unspecified),
13119                    "START_TRACING" => Some(Self::StartTracing),
13120                    "STOP_TRACING" => Some(Self::StopTracing),
13121                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
13122                    _ => None,
13123                }
13124            }
13125        }
13126    }
13127    /// Configuration for trace contents that reference earlier trace data. For
13128    /// example, a data source might intern strings, and emit packets containing
13129    /// {interned id : string} pairs. Future packets from that data source can then
13130    /// use the interned ids instead of duplicating the raw string contents. The
13131    /// trace parser will then need to use that interning table to fully interpret
13132    /// the rest of the trace.
13133    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13134    pub struct IncrementalStateConfig {
13135        /// If nonzero, notify eligible data sources to clear their incremental state
13136        /// periodically, with the given period. The notification is sent only to
13137        /// data sources that have |handles_incremental_state_clear| set in their
13138        /// DataSourceDescriptor. The notification requests that the data source
13139        /// stops referring to past trace contents. This is particularly useful when
13140        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
13141        /// trace data.
13142        ///
13143        /// Warning: this time-based global clearing is likely to be removed in the
13144        /// future, to be replaced with a smarter way of sending the notifications
13145        /// only when necessary.
13146        #[prost(uint32, optional, tag = "1")]
13147        pub clear_period_ms: ::core::option::Option<u32>,
13148    }
13149    /// Selects and configures the compression codec, superseding
13150    /// |compression_type|. The codec is chosen by which sub-message is set; when
13151    /// several are set the service picks the highest-numbered one it supports and
13152    /// ignores codecs it doesn't know, so a single config can target old and new
13153    /// services. Falls back to |compression_type| (deflate-only), if given.
13154    ///
13155    /// Introduced in: perfetto v58.
13156    /// Supported on: Android 26Q3+.
13157    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13158    pub struct CompressionConfig {
13159        /// If a config sets more than one of these, the service picks the one with
13160        /// the highest field number (see the rule above): e.g. with deflate (1) and
13161        /// zstd (2) both set, zstd wins.
13162        #[prost(message, optional, tag = "1")]
13163        pub deflate: ::core::option::Option<compression_config::Deflate>,
13164        #[prost(message, optional, tag = "2")]
13165        pub zstd: ::core::option::Option<compression_config::Zstd>,
13166    }
13167    /// Nested message and enum types in `CompressionConfig`.
13168    pub mod compression_config {
13169        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
13170        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13171        pub struct Deflate {}
13172        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13173        pub struct Zstd {
13174            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
13175            /// default (3). Levels above the max are clamped; negatives are valid
13176            /// faster, lower-ratio modes.
13177            #[prost(int32, optional, tag = "1")]
13178            pub level: ::core::option::Option<i32>,
13179        }
13180    }
13181    /// Android-only. Not for general use. If set, saves the trace into an
13182    /// incident. This field is read by perfetto_cmd, rather than the tracing
13183    /// service. This field must be set when passing the --upload flag to
13184    /// perfetto_cmd.
13185    ///
13186    /// In this message, either:
13187    ///   * all of |destination_package|, |destination_class| and |privacy_level|
13188    ///     must be set.
13189    ///   * |skip_incidentd| must be explicitly set to true.
13190    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13191    pub struct IncidentReportConfig {
13192        #[prost(string, optional, tag = "1")]
13193        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
13194        #[prost(string, optional, tag = "2")]
13195        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
13196        /// Level of filtering in the requested incident. See |Destination| in
13197        /// frameworks/base/core/proto/android/privacy.proto.
13198        #[prost(int32, optional, tag = "3")]
13199        pub privacy_level: ::core::option::Option<i32>,
13200        /// If true, then skips saving the trace to incidentd.
13201        ///
13202        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
13203        /// or when we explicitly don't want traces to go to incidentd even when they
13204        /// usually would (e.g. configs deployed using statsd but only used for
13205        /// inclusion in bugreports using |bugreport_score|).
13206        ///
13207        /// The motivation for having this flag, instead of just not setting
13208        /// |incident_report_config|, is prevent accidents where
13209        /// |incident_report_config| is omitted by mistake.
13210        #[prost(bool, optional, tag = "5")]
13211        pub skip_incidentd: ::core::option::Option<bool>,
13212        /// If true, do not write the trace into dropbox (i.e. incident only).
13213        /// Otherwise, write to both dropbox and incident.
13214        /// TODO(lalitm): remove this field as we no longer use Dropbox.
13215        #[deprecated]
13216        #[prost(bool, optional, tag = "4")]
13217        pub skip_dropbox: ::core::option::Option<bool>,
13218    }
13219    /// When set applies a post-filter to the trace contents using the filter
13220    /// provided. The filter is applied at ReadBuffers() time and works both in the
13221    /// case of IPC readback and write_into_file. This filter can be generated
13222    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
13223    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
13224    /// design.
13225    ///
13226    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
13227    /// Android T with a different field number. Updated in Android U with a new
13228    /// bytecode version which supports string filtering.
13229    ///
13230    /// =========================
13231    /// Filter bytecode.
13232    /// =========================
13233    #[derive(Clone, PartialEq, ::prost::Message)]
13234    pub struct TraceFilter {
13235        /// The bytecode as implemented in Android T.
13236        #[prost(bytes = "vec", optional, tag = "1")]
13237        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13238        /// The bytecode as implemented in Android U. Adds support for string
13239        /// filtering.
13240        #[prost(bytes = "vec", optional, tag = "2")]
13241        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13242        #[prost(message, optional, tag = "3")]
13243        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
13244        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
13245        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
13246        /// versions ignore this field; new versions apply it.
13247        ///
13248        /// The motivation for this is that adding new opcodes in a backwards
13249        /// compatible way while also minimizing config size is hard. Instead, the
13250        /// overlay mechanism allows us to "patch" specific fields in the original
13251        /// bytecode_v2 with new semantics.
13252        ///
13253        /// See RFC 0011-subset-string-filter-rules.md for more info.
13254        ///
13255        /// Note:
13256        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
13257        /// markers), this overlay uses a triplet format with explicit indices:
13258        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
13259        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
13260        /// Entries must be sorted by (msg_index, field_id).
13261        ///
13262        /// The parser processes bytecode_v2 and this overlay simultaneously:
13263        ///   - any field not mentioned in the overlay is parsed as usual
13264        ///   - any field in the overlay but *not* in the bytecode_v2 is added
13265        ///     with its overlay value
13266        ///   - any field in both the overlay and bytecode_v2 takes the value in the
13267        ///     overlay, the bytecode_v2 value is ignored.
13268        ///
13269        /// Note: despite the name, this was broken in v54 (the overlay was not
13270        /// passed through to the bytecode parser). Only works in v55+.
13271        #[prost(bytes = "vec", optional, tag = "4")]
13272        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13273        /// String filter chain for Perfetto v54+. Rules in this chain either
13274        /// overwrite rules in string_filter_chain (if the name matches) or are
13275        /// appended (if the name doesn't match). This allows modifying existing
13276        /// rules (e.g., changing policy) without duplicating the entire chain.
13277        /// Rules without a name are always appended.
13278        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13279        /// Introduced in: Perfetto v54.
13280        #[prost(message, optional, tag = "5")]
13281        pub string_filter_chain_v54: ::core::option::Option<
13282            trace_filter::StringFilterChain,
13283        >,
13284    }
13285    /// Nested message and enum types in `TraceFilter`.
13286    pub mod trace_filter {
13287        /// A rule specifies how strings should be filtered.
13288        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13289        pub struct StringFilterRule {
13290            /// The policy (i.e. algorithm) dictating how strings matching this rule
13291            /// should be handled.
13292            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
13293            pub policy: ::core::option::Option<i32>,
13294            /// The regex pattern used to match against each string.
13295            #[prost(string, optional, tag = "2")]
13296            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
13297            /// The string which should appear after the tgid in atrace tracepoint
13298            /// strings.
13299            #[prost(string, optional, tag = "3")]
13300            pub atrace_payload_starts_with: ::core::option::Option<
13301                ::prost::alloc::string::String,
13302            >,
13303            /// Optional name for the rule. When merging chains (e.g. via
13304            /// string_filter_chain_v54), rules with matching names in the newer chain
13305            /// will overwrite rules in the base chain. Rules without a name (empty or
13306            /// unset) are always treated as distinct and will be appended.
13307            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13308            /// Introduced in: Perfetto v54.
13309            #[prost(string, optional, tag = "4")]
13310            pub name: ::core::option::Option<::prost::alloc::string::String>,
13311            /// The semantic types this rule applies to.
13312            ///
13313            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
13314            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
13315            /// - If non-empty, the rule applies only to fields whose semantic type
13316            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
13317            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
13318            ///
13319            /// Examples:
13320            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
13321            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
13322            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
13323            ///
13324            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13325            /// Introduced in: Perfetto v54.
13326            #[prost(
13327                enumeration = "super::super::SemanticType",
13328                repeated,
13329                packed = "false",
13330                tag = "5"
13331            )]
13332            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
13333        }
13334        /// A chain is a list of rules which string will be sequentially checked
13335        /// against.
13336        #[derive(Clone, PartialEq, ::prost::Message)]
13337        pub struct StringFilterChain {
13338            #[prost(message, repeated, tag = "1")]
13339            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
13340        }
13341        /// A policy specifies which algorithm should be used for filtering the
13342        /// string.
13343        #[derive(
13344            Clone,
13345            Copy,
13346            Debug,
13347            PartialEq,
13348            Eq,
13349            Hash,
13350            PartialOrd,
13351            Ord,
13352            ::prost::Enumeration
13353        )]
13354        #[repr(i32)]
13355        pub enum StringFilterPolicy {
13356            SfpUnspecified = 0,
13357            /// Tries to match the string field against |regex_pattern|. If it
13358            /// matches, all matching groups are "redacted" (i.e. replaced with a
13359            /// constant string) and filtering is terminated (i.e. no further rules are
13360            /// checked). If it doesn't match, the string is left unchanged and the
13361            /// next rule in chain is considered.
13362            SfpMatchRedactGroups = 1,
13363            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
13364            /// checking the regex. Specifically, it tries to parse the string field as
13365            /// an atrace tracepoint and checks if the post-tgid field starts with
13366            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
13367            /// this check succeeds.
13368            SfpAtraceMatchRedactGroups = 2,
13369            /// Tries to match the string field against |regex_pattern|. If it
13370            /// matches, filtering is terminated (i.e. no further rules are checked).
13371            /// If it doesn't match, the string is left unchanged and the next rule in
13372            /// chain is considered.
13373            SfpMatchBreak = 3,
13374            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
13375            /// the regex. Specifically, it tries to parse the string field as an
13376            /// atrace tracepoint and checks if the post-tgid field starts with
13377            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
13378            /// this check succeeds.
13379            SfpAtraceMatchBreak = 4,
13380            /// Tries to repeatedly search (i.e. find substrings of) the string field
13381            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
13382            /// replaced with a constant string). Once there are no further matches,
13383            /// filtering is terminated (i.e. no further rules are checked).
13384            ///
13385            /// Note that this is policy is a "search" policy not a "match" policy
13386            /// unlike the above policies:
13387            ///   * Match policies require matching the full string i.e. there is an
13388            ///     implicit leading `^` and trailing `$`.
13389            ///   * Search policies perform repeated partial matching of the string
13390            ///     e.g.
13391            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
13392            ///       - Pattern: `foo=(\d+)`
13393            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
13394            ///     where P6O is the redaction string
13395            ///
13396            /// All of this is only performed after some pre-work where we try to parse
13397            /// the string field as an atrace tracepoint and check if the post-tgid
13398            /// field starts with |atrace_post_tgid_starts_with|.
13399            ///
13400            /// If there are no partial matches, the string is left unchanged and the
13401            /// next rule in chain is considered.
13402            SfpAtraceRepeatedSearchRedactGroups = 5,
13403        }
13404        impl StringFilterPolicy {
13405            /// String value of the enum field names used in the ProtoBuf definition.
13406            ///
13407            /// The values are not transformed in any way and thus are considered stable
13408            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13409            pub fn as_str_name(&self) -> &'static str {
13410                match self {
13411                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
13412                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
13413                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
13414                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
13415                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
13416                    Self::SfpAtraceRepeatedSearchRedactGroups => {
13417                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
13418                    }
13419                }
13420            }
13421            /// Creates an enum from field names used in the ProtoBuf definition.
13422            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13423                match value {
13424                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
13425                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
13426                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
13427                        Some(Self::SfpAtraceMatchRedactGroups)
13428                    }
13429                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
13430                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
13431                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
13432                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
13433                    }
13434                    _ => None,
13435                }
13436            }
13437        }
13438    }
13439    /// Android-only. Not for general use. If set, reports the trace to the
13440    /// Android framework. This field is read by perfetto_cmd, rather than the
13441    /// tracing service. This field must be set when passing the --upload flag to
13442    /// perfetto_cmd.
13443    ///
13444    /// In this message, either:
13445    ///   * |reporter_service_package| and |reporter_service_class| must be set.
13446    ///   * |skip_reporting| must be explicitly set to true.
13447    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13448    pub struct AndroidReportConfig {
13449        #[prost(string, optional, tag = "1")]
13450        pub reporter_service_package: ::core::option::Option<
13451            ::prost::alloc::string::String,
13452        >,
13453        #[prost(string, optional, tag = "2")]
13454        pub reporter_service_class: ::core::option::Option<
13455            ::prost::alloc::string::String,
13456        >,
13457        /// If true, then skips reporting the trace to Android framework.
13458        ///
13459        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
13460        /// or when we explicitly don't want to report traces to the framework even
13461        /// when they usually would (e.g. configs deployed using statsd but only
13462        /// used for inclusion in bugreports using |bugreport_score|).
13463        ///
13464        /// The motivation for having this flag, instead of just not setting
13465        /// |framework_report_config|, is prevent accidents where
13466        /// |framework_report_config| is omitted by mistake.
13467        #[prost(bool, optional, tag = "3")]
13468        pub skip_report: ::core::option::Option<bool>,
13469        /// If true, will direct the Android framework to read the data in trace
13470        /// file and pass it to the reporter class over a pipe instead of passing
13471        /// the file descriptor directly.
13472        ///
13473        /// This flag is needed because the Android test framework does not
13474        /// currently support priv-app helper apps (in terms of SELinux) and we
13475        /// really don't want to add an allow rule for untrusted_app to receive
13476        /// trace fds.
13477        ///
13478        /// Because of this, we instead will direct the framework to create a new
13479        /// pipe and pass this to the reporter process instead. As the pipe is
13480        /// created by the framework, we won't have any problems with SELinux
13481        /// (system_server is already allowed to pass pipe fds, even
13482        /// to untrusted apps).
13483        ///
13484        /// As the name suggests this option *MUST* only be used for testing.
13485        /// Note that the framework will reject (and drop) files which are too
13486        /// large both for simplicity and to be minimize the amount of data we
13487        /// pass to a non-priv app (note that the framework will still check
13488        /// manifest permissions even though SELinux permissions are worked around).
13489        #[prost(bool, optional, tag = "4")]
13490        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
13491    }
13492    /// If set, delays the start of tracing by a random duration. The duration is
13493    /// chosen from a uniform distribution between the specified minimum and
13494    /// maximum.
13495    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
13496    /// not work if you communicate with traced directly over the consumer API.
13497    /// Introduced in Android T.
13498    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13499    pub struct CmdTraceStartDelay {
13500        #[prost(uint32, optional, tag = "1")]
13501        pub min_delay_ms: ::core::option::Option<u32>,
13502        #[prost(uint32, optional, tag = "2")]
13503        pub max_delay_ms: ::core::option::Option<u32>,
13504    }
13505    /// When non-empty, ensures that for a each semaphore named `name at most
13506    /// `max_other_session_count`` *other* sessions (whose value is taken of the
13507    /// minimum of all values specified by this config or any already-running
13508    /// session) can be be running.
13509    ///
13510    /// If a semaphore "acquisition" fails, EnableTracing will return an error
13511    /// and the tracing session will not be started (or elgible to start in
13512    /// the case of deferred sessions).
13513    ///
13514    /// This is easiest to explain with an example. Suppose the tracing service has
13515    /// the following active tracing sessions:
13516    ///    S1 = [{name=foo, max_other_session_count=2},
13517    ///          {name=bar, max_other_session_count=0}]
13518    ///    S2 = [{name=foo, max_other_session_count=1},
13519    ///          {name=baz, max_other_session_count=1}]
13520    ///
13521    /// Then, for a new session, the following would be the expected behaviour of
13522    /// EnableSession given the state of `session_semaphores`.
13523    ///    Q: session_semaphores = \[\]
13524    ///    A: Allowed because it does not specify any semaphores. Will be allowed
13525    ///       no matter the state of any other tracing session.
13526    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
13527    ///    A: Allowed because both S2 and this config specify
13528    ///       max_other_session_count=1 for baz.
13529    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
13530    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
13531    ///       takes that slot.
13532    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
13533    ///    A: Denied because S1 takes the the slot specified by both S1 and
13534    ///       this config.
13535    ///
13536    /// Introduced in 24Q3 (Android V).
13537    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13538    pub struct SessionSemaphore {
13539        /// The name of the semaphore. Acts as a unique identifier across all
13540        /// tracing sessions (including the one being started).
13541        #[prost(string, optional, tag = "1")]
13542        pub name: ::core::option::Option<::prost::alloc::string::String>,
13543        /// The maximum number of *other* sesssions which specify the same semaphore
13544        /// which can be active. The minimum of this value across all tracing
13545        /// sessions and the value specified by the config is used when deciding
13546        /// whether the tracing session can be started.
13547        #[prost(uint64, optional, tag = "2")]
13548        pub max_other_session_count: ::core::option::Option<u64>,
13549    }
13550    #[derive(
13551        Clone,
13552        Copy,
13553        Debug,
13554        PartialEq,
13555        Eq,
13556        Hash,
13557        PartialOrd,
13558        Ord,
13559        ::prost::Enumeration
13560    )]
13561    #[repr(i32)]
13562    pub enum LockdownModeOperation {
13563        LockdownUnchanged = 0,
13564        LockdownClear = 1,
13565        LockdownSet = 2,
13566    }
13567    impl LockdownModeOperation {
13568        /// String value of the enum field names used in the ProtoBuf definition.
13569        ///
13570        /// The values are not transformed in any way and thus are considered stable
13571        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13572        pub fn as_str_name(&self) -> &'static str {
13573            match self {
13574                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
13575                Self::LockdownClear => "LOCKDOWN_CLEAR",
13576                Self::LockdownSet => "LOCKDOWN_SET",
13577            }
13578        }
13579        /// Creates an enum from field names used in the ProtoBuf definition.
13580        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13581            match value {
13582                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
13583                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
13584                "LOCKDOWN_SET" => Some(Self::LockdownSet),
13585                _ => None,
13586            }
13587        }
13588    }
13589    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
13590    /// that only ever selects deflate. Kept for backwards compatibility with
13591    /// Perfetto <= v57, whose services predate |compression|. Best effort.
13592    #[derive(
13593        Clone,
13594        Copy,
13595        Debug,
13596        PartialEq,
13597        Eq,
13598        Hash,
13599        PartialOrd,
13600        Ord,
13601        ::prost::Enumeration
13602    )]
13603    #[repr(i32)]
13604    pub enum CompressionType {
13605        Unspecified = 0,
13606        Deflate = 1,
13607    }
13608    impl CompressionType {
13609        /// String value of the enum field names used in the ProtoBuf definition.
13610        ///
13611        /// The values are not transformed in any way and thus are considered stable
13612        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13613        pub fn as_str_name(&self) -> &'static str {
13614            match self {
13615                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
13616                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
13617            }
13618        }
13619        /// Creates an enum from field names used in the ProtoBuf definition.
13620        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13621            match value {
13622                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
13623                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
13624                _ => None,
13625            }
13626        }
13627    }
13628    #[derive(
13629        Clone,
13630        Copy,
13631        Debug,
13632        PartialEq,
13633        Eq,
13634        Hash,
13635        PartialOrd,
13636        Ord,
13637        ::prost::Enumeration
13638    )]
13639    #[repr(i32)]
13640    pub enum StatsdLogging {
13641        Unspecified = 0,
13642        Enabled = 1,
13643        Disabled = 2,
13644    }
13645    impl StatsdLogging {
13646        /// String value of the enum field names used in the ProtoBuf definition.
13647        ///
13648        /// The values are not transformed in any way and thus are considered stable
13649        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13650        pub fn as_str_name(&self) -> &'static str {
13651            match self {
13652                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
13653                Self::Enabled => "STATSD_LOGGING_ENABLED",
13654                Self::Disabled => "STATSD_LOGGING_DISABLED",
13655            }
13656        }
13657        /// Creates an enum from field names used in the ProtoBuf definition.
13658        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13659            match value {
13660                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
13661                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
13662                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
13663                _ => None,
13664            }
13665        }
13666    }
13667    #[derive(
13668        Clone,
13669        Copy,
13670        Debug,
13671        PartialEq,
13672        Eq,
13673        Hash,
13674        PartialOrd,
13675        Ord,
13676        ::prost::Enumeration
13677    )]
13678    #[repr(i32)]
13679    pub enum WriteFlushMode {
13680        /// Same as WRITE_FLUSH_AUTO.
13681        WriteFlushUnspecified = 0,
13682        /// Default mode. The service automatically determines the flush frequency
13683        /// to balance performance and data freshness:
13684        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
13685        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
13686        ///     issued every 5s.
13687        /// 2) If file_write_period_ms > 5s:
13688        ///     A flush is issued before every periodic write into the file.
13689        WriteFlushAuto = 1,
13690        /// Do not flush buffers before periodic writes into the file.
13691        /// Use this mode if you want to minimize the performance impact of flushes
13692        /// and can tolerate potentially missing the most recent data in the trace
13693        /// file until the end of the session or an explicit flush.
13694        /// When this mode is selected, |flush_period_ms| is respected.
13695        WriteFlushDisabled = 2,
13696        /// Issue a flush before every periodic write into the file.
13697        /// This ensures that each write into the file contains the most up-to-date
13698        /// data from all data sources, but may have a higher performance overhead.
13699        WriteFlushEnabled = 3,
13700    }
13701    impl WriteFlushMode {
13702        /// String value of the enum field names used in the ProtoBuf definition.
13703        ///
13704        /// The values are not transformed in any way and thus are considered stable
13705        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13706        pub fn as_str_name(&self) -> &'static str {
13707            match self {
13708                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
13709                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
13710                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
13711                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
13712            }
13713        }
13714        /// Creates an enum from field names used in the ProtoBuf definition.
13715        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13716            match value {
13717                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
13718                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
13719                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
13720                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
13721                _ => None,
13722            }
13723        }
13724    }
13725    #[derive(
13726        Clone,
13727        Copy,
13728        Debug,
13729        PartialEq,
13730        Eq,
13731        Hash,
13732        PartialOrd,
13733        Ord,
13734        ::prost::Enumeration
13735    )]
13736    #[repr(i32)]
13737    pub enum FFlushMode {
13738        /// Default: same as FFLUSH_DISABLED.
13739        FflushUnspecified = 0,
13740        /// Do not explicitly sync the file to storage after each write pass.
13741        FflushDisabled = 1,
13742        /// Explicitly sync the file to storage (via fdatasync) after each periodic
13743        /// write pass. Increases data durability at the cost of higher disk I/O
13744        /// overhead.
13745        FflushEnabled = 2,
13746    }
13747    impl FFlushMode {
13748        /// String value of the enum field names used in the ProtoBuf definition.
13749        ///
13750        /// The values are not transformed in any way and thus are considered stable
13751        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13752        pub fn as_str_name(&self) -> &'static str {
13753            match self {
13754                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
13755                Self::FflushDisabled => "FFLUSH_DISABLED",
13756                Self::FflushEnabled => "FFLUSH_ENABLED",
13757            }
13758        }
13759        /// Creates an enum from field names used in the ProtoBuf definition.
13760        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13761            match value {
13762                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
13763                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
13764                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
13765                _ => None,
13766            }
13767        }
13768    }
13769}
13770/// Arguments for rpc EnableTracing().
13771#[derive(Clone, PartialEq, ::prost::Message)]
13772pub struct EnableTracingRequest {
13773    #[prost(message, optional, tag = "1")]
13774    pub trace_config: ::core::option::Option<TraceConfig>,
13775    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
13776    /// EnableTracingResponse notification after a Detach+Attach request.
13777    /// When this flag is set the |trace_config| is ignored and no method is called
13778    /// on the tracing service.
13779    #[prost(bool, optional, tag = "2")]
13780    pub attach_notification_only: ::core::option::Option<bool>,
13781}
13782#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13783pub struct EnableTracingResponse {
13784    /// If present and non-empty tracing was disabled because of an error.
13785    /// Introduced in Android S.
13786    #[prost(string, optional, tag = "3")]
13787    pub error: ::core::option::Option<::prost::alloc::string::String>,
13788    #[prost(oneof = "enable_tracing_response::State", tags = "1")]
13789    pub state: ::core::option::Option<enable_tracing_response::State>,
13790}
13791/// Nested message and enum types in `EnableTracingResponse`.
13792pub mod enable_tracing_response {
13793    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
13794    pub enum State {
13795        #[prost(bool, tag = "1")]
13796        Disabled(bool),
13797    }
13798}
13799/// Arguments for rpc StartTracing().
13800#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13801pub struct StartTracingRequest {}
13802#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13803pub struct StartTracingResponse {}
13804/// Arguments for rpc ChangeTraceConfig().
13805#[derive(Clone, PartialEq, ::prost::Message)]
13806pub struct ChangeTraceConfigRequest {
13807    #[prost(message, optional, tag = "1")]
13808    pub trace_config: ::core::option::Option<TraceConfig>,
13809}
13810#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13811pub struct ChangeTraceConfigResponse {}
13812/// Arguments for rpc DisableTracing().
13813///
13814/// TODO: not supported yet, selectively disable only some data sources.
13815/// repeated string data_source_name;
13816#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13817pub struct DisableTracingRequest {}
13818#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13819pub struct DisableTracingResponse {}
13820/// Arguments for rpc ReadBuffers().
13821///
13822/// The |id|s of the buffer, as passed to CreateBuffers().
13823/// TODO: repeated uint32 buffer_ids = 1;
13824#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13825pub struct ReadBuffersRequest {}
13826/// TODO: uint32 buffer_id = 1;
13827#[derive(Clone, PartialEq, ::prost::Message)]
13828pub struct ReadBuffersResponse {
13829    #[prost(message, repeated, tag = "2")]
13830    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
13831}
13832/// Nested message and enum types in `ReadBuffersResponse`.
13833pub mod read_buffers_response {
13834    /// Each streaming reply returns one or more slices for one or more trace
13835    /// packets, or even just a portion of it (if it's too big to fit within one
13836    /// IPC). The returned slices are ordered and contiguous: packets' slices are
13837    /// not interleaved and slices are sent only once all slices for a packet are
13838    /// available (i.e. the consumer will never see any gap).
13839    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13840    pub struct Slice {
13841        #[prost(bytes = "vec", optional, tag = "1")]
13842        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13843        /// When true, this is the last slice for the packet. A ReadBufferResponse
13844        /// might have no slices marked as |last_slice_for_packet|==true, in the case
13845        /// of a very large packet that gets chunked into several IPCs (in which case
13846        /// only the last IPC for the packet will have this flag set).
13847        #[prost(bool, optional, tag = "2")]
13848        pub last_slice_for_packet: ::core::option::Option<bool>,
13849    }
13850}
13851/// Arguments for rpc FreeBuffers().
13852#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13853pub struct FreeBuffersRequest {
13854    /// The |id|s of the buffer, as passed to CreateBuffers().
13855    #[prost(uint32, repeated, packed = "false", tag = "1")]
13856    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
13857}
13858#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13859pub struct FreeBuffersResponse {}
13860/// Arguments for rpc Flush().
13861#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13862pub struct FlushRequest {
13863    #[prost(uint32, optional, tag = "1")]
13864    pub timeout_ms: ::core::option::Option<u32>,
13865    /// More details such as flush reason and originator. Introduced in v38 / V.
13866    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
13867    #[prost(uint64, optional, tag = "2")]
13868    pub flags: ::core::option::Option<u64>,
13869}
13870#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13871pub struct FlushResponse {}
13872/// Arguments for rpc Detach
13873#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13874pub struct DetachRequest {
13875    #[prost(string, optional, tag = "1")]
13876    pub key: ::core::option::Option<::prost::alloc::string::String>,
13877}
13878#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13879pub struct DetachResponse {}
13880/// Arguments for rpc Attach.
13881#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13882pub struct AttachRequest {
13883    #[prost(string, optional, tag = "1")]
13884    pub key: ::core::option::Option<::prost::alloc::string::String>,
13885}
13886#[derive(Clone, PartialEq, ::prost::Message)]
13887pub struct AttachResponse {
13888    #[prost(message, optional, tag = "1")]
13889    pub trace_config: ::core::option::Option<TraceConfig>,
13890}
13891#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13892pub struct GetTraceStatsRequest {}
13893#[derive(Clone, PartialEq, ::prost::Message)]
13894pub struct GetTraceStatsResponse {
13895    #[prost(message, optional, tag = "1")]
13896    pub trace_stats: ::core::option::Option<TraceStats>,
13897}
13898/// To stop observing events of a certain type, send a request with the remaining
13899/// types. To stop observing completely, send an empty request.
13900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13901pub struct ObserveEventsRequest {
13902    #[prost(
13903        enumeration = "observable_events::Type",
13904        repeated,
13905        packed = "false",
13906        tag = "1"
13907    )]
13908    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
13909}
13910#[derive(Clone, PartialEq, ::prost::Message)]
13911pub struct ObserveEventsResponse {
13912    #[prost(message, optional, tag = "1")]
13913    pub events: ::core::option::Option<ObservableEvents>,
13914}
13915/// Arguments for rpc QueryServiceState.
13916#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13917pub struct QueryServiceStateRequest {
13918    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
13919    /// and data sources are omitted.
13920    #[prost(bool, optional, tag = "1")]
13921    pub sessions_only: ::core::option::Option<bool>,
13922}
13923#[derive(Clone, PartialEq, ::prost::Message)]
13924pub struct QueryServiceStateResponse {
13925    /// In order to avoid hitting IPC message size limitations, the service will
13926    /// return >1 replies for each query, chunking the TracingServiceState. The
13927    /// receiver is expected to merge replies together and parse that when the
13928    /// last reply is received (i.e. when IPC's |has_more| == false).
13929    #[prost(message, optional, tag = "1")]
13930    pub service_state: ::core::option::Option<TracingServiceState>,
13931}
13932/// Arguments for rpc QueryCapabilities.
13933#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13934pub struct QueryCapabilitiesRequest {}
13935#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13936pub struct QueryCapabilitiesResponse {
13937    #[prost(message, optional, tag = "1")]
13938    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
13939}
13940/// Arguments for rpc SaveTraceForBugreport.
13941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13942pub struct SaveTraceForBugreportRequest {}
13943/// This response is sent only after the trace was saved into file (if succeeded)
13944/// or something failed.
13945#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13946pub struct SaveTraceForBugreportResponse {
13947    /// If true, an eligible the trace was saved into a known location (on Android
13948    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
13949    /// If false no trace with bugreport_score > 0 was found or an error occurred.
13950    /// see |msg| in that case for details about the failure.
13951    #[prost(bool, optional, tag = "1")]
13952    pub success: ::core::option::Option<bool>,
13953    #[prost(string, optional, tag = "2")]
13954    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13955}
13956/// Arguments for rpc CloneSession.
13957#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13958pub struct CloneSessionRequest {
13959    /// If set, the trace filter will not have effect on the cloned session.
13960    /// Used for bugreports.
13961    #[prost(bool, optional, tag = "2")]
13962    pub skip_trace_filter: ::core::option::Option<bool>,
13963    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
13964    /// to kBugreport when requesting the flush to the producers.
13965    #[prost(bool, optional, tag = "3")]
13966    pub for_bugreport: ::core::option::Option<bool>,
13967    /// If set, this is stored in the trace as name of the trigger that caused the
13968    /// clone.
13969    #[prost(string, optional, tag = "5")]
13970    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
13971    /// If set, this is stored in the trace as name of the producer that triggered
13972    /// the clone.
13973    #[prost(string, optional, tag = "6")]
13974    pub clone_trigger_producer_name: ::core::option::Option<
13975        ::prost::alloc::string::String,
13976    >,
13977    /// If set, this is stored in the trace as uid of the producer that triggered
13978    /// the clone.
13979    #[prost(int32, optional, tag = "7")]
13980    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
13981    /// If set, this is stored in the trace as timestamp of the trigger that caused
13982    /// the clone.
13983    #[prost(uint64, optional, tag = "8")]
13984    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
13985    /// If set, this is stored in the trace as the configured delay of the trigger
13986    /// that caused the clone.
13987    ///
13988    /// Consumer may also send a file descriptor with this rpc message. If the
13989    /// descriptor is valid, and the session that should be cloned is
13990    /// 'write_into_file' session, traced writes the cloned session content to that
13991    /// file descriptor, instead of writing it in the cloned session buffers.
13992    #[prost(uint64, optional, tag = "9")]
13993    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
13994    #[prost(oneof = "clone_session_request::Selector", tags = "1, 4")]
13995    pub selector: ::core::option::Option<clone_session_request::Selector>,
13996}
13997/// Nested message and enum types in `CloneSessionRequest`.
13998pub mod clone_session_request {
13999    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
14000    pub enum Selector {
14001        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
14002        /// the session with the highest bugreport score is cloned (if any exists).
14003        #[prost(uint64, tag = "1")]
14004        SessionId(u64),
14005        /// The unique_session_name of the tracing session to clone. Tracing sessions
14006        /// that are clones of other tracing sessions are ignored.
14007        #[prost(string, tag = "4")]
14008        UniqueSessionName(::prost::alloc::string::String),
14009    }
14010}
14011#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14012pub struct CloneSessionResponse {
14013    /// If true, the clone was successful. If false it failed and |error| contains
14014    /// the details about the failure.
14015    #[prost(bool, optional, tag = "1")]
14016    pub success: ::core::option::Option<bool>,
14017    #[prost(string, optional, tag = "2")]
14018    pub error: ::core::option::Option<::prost::alloc::string::String>,
14019    /// The UUID of the cloned session.
14020    #[prost(int64, optional, tag = "3")]
14021    pub uuid_msb: ::core::option::Option<i64>,
14022    #[prost(int64, optional, tag = "4")]
14023    pub uuid_lsb: ::core::option::Option<i64>,
14024    /// TracingService sets this when the cloned session was write_into_file=true.
14025    /// The consumer cannot know upfront if a session is WIF or not.
14026    /// Introduced in v53.
14027    #[prost(bool, optional, tag = "5")]
14028    pub was_write_into_file: ::core::option::Option<bool>,
14029}
14030#[derive(Clone, PartialEq, ::prost::Message)]
14031pub struct CommitDataRequest {
14032    #[prost(message, repeated, tag = "1")]
14033    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
14034    #[prost(message, repeated, tag = "2")]
14035    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
14036    /// Optional. If this commit is made in response to a Flush(id) request coming
14037    /// from the service, copy back the id of the request so the service can tell
14038    /// when the flush happened.
14039    #[prost(uint64, optional, tag = "3")]
14040    pub flush_request_id: ::core::option::Option<u64>,
14041}
14042/// Nested message and enum types in `CommitDataRequest`.
14043pub mod commit_data_request {
14044    /// When |chunks_to_move| is present, the producer is requesting the service to
14045    /// move the given chunks form the share memory buffer into the central
14046    /// trace buffer(s).
14047    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14048    pub struct ChunksToMove {
14049        /// The 0-based index of the page in the Shared Memory Buffer.
14050        #[prost(uint32, optional, tag = "1")]
14051        pub page: ::core::option::Option<u32>,
14052        /// The 0-based chunk index \[0..13\] within the page.
14053        #[prost(uint32, optional, tag = "2")]
14054        pub chunk: ::core::option::Option<u32>,
14055        /// The target buffer it should be moved onto. The service will check that
14056        /// the producer is allowed to write into that buffer before the move.
14057        #[prost(uint32, optional, tag = "3")]
14058        pub target_buffer: ::core::option::Option<u32>,
14059        /// Sending the chunk data over the wire. Used for transports that don't
14060        /// support shared memory (e.g. vsock or TCP sockets). In the default case
14061        /// (tracing protocol over a Unix socket), this field is not used and tracing
14062        /// data is stored in the shmem buffer and referenced by the fields above.
14063        /// See |use_shemem_emulation| in the codebase for reference.
14064        #[prost(bytes = "vec", optional, tag = "4")]
14065        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14066        /// Set to true when scraping data in shmem emulation (aka commits-over-ipc)
14067        /// AND the chunk was still in kChunkBeingWritten. This is necessary because
14068        /// in emulation mode, the service cannot tell whether this is a complete
14069        /// chunk coming from a regular TraceWriter commit, or a scraped one.
14070        /// This field is only set when `data` is present. It is never set (and is
14071        /// ignored by the service) for the regular case of doing commits over
14072        /// shmem. Introduced in Perfetto v54.
14073        /// See /rfcs/0010-smb-scraping-remote-producers.md .
14074        #[prost(bool, optional, tag = "5")]
14075        pub chunk_incomplete: ::core::option::Option<bool>,
14076    }
14077    /// Used to patch chunks that have already been sent to the service. The chunk
14078    /// might not be in the shared memory buffer anymore as it could have been
14079    /// moved by the service in response to a prior CommitDataRequest.
14080    /// It is perfectly valid to patch a chunk that is being notified in the same
14081    /// message (a chunk can show up both in the |changed_pages| and |patches|
14082    /// field within the same CommitDataRequest message).
14083    /// In other words, |chunks_to_patch| is always processed after
14084    /// |chunks_to_move|.
14085    #[derive(Clone, PartialEq, ::prost::Message)]
14086    pub struct ChunkToPatch {
14087        #[prost(uint32, optional, tag = "1")]
14088        pub target_buffer: ::core::option::Option<u32>,
14089        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
14090        #[prost(uint32, optional, tag = "2")]
14091        pub writer_id: ::core::option::Option<u32>,
14092        #[prost(uint32, optional, tag = "3")]
14093        pub chunk_id: ::core::option::Option<u32>,
14094        /// List of patches to apply to the given chunk.
14095        #[prost(message, repeated, tag = "4")]
14096        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
14097        /// When true more patches will follow in future requests and the chunk
14098        /// should be still considered as patch-pending. When false the chunk becomes
14099        /// eligible for reading.
14100        #[prost(bool, optional, tag = "5")]
14101        pub has_more_patches: ::core::option::Option<bool>,
14102    }
14103    /// Nested message and enum types in `ChunkToPatch`.
14104    pub mod chunk_to_patch {
14105        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14106        pub struct Patch {
14107            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
14108            /// corresponds to the first byte of the first packet (or fragment) in the
14109            /// chunk.
14110            #[prost(uint32, optional, tag = "1")]
14111            pub offset: ::core::option::Option<u32>,
14112            /// Bytes to patch at the given offset.
14113            #[prost(bytes = "vec", optional, tag = "2")]
14114            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14115        }
14116    }
14117}
14118/// Arguments for rpc InitializeConnection().
14119#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14120pub struct InitializeConnectionRequest {
14121    /// Optional. Provides a hint to the tracing service about the suggested size
14122    /// of the shared memory buffer pages. The service is not required to respect
14123    /// this if it has already another value in the configuration or if the hint
14124    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
14125    /// considerations in shared_memory_abi.h.
14126    #[prost(uint32, optional, tag = "1")]
14127    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
14128    /// Optional. Provides a hint to the tracing service about the suggested size
14129    /// of the shared memory buffer. The service is not required to respect this
14130    /// and might return a smaller buffer.
14131    #[prost(uint32, optional, tag = "2")]
14132    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
14133    /// Required to match the producer config set by the service to the correct
14134    /// producer.
14135    #[prost(string, optional, tag = "3")]
14136    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
14137    /// If provided, overrides the service's SMB scraping setting for the producer.
14138    #[prost(
14139        enumeration = "initialize_connection_request::ProducerSmbScrapingMode",
14140        optional,
14141        tag = "4"
14142    )]
14143    pub smb_scraping_mode: ::core::option::Option<i32>,
14144    /// Since Android R, this request can also transport an FD for the producer's
14145    /// shared memory buffer, if allocated by the producer (e.g. for startup
14146    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
14147    /// field, and describes the SMB's page size. Note that the service may not
14148    /// accept this SMB (e.g. because it is too old or its size / page size are
14149    /// invalid) and instead allocate a new SMB which is provided in the
14150    /// SetupTracing response. See TracingService::ConnectProducer() and
14151    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
14152    #[prost(bool, optional, tag = "6")]
14153    pub producer_provided_shmem: ::core::option::Option<bool>,
14154    /// The version of the client library used by the producer.
14155    /// This is a human readable string with and its format varies depending on
14156    /// the build system that is used to build the code and the repo (standalone
14157    /// vs AOSP). This is intended for human debugging only.
14158    #[prost(string, optional, tag = "8")]
14159    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
14160    /// On Windows, when producer_provided_shmem = true, the client creates a named
14161    /// SHM region and passes the name (an unguessable token) back to the service.
14162    /// Introduced in v13.
14163    #[prost(string, optional, tag = "7")]
14164    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
14165}
14166/// Nested message and enum types in `InitializeConnectionRequest`.
14167pub mod initialize_connection_request {
14168    #[derive(
14169        Clone,
14170        Copy,
14171        Debug,
14172        PartialEq,
14173        Eq,
14174        Hash,
14175        PartialOrd,
14176        Ord,
14177        ::prost::Enumeration
14178    )]
14179    #[repr(i32)]
14180    pub enum ProducerSmbScrapingMode {
14181        /// Use the service's default setting for SMB scraping.
14182        SmbScrapingUnspecified = 0,
14183        /// Enable scraping of uncommitted chunks from the producer's shared memory
14184        /// buffer.
14185        SmbScrapingEnabled = 1,
14186        /// Disable scraping of uncommitted chunks from the producer's shared memory
14187        /// buffer.
14188        SmbScrapingDisabled = 2,
14189    }
14190    impl ProducerSmbScrapingMode {
14191        /// String value of the enum field names used in the ProtoBuf definition.
14192        ///
14193        /// The values are not transformed in any way and thus are considered stable
14194        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14195        pub fn as_str_name(&self) -> &'static str {
14196            match self {
14197                Self::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
14198                Self::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
14199                Self::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
14200            }
14201        }
14202        /// Creates an enum from field names used in the ProtoBuf definition.
14203        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14204            match value {
14205                "SMB_SCRAPING_UNSPECIFIED" => Some(Self::SmbScrapingUnspecified),
14206                "SMB_SCRAPING_ENABLED" => Some(Self::SmbScrapingEnabled),
14207                "SMB_SCRAPING_DISABLED" => Some(Self::SmbScrapingDisabled),
14208                _ => None,
14209            }
14210        }
14211    }
14212}
14213#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14214pub struct InitializeConnectionResponse {
14215    /// Indicates whether the service accepted the SMB provided by the producer in
14216    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
14217    /// will provided by the service via the SetupTracing async command.
14218    #[prost(bool, optional, tag = "1")]
14219    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
14220    /// Indicates to the producer that the service allows direct SMB patching of
14221    /// chunks that have not yet been committed to it.
14222    /// This field has been introduced in Android S.
14223    #[prost(bool, optional, tag = "2")]
14224    pub direct_smb_patching_supported: ::core::option::Option<bool>,
14225    /// Indicates whether the service would like to use SMB emulation for the
14226    /// connection, and request the client to send chunk data over the socket e.g.
14227    /// for remote connection from a VM guest.
14228    #[prost(bool, optional, tag = "3")]
14229    pub use_shmem_emulation: ::core::option::Option<bool>,
14230}
14231#[derive(Clone, PartialEq, ::prost::Message)]
14232pub struct RegisterDataSourceRequest {
14233    #[prost(message, optional, tag = "1")]
14234    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
14235}
14236#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14237pub struct RegisterDataSourceResponse {
14238    /// Only set in case of errors, when |data_source_id| == 0.
14239    #[prost(string, optional, tag = "1")]
14240    pub error: ::core::option::Option<::prost::alloc::string::String>,
14241}
14242#[derive(Clone, PartialEq, ::prost::Message)]
14243pub struct UpdateDataSourceRequest {
14244    /// The new data_source_descriptor.{id, name} must match {id, name} of a
14245    /// data source previously registered via RegisterDataSource().
14246    #[prost(message, optional, tag = "1")]
14247    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
14248}
14249#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14250pub struct UpdateDataSourceResponse {}
14251#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14252pub struct UnregisterDataSourceRequest {
14253    /// The name of the data source to unregister, as previously passed in
14254    /// |RegisterDataSourceRequest.name|.
14255    #[prost(string, optional, tag = "1")]
14256    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
14257}
14258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14259pub struct UnregisterDataSourceResponse {}
14260#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14261pub struct RegisterTraceWriterRequest {
14262    /// The ID of a producer's trace writer.
14263    #[prost(uint32, optional, tag = "1")]
14264    pub trace_writer_id: ::core::option::Option<u32>,
14265    /// The ID of the target buffer that the trace writer commits its chunks to.
14266    #[prost(uint32, optional, tag = "2")]
14267    pub target_buffer: ::core::option::Option<u32>,
14268}
14269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14270pub struct RegisterTraceWriterResponse {}
14271#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14272pub struct UnregisterTraceWriterRequest {
14273    /// The ID of a producer's trace writer.
14274    #[prost(uint32, optional, tag = "1")]
14275    pub trace_writer_id: ::core::option::Option<u32>,
14276}
14277#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14278pub struct UnregisterTraceWriterResponse {}
14279#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14280pub struct CommitDataResponse {}
14281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14282pub struct NotifyDataSourceStartedRequest {
14283    /// ID of the data source that has successfully started.
14284    #[prost(uint64, optional, tag = "1")]
14285    pub data_source_id: ::core::option::Option<u64>,
14286}
14287#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14288pub struct NotifyDataSourceStartedResponse {}
14289#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14290pub struct NotifyDataSourceStoppedRequest {
14291    /// ID of the data source that has successfully stopped.
14292    #[prost(uint64, optional, tag = "1")]
14293    pub data_source_id: ::core::option::Option<u64>,
14294}
14295#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14296pub struct NotifyDataSourceStoppedResponse {}
14297#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14298pub struct ActivateTriggersRequest {
14299    #[prost(string, repeated, tag = "1")]
14300    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
14301}
14302#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14303pub struct ActivateTriggersResponse {}
14304#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14305pub struct GetAsyncCommandRequest {}
14306#[derive(Clone, PartialEq, ::prost::Message)]
14307pub struct GetAsyncCommandResponse {
14308    /// Next id: 8.
14309    #[prost(oneof = "get_async_command_response::Cmd", tags = "3, 6, 1, 2, 5, 7")]
14310    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
14311}
14312/// Nested message and enum types in `GetAsyncCommandResponse`.
14313pub mod get_async_command_response {
14314    /// Called after SetupTracing and before StartDataSource.
14315    /// This message was introduced in Android Q.
14316    #[derive(Clone, PartialEq, ::prost::Message)]
14317    pub struct SetupDataSource {
14318        #[prost(uint64, optional, tag = "1")]
14319        pub new_instance_id: ::core::option::Option<u64>,
14320        #[prost(message, optional, tag = "2")]
14321        pub config: ::core::option::Option<super::DataSourceConfig>,
14322    }
14323    #[derive(Clone, PartialEq, ::prost::Message)]
14324    pub struct StartDataSource {
14325        #[prost(uint64, optional, tag = "1")]
14326        pub new_instance_id: ::core::option::Option<u64>,
14327        /// For backwards compat reasons (with Android P), the config passed here
14328        /// is identical to the one passed to SetupDataSource.config.
14329        #[prost(message, optional, tag = "2")]
14330        pub config: ::core::option::Option<super::DataSourceConfig>,
14331    }
14332    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14333    pub struct StopDataSource {
14334        #[prost(uint64, optional, tag = "1")]
14335        pub instance_id: ::core::option::Option<u64>,
14336    }
14337    /// On Android/Linux/Mac this message also transports the file descriptor for
14338    /// the shared memory buffer (not a proto field).
14339    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14340    pub struct SetupTracing {
14341        #[prost(uint32, optional, tag = "1")]
14342        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
14343        /// On Windows, instead, we pass the name (an unguessable token) of a shared
14344        /// memory region that can be attached by the other process by name.
14345        /// Introduced in v13.
14346        #[prost(string, optional, tag = "2")]
14347        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
14348    }
14349    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14350    pub struct Flush {
14351        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
14352        /// sources to flush.
14353        #[prost(uint64, repeated, packed = "false", tag = "1")]
14354        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
14355        /// A monotonic counter generated by the service. The producer is simply
14356        /// expected to copy this value back into the CommitDataRequest, so the
14357        /// service can tell when the data for this flush has been committed.
14358        #[prost(uint64, optional, tag = "2")]
14359        pub request_id: ::core::option::Option<u64>,
14360        /// More details such as flush reason and originator. Introduced in v38 / V.
14361        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
14362        #[prost(uint64, optional, tag = "3")]
14363        pub flags: ::core::option::Option<u64>,
14364    }
14365    /// Instructs the given data sources to stop referring to any trace contents
14366    /// emitted so far. Sent only to active data sources that set
14367    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
14368    ///
14369    /// Added to perfetto tree in May 2019.
14370    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14371    pub struct ClearIncrementalState {
14372        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
14373        /// sources that should clear their incremental state.
14374        #[prost(uint64, repeated, packed = "false", tag = "1")]
14375        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
14376    }
14377    /// Next id: 8.
14378    #[derive(Clone, PartialEq, ::prost::Oneof)]
14379    pub enum Cmd {
14380        #[prost(message, tag = "3")]
14381        SetupTracing(SetupTracing),
14382        #[prost(message, tag = "6")]
14383        SetupDataSource(SetupDataSource),
14384        #[prost(message, tag = "1")]
14385        StartDataSource(StartDataSource),
14386        #[prost(message, tag = "2")]
14387        StopDataSource(StopDataSource),
14388        /// id == 4 was teardown_tracing, never implemented.
14389        #[prost(message, tag = "5")]
14390        Flush(Flush),
14391        #[prost(message, tag = "7")]
14392        ClearIncrementalState(ClearIncrementalState),
14393    }
14394}
14395/// Arguments for rpc Sync().
14396#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14397pub struct SyncRequest {}
14398#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14399pub struct SyncResponse {}
14400#[derive(Clone, PartialEq, ::prost::Message)]
14401pub struct IpcFrame {
14402    /// The client is expected to send requests with monotonically increasing
14403    /// request_id. The host will match the request_id sent from the client.
14404    /// In the case of a Streaming response (has_more = true) the host will send
14405    /// several InvokeMethodReply with the same request_id.
14406    #[prost(uint64, optional, tag = "2")]
14407    pub request_id: ::core::option::Option<u64>,
14408    /// Used only in unittests to generate a parsable message of arbitrary size.
14409    #[prost(bytes = "vec", repeated, tag = "1")]
14410    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
14411    #[prost(oneof = "ipc_frame::Msg", tags = "3, 4, 5, 6, 7, 8")]
14412    pub msg: ::core::option::Option<ipc_frame::Msg>,
14413}
14414/// Nested message and enum types in `IPCFrame`.
14415pub mod ipc_frame {
14416    /// Client -> Host.
14417    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14418    pub struct BindService {
14419        #[prost(string, optional, tag = "1")]
14420        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
14421    }
14422    /// Host -> Client.
14423    #[derive(Clone, PartialEq, ::prost::Message)]
14424    pub struct BindServiceReply {
14425        #[prost(bool, optional, tag = "1")]
14426        pub success: ::core::option::Option<bool>,
14427        #[prost(uint32, optional, tag = "2")]
14428        pub service_id: ::core::option::Option<u32>,
14429        #[prost(message, repeated, tag = "3")]
14430        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
14431    }
14432    /// Nested message and enum types in `BindServiceReply`.
14433    pub mod bind_service_reply {
14434        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14435        pub struct MethodInfo {
14436            #[prost(uint32, optional, tag = "1")]
14437            pub id: ::core::option::Option<u32>,
14438            #[prost(string, optional, tag = "2")]
14439            pub name: ::core::option::Option<::prost::alloc::string::String>,
14440        }
14441    }
14442    /// Client -> Host.
14443    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14444    pub struct InvokeMethod {
14445        /// BindServiceReply.id.
14446        #[prost(uint32, optional, tag = "1")]
14447        pub service_id: ::core::option::Option<u32>,
14448        /// BindServiceReply.method.id.
14449        #[prost(uint32, optional, tag = "2")]
14450        pub method_id: ::core::option::Option<u32>,
14451        /// Proto-encoded request argument.
14452        #[prost(bytes = "vec", optional, tag = "3")]
14453        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14454        /// When true the client specifies that a reply is not needed. The use case
14455        /// is a method with an empty, where the client doesn't care about the
14456        /// success/failure of the method invocation and rather prefers avoiding the
14457        /// IPC roundtrip + context switch associated with the reply.
14458        #[prost(bool, optional, tag = "4")]
14459        pub drop_reply: ::core::option::Option<bool>,
14460    }
14461    /// Host -> Client.
14462    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14463    pub struct InvokeMethodReply {
14464        #[prost(bool, optional, tag = "1")]
14465        pub success: ::core::option::Option<bool>,
14466        /// only for streaming RPCs.
14467        #[prost(bool, optional, tag = "2")]
14468        pub has_more: ::core::option::Option<bool>,
14469        /// proto-encoded response value.
14470        #[prost(bytes = "vec", optional, tag = "3")]
14471        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14472    }
14473    /// Host -> Client.
14474    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14475    pub struct RequestError {
14476        #[prost(string, optional, tag = "1")]
14477        pub error: ::core::option::Option<::prost::alloc::string::String>,
14478    }
14479    /// Client (relay service) -> Host. This is generated by the relay service to
14480    /// fill the producer identity in the guest. This message is sent to the host
14481    /// service *before* any IPCFrame is from a local producer is relayed. This is
14482    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
14483    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
14484    /// uses instead the SO_PEERCRED.
14485    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14486    pub struct SetPeerIdentity {
14487        /// The UID and PID of the producer process.
14488        #[prost(int32, optional, tag = "1")]
14489        pub pid: ::core::option::Option<i32>,
14490        #[prost(int32, optional, tag = "2")]
14491        pub uid: ::core::option::Option<i32>,
14492        /// The hint for the tracing service to infer the machine ID. This field
14493        /// should satisfy the requriement that different machines should have
14494        /// different values. In practice, this filed contains the Linux kernel
14495        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
14496        /// isn't available.
14497        #[prost(string, optional, tag = "3")]
14498        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
14499        /// Human-readable name associated to the producer's machine. Provides the
14500        /// tracing service a new dimension to filter data sources on. Given the
14501        /// perfetto machine name is provided by users, there is no expectation of
14502        /// uniqueness across machines in a tracing session.
14503        #[prost(string, optional, tag = "4")]
14504        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
14505    }
14506    #[derive(Clone, PartialEq, ::prost::Oneof)]
14507    pub enum Msg {
14508        #[prost(message, tag = "3")]
14509        MsgBindService(BindService),
14510        #[prost(message, tag = "4")]
14511        MsgBindServiceReply(BindServiceReply),
14512        #[prost(message, tag = "5")]
14513        MsgInvokeMethod(InvokeMethod),
14514        #[prost(message, tag = "6")]
14515        MsgInvokeMethodReply(InvokeMethodReply),
14516        #[prost(message, tag = "7")]
14517        MsgRequestError(RequestError),
14518        #[prost(message, tag = "8")]
14519        SetPeerIdentity(SetPeerIdentity),
14520    }
14521}