google_cloud_rust_raw/api/
distribution.rs

1// This file is generated by rust-protobuf 2.28.0. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![allow(unused_attributes)]
9#![cfg_attr(rustfmt, rustfmt::skip)]
10
11#![allow(box_pointers)]
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `google/api/distribution.proto`
21
22/// Generated files are compatible only with the same version
23/// of protobuf runtime.
24// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0;
25
26#[derive(PartialEq,Clone,Default)]
27pub struct Distribution {
28    // message fields
29    pub count: i64,
30    pub mean: f64,
31    pub sum_of_squared_deviation: f64,
32    pub range: ::protobuf::SingularPtrField<Distribution_Range>,
33    pub bucket_options: ::protobuf::SingularPtrField<Distribution_BucketOptions>,
34    pub bucket_counts: ::std::vec::Vec<i64>,
35    pub exemplars: ::protobuf::RepeatedField<Distribution_Exemplar>,
36    // special fields
37    pub unknown_fields: ::protobuf::UnknownFields,
38    pub cached_size: ::protobuf::CachedSize,
39}
40
41impl<'a> ::std::default::Default for &'a Distribution {
42    fn default() -> &'a Distribution {
43        <Distribution as ::protobuf::Message>::default_instance()
44    }
45}
46
47impl Distribution {
48    pub fn new() -> Distribution {
49        ::std::default::Default::default()
50    }
51
52    // int64 count = 1;
53
54
55    pub fn get_count(&self) -> i64 {
56        self.count
57    }
58    pub fn clear_count(&mut self) {
59        self.count = 0;
60    }
61
62    // Param is passed by value, moved
63    pub fn set_count(&mut self, v: i64) {
64        self.count = v;
65    }
66
67    // double mean = 2;
68
69
70    pub fn get_mean(&self) -> f64 {
71        self.mean
72    }
73    pub fn clear_mean(&mut self) {
74        self.mean = 0.;
75    }
76
77    // Param is passed by value, moved
78    pub fn set_mean(&mut self, v: f64) {
79        self.mean = v;
80    }
81
82    // double sum_of_squared_deviation = 3;
83
84
85    pub fn get_sum_of_squared_deviation(&self) -> f64 {
86        self.sum_of_squared_deviation
87    }
88    pub fn clear_sum_of_squared_deviation(&mut self) {
89        self.sum_of_squared_deviation = 0.;
90    }
91
92    // Param is passed by value, moved
93    pub fn set_sum_of_squared_deviation(&mut self, v: f64) {
94        self.sum_of_squared_deviation = v;
95    }
96
97    // .google.api.Distribution.Range range = 4;
98
99
100    pub fn get_range(&self) -> &Distribution_Range {
101        self.range.as_ref().unwrap_or_else(|| <Distribution_Range as ::protobuf::Message>::default_instance())
102    }
103    pub fn clear_range(&mut self) {
104        self.range.clear();
105    }
106
107    pub fn has_range(&self) -> bool {
108        self.range.is_some()
109    }
110
111    // Param is passed by value, moved
112    pub fn set_range(&mut self, v: Distribution_Range) {
113        self.range = ::protobuf::SingularPtrField::some(v);
114    }
115
116    // Mutable pointer to the field.
117    // If field is not initialized, it is initialized with default value first.
118    pub fn mut_range(&mut self) -> &mut Distribution_Range {
119        if self.range.is_none() {
120            self.range.set_default();
121        }
122        self.range.as_mut().unwrap()
123    }
124
125    // Take field
126    pub fn take_range(&mut self) -> Distribution_Range {
127        self.range.take().unwrap_or_else(|| Distribution_Range::new())
128    }
129
130    // .google.api.Distribution.BucketOptions bucket_options = 6;
131
132
133    pub fn get_bucket_options(&self) -> &Distribution_BucketOptions {
134        self.bucket_options.as_ref().unwrap_or_else(|| <Distribution_BucketOptions as ::protobuf::Message>::default_instance())
135    }
136    pub fn clear_bucket_options(&mut self) {
137        self.bucket_options.clear();
138    }
139
140    pub fn has_bucket_options(&self) -> bool {
141        self.bucket_options.is_some()
142    }
143
144    // Param is passed by value, moved
145    pub fn set_bucket_options(&mut self, v: Distribution_BucketOptions) {
146        self.bucket_options = ::protobuf::SingularPtrField::some(v);
147    }
148
149    // Mutable pointer to the field.
150    // If field is not initialized, it is initialized with default value first.
151    pub fn mut_bucket_options(&mut self) -> &mut Distribution_BucketOptions {
152        if self.bucket_options.is_none() {
153            self.bucket_options.set_default();
154        }
155        self.bucket_options.as_mut().unwrap()
156    }
157
158    // Take field
159    pub fn take_bucket_options(&mut self) -> Distribution_BucketOptions {
160        self.bucket_options.take().unwrap_or_else(|| Distribution_BucketOptions::new())
161    }
162
163    // repeated int64 bucket_counts = 7;
164
165
166    pub fn get_bucket_counts(&self) -> &[i64] {
167        &self.bucket_counts
168    }
169    pub fn clear_bucket_counts(&mut self) {
170        self.bucket_counts.clear();
171    }
172
173    // Param is passed by value, moved
174    pub fn set_bucket_counts(&mut self, v: ::std::vec::Vec<i64>) {
175        self.bucket_counts = v;
176    }
177
178    // Mutable pointer to the field.
179    pub fn mut_bucket_counts(&mut self) -> &mut ::std::vec::Vec<i64> {
180        &mut self.bucket_counts
181    }
182
183    // Take field
184    pub fn take_bucket_counts(&mut self) -> ::std::vec::Vec<i64> {
185        ::std::mem::replace(&mut self.bucket_counts, ::std::vec::Vec::new())
186    }
187
188    // repeated .google.api.Distribution.Exemplar exemplars = 10;
189
190
191    pub fn get_exemplars(&self) -> &[Distribution_Exemplar] {
192        &self.exemplars
193    }
194    pub fn clear_exemplars(&mut self) {
195        self.exemplars.clear();
196    }
197
198    // Param is passed by value, moved
199    pub fn set_exemplars(&mut self, v: ::protobuf::RepeatedField<Distribution_Exemplar>) {
200        self.exemplars = v;
201    }
202
203    // Mutable pointer to the field.
204    pub fn mut_exemplars(&mut self) -> &mut ::protobuf::RepeatedField<Distribution_Exemplar> {
205        &mut self.exemplars
206    }
207
208    // Take field
209    pub fn take_exemplars(&mut self) -> ::protobuf::RepeatedField<Distribution_Exemplar> {
210        ::std::mem::replace(&mut self.exemplars, ::protobuf::RepeatedField::new())
211    }
212}
213
214impl ::protobuf::Message for Distribution {
215    fn is_initialized(&self) -> bool {
216        for v in &self.range {
217            if !v.is_initialized() {
218                return false;
219            }
220        };
221        for v in &self.bucket_options {
222            if !v.is_initialized() {
223                return false;
224            }
225        };
226        for v in &self.exemplars {
227            if !v.is_initialized() {
228                return false;
229            }
230        };
231        true
232    }
233
234    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
235        while !is.eof()? {
236            let (field_number, wire_type) = is.read_tag_unpack()?;
237            match field_number {
238                1 => {
239                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
240                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
241                    }
242                    let tmp = is.read_int64()?;
243                    self.count = tmp;
244                },
245                2 => {
246                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
247                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
248                    }
249                    let tmp = is.read_double()?;
250                    self.mean = tmp;
251                },
252                3 => {
253                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
254                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
255                    }
256                    let tmp = is.read_double()?;
257                    self.sum_of_squared_deviation = tmp;
258                },
259                4 => {
260                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.range)?;
261                },
262                6 => {
263                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.bucket_options)?;
264                },
265                7 => {
266                    ::protobuf::rt::read_repeated_int64_into(wire_type, is, &mut self.bucket_counts)?;
267                },
268                10 => {
269                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.exemplars)?;
270                },
271                _ => {
272                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
273                },
274            };
275        }
276        ::std::result::Result::Ok(())
277    }
278
279    // Compute sizes of nested messages
280    #[allow(unused_variables)]
281    fn compute_size(&self) -> u32 {
282        let mut my_size = 0;
283        if self.count != 0 {
284            my_size += ::protobuf::rt::value_size(1, self.count, ::protobuf::wire_format::WireTypeVarint);
285        }
286        if self.mean != 0. {
287            my_size += 9;
288        }
289        if self.sum_of_squared_deviation != 0. {
290            my_size += 9;
291        }
292        if let Some(ref v) = self.range.as_ref() {
293            let len = v.compute_size();
294            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
295        }
296        if let Some(ref v) = self.bucket_options.as_ref() {
297            let len = v.compute_size();
298            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
299        }
300        for value in &self.bucket_counts {
301            my_size += ::protobuf::rt::value_size(7, *value, ::protobuf::wire_format::WireTypeVarint);
302        };
303        for value in &self.exemplars {
304            let len = value.compute_size();
305            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
306        };
307        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
308        self.cached_size.set(my_size);
309        my_size
310    }
311
312    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
313        if self.count != 0 {
314            os.write_int64(1, self.count)?;
315        }
316        if self.mean != 0. {
317            os.write_double(2, self.mean)?;
318        }
319        if self.sum_of_squared_deviation != 0. {
320            os.write_double(3, self.sum_of_squared_deviation)?;
321        }
322        if let Some(ref v) = self.range.as_ref() {
323            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
324            os.write_raw_varint32(v.get_cached_size())?;
325            v.write_to_with_cached_sizes(os)?;
326        }
327        if let Some(ref v) = self.bucket_options.as_ref() {
328            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
329            os.write_raw_varint32(v.get_cached_size())?;
330            v.write_to_with_cached_sizes(os)?;
331        }
332        for v in &self.bucket_counts {
333            os.write_int64(7, *v)?;
334        };
335        for v in &self.exemplars {
336            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
337            os.write_raw_varint32(v.get_cached_size())?;
338            v.write_to_with_cached_sizes(os)?;
339        };
340        os.write_unknown_fields(self.get_unknown_fields())?;
341        ::std::result::Result::Ok(())
342    }
343
344    fn get_cached_size(&self) -> u32 {
345        self.cached_size.get()
346    }
347
348    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
349        &self.unknown_fields
350    }
351
352    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
353        &mut self.unknown_fields
354    }
355
356    fn as_any(&self) -> &dyn (::std::any::Any) {
357        self as &dyn (::std::any::Any)
358    }
359    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
360        self as &mut dyn (::std::any::Any)
361    }
362    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
363        self
364    }
365
366    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
367        Self::descriptor_static()
368    }
369
370    fn new() -> Distribution {
371        Distribution::new()
372    }
373
374    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
375        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
376        descriptor.get(|| {
377            let mut fields = ::std::vec::Vec::new();
378            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
379                "count",
380                |m: &Distribution| { &m.count },
381                |m: &mut Distribution| { &mut m.count },
382            ));
383            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
384                "mean",
385                |m: &Distribution| { &m.mean },
386                |m: &mut Distribution| { &mut m.mean },
387            ));
388            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
389                "sum_of_squared_deviation",
390                |m: &Distribution| { &m.sum_of_squared_deviation },
391                |m: &mut Distribution| { &mut m.sum_of_squared_deviation },
392            ));
393            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Distribution_Range>>(
394                "range",
395                |m: &Distribution| { &m.range },
396                |m: &mut Distribution| { &mut m.range },
397            ));
398            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Distribution_BucketOptions>>(
399                "bucket_options",
400                |m: &Distribution| { &m.bucket_options },
401                |m: &mut Distribution| { &mut m.bucket_options },
402            ));
403            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
404                "bucket_counts",
405                |m: &Distribution| { &m.bucket_counts },
406                |m: &mut Distribution| { &mut m.bucket_counts },
407            ));
408            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Distribution_Exemplar>>(
409                "exemplars",
410                |m: &Distribution| { &m.exemplars },
411                |m: &mut Distribution| { &mut m.exemplars },
412            ));
413            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution>(
414                "Distribution",
415                fields,
416                file_descriptor_proto()
417            )
418        })
419    }
420
421    fn default_instance() -> &'static Distribution {
422        static instance: ::protobuf::rt::LazyV2<Distribution> = ::protobuf::rt::LazyV2::INIT;
423        instance.get(Distribution::new)
424    }
425}
426
427impl ::protobuf::Clear for Distribution {
428    fn clear(&mut self) {
429        self.count = 0;
430        self.mean = 0.;
431        self.sum_of_squared_deviation = 0.;
432        self.range.clear();
433        self.bucket_options.clear();
434        self.bucket_counts.clear();
435        self.exemplars.clear();
436        self.unknown_fields.clear();
437    }
438}
439
440impl ::std::fmt::Debug for Distribution {
441    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
442        ::protobuf::text_format::fmt(self, f)
443    }
444}
445
446impl ::protobuf::reflect::ProtobufValue for Distribution {
447    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
448        ::protobuf::reflect::ReflectValueRef::Message(self)
449    }
450}
451
452#[derive(PartialEq,Clone,Default)]
453pub struct Distribution_Range {
454    // message fields
455    pub min: f64,
456    pub max: f64,
457    // special fields
458    pub unknown_fields: ::protobuf::UnknownFields,
459    pub cached_size: ::protobuf::CachedSize,
460}
461
462impl<'a> ::std::default::Default for &'a Distribution_Range {
463    fn default() -> &'a Distribution_Range {
464        <Distribution_Range as ::protobuf::Message>::default_instance()
465    }
466}
467
468impl Distribution_Range {
469    pub fn new() -> Distribution_Range {
470        ::std::default::Default::default()
471    }
472
473    // double min = 1;
474
475
476    pub fn get_min(&self) -> f64 {
477        self.min
478    }
479    pub fn clear_min(&mut self) {
480        self.min = 0.;
481    }
482
483    // Param is passed by value, moved
484    pub fn set_min(&mut self, v: f64) {
485        self.min = v;
486    }
487
488    // double max = 2;
489
490
491    pub fn get_max(&self) -> f64 {
492        self.max
493    }
494    pub fn clear_max(&mut self) {
495        self.max = 0.;
496    }
497
498    // Param is passed by value, moved
499    pub fn set_max(&mut self, v: f64) {
500        self.max = v;
501    }
502}
503
504impl ::protobuf::Message for Distribution_Range {
505    fn is_initialized(&self) -> bool {
506        true
507    }
508
509    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
510        while !is.eof()? {
511            let (field_number, wire_type) = is.read_tag_unpack()?;
512            match field_number {
513                1 => {
514                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
515                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
516                    }
517                    let tmp = is.read_double()?;
518                    self.min = tmp;
519                },
520                2 => {
521                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
522                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
523                    }
524                    let tmp = is.read_double()?;
525                    self.max = tmp;
526                },
527                _ => {
528                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
529                },
530            };
531        }
532        ::std::result::Result::Ok(())
533    }
534
535    // Compute sizes of nested messages
536    #[allow(unused_variables)]
537    fn compute_size(&self) -> u32 {
538        let mut my_size = 0;
539        if self.min != 0. {
540            my_size += 9;
541        }
542        if self.max != 0. {
543            my_size += 9;
544        }
545        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
546        self.cached_size.set(my_size);
547        my_size
548    }
549
550    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
551        if self.min != 0. {
552            os.write_double(1, self.min)?;
553        }
554        if self.max != 0. {
555            os.write_double(2, self.max)?;
556        }
557        os.write_unknown_fields(self.get_unknown_fields())?;
558        ::std::result::Result::Ok(())
559    }
560
561    fn get_cached_size(&self) -> u32 {
562        self.cached_size.get()
563    }
564
565    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
566        &self.unknown_fields
567    }
568
569    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
570        &mut self.unknown_fields
571    }
572
573    fn as_any(&self) -> &dyn (::std::any::Any) {
574        self as &dyn (::std::any::Any)
575    }
576    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
577        self as &mut dyn (::std::any::Any)
578    }
579    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
580        self
581    }
582
583    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
584        Self::descriptor_static()
585    }
586
587    fn new() -> Distribution_Range {
588        Distribution_Range::new()
589    }
590
591    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
592        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
593        descriptor.get(|| {
594            let mut fields = ::std::vec::Vec::new();
595            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
596                "min",
597                |m: &Distribution_Range| { &m.min },
598                |m: &mut Distribution_Range| { &mut m.min },
599            ));
600            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
601                "max",
602                |m: &Distribution_Range| { &m.max },
603                |m: &mut Distribution_Range| { &mut m.max },
604            ));
605            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_Range>(
606                "Distribution.Range",
607                fields,
608                file_descriptor_proto()
609            )
610        })
611    }
612
613    fn default_instance() -> &'static Distribution_Range {
614        static instance: ::protobuf::rt::LazyV2<Distribution_Range> = ::protobuf::rt::LazyV2::INIT;
615        instance.get(Distribution_Range::new)
616    }
617}
618
619impl ::protobuf::Clear for Distribution_Range {
620    fn clear(&mut self) {
621        self.min = 0.;
622        self.max = 0.;
623        self.unknown_fields.clear();
624    }
625}
626
627impl ::std::fmt::Debug for Distribution_Range {
628    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
629        ::protobuf::text_format::fmt(self, f)
630    }
631}
632
633impl ::protobuf::reflect::ProtobufValue for Distribution_Range {
634    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
635        ::protobuf::reflect::ReflectValueRef::Message(self)
636    }
637}
638
639#[derive(PartialEq,Clone,Default)]
640pub struct Distribution_BucketOptions {
641    // message oneof groups
642    pub options: ::std::option::Option<Distribution_BucketOptions_oneof_options>,
643    // special fields
644    pub unknown_fields: ::protobuf::UnknownFields,
645    pub cached_size: ::protobuf::CachedSize,
646}
647
648impl<'a> ::std::default::Default for &'a Distribution_BucketOptions {
649    fn default() -> &'a Distribution_BucketOptions {
650        <Distribution_BucketOptions as ::protobuf::Message>::default_instance()
651    }
652}
653
654#[derive(Clone,PartialEq,Debug)]
655pub enum Distribution_BucketOptions_oneof_options {
656    linear_buckets(Distribution_BucketOptions_Linear),
657    exponential_buckets(Distribution_BucketOptions_Exponential),
658    explicit_buckets(Distribution_BucketOptions_Explicit),
659}
660
661impl Distribution_BucketOptions {
662    pub fn new() -> Distribution_BucketOptions {
663        ::std::default::Default::default()
664    }
665
666    // .google.api.Distribution.BucketOptions.Linear linear_buckets = 1;
667
668
669    pub fn get_linear_buckets(&self) -> &Distribution_BucketOptions_Linear {
670        match self.options {
671            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(ref v)) => v,
672            _ => <Distribution_BucketOptions_Linear as ::protobuf::Message>::default_instance(),
673        }
674    }
675    pub fn clear_linear_buckets(&mut self) {
676        self.options = ::std::option::Option::None;
677    }
678
679    pub fn has_linear_buckets(&self) -> bool {
680        match self.options {
681            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(..)) => true,
682            _ => false,
683        }
684    }
685
686    // Param is passed by value, moved
687    pub fn set_linear_buckets(&mut self, v: Distribution_BucketOptions_Linear) {
688        self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(v))
689    }
690
691    // Mutable pointer to the field.
692    pub fn mut_linear_buckets(&mut self) -> &mut Distribution_BucketOptions_Linear {
693        if let ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(_)) = self.options {
694        } else {
695            self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(Distribution_BucketOptions_Linear::new()));
696        }
697        match self.options {
698            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(ref mut v)) => v,
699            _ => panic!(),
700        }
701    }
702
703    // Take field
704    pub fn take_linear_buckets(&mut self) -> Distribution_BucketOptions_Linear {
705        if self.has_linear_buckets() {
706            match self.options.take() {
707                ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(v)) => v,
708                _ => panic!(),
709            }
710        } else {
711            Distribution_BucketOptions_Linear::new()
712        }
713    }
714
715    // .google.api.Distribution.BucketOptions.Exponential exponential_buckets = 2;
716
717
718    pub fn get_exponential_buckets(&self) -> &Distribution_BucketOptions_Exponential {
719        match self.options {
720            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(ref v)) => v,
721            _ => <Distribution_BucketOptions_Exponential as ::protobuf::Message>::default_instance(),
722        }
723    }
724    pub fn clear_exponential_buckets(&mut self) {
725        self.options = ::std::option::Option::None;
726    }
727
728    pub fn has_exponential_buckets(&self) -> bool {
729        match self.options {
730            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(..)) => true,
731            _ => false,
732        }
733    }
734
735    // Param is passed by value, moved
736    pub fn set_exponential_buckets(&mut self, v: Distribution_BucketOptions_Exponential) {
737        self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(v))
738    }
739
740    // Mutable pointer to the field.
741    pub fn mut_exponential_buckets(&mut self) -> &mut Distribution_BucketOptions_Exponential {
742        if let ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(_)) = self.options {
743        } else {
744            self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(Distribution_BucketOptions_Exponential::new()));
745        }
746        match self.options {
747            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(ref mut v)) => v,
748            _ => panic!(),
749        }
750    }
751
752    // Take field
753    pub fn take_exponential_buckets(&mut self) -> Distribution_BucketOptions_Exponential {
754        if self.has_exponential_buckets() {
755            match self.options.take() {
756                ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(v)) => v,
757                _ => panic!(),
758            }
759        } else {
760            Distribution_BucketOptions_Exponential::new()
761        }
762    }
763
764    // .google.api.Distribution.BucketOptions.Explicit explicit_buckets = 3;
765
766
767    pub fn get_explicit_buckets(&self) -> &Distribution_BucketOptions_Explicit {
768        match self.options {
769            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(ref v)) => v,
770            _ => <Distribution_BucketOptions_Explicit as ::protobuf::Message>::default_instance(),
771        }
772    }
773    pub fn clear_explicit_buckets(&mut self) {
774        self.options = ::std::option::Option::None;
775    }
776
777    pub fn has_explicit_buckets(&self) -> bool {
778        match self.options {
779            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(..)) => true,
780            _ => false,
781        }
782    }
783
784    // Param is passed by value, moved
785    pub fn set_explicit_buckets(&mut self, v: Distribution_BucketOptions_Explicit) {
786        self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(v))
787    }
788
789    // Mutable pointer to the field.
790    pub fn mut_explicit_buckets(&mut self) -> &mut Distribution_BucketOptions_Explicit {
791        if let ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(_)) = self.options {
792        } else {
793            self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(Distribution_BucketOptions_Explicit::new()));
794        }
795        match self.options {
796            ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(ref mut v)) => v,
797            _ => panic!(),
798        }
799    }
800
801    // Take field
802    pub fn take_explicit_buckets(&mut self) -> Distribution_BucketOptions_Explicit {
803        if self.has_explicit_buckets() {
804            match self.options.take() {
805                ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(v)) => v,
806                _ => panic!(),
807            }
808        } else {
809            Distribution_BucketOptions_Explicit::new()
810        }
811    }
812}
813
814impl ::protobuf::Message for Distribution_BucketOptions {
815    fn is_initialized(&self) -> bool {
816        if let Some(Distribution_BucketOptions_oneof_options::linear_buckets(ref v)) = self.options {
817            if !v.is_initialized() {
818                return false;
819            }
820        }
821        if let Some(Distribution_BucketOptions_oneof_options::exponential_buckets(ref v)) = self.options {
822            if !v.is_initialized() {
823                return false;
824            }
825        }
826        if let Some(Distribution_BucketOptions_oneof_options::explicit_buckets(ref v)) = self.options {
827            if !v.is_initialized() {
828                return false;
829            }
830        }
831        true
832    }
833
834    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
835        while !is.eof()? {
836            let (field_number, wire_type) = is.read_tag_unpack()?;
837            match field_number {
838                1 => {
839                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
840                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
841                    }
842                    self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(is.read_message()?));
843                },
844                2 => {
845                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
846                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
847                    }
848                    self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(is.read_message()?));
849                },
850                3 => {
851                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
852                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
853                    }
854                    self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(is.read_message()?));
855                },
856                _ => {
857                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
858                },
859            };
860        }
861        ::std::result::Result::Ok(())
862    }
863
864    // Compute sizes of nested messages
865    #[allow(unused_variables)]
866    fn compute_size(&self) -> u32 {
867        let mut my_size = 0;
868        if let ::std::option::Option::Some(ref v) = self.options {
869            match v {
870                &Distribution_BucketOptions_oneof_options::linear_buckets(ref v) => {
871                    let len = v.compute_size();
872                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
873                },
874                &Distribution_BucketOptions_oneof_options::exponential_buckets(ref v) => {
875                    let len = v.compute_size();
876                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
877                },
878                &Distribution_BucketOptions_oneof_options::explicit_buckets(ref v) => {
879                    let len = v.compute_size();
880                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
881                },
882            };
883        }
884        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
885        self.cached_size.set(my_size);
886        my_size
887    }
888
889    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
890        if let ::std::option::Option::Some(ref v) = self.options {
891            match v {
892                &Distribution_BucketOptions_oneof_options::linear_buckets(ref v) => {
893                    os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
894                    os.write_raw_varint32(v.get_cached_size())?;
895                    v.write_to_with_cached_sizes(os)?;
896                },
897                &Distribution_BucketOptions_oneof_options::exponential_buckets(ref v) => {
898                    os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
899                    os.write_raw_varint32(v.get_cached_size())?;
900                    v.write_to_with_cached_sizes(os)?;
901                },
902                &Distribution_BucketOptions_oneof_options::explicit_buckets(ref v) => {
903                    os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
904                    os.write_raw_varint32(v.get_cached_size())?;
905                    v.write_to_with_cached_sizes(os)?;
906                },
907            };
908        }
909        os.write_unknown_fields(self.get_unknown_fields())?;
910        ::std::result::Result::Ok(())
911    }
912
913    fn get_cached_size(&self) -> u32 {
914        self.cached_size.get()
915    }
916
917    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
918        &self.unknown_fields
919    }
920
921    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
922        &mut self.unknown_fields
923    }
924
925    fn as_any(&self) -> &dyn (::std::any::Any) {
926        self as &dyn (::std::any::Any)
927    }
928    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
929        self as &mut dyn (::std::any::Any)
930    }
931    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
932        self
933    }
934
935    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
936        Self::descriptor_static()
937    }
938
939    fn new() -> Distribution_BucketOptions {
940        Distribution_BucketOptions::new()
941    }
942
943    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
944        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
945        descriptor.get(|| {
946            let mut fields = ::std::vec::Vec::new();
947            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_BucketOptions_Linear>(
948                "linear_buckets",
949                Distribution_BucketOptions::has_linear_buckets,
950                Distribution_BucketOptions::get_linear_buckets,
951            ));
952            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_BucketOptions_Exponential>(
953                "exponential_buckets",
954                Distribution_BucketOptions::has_exponential_buckets,
955                Distribution_BucketOptions::get_exponential_buckets,
956            ));
957            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_BucketOptions_Explicit>(
958                "explicit_buckets",
959                Distribution_BucketOptions::has_explicit_buckets,
960                Distribution_BucketOptions::get_explicit_buckets,
961            ));
962            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions>(
963                "Distribution.BucketOptions",
964                fields,
965                file_descriptor_proto()
966            )
967        })
968    }
969
970    fn default_instance() -> &'static Distribution_BucketOptions {
971        static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions> = ::protobuf::rt::LazyV2::INIT;
972        instance.get(Distribution_BucketOptions::new)
973    }
974}
975
976impl ::protobuf::Clear for Distribution_BucketOptions {
977    fn clear(&mut self) {
978        self.options = ::std::option::Option::None;
979        self.options = ::std::option::Option::None;
980        self.options = ::std::option::Option::None;
981        self.unknown_fields.clear();
982    }
983}
984
985impl ::std::fmt::Debug for Distribution_BucketOptions {
986    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
987        ::protobuf::text_format::fmt(self, f)
988    }
989}
990
991impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions {
992    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
993        ::protobuf::reflect::ReflectValueRef::Message(self)
994    }
995}
996
997#[derive(PartialEq,Clone,Default)]
998pub struct Distribution_BucketOptions_Linear {
999    // message fields
1000    pub num_finite_buckets: i32,
1001    pub width: f64,
1002    pub offset: f64,
1003    // special fields
1004    pub unknown_fields: ::protobuf::UnknownFields,
1005    pub cached_size: ::protobuf::CachedSize,
1006}
1007
1008impl<'a> ::std::default::Default for &'a Distribution_BucketOptions_Linear {
1009    fn default() -> &'a Distribution_BucketOptions_Linear {
1010        <Distribution_BucketOptions_Linear as ::protobuf::Message>::default_instance()
1011    }
1012}
1013
1014impl Distribution_BucketOptions_Linear {
1015    pub fn new() -> Distribution_BucketOptions_Linear {
1016        ::std::default::Default::default()
1017    }
1018
1019    // int32 num_finite_buckets = 1;
1020
1021
1022    pub fn get_num_finite_buckets(&self) -> i32 {
1023        self.num_finite_buckets
1024    }
1025    pub fn clear_num_finite_buckets(&mut self) {
1026        self.num_finite_buckets = 0;
1027    }
1028
1029    // Param is passed by value, moved
1030    pub fn set_num_finite_buckets(&mut self, v: i32) {
1031        self.num_finite_buckets = v;
1032    }
1033
1034    // double width = 2;
1035
1036
1037    pub fn get_width(&self) -> f64 {
1038        self.width
1039    }
1040    pub fn clear_width(&mut self) {
1041        self.width = 0.;
1042    }
1043
1044    // Param is passed by value, moved
1045    pub fn set_width(&mut self, v: f64) {
1046        self.width = v;
1047    }
1048
1049    // double offset = 3;
1050
1051
1052    pub fn get_offset(&self) -> f64 {
1053        self.offset
1054    }
1055    pub fn clear_offset(&mut self) {
1056        self.offset = 0.;
1057    }
1058
1059    // Param is passed by value, moved
1060    pub fn set_offset(&mut self, v: f64) {
1061        self.offset = v;
1062    }
1063}
1064
1065impl ::protobuf::Message for Distribution_BucketOptions_Linear {
1066    fn is_initialized(&self) -> bool {
1067        true
1068    }
1069
1070    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1071        while !is.eof()? {
1072            let (field_number, wire_type) = is.read_tag_unpack()?;
1073            match field_number {
1074                1 => {
1075                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1076                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1077                    }
1078                    let tmp = is.read_int32()?;
1079                    self.num_finite_buckets = tmp;
1080                },
1081                2 => {
1082                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1083                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1084                    }
1085                    let tmp = is.read_double()?;
1086                    self.width = tmp;
1087                },
1088                3 => {
1089                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1090                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1091                    }
1092                    let tmp = is.read_double()?;
1093                    self.offset = tmp;
1094                },
1095                _ => {
1096                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1097                },
1098            };
1099        }
1100        ::std::result::Result::Ok(())
1101    }
1102
1103    // Compute sizes of nested messages
1104    #[allow(unused_variables)]
1105    fn compute_size(&self) -> u32 {
1106        let mut my_size = 0;
1107        if self.num_finite_buckets != 0 {
1108            my_size += ::protobuf::rt::value_size(1, self.num_finite_buckets, ::protobuf::wire_format::WireTypeVarint);
1109        }
1110        if self.width != 0. {
1111            my_size += 9;
1112        }
1113        if self.offset != 0. {
1114            my_size += 9;
1115        }
1116        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1117        self.cached_size.set(my_size);
1118        my_size
1119    }
1120
1121    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1122        if self.num_finite_buckets != 0 {
1123            os.write_int32(1, self.num_finite_buckets)?;
1124        }
1125        if self.width != 0. {
1126            os.write_double(2, self.width)?;
1127        }
1128        if self.offset != 0. {
1129            os.write_double(3, self.offset)?;
1130        }
1131        os.write_unknown_fields(self.get_unknown_fields())?;
1132        ::std::result::Result::Ok(())
1133    }
1134
1135    fn get_cached_size(&self) -> u32 {
1136        self.cached_size.get()
1137    }
1138
1139    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1140        &self.unknown_fields
1141    }
1142
1143    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1144        &mut self.unknown_fields
1145    }
1146
1147    fn as_any(&self) -> &dyn (::std::any::Any) {
1148        self as &dyn (::std::any::Any)
1149    }
1150    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1151        self as &mut dyn (::std::any::Any)
1152    }
1153    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1154        self
1155    }
1156
1157    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1158        Self::descriptor_static()
1159    }
1160
1161    fn new() -> Distribution_BucketOptions_Linear {
1162        Distribution_BucketOptions_Linear::new()
1163    }
1164
1165    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1166        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1167        descriptor.get(|| {
1168            let mut fields = ::std::vec::Vec::new();
1169            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1170                "num_finite_buckets",
1171                |m: &Distribution_BucketOptions_Linear| { &m.num_finite_buckets },
1172                |m: &mut Distribution_BucketOptions_Linear| { &mut m.num_finite_buckets },
1173            ));
1174            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1175                "width",
1176                |m: &Distribution_BucketOptions_Linear| { &m.width },
1177                |m: &mut Distribution_BucketOptions_Linear| { &mut m.width },
1178            ));
1179            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1180                "offset",
1181                |m: &Distribution_BucketOptions_Linear| { &m.offset },
1182                |m: &mut Distribution_BucketOptions_Linear| { &mut m.offset },
1183            ));
1184            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions_Linear>(
1185                "Distribution.BucketOptions.Linear",
1186                fields,
1187                file_descriptor_proto()
1188            )
1189        })
1190    }
1191
1192    fn default_instance() -> &'static Distribution_BucketOptions_Linear {
1193        static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions_Linear> = ::protobuf::rt::LazyV2::INIT;
1194        instance.get(Distribution_BucketOptions_Linear::new)
1195    }
1196}
1197
1198impl ::protobuf::Clear for Distribution_BucketOptions_Linear {
1199    fn clear(&mut self) {
1200        self.num_finite_buckets = 0;
1201        self.width = 0.;
1202        self.offset = 0.;
1203        self.unknown_fields.clear();
1204    }
1205}
1206
1207impl ::std::fmt::Debug for Distribution_BucketOptions_Linear {
1208    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1209        ::protobuf::text_format::fmt(self, f)
1210    }
1211}
1212
1213impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions_Linear {
1214    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1215        ::protobuf::reflect::ReflectValueRef::Message(self)
1216    }
1217}
1218
1219#[derive(PartialEq,Clone,Default)]
1220pub struct Distribution_BucketOptions_Exponential {
1221    // message fields
1222    pub num_finite_buckets: i32,
1223    pub growth_factor: f64,
1224    pub scale: f64,
1225    // special fields
1226    pub unknown_fields: ::protobuf::UnknownFields,
1227    pub cached_size: ::protobuf::CachedSize,
1228}
1229
1230impl<'a> ::std::default::Default for &'a Distribution_BucketOptions_Exponential {
1231    fn default() -> &'a Distribution_BucketOptions_Exponential {
1232        <Distribution_BucketOptions_Exponential as ::protobuf::Message>::default_instance()
1233    }
1234}
1235
1236impl Distribution_BucketOptions_Exponential {
1237    pub fn new() -> Distribution_BucketOptions_Exponential {
1238        ::std::default::Default::default()
1239    }
1240
1241    // int32 num_finite_buckets = 1;
1242
1243
1244    pub fn get_num_finite_buckets(&self) -> i32 {
1245        self.num_finite_buckets
1246    }
1247    pub fn clear_num_finite_buckets(&mut self) {
1248        self.num_finite_buckets = 0;
1249    }
1250
1251    // Param is passed by value, moved
1252    pub fn set_num_finite_buckets(&mut self, v: i32) {
1253        self.num_finite_buckets = v;
1254    }
1255
1256    // double growth_factor = 2;
1257
1258
1259    pub fn get_growth_factor(&self) -> f64 {
1260        self.growth_factor
1261    }
1262    pub fn clear_growth_factor(&mut self) {
1263        self.growth_factor = 0.;
1264    }
1265
1266    // Param is passed by value, moved
1267    pub fn set_growth_factor(&mut self, v: f64) {
1268        self.growth_factor = v;
1269    }
1270
1271    // double scale = 3;
1272
1273
1274    pub fn get_scale(&self) -> f64 {
1275        self.scale
1276    }
1277    pub fn clear_scale(&mut self) {
1278        self.scale = 0.;
1279    }
1280
1281    // Param is passed by value, moved
1282    pub fn set_scale(&mut self, v: f64) {
1283        self.scale = v;
1284    }
1285}
1286
1287impl ::protobuf::Message for Distribution_BucketOptions_Exponential {
1288    fn is_initialized(&self) -> bool {
1289        true
1290    }
1291
1292    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1293        while !is.eof()? {
1294            let (field_number, wire_type) = is.read_tag_unpack()?;
1295            match field_number {
1296                1 => {
1297                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1298                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1299                    }
1300                    let tmp = is.read_int32()?;
1301                    self.num_finite_buckets = tmp;
1302                },
1303                2 => {
1304                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1305                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1306                    }
1307                    let tmp = is.read_double()?;
1308                    self.growth_factor = tmp;
1309                },
1310                3 => {
1311                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1312                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1313                    }
1314                    let tmp = is.read_double()?;
1315                    self.scale = tmp;
1316                },
1317                _ => {
1318                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1319                },
1320            };
1321        }
1322        ::std::result::Result::Ok(())
1323    }
1324
1325    // Compute sizes of nested messages
1326    #[allow(unused_variables)]
1327    fn compute_size(&self) -> u32 {
1328        let mut my_size = 0;
1329        if self.num_finite_buckets != 0 {
1330            my_size += ::protobuf::rt::value_size(1, self.num_finite_buckets, ::protobuf::wire_format::WireTypeVarint);
1331        }
1332        if self.growth_factor != 0. {
1333            my_size += 9;
1334        }
1335        if self.scale != 0. {
1336            my_size += 9;
1337        }
1338        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1339        self.cached_size.set(my_size);
1340        my_size
1341    }
1342
1343    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1344        if self.num_finite_buckets != 0 {
1345            os.write_int32(1, self.num_finite_buckets)?;
1346        }
1347        if self.growth_factor != 0. {
1348            os.write_double(2, self.growth_factor)?;
1349        }
1350        if self.scale != 0. {
1351            os.write_double(3, self.scale)?;
1352        }
1353        os.write_unknown_fields(self.get_unknown_fields())?;
1354        ::std::result::Result::Ok(())
1355    }
1356
1357    fn get_cached_size(&self) -> u32 {
1358        self.cached_size.get()
1359    }
1360
1361    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1362        &self.unknown_fields
1363    }
1364
1365    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1366        &mut self.unknown_fields
1367    }
1368
1369    fn as_any(&self) -> &dyn (::std::any::Any) {
1370        self as &dyn (::std::any::Any)
1371    }
1372    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1373        self as &mut dyn (::std::any::Any)
1374    }
1375    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1376        self
1377    }
1378
1379    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1380        Self::descriptor_static()
1381    }
1382
1383    fn new() -> Distribution_BucketOptions_Exponential {
1384        Distribution_BucketOptions_Exponential::new()
1385    }
1386
1387    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1388        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1389        descriptor.get(|| {
1390            let mut fields = ::std::vec::Vec::new();
1391            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1392                "num_finite_buckets",
1393                |m: &Distribution_BucketOptions_Exponential| { &m.num_finite_buckets },
1394                |m: &mut Distribution_BucketOptions_Exponential| { &mut m.num_finite_buckets },
1395            ));
1396            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1397                "growth_factor",
1398                |m: &Distribution_BucketOptions_Exponential| { &m.growth_factor },
1399                |m: &mut Distribution_BucketOptions_Exponential| { &mut m.growth_factor },
1400            ));
1401            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1402                "scale",
1403                |m: &Distribution_BucketOptions_Exponential| { &m.scale },
1404                |m: &mut Distribution_BucketOptions_Exponential| { &mut m.scale },
1405            ));
1406            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions_Exponential>(
1407                "Distribution.BucketOptions.Exponential",
1408                fields,
1409                file_descriptor_proto()
1410            )
1411        })
1412    }
1413
1414    fn default_instance() -> &'static Distribution_BucketOptions_Exponential {
1415        static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions_Exponential> = ::protobuf::rt::LazyV2::INIT;
1416        instance.get(Distribution_BucketOptions_Exponential::new)
1417    }
1418}
1419
1420impl ::protobuf::Clear for Distribution_BucketOptions_Exponential {
1421    fn clear(&mut self) {
1422        self.num_finite_buckets = 0;
1423        self.growth_factor = 0.;
1424        self.scale = 0.;
1425        self.unknown_fields.clear();
1426    }
1427}
1428
1429impl ::std::fmt::Debug for Distribution_BucketOptions_Exponential {
1430    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1431        ::protobuf::text_format::fmt(self, f)
1432    }
1433}
1434
1435impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions_Exponential {
1436    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1437        ::protobuf::reflect::ReflectValueRef::Message(self)
1438    }
1439}
1440
1441#[derive(PartialEq,Clone,Default)]
1442pub struct Distribution_BucketOptions_Explicit {
1443    // message fields
1444    pub bounds: ::std::vec::Vec<f64>,
1445    // special fields
1446    pub unknown_fields: ::protobuf::UnknownFields,
1447    pub cached_size: ::protobuf::CachedSize,
1448}
1449
1450impl<'a> ::std::default::Default for &'a Distribution_BucketOptions_Explicit {
1451    fn default() -> &'a Distribution_BucketOptions_Explicit {
1452        <Distribution_BucketOptions_Explicit as ::protobuf::Message>::default_instance()
1453    }
1454}
1455
1456impl Distribution_BucketOptions_Explicit {
1457    pub fn new() -> Distribution_BucketOptions_Explicit {
1458        ::std::default::Default::default()
1459    }
1460
1461    // repeated double bounds = 1;
1462
1463
1464    pub fn get_bounds(&self) -> &[f64] {
1465        &self.bounds
1466    }
1467    pub fn clear_bounds(&mut self) {
1468        self.bounds.clear();
1469    }
1470
1471    // Param is passed by value, moved
1472    pub fn set_bounds(&mut self, v: ::std::vec::Vec<f64>) {
1473        self.bounds = v;
1474    }
1475
1476    // Mutable pointer to the field.
1477    pub fn mut_bounds(&mut self) -> &mut ::std::vec::Vec<f64> {
1478        &mut self.bounds
1479    }
1480
1481    // Take field
1482    pub fn take_bounds(&mut self) -> ::std::vec::Vec<f64> {
1483        ::std::mem::replace(&mut self.bounds, ::std::vec::Vec::new())
1484    }
1485}
1486
1487impl ::protobuf::Message for Distribution_BucketOptions_Explicit {
1488    fn is_initialized(&self) -> bool {
1489        true
1490    }
1491
1492    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1493        while !is.eof()? {
1494            let (field_number, wire_type) = is.read_tag_unpack()?;
1495            match field_number {
1496                1 => {
1497                    ::protobuf::rt::read_repeated_double_into(wire_type, is, &mut self.bounds)?;
1498                },
1499                _ => {
1500                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1501                },
1502            };
1503        }
1504        ::std::result::Result::Ok(())
1505    }
1506
1507    // Compute sizes of nested messages
1508    #[allow(unused_variables)]
1509    fn compute_size(&self) -> u32 {
1510        let mut my_size = 0;
1511        my_size += 9 * self.bounds.len() as u32;
1512        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1513        self.cached_size.set(my_size);
1514        my_size
1515    }
1516
1517    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1518        for v in &self.bounds {
1519            os.write_double(1, *v)?;
1520        };
1521        os.write_unknown_fields(self.get_unknown_fields())?;
1522        ::std::result::Result::Ok(())
1523    }
1524
1525    fn get_cached_size(&self) -> u32 {
1526        self.cached_size.get()
1527    }
1528
1529    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1530        &self.unknown_fields
1531    }
1532
1533    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1534        &mut self.unknown_fields
1535    }
1536
1537    fn as_any(&self) -> &dyn (::std::any::Any) {
1538        self as &dyn (::std::any::Any)
1539    }
1540    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1541        self as &mut dyn (::std::any::Any)
1542    }
1543    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1544        self
1545    }
1546
1547    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1548        Self::descriptor_static()
1549    }
1550
1551    fn new() -> Distribution_BucketOptions_Explicit {
1552        Distribution_BucketOptions_Explicit::new()
1553    }
1554
1555    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1556        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1557        descriptor.get(|| {
1558            let mut fields = ::std::vec::Vec::new();
1559            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1560                "bounds",
1561                |m: &Distribution_BucketOptions_Explicit| { &m.bounds },
1562                |m: &mut Distribution_BucketOptions_Explicit| { &mut m.bounds },
1563            ));
1564            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions_Explicit>(
1565                "Distribution.BucketOptions.Explicit",
1566                fields,
1567                file_descriptor_proto()
1568            )
1569        })
1570    }
1571
1572    fn default_instance() -> &'static Distribution_BucketOptions_Explicit {
1573        static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions_Explicit> = ::protobuf::rt::LazyV2::INIT;
1574        instance.get(Distribution_BucketOptions_Explicit::new)
1575    }
1576}
1577
1578impl ::protobuf::Clear for Distribution_BucketOptions_Explicit {
1579    fn clear(&mut self) {
1580        self.bounds.clear();
1581        self.unknown_fields.clear();
1582    }
1583}
1584
1585impl ::std::fmt::Debug for Distribution_BucketOptions_Explicit {
1586    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1587        ::protobuf::text_format::fmt(self, f)
1588    }
1589}
1590
1591impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions_Explicit {
1592    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1593        ::protobuf::reflect::ReflectValueRef::Message(self)
1594    }
1595}
1596
1597#[derive(PartialEq,Clone,Default)]
1598pub struct Distribution_Exemplar {
1599    // message fields
1600    pub value: f64,
1601    pub timestamp: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
1602    pub attachments: ::protobuf::RepeatedField<::protobuf::well_known_types::Any>,
1603    // special fields
1604    pub unknown_fields: ::protobuf::UnknownFields,
1605    pub cached_size: ::protobuf::CachedSize,
1606}
1607
1608impl<'a> ::std::default::Default for &'a Distribution_Exemplar {
1609    fn default() -> &'a Distribution_Exemplar {
1610        <Distribution_Exemplar as ::protobuf::Message>::default_instance()
1611    }
1612}
1613
1614impl Distribution_Exemplar {
1615    pub fn new() -> Distribution_Exemplar {
1616        ::std::default::Default::default()
1617    }
1618
1619    // double value = 1;
1620
1621
1622    pub fn get_value(&self) -> f64 {
1623        self.value
1624    }
1625    pub fn clear_value(&mut self) {
1626        self.value = 0.;
1627    }
1628
1629    // Param is passed by value, moved
1630    pub fn set_value(&mut self, v: f64) {
1631        self.value = v;
1632    }
1633
1634    // .google.protobuf.Timestamp timestamp = 2;
1635
1636
1637    pub fn get_timestamp(&self) -> &::protobuf::well_known_types::Timestamp {
1638        self.timestamp.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
1639    }
1640    pub fn clear_timestamp(&mut self) {
1641        self.timestamp.clear();
1642    }
1643
1644    pub fn has_timestamp(&self) -> bool {
1645        self.timestamp.is_some()
1646    }
1647
1648    // Param is passed by value, moved
1649    pub fn set_timestamp(&mut self, v: ::protobuf::well_known_types::Timestamp) {
1650        self.timestamp = ::protobuf::SingularPtrField::some(v);
1651    }
1652
1653    // Mutable pointer to the field.
1654    // If field is not initialized, it is initialized with default value first.
1655    pub fn mut_timestamp(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
1656        if self.timestamp.is_none() {
1657            self.timestamp.set_default();
1658        }
1659        self.timestamp.as_mut().unwrap()
1660    }
1661
1662    // Take field
1663    pub fn take_timestamp(&mut self) -> ::protobuf::well_known_types::Timestamp {
1664        self.timestamp.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
1665    }
1666
1667    // repeated .google.protobuf.Any attachments = 3;
1668
1669
1670    pub fn get_attachments(&self) -> &[::protobuf::well_known_types::Any] {
1671        &self.attachments
1672    }
1673    pub fn clear_attachments(&mut self) {
1674        self.attachments.clear();
1675    }
1676
1677    // Param is passed by value, moved
1678    pub fn set_attachments(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::Any>) {
1679        self.attachments = v;
1680    }
1681
1682    // Mutable pointer to the field.
1683    pub fn mut_attachments(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::Any> {
1684        &mut self.attachments
1685    }
1686
1687    // Take field
1688    pub fn take_attachments(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::Any> {
1689        ::std::mem::replace(&mut self.attachments, ::protobuf::RepeatedField::new())
1690    }
1691}
1692
1693impl ::protobuf::Message for Distribution_Exemplar {
1694    fn is_initialized(&self) -> bool {
1695        for v in &self.timestamp {
1696            if !v.is_initialized() {
1697                return false;
1698            }
1699        };
1700        for v in &self.attachments {
1701            if !v.is_initialized() {
1702                return false;
1703            }
1704        };
1705        true
1706    }
1707
1708    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1709        while !is.eof()? {
1710            let (field_number, wire_type) = is.read_tag_unpack()?;
1711            match field_number {
1712                1 => {
1713                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1714                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1715                    }
1716                    let tmp = is.read_double()?;
1717                    self.value = tmp;
1718                },
1719                2 => {
1720                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.timestamp)?;
1721                },
1722                3 => {
1723                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.attachments)?;
1724                },
1725                _ => {
1726                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1727                },
1728            };
1729        }
1730        ::std::result::Result::Ok(())
1731    }
1732
1733    // Compute sizes of nested messages
1734    #[allow(unused_variables)]
1735    fn compute_size(&self) -> u32 {
1736        let mut my_size = 0;
1737        if self.value != 0. {
1738            my_size += 9;
1739        }
1740        if let Some(ref v) = self.timestamp.as_ref() {
1741            let len = v.compute_size();
1742            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1743        }
1744        for value in &self.attachments {
1745            let len = value.compute_size();
1746            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1747        };
1748        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1749        self.cached_size.set(my_size);
1750        my_size
1751    }
1752
1753    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1754        if self.value != 0. {
1755            os.write_double(1, self.value)?;
1756        }
1757        if let Some(ref v) = self.timestamp.as_ref() {
1758            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1759            os.write_raw_varint32(v.get_cached_size())?;
1760            v.write_to_with_cached_sizes(os)?;
1761        }
1762        for v in &self.attachments {
1763            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1764            os.write_raw_varint32(v.get_cached_size())?;
1765            v.write_to_with_cached_sizes(os)?;
1766        };
1767        os.write_unknown_fields(self.get_unknown_fields())?;
1768        ::std::result::Result::Ok(())
1769    }
1770
1771    fn get_cached_size(&self) -> u32 {
1772        self.cached_size.get()
1773    }
1774
1775    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1776        &self.unknown_fields
1777    }
1778
1779    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1780        &mut self.unknown_fields
1781    }
1782
1783    fn as_any(&self) -> &dyn (::std::any::Any) {
1784        self as &dyn (::std::any::Any)
1785    }
1786    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1787        self as &mut dyn (::std::any::Any)
1788    }
1789    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1790        self
1791    }
1792
1793    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1794        Self::descriptor_static()
1795    }
1796
1797    fn new() -> Distribution_Exemplar {
1798        Distribution_Exemplar::new()
1799    }
1800
1801    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1802        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1803        descriptor.get(|| {
1804            let mut fields = ::std::vec::Vec::new();
1805            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1806                "value",
1807                |m: &Distribution_Exemplar| { &m.value },
1808                |m: &mut Distribution_Exemplar| { &mut m.value },
1809            ));
1810            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
1811                "timestamp",
1812                |m: &Distribution_Exemplar| { &m.timestamp },
1813                |m: &mut Distribution_Exemplar| { &mut m.timestamp },
1814            ));
1815            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Any>>(
1816                "attachments",
1817                |m: &Distribution_Exemplar| { &m.attachments },
1818                |m: &mut Distribution_Exemplar| { &mut m.attachments },
1819            ));
1820            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_Exemplar>(
1821                "Distribution.Exemplar",
1822                fields,
1823                file_descriptor_proto()
1824            )
1825        })
1826    }
1827
1828    fn default_instance() -> &'static Distribution_Exemplar {
1829        static instance: ::protobuf::rt::LazyV2<Distribution_Exemplar> = ::protobuf::rt::LazyV2::INIT;
1830        instance.get(Distribution_Exemplar::new)
1831    }
1832}
1833
1834impl ::protobuf::Clear for Distribution_Exemplar {
1835    fn clear(&mut self) {
1836        self.value = 0.;
1837        self.timestamp.clear();
1838        self.attachments.clear();
1839        self.unknown_fields.clear();
1840    }
1841}
1842
1843impl ::std::fmt::Debug for Distribution_Exemplar {
1844    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1845        ::protobuf::text_format::fmt(self, f)
1846    }
1847}
1848
1849impl ::protobuf::reflect::ProtobufValue for Distribution_Exemplar {
1850    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1851        ::protobuf::reflect::ReflectValueRef::Message(self)
1852    }
1853}
1854
1855static file_descriptor_proto_data: &'static [u8] = b"\
1856    \n\x1dgoogle/api/distribution.proto\x12\ngoogle.api\x1a\x19google/protob\
1857    uf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xda\x08\n\x0cDistr\
1858    ibution\x12\x14\n\x05count\x18\x01\x20\x01(\x03R\x05count\x12\x12\n\x04m\
1859    ean\x18\x02\x20\x01(\x01R\x04mean\x127\n\x18sum_of_squared_deviation\x18\
1860    \x03\x20\x01(\x01R\x15sumOfSquaredDeviation\x124\n\x05range\x18\x04\x20\
1861    \x01(\x0b2\x1e.google.api.Distribution.RangeR\x05range\x12M\n\x0ebucket_\
1862    options\x18\x06\x20\x01(\x0b2&.google.api.Distribution.BucketOptionsR\rb\
1863    ucketOptions\x12#\n\rbucket_counts\x18\x07\x20\x03(\x03R\x0cbucketCounts\
1864    \x12?\n\texemplars\x18\n\x20\x03(\x0b2!.google.api.Distribution.Exemplar\
1865    R\texemplars\x1a+\n\x05Range\x12\x10\n\x03min\x18\x01\x20\x01(\x01R\x03m\
1866    in\x12\x10\n\x03max\x18\x02\x20\x01(\x01R\x03max\x1a\xb9\x04\n\rBucketOp\
1867    tions\x12V\n\x0elinear_buckets\x18\x01\x20\x01(\x0b2-.google.api.Distrib\
1868    ution.BucketOptions.LinearH\0R\rlinearBuckets\x12e\n\x13exponential_buck\
1869    ets\x18\x02\x20\x01(\x0b22.google.api.Distribution.BucketOptions.Exponen\
1870    tialH\0R\x12exponentialBuckets\x12\\\n\x10explicit_buckets\x18\x03\x20\
1871    \x01(\x0b2/.google.api.Distribution.BucketOptions.ExplicitH\0R\x0fexplic\
1872    itBuckets\x1ad\n\x06Linear\x12,\n\x12num_finite_buckets\x18\x01\x20\x01(\
1873    \x05R\x10numFiniteBuckets\x12\x14\n\x05width\x18\x02\x20\x01(\x01R\x05wi\
1874    dth\x12\x16\n\x06offset\x18\x03\x20\x01(\x01R\x06offset\x1av\n\x0bExpone\
1875    ntial\x12,\n\x12num_finite_buckets\x18\x01\x20\x01(\x05R\x10numFiniteBuc\
1876    kets\x12#\n\rgrowth_factor\x18\x02\x20\x01(\x01R\x0cgrowthFactor\x12\x14\
1877    \n\x05scale\x18\x03\x20\x01(\x01R\x05scale\x1a\"\n\x08Explicit\x12\x16\n\
1878    \x06bounds\x18\x01\x20\x03(\x01R\x06boundsB\t\n\x07options\x1a\x92\x01\n\
1879    \x08Exemplar\x12\x14\n\x05value\x18\x01\x20\x01(\x01R\x05value\x128\n\tt\
1880    imestamp\x18\x02\x20\x01(\x0b2\x1a.google.protobuf.TimestampR\ttimestamp\
1881    \x126\n\x0battachments\x18\x03\x20\x03(\x0b2\x14.google.protobuf.AnyR\
1882    \x0battachmentsBq\n\x0ecom.google.apiB\x11DistributionProtoP\x01ZCgoogle\
1883    .golang.org/genproto/googleapis/api/distribution;distribution\xa2\x02\
1884    \x04GAPIJ\x85D\n\x07\x12\x05\x0e\0\xd4\x01\x01\n\xbc\x04\n\x01\x0c\x12\
1885    \x03\x0e\0\x122\xb1\x04\x20Copyright\x202023\x20Google\x20LLC\n\n\x20Lic\
1886    ensed\x20under\x20the\x20Apache\x20License,\x20Version\x202.0\x20(the\
1887    \x20\"License\");\n\x20you\x20may\x20not\x20use\x20this\x20file\x20excep\
1888    t\x20in\x20compliance\x20with\x20the\x20License.\n\x20You\x20may\x20obta\
1889    in\x20a\x20copy\x20of\x20the\x20License\x20at\n\n\x20\x20\x20\x20\x20htt\
1890    p://www.apache.org/licenses/LICENSE-2.0\n\n\x20Unless\x20required\x20by\
1891    \x20applicable\x20law\x20or\x20agreed\x20to\x20in\x20writing,\x20softwar\
1892    e\n\x20distributed\x20under\x20the\x20License\x20is\x20distributed\x20on\
1893    \x20an\x20\"AS\x20IS\"\x20BASIS,\n\x20WITHOUT\x20WARRANTIES\x20OR\x20CON\
1894    DITIONS\x20OF\x20ANY\x20KIND,\x20either\x20express\x20or\x20implied.\n\
1895    \x20See\x20the\x20License\x20for\x20the\x20specific\x20language\x20gover\
1896    ning\x20permissions\x20and\n\x20limitations\x20under\x20the\x20License.\
1897    \n\n\x08\n\x01\x02\x12\x03\x10\0\x13\n\t\n\x02\x03\0\x12\x03\x12\0#\n\t\
1898    \n\x02\x03\x01\x12\x03\x13\0)\n\x08\n\x01\x08\x12\x03\x15\0Z\n\t\n\x02\
1899    \x08\x0b\x12\x03\x15\0Z\n\x08\n\x01\x08\x12\x03\x16\0\"\n\t\n\x02\x08\n\
1900    \x12\x03\x16\0\"\n\x08\n\x01\x08\x12\x03\x17\02\n\t\n\x02\x08\x08\x12\
1901    \x03\x17\02\n\x08\n\x01\x08\x12\x03\x18\0'\n\t\n\x02\x08\x01\x12\x03\x18\
1902    \0'\n\x08\n\x01\x08\x12\x03\x19\0\"\n\t\n\x02\x08$\x12\x03\x19\0\"\n\xaa\
1903    \x06\n\x02\x04\0\x12\x05)\0\xd4\x01\x01\x1a\x9c\x06\x20`Distribution`\
1904    \x20contains\x20summary\x20statistics\x20for\x20a\x20population\x20of\
1905    \x20values.\x20It\n\x20optionally\x20contains\x20a\x20histogram\x20repre\
1906    senting\x20the\x20distribution\x20of\x20those\x20values\n\x20across\x20a\
1907    \x20set\x20of\x20buckets.\n\n\x20The\x20summary\x20statistics\x20are\x20\
1908    the\x20count,\x20mean,\x20sum\x20of\x20the\x20squared\x20deviation\x20fr\
1909    om\n\x20the\x20mean,\x20the\x20minimum,\x20and\x20the\x20maximum\x20of\
1910    \x20the\x20set\x20of\x20population\x20of\x20values.\n\x20The\x20histogra\
1911    m\x20is\x20based\x20on\x20a\x20sequence\x20of\x20buckets\x20and\x20gives\
1912    \x20a\x20count\x20of\x20values\n\x20that\x20fall\x20into\x20each\x20buck\
1913    et.\x20The\x20boundaries\x20of\x20the\x20buckets\x20are\x20given\x20eith\
1914    er\n\x20explicitly\x20or\x20by\x20formulas\x20for\x20buckets\x20of\x20fi\
1915    xed\x20or\x20exponentially\x20increasing\n\x20widths.\n\n\x20Although\
1916    \x20it\x20is\x20not\x20forbidden,\x20it\x20is\x20generally\x20a\x20bad\
1917    \x20idea\x20to\x20include\n\x20non-finite\x20values\x20(infinities\x20or\
1918    \x20NaNs)\x20in\x20the\x20population\x20of\x20values,\x20as\x20this\n\
1919    \x20will\x20render\x20the\x20`mean`\x20and\x20`sum_of_squared_deviation`\
1920    \x20fields\x20meaningless.\n\n\n\n\x03\x04\0\x01\x12\x03)\x08\x14\n3\n\
1921    \x04\x04\0\x03\0\x12\x04+\x021\x03\x1a%\x20The\x20range\x20of\x20the\x20\
1922    population\x20values.\n\n\x0c\n\x05\x04\0\x03\0\x01\x12\x03+\n\x0f\n6\n\
1923    \x06\x04\0\x03\0\x02\0\x12\x03-\x04\x13\x1a'\x20The\x20minimum\x20of\x20\
1924    the\x20population\x20values.\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x05\x12\x03\
1925    -\x04\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x01\x12\x03-\x0b\x0e\n\x0e\n\x07\
1926    \x04\0\x03\0\x02\0\x03\x12\x03-\x11\x12\n6\n\x06\x04\0\x03\0\x02\x01\x12\
1927    \x030\x04\x13\x1a'\x20The\x20maximum\x20of\x20the\x20population\x20value\
1928    s.\n\n\x0e\n\x07\x04\0\x03\0\x02\x01\x05\x12\x030\x04\n\n\x0e\n\x07\x04\
1929    \0\x03\0\x02\x01\x01\x12\x030\x0b\x0e\n\x0e\n\x07\x04\0\x03\0\x02\x01\
1930    \x03\x12\x030\x11\x12\n\xf3\x07\n\x04\x04\0\x03\x01\x12\x05B\x02\x88\x01\
1931    \x03\x1a\xe3\x07\x20`BucketOptions`\x20describes\x20the\x20bucket\x20bou\
1932    ndaries\x20used\x20to\x20create\x20a\x20histogram\n\x20for\x20the\x20dis\
1933    tribution.\x20The\x20buckets\x20can\x20be\x20in\x20a\x20linear\x20sequen\
1934    ce,\x20an\n\x20exponential\x20sequence,\x20or\x20each\x20bucket\x20can\
1935    \x20be\x20specified\x20explicitly.\n\x20`BucketOptions`\x20does\x20not\
1936    \x20include\x20the\x20number\x20of\x20values\x20in\x20each\x20bucket.\n\
1937    \n\x20A\x20bucket\x20has\x20an\x20inclusive\x20lower\x20bound\x20and\x20\
1938    exclusive\x20upper\x20bound\x20for\x20the\n\x20values\x20that\x20are\x20\
1939    counted\x20for\x20that\x20bucket.\x20The\x20upper\x20bound\x20of\x20a\
1940    \x20bucket\x20must\n\x20be\x20strictly\x20greater\x20than\x20the\x20lowe\
1941    r\x20bound.\x20The\x20sequence\x20of\x20N\x20buckets\x20for\x20a\n\x20di\
1942    stribution\x20consists\x20of\x20an\x20underflow\x20bucket\x20(number\x20\
1943    0),\x20zero\x20or\x20more\n\x20finite\x20buckets\x20(number\x201\x20thro\
1944    ugh\x20N\x20-\x202)\x20and\x20an\x20overflow\x20bucket\x20(number\x20N\
1945    \x20-\n\x201).\x20The\x20buckets\x20are\x20contiguous:\x20the\x20lower\
1946    \x20bound\x20of\x20bucket\x20i\x20(i\x20>\x200)\x20is\x20the\n\x20same\
1947    \x20as\x20the\x20upper\x20bound\x20of\x20bucket\x20i\x20-\x201.\x20The\
1948    \x20buckets\x20span\x20the\x20whole\x20range\n\x20of\x20finite\x20values\
1949    :\x20lower\x20bound\x20of\x20the\x20underflow\x20bucket\x20is\x20-infini\
1950    ty\x20and\x20the\n\x20upper\x20bound\x20of\x20the\x20overflow\x20bucket\
1951    \x20is\x20+infinity.\x20The\x20finite\x20buckets\x20are\n\x20so-called\
1952    \x20because\x20both\x20bounds\x20are\x20finite.\n\n\x0c\n\x05\x04\0\x03\
1953    \x01\x01\x12\x03B\n\x17\n\xaf\x03\n\x06\x04\0\x03\x01\x03\0\x12\x04M\x04\
1954    V\x05\x1a\x9e\x03\x20Specifies\x20a\x20linear\x20sequence\x20of\x20bucke\
1955    ts\x20that\x20all\x20have\x20the\x20same\x20width\n\x20(except\x20overfl\
1956    ow\x20and\x20underflow).\x20Each\x20bucket\x20represents\x20a\x20constan\
1957    t\n\x20absolute\x20uncertainty\x20on\x20the\x20specific\x20value\x20in\
1958    \x20the\x20bucket.\n\n\x20There\x20are\x20`num_finite_buckets\x20+\x202`\
1959    \x20(=\x20N)\x20buckets.\x20Bucket\x20`i`\x20has\x20the\n\x20following\
1960    \x20boundaries:\n\n\x20\x20\x20\x20Upper\x20bound\x20(0\x20<=\x20i\x20<\
1961    \x20N-1):\x20\x20\x20\x20\x20offset\x20+\x20(width\x20*\x20i).\n\n\x20\
1962    \x20\x20\x20Lower\x20bound\x20(1\x20<=\x20i\x20<\x20N):\x20\x20\x20\x20\
1963    \x20\x20\x20offset\x20+\x20(width\x20*\x20(i\x20-\x201)).\n\n\x0e\n\x07\
1964    \x04\0\x03\x01\x03\0\x01\x12\x03M\x0c\x12\n*\n\x08\x04\0\x03\x01\x03\0\
1965    \x02\0\x12\x03O\x06#\x1a\x19\x20Must\x20be\x20greater\x20than\x200.\n\n\
1966    \x10\n\t\x04\0\x03\x01\x03\0\x02\0\x05\x12\x03O\x06\x0b\n\x10\n\t\x04\0\
1967    \x03\x01\x03\0\x02\0\x01\x12\x03O\x0c\x1e\n\x10\n\t\x04\0\x03\x01\x03\0\
1968    \x02\0\x03\x12\x03O!\"\n*\n\x08\x04\0\x03\x01\x03\0\x02\x01\x12\x03R\x06\
1969    \x17\x1a\x19\x20Must\x20be\x20greater\x20than\x200.\n\n\x10\n\t\x04\0\
1970    \x03\x01\x03\0\x02\x01\x05\x12\x03R\x06\x0c\n\x10\n\t\x04\0\x03\x01\x03\
1971    \0\x02\x01\x01\x12\x03R\r\x12\n\x10\n\t\x04\0\x03\x01\x03\0\x02\x01\x03\
1972    \x12\x03R\x15\x16\n3\n\x08\x04\0\x03\x01\x03\0\x02\x02\x12\x03U\x06\x18\
1973    \x1a\"\x20Lower\x20bound\x20of\x20the\x20first\x20bucket.\n\n\x10\n\t\
1974    \x04\0\x03\x01\x03\0\x02\x02\x05\x12\x03U\x06\x0c\n\x10\n\t\x04\0\x03\
1975    \x01\x03\0\x02\x02\x01\x12\x03U\r\x13\n\x10\n\t\x04\0\x03\x01\x03\0\x02\
1976    \x02\x03\x12\x03U\x16\x17\n\xcb\x03\n\x06\x04\0\x03\x01\x03\x01\x12\x04b\
1977    \x04k\x05\x1a\xba\x03\x20Specifies\x20an\x20exponential\x20sequence\x20o\
1978    f\x20buckets\x20that\x20have\x20a\x20width\x20that\x20is\n\x20proportion\
1979    al\x20to\x20the\x20value\x20of\x20the\x20lower\x20bound.\x20Each\x20buck\
1980    et\x20represents\x20a\n\x20constant\x20relative\x20uncertainty\x20on\x20\
1981    a\x20specific\x20value\x20in\x20the\x20bucket.\n\n\x20There\x20are\x20`n\
1982    um_finite_buckets\x20+\x202`\x20(=\x20N)\x20buckets.\x20Bucket\x20`i`\
1983    \x20has\x20the\n\x20following\x20boundaries:\n\n\x20\x20\x20\x20Upper\
1984    \x20bound\x20(0\x20<=\x20i\x20<\x20N-1):\x20\x20\x20\x20\x20scale\x20*\
1985    \x20(growth_factor\x20^\x20i).\n\n\x20\x20\x20\x20Lower\x20bound\x20(1\
1986    \x20<=\x20i\x20<\x20N):\x20\x20\x20\x20\x20\x20\x20scale\x20*\x20(growth\
1987    _factor\x20^\x20(i\x20-\x201)).\n\n\x0e\n\x07\x04\0\x03\x01\x03\x01\x01\
1988    \x12\x03b\x0c\x17\n*\n\x08\x04\0\x03\x01\x03\x01\x02\0\x12\x03d\x06#\x1a\
1989    \x19\x20Must\x20be\x20greater\x20than\x200.\n\n\x10\n\t\x04\0\x03\x01\
1990    \x03\x01\x02\0\x05\x12\x03d\x06\x0b\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\
1991    \0\x01\x12\x03d\x0c\x1e\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\0\x03\x12\
1992    \x03d!\"\n*\n\x08\x04\0\x03\x01\x03\x01\x02\x01\x12\x03g\x06\x1f\x1a\x19\
1993    \x20Must\x20be\x20greater\x20than\x201.\n\n\x10\n\t\x04\0\x03\x01\x03\
1994    \x01\x02\x01\x05\x12\x03g\x06\x0c\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\
1995    \x01\x01\x12\x03g\r\x1a\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\x01\x03\x12\
1996    \x03g\x1d\x1e\n*\n\x08\x04\0\x03\x01\x03\x01\x02\x02\x12\x03j\x06\x17\
1997    \x1a\x19\x20Must\x20be\x20greater\x20than\x200.\n\n\x10\n\t\x04\0\x03\
1998    \x01\x03\x01\x02\x02\x05\x12\x03j\x06\x0c\n\x10\n\t\x04\0\x03\x01\x03\
1999    \x01\x02\x02\x01\x12\x03j\r\x12\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\x02\
2000    \x03\x12\x03j\x15\x16\n\xd1\x03\n\x06\x04\0\x03\x01\x03\x02\x12\x04x\x04\
2001    {\x05\x1a\xc0\x03\x20Specifies\x20a\x20set\x20of\x20buckets\x20with\x20a\
2002    rbitrary\x20widths.\n\n\x20There\x20are\x20`size(bounds)\x20+\x201`\x20(\
2003    =\x20N)\x20buckets.\x20Bucket\x20`i`\x20has\x20the\x20following\n\x20bou\
2004    ndaries:\n\n\x20\x20\x20\x20Upper\x20bound\x20(0\x20<=\x20i\x20<\x20N-1)\
2005    :\x20\x20\x20\x20\x20bounds[i]\n\x20\x20\x20\x20Lower\x20bound\x20(1\x20\
2006    <=\x20i\x20<\x20N);\x20\x20\x20\x20\x20\x20\x20bounds[i\x20-\x201]\n\n\
2007    \x20The\x20`bounds`\x20field\x20must\x20contain\x20at\x20least\x20one\
2008    \x20element.\x20If\x20`bounds`\x20has\n\x20only\x20one\x20element,\x20th\
2009    en\x20there\x20are\x20no\x20finite\x20buckets,\x20and\x20that\x20single\
2010    \n\x20element\x20is\x20the\x20common\x20boundary\x20of\x20the\x20overflo\
2011    w\x20and\x20underflow\x20buckets.\n\n\x0e\n\x07\x04\0\x03\x01\x03\x02\
2012    \x01\x12\x03x\x0c\x14\n?\n\x08\x04\0\x03\x01\x03\x02\x02\0\x12\x03z\x06!\
2013    \x1a.\x20The\x20values\x20must\x20be\x20monotonically\x20increasing.\n\n\
2014    \x10\n\t\x04\0\x03\x01\x03\x02\x02\0\x04\x12\x03z\x06\x0e\n\x10\n\t\x04\
2015    \0\x03\x01\x03\x02\x02\0\x05\x12\x03z\x0f\x15\n\x10\n\t\x04\0\x03\x01\
2016    \x03\x02\x02\0\x01\x12\x03z\x16\x1c\n\x10\n\t\x04\0\x03\x01\x03\x02\x02\
2017    \0\x03\x12\x03z\x1f\x20\nA\n\x06\x04\0\x03\x01\x08\0\x12\x05~\x04\x87\
2018    \x01\x05\x1a0\x20Exactly\x20one\x20of\x20these\x20three\x20fields\x20mus\
2019    t\x20be\x20set.\n\n\x0e\n\x07\x04\0\x03\x01\x08\0\x01\x12\x03~\n\x11\n$\
2020    \n\x06\x04\0\x03\x01\x02\0\x12\x04\x80\x01\x06\x20\x1a\x14\x20The\x20lin\
2021    ear\x20bucket.\n\n\x0f\n\x07\x04\0\x03\x01\x02\0\x06\x12\x04\x80\x01\x06\
2022    \x0c\n\x0f\n\x07\x04\0\x03\x01\x02\0\x01\x12\x04\x80\x01\r\x1b\n\x0f\n\
2023    \x07\x04\0\x03\x01\x02\0\x03\x12\x04\x80\x01\x1e\x1f\n*\n\x06\x04\0\x03\
2024    \x01\x02\x01\x12\x04\x83\x01\x06*\x1a\x1a\x20The\x20exponential\x20bucke\
2025    ts.\n\n\x0f\n\x07\x04\0\x03\x01\x02\x01\x06\x12\x04\x83\x01\x06\x11\n\
2026    \x0f\n\x07\x04\0\x03\x01\x02\x01\x01\x12\x04\x83\x01\x12%\n\x0f\n\x07\
2027    \x04\0\x03\x01\x02\x01\x03\x12\x04\x83\x01()\n'\n\x06\x04\0\x03\x01\x02\
2028    \x02\x12\x04\x86\x01\x06$\x1a\x17\x20The\x20explicit\x20buckets.\n\n\x0f\
2029    \n\x07\x04\0\x03\x01\x02\x02\x06\x12\x04\x86\x01\x06\x0e\n\x0f\n\x07\x04\
2030    \0\x03\x01\x02\x02\x01\x12\x04\x86\x01\x0f\x1f\n\x0f\n\x07\x04\0\x03\x01\
2031    \x02\x02\x03\x12\x04\x86\x01\"#\n\xe9\x02\n\x04\x04\0\x03\x02\x12\x06\
2032    \x8f\x01\x02\xa3\x01\x03\x1a\xd8\x02\x20Exemplars\x20are\x20example\x20p\
2033    oints\x20that\x20may\x20be\x20used\x20to\x20annotate\x20aggregated\n\x20\
2034    distribution\x20values.\x20They\x20are\x20metadata\x20that\x20gives\x20i\
2035    nformation\x20about\x20a\n\x20particular\x20value\x20added\x20to\x20a\
2036    \x20Distribution\x20bucket,\x20such\x20as\x20a\x20trace\x20ID\x20that\n\
2037    \x20was\x20active\x20when\x20a\x20value\x20was\x20added.\x20They\x20may\
2038    \x20contain\x20further\x20information,\n\x20such\x20as\x20a\x20example\
2039    \x20values\x20and\x20timestamps,\x20origin,\x20etc.\n\n\r\n\x05\x04\0\
2040    \x03\x02\x01\x12\x04\x8f\x01\n\x12\nk\n\x06\x04\0\x03\x02\x02\0\x12\x04\
2041    \x92\x01\x04\x15\x1a[\x20Value\x20of\x20the\x20exemplar\x20point.\x20Thi\
2042    s\x20value\x20determines\x20to\x20which\x20bucket\x20the\n\x20exemplar\
2043    \x20belongs.\n\n\x0f\n\x07\x04\0\x03\x02\x02\0\x05\x12\x04\x92\x01\x04\n\
2044    \n\x0f\n\x07\x04\0\x03\x02\x02\0\x01\x12\x04\x92\x01\x0b\x10\n\x0f\n\x07\
2045    \x04\0\x03\x02\x02\0\x03\x12\x04\x92\x01\x13\x14\nE\n\x06\x04\0\x03\x02\
2046    \x02\x01\x12\x04\x95\x01\x04,\x1a5\x20The\x20observation\x20(sampling)\
2047    \x20time\x20of\x20the\x20above\x20value.\n\n\x0f\n\x07\x04\0\x03\x02\x02\
2048    \x01\x06\x12\x04\x95\x01\x04\x1d\n\x0f\n\x07\x04\0\x03\x02\x02\x01\x01\
2049    \x12\x04\x95\x01\x1e'\n\x0f\n\x07\x04\0\x03\x02\x02\x01\x03\x12\x04\x95\
2050    \x01*+\n\xb4\x03\n\x06\x04\0\x03\x02\x02\x02\x12\x04\xa2\x01\x041\x1a\
2051    \xa3\x03\x20Contextual\x20information\x20about\x20the\x20example\x20valu\
2052    e.\x20Examples\x20are:\n\n\x20\x20\x20Trace:\x20type.googleapis.com/goog\
2053    le.monitoring.v3.SpanContext\n\n\x20\x20\x20Literal\x20string:\x20type.g\
2054    oogleapis.com/google.protobuf.StringValue\n\n\x20\x20\x20Labels\x20dropp\
2055    ed\x20during\x20aggregation:\n\x20\x20\x20\x20\x20type.googleapis.com/go\
2056    ogle.monitoring.v3.DroppedLabels\n\n\x20There\x20may\x20be\x20only\x20a\
2057    \x20single\x20attachment\x20of\x20any\x20given\x20message\x20type\x20in\
2058    \x20a\n\x20single\x20exemplar,\x20and\x20this\x20is\x20enforced\x20by\
2059    \x20the\x20system.\n\n\x0f\n\x07\x04\0\x03\x02\x02\x02\x04\x12\x04\xa2\
2060    \x01\x04\x0c\n\x0f\n\x07\x04\0\x03\x02\x02\x02\x06\x12\x04\xa2\x01\r\x20\
2061    \n\x0f\n\x07\x04\0\x03\x02\x02\x02\x01\x12\x04\xa2\x01!,\n\x0f\n\x07\x04\
2062    \0\x03\x02\x02\x02\x03\x12\x04\xa2\x01/0\n\xab\x01\n\x04\x04\0\x02\0\x12\
2063    \x04\xa8\x01\x02\x12\x1a\x9c\x01\x20The\x20number\x20of\x20values\x20in\
2064    \x20the\x20population.\x20Must\x20be\x20non-negative.\x20This\x20value\n\
2065    \x20must\x20equal\x20the\x20sum\x20of\x20the\x20values\x20in\x20`bucket_\
2066    counts`\x20if\x20a\x20histogram\x20is\n\x20provided.\n\n\r\n\x05\x04\0\
2067    \x02\0\x05\x12\x04\xa8\x01\x02\x07\n\r\n\x05\x04\0\x02\0\x01\x12\x04\xa8\
2068    \x01\x08\r\n\r\n\x05\x04\0\x02\0\x03\x12\x04\xa8\x01\x10\x11\nv\n\x04\
2069    \x04\0\x02\x01\x12\x04\xac\x01\x02\x12\x1ah\x20The\x20arithmetic\x20mean\
2070    \x20of\x20the\x20values\x20in\x20the\x20population.\x20If\x20`count`\x20\
2071    is\x20zero\n\x20then\x20this\x20field\x20must\x20be\x20zero.\n\n\r\n\x05\
2072    \x04\0\x02\x01\x05\x12\x04\xac\x01\x02\x08\n\r\n\x05\x04\0\x02\x01\x01\
2073    \x12\x04\xac\x01\t\r\n\r\n\x05\x04\0\x02\x01\x03\x12\x04\xac\x01\x10\x11\
2074    \n\xd8\x02\n\x04\x04\0\x02\x02\x12\x04\xb7\x01\x02&\x1a\xc9\x02\x20The\
2075    \x20sum\x20of\x20squared\x20deviations\x20from\x20the\x20mean\x20of\x20t\
2076    he\x20values\x20in\x20the\n\x20population.\x20For\x20values\x20x_i\x20th\
2077    is\x20is:\n\n\x20\x20\x20\x20\x20Sum[i=1..n]((x_i\x20-\x20mean)^2)\n\n\
2078    \x20Knuth,\x20\"The\x20Art\x20of\x20Computer\x20Programming\",\x20Vol.\
2079    \x202,\x20page\x20232,\x203rd\x20edition\n\x20describes\x20Welford's\x20\
2080    method\x20for\x20accumulating\x20this\x20sum\x20in\x20one\x20pass.\n\n\
2081    \x20If\x20`count`\x20is\x20zero\x20then\x20this\x20field\x20must\x20be\
2082    \x20zero.\n\n\r\n\x05\x04\0\x02\x02\x05\x12\x04\xb7\x01\x02\x08\n\r\n\
2083    \x05\x04\0\x02\x02\x01\x12\x04\xb7\x01\t!\n\r\n\x05\x04\0\x02\x02\x03\
2084    \x12\x04\xb7\x01$%\n\x81\x01\n\x04\x04\0\x02\x03\x12\x04\xbb\x01\x02\x12\
2085    \x1as\x20If\x20specified,\x20contains\x20the\x20range\x20of\x20the\x20po\
2086    pulation\x20values.\x20The\x20field\n\x20must\x20not\x20be\x20present\
2087    \x20if\x20the\x20`count`\x20is\x20zero.\n\n\r\n\x05\x04\0\x02\x03\x06\
2088    \x12\x04\xbb\x01\x02\x07\n\r\n\x05\x04\0\x02\x03\x01\x12\x04\xbb\x01\x08\
2089    \r\n\r\n\x05\x04\0\x02\x03\x03\x12\x04\xbb\x01\x10\x11\n\x81\x01\n\x04\
2090    \x04\0\x02\x04\x12\x04\xbf\x01\x02#\x1as\x20Defines\x20the\x20histogram\
2091    \x20bucket\x20boundaries.\x20If\x20the\x20distribution\x20does\x20not\n\
2092    \x20contain\x20a\x20histogram,\x20then\x20omit\x20this\x20field.\n\n\r\n\
2093    \x05\x04\0\x02\x04\x06\x12\x04\xbf\x01\x02\x0f\n\r\n\x05\x04\0\x02\x04\
2094    \x01\x12\x04\xbf\x01\x10\x1e\n\r\n\x05\x04\0\x02\x04\x03\x12\x04\xbf\x01\
2095    !\"\n\xe7\x06\n\x04\x04\0\x02\x05\x12\x04\xd0\x01\x02#\x1a\xd8\x06\x20Th\
2096    e\x20number\x20of\x20values\x20in\x20each\x20bucket\x20of\x20the\x20hist\
2097    ogram,\x20as\x20described\x20in\n\x20`bucket_options`.\x20If\x20the\x20d\
2098    istribution\x20does\x20not\x20have\x20a\x20histogram,\x20then\x20omit\n\
2099    \x20this\x20field.\x20If\x20there\x20is\x20a\x20histogram,\x20then\x20th\
2100    e\x20sum\x20of\x20the\x20values\x20in\n\x20`bucket_counts`\x20must\x20eq\
2101    ual\x20the\x20value\x20in\x20the\x20`count`\x20field\x20of\x20the\n\x20d\
2102    istribution.\n\n\x20If\x20present,\x20`bucket_counts`\x20should\x20conta\
2103    in\x20N\x20values,\x20where\x20N\x20is\x20the\x20number\n\x20of\x20bucke\
2104    ts\x20specified\x20in\x20`bucket_options`.\x20If\x20you\x20supply\x20few\
2105    er\x20than\x20N\n\x20values,\x20the\x20remaining\x20values\x20are\x20ass\
2106    umed\x20to\x20be\x200.\n\n\x20The\x20order\x20of\x20the\x20values\x20in\
2107    \x20`bucket_counts`\x20follows\x20the\x20bucket\x20numbering\n\x20scheme\
2108    s\x20described\x20for\x20the\x20three\x20bucket\x20types.\x20The\x20firs\
2109    t\x20value\x20must\x20be\x20the\n\x20count\x20for\x20the\x20underflow\
2110    \x20bucket\x20(number\x200).\x20The\x20next\x20N-2\x20values\x20are\x20t\
2111    he\n\x20counts\x20for\x20the\x20finite\x20buckets\x20(number\x201\x20thr\
2112    ough\x20N-2).\x20The\x20N'th\x20value\x20in\n\x20`bucket_counts`\x20is\
2113    \x20the\x20count\x20for\x20the\x20overflow\x20bucket\x20(number\x20N-1).\
2114    \n\n\r\n\x05\x04\0\x02\x05\x04\x12\x04\xd0\x01\x02\n\n\r\n\x05\x04\0\x02\
2115    \x05\x05\x12\x04\xd0\x01\x0b\x10\n\r\n\x05\x04\0\x02\x05\x01\x12\x04\xd0\
2116    \x01\x11\x1e\n\r\n\x05\x04\0\x02\x05\x03\x12\x04\xd0\x01!\"\n=\n\x04\x04\
2117    \0\x02\x06\x12\x04\xd3\x01\x02#\x1a/\x20Must\x20be\x20in\x20increasing\
2118    \x20order\x20of\x20`value`\x20field.\n\n\r\n\x05\x04\0\x02\x06\x04\x12\
2119    \x04\xd3\x01\x02\n\n\r\n\x05\x04\0\x02\x06\x06\x12\x04\xd3\x01\x0b\x13\n\
2120    \r\n\x05\x04\0\x02\x06\x01\x12\x04\xd3\x01\x14\x1d\n\r\n\x05\x04\0\x02\
2121    \x06\x03\x12\x04\xd3\x01\x20\"b\x06proto3\
2122";
2123
2124static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
2125
2126fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
2127    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
2128}
2129
2130pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
2131    file_descriptor_proto_lazy.get(|| {
2132        parse_descriptor_proto()
2133    })
2134}