google_cloud_rust_raw/api/servicecontrol/v1/
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/servicecontrol/v1/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 minimum: f64,
32    pub maximum: f64,
33    pub sum_of_squared_deviation: f64,
34    pub bucket_counts: ::std::vec::Vec<i64>,
35    pub exemplars: ::protobuf::RepeatedField<super::distribution_ex::Distribution_Exemplar>,
36    // message oneof groups
37    pub bucket_option: ::std::option::Option<Distribution_oneof_bucket_option>,
38    // special fields
39    pub unknown_fields: ::protobuf::UnknownFields,
40    pub cached_size: ::protobuf::CachedSize,
41}
42
43impl<'a> ::std::default::Default for &'a Distribution {
44    fn default() -> &'a Distribution {
45        <Distribution as ::protobuf::Message>::default_instance()
46    }
47}
48
49#[derive(Clone,PartialEq,Debug)]
50pub enum Distribution_oneof_bucket_option {
51    linear_buckets(Distribution_LinearBuckets),
52    exponential_buckets(Distribution_ExponentialBuckets),
53    explicit_buckets(Distribution_ExplicitBuckets),
54}
55
56impl Distribution {
57    pub fn new() -> Distribution {
58        ::std::default::Default::default()
59    }
60
61    // int64 count = 1;
62
63
64    pub fn get_count(&self) -> i64 {
65        self.count
66    }
67    pub fn clear_count(&mut self) {
68        self.count = 0;
69    }
70
71    // Param is passed by value, moved
72    pub fn set_count(&mut self, v: i64) {
73        self.count = v;
74    }
75
76    // double mean = 2;
77
78
79    pub fn get_mean(&self) -> f64 {
80        self.mean
81    }
82    pub fn clear_mean(&mut self) {
83        self.mean = 0.;
84    }
85
86    // Param is passed by value, moved
87    pub fn set_mean(&mut self, v: f64) {
88        self.mean = v;
89    }
90
91    // double minimum = 3;
92
93
94    pub fn get_minimum(&self) -> f64 {
95        self.minimum
96    }
97    pub fn clear_minimum(&mut self) {
98        self.minimum = 0.;
99    }
100
101    // Param is passed by value, moved
102    pub fn set_minimum(&mut self, v: f64) {
103        self.minimum = v;
104    }
105
106    // double maximum = 4;
107
108
109    pub fn get_maximum(&self) -> f64 {
110        self.maximum
111    }
112    pub fn clear_maximum(&mut self) {
113        self.maximum = 0.;
114    }
115
116    // Param is passed by value, moved
117    pub fn set_maximum(&mut self, v: f64) {
118        self.maximum = v;
119    }
120
121    // double sum_of_squared_deviation = 5;
122
123
124    pub fn get_sum_of_squared_deviation(&self) -> f64 {
125        self.sum_of_squared_deviation
126    }
127    pub fn clear_sum_of_squared_deviation(&mut self) {
128        self.sum_of_squared_deviation = 0.;
129    }
130
131    // Param is passed by value, moved
132    pub fn set_sum_of_squared_deviation(&mut self, v: f64) {
133        self.sum_of_squared_deviation = v;
134    }
135
136    // repeated int64 bucket_counts = 6;
137
138
139    pub fn get_bucket_counts(&self) -> &[i64] {
140        &self.bucket_counts
141    }
142    pub fn clear_bucket_counts(&mut self) {
143        self.bucket_counts.clear();
144    }
145
146    // Param is passed by value, moved
147    pub fn set_bucket_counts(&mut self, v: ::std::vec::Vec<i64>) {
148        self.bucket_counts = v;
149    }
150
151    // Mutable pointer to the field.
152    pub fn mut_bucket_counts(&mut self) -> &mut ::std::vec::Vec<i64> {
153        &mut self.bucket_counts
154    }
155
156    // Take field
157    pub fn take_bucket_counts(&mut self) -> ::std::vec::Vec<i64> {
158        ::std::mem::replace(&mut self.bucket_counts, ::std::vec::Vec::new())
159    }
160
161    // .google.api.servicecontrol.v1.Distribution.LinearBuckets linear_buckets = 7;
162
163
164    pub fn get_linear_buckets(&self) -> &Distribution_LinearBuckets {
165        match self.bucket_option {
166            ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(ref v)) => v,
167            _ => <Distribution_LinearBuckets as ::protobuf::Message>::default_instance(),
168        }
169    }
170    pub fn clear_linear_buckets(&mut self) {
171        self.bucket_option = ::std::option::Option::None;
172    }
173
174    pub fn has_linear_buckets(&self) -> bool {
175        match self.bucket_option {
176            ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(..)) => true,
177            _ => false,
178        }
179    }
180
181    // Param is passed by value, moved
182    pub fn set_linear_buckets(&mut self, v: Distribution_LinearBuckets) {
183        self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(v))
184    }
185
186    // Mutable pointer to the field.
187    pub fn mut_linear_buckets(&mut self) -> &mut Distribution_LinearBuckets {
188        if let ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(_)) = self.bucket_option {
189        } else {
190            self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(Distribution_LinearBuckets::new()));
191        }
192        match self.bucket_option {
193            ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(ref mut v)) => v,
194            _ => panic!(),
195        }
196    }
197
198    // Take field
199    pub fn take_linear_buckets(&mut self) -> Distribution_LinearBuckets {
200        if self.has_linear_buckets() {
201            match self.bucket_option.take() {
202                ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(v)) => v,
203                _ => panic!(),
204            }
205        } else {
206            Distribution_LinearBuckets::new()
207        }
208    }
209
210    // .google.api.servicecontrol.v1.Distribution.ExponentialBuckets exponential_buckets = 8;
211
212
213    pub fn get_exponential_buckets(&self) -> &Distribution_ExponentialBuckets {
214        match self.bucket_option {
215            ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(ref v)) => v,
216            _ => <Distribution_ExponentialBuckets as ::protobuf::Message>::default_instance(),
217        }
218    }
219    pub fn clear_exponential_buckets(&mut self) {
220        self.bucket_option = ::std::option::Option::None;
221    }
222
223    pub fn has_exponential_buckets(&self) -> bool {
224        match self.bucket_option {
225            ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(..)) => true,
226            _ => false,
227        }
228    }
229
230    // Param is passed by value, moved
231    pub fn set_exponential_buckets(&mut self, v: Distribution_ExponentialBuckets) {
232        self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(v))
233    }
234
235    // Mutable pointer to the field.
236    pub fn mut_exponential_buckets(&mut self) -> &mut Distribution_ExponentialBuckets {
237        if let ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(_)) = self.bucket_option {
238        } else {
239            self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(Distribution_ExponentialBuckets::new()));
240        }
241        match self.bucket_option {
242            ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(ref mut v)) => v,
243            _ => panic!(),
244        }
245    }
246
247    // Take field
248    pub fn take_exponential_buckets(&mut self) -> Distribution_ExponentialBuckets {
249        if self.has_exponential_buckets() {
250            match self.bucket_option.take() {
251                ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(v)) => v,
252                _ => panic!(),
253            }
254        } else {
255            Distribution_ExponentialBuckets::new()
256        }
257    }
258
259    // .google.api.servicecontrol.v1.Distribution.ExplicitBuckets explicit_buckets = 9;
260
261
262    pub fn get_explicit_buckets(&self) -> &Distribution_ExplicitBuckets {
263        match self.bucket_option {
264            ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(ref v)) => v,
265            _ => <Distribution_ExplicitBuckets as ::protobuf::Message>::default_instance(),
266        }
267    }
268    pub fn clear_explicit_buckets(&mut self) {
269        self.bucket_option = ::std::option::Option::None;
270    }
271
272    pub fn has_explicit_buckets(&self) -> bool {
273        match self.bucket_option {
274            ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(..)) => true,
275            _ => false,
276        }
277    }
278
279    // Param is passed by value, moved
280    pub fn set_explicit_buckets(&mut self, v: Distribution_ExplicitBuckets) {
281        self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(v))
282    }
283
284    // Mutable pointer to the field.
285    pub fn mut_explicit_buckets(&mut self) -> &mut Distribution_ExplicitBuckets {
286        if let ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(_)) = self.bucket_option {
287        } else {
288            self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(Distribution_ExplicitBuckets::new()));
289        }
290        match self.bucket_option {
291            ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(ref mut v)) => v,
292            _ => panic!(),
293        }
294    }
295
296    // Take field
297    pub fn take_explicit_buckets(&mut self) -> Distribution_ExplicitBuckets {
298        if self.has_explicit_buckets() {
299            match self.bucket_option.take() {
300                ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(v)) => v,
301                _ => panic!(),
302            }
303        } else {
304            Distribution_ExplicitBuckets::new()
305        }
306    }
307
308    // repeated .google.api.Distribution.Exemplar exemplars = 10;
309
310
311    pub fn get_exemplars(&self) -> &[super::distribution_ex::Distribution_Exemplar] {
312        &self.exemplars
313    }
314    pub fn clear_exemplars(&mut self) {
315        self.exemplars.clear();
316    }
317
318    // Param is passed by value, moved
319    pub fn set_exemplars(&mut self, v: ::protobuf::RepeatedField<super::distribution_ex::Distribution_Exemplar>) {
320        self.exemplars = v;
321    }
322
323    // Mutable pointer to the field.
324    pub fn mut_exemplars(&mut self) -> &mut ::protobuf::RepeatedField<super::distribution_ex::Distribution_Exemplar> {
325        &mut self.exemplars
326    }
327
328    // Take field
329    pub fn take_exemplars(&mut self) -> ::protobuf::RepeatedField<super::distribution_ex::Distribution_Exemplar> {
330        ::std::mem::replace(&mut self.exemplars, ::protobuf::RepeatedField::new())
331    }
332}
333
334impl ::protobuf::Message for Distribution {
335    fn is_initialized(&self) -> bool {
336        if let Some(Distribution_oneof_bucket_option::linear_buckets(ref v)) = self.bucket_option {
337            if !v.is_initialized() {
338                return false;
339            }
340        }
341        if let Some(Distribution_oneof_bucket_option::exponential_buckets(ref v)) = self.bucket_option {
342            if !v.is_initialized() {
343                return false;
344            }
345        }
346        if let Some(Distribution_oneof_bucket_option::explicit_buckets(ref v)) = self.bucket_option {
347            if !v.is_initialized() {
348                return false;
349            }
350        }
351        for v in &self.exemplars {
352            if !v.is_initialized() {
353                return false;
354            }
355        };
356        true
357    }
358
359    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
360        while !is.eof()? {
361            let (field_number, wire_type) = is.read_tag_unpack()?;
362            match field_number {
363                1 => {
364                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
365                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
366                    }
367                    let tmp = is.read_int64()?;
368                    self.count = tmp;
369                },
370                2 => {
371                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
372                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
373                    }
374                    let tmp = is.read_double()?;
375                    self.mean = tmp;
376                },
377                3 => {
378                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
379                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
380                    }
381                    let tmp = is.read_double()?;
382                    self.minimum = tmp;
383                },
384                4 => {
385                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
386                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
387                    }
388                    let tmp = is.read_double()?;
389                    self.maximum = tmp;
390                },
391                5 => {
392                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
393                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
394                    }
395                    let tmp = is.read_double()?;
396                    self.sum_of_squared_deviation = tmp;
397                },
398                6 => {
399                    ::protobuf::rt::read_repeated_int64_into(wire_type, is, &mut self.bucket_counts)?;
400                },
401                7 => {
402                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
403                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
404                    }
405                    self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::linear_buckets(is.read_message()?));
406                },
407                8 => {
408                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
409                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
410                    }
411                    self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::exponential_buckets(is.read_message()?));
412                },
413                9 => {
414                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
415                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
416                    }
417                    self.bucket_option = ::std::option::Option::Some(Distribution_oneof_bucket_option::explicit_buckets(is.read_message()?));
418                },
419                10 => {
420                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.exemplars)?;
421                },
422                _ => {
423                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
424                },
425            };
426        }
427        ::std::result::Result::Ok(())
428    }
429
430    // Compute sizes of nested messages
431    #[allow(unused_variables)]
432    fn compute_size(&self) -> u32 {
433        let mut my_size = 0;
434        if self.count != 0 {
435            my_size += ::protobuf::rt::value_size(1, self.count, ::protobuf::wire_format::WireTypeVarint);
436        }
437        if self.mean != 0. {
438            my_size += 9;
439        }
440        if self.minimum != 0. {
441            my_size += 9;
442        }
443        if self.maximum != 0. {
444            my_size += 9;
445        }
446        if self.sum_of_squared_deviation != 0. {
447            my_size += 9;
448        }
449        for value in &self.bucket_counts {
450            my_size += ::protobuf::rt::value_size(6, *value, ::protobuf::wire_format::WireTypeVarint);
451        };
452        for value in &self.exemplars {
453            let len = value.compute_size();
454            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
455        };
456        if let ::std::option::Option::Some(ref v) = self.bucket_option {
457            match v {
458                &Distribution_oneof_bucket_option::linear_buckets(ref v) => {
459                    let len = v.compute_size();
460                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
461                },
462                &Distribution_oneof_bucket_option::exponential_buckets(ref v) => {
463                    let len = v.compute_size();
464                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
465                },
466                &Distribution_oneof_bucket_option::explicit_buckets(ref v) => {
467                    let len = v.compute_size();
468                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
469                },
470            };
471        }
472        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
473        self.cached_size.set(my_size);
474        my_size
475    }
476
477    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
478        if self.count != 0 {
479            os.write_int64(1, self.count)?;
480        }
481        if self.mean != 0. {
482            os.write_double(2, self.mean)?;
483        }
484        if self.minimum != 0. {
485            os.write_double(3, self.minimum)?;
486        }
487        if self.maximum != 0. {
488            os.write_double(4, self.maximum)?;
489        }
490        if self.sum_of_squared_deviation != 0. {
491            os.write_double(5, self.sum_of_squared_deviation)?;
492        }
493        for v in &self.bucket_counts {
494            os.write_int64(6, *v)?;
495        };
496        for v in &self.exemplars {
497            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
498            os.write_raw_varint32(v.get_cached_size())?;
499            v.write_to_with_cached_sizes(os)?;
500        };
501        if let ::std::option::Option::Some(ref v) = self.bucket_option {
502            match v {
503                &Distribution_oneof_bucket_option::linear_buckets(ref v) => {
504                    os.write_tag(7, ::protobuf::wire_format::WireTypeLengthDelimited)?;
505                    os.write_raw_varint32(v.get_cached_size())?;
506                    v.write_to_with_cached_sizes(os)?;
507                },
508                &Distribution_oneof_bucket_option::exponential_buckets(ref v) => {
509                    os.write_tag(8, ::protobuf::wire_format::WireTypeLengthDelimited)?;
510                    os.write_raw_varint32(v.get_cached_size())?;
511                    v.write_to_with_cached_sizes(os)?;
512                },
513                &Distribution_oneof_bucket_option::explicit_buckets(ref v) => {
514                    os.write_tag(9, ::protobuf::wire_format::WireTypeLengthDelimited)?;
515                    os.write_raw_varint32(v.get_cached_size())?;
516                    v.write_to_with_cached_sizes(os)?;
517                },
518            };
519        }
520        os.write_unknown_fields(self.get_unknown_fields())?;
521        ::std::result::Result::Ok(())
522    }
523
524    fn get_cached_size(&self) -> u32 {
525        self.cached_size.get()
526    }
527
528    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
529        &self.unknown_fields
530    }
531
532    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
533        &mut self.unknown_fields
534    }
535
536    fn as_any(&self) -> &dyn (::std::any::Any) {
537        self as &dyn (::std::any::Any)
538    }
539    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
540        self as &mut dyn (::std::any::Any)
541    }
542    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
543        self
544    }
545
546    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
547        Self::descriptor_static()
548    }
549
550    fn new() -> Distribution {
551        Distribution::new()
552    }
553
554    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
555        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
556        descriptor.get(|| {
557            let mut fields = ::std::vec::Vec::new();
558            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
559                "count",
560                |m: &Distribution| { &m.count },
561                |m: &mut Distribution| { &mut m.count },
562            ));
563            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
564                "mean",
565                |m: &Distribution| { &m.mean },
566                |m: &mut Distribution| { &mut m.mean },
567            ));
568            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
569                "minimum",
570                |m: &Distribution| { &m.minimum },
571                |m: &mut Distribution| { &mut m.minimum },
572            ));
573            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
574                "maximum",
575                |m: &Distribution| { &m.maximum },
576                |m: &mut Distribution| { &mut m.maximum },
577            ));
578            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
579                "sum_of_squared_deviation",
580                |m: &Distribution| { &m.sum_of_squared_deviation },
581                |m: &mut Distribution| { &mut m.sum_of_squared_deviation },
582            ));
583            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
584                "bucket_counts",
585                |m: &Distribution| { &m.bucket_counts },
586                |m: &mut Distribution| { &mut m.bucket_counts },
587            ));
588            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_LinearBuckets>(
589                "linear_buckets",
590                Distribution::has_linear_buckets,
591                Distribution::get_linear_buckets,
592            ));
593            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_ExponentialBuckets>(
594                "exponential_buckets",
595                Distribution::has_exponential_buckets,
596                Distribution::get_exponential_buckets,
597            ));
598            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_ExplicitBuckets>(
599                "explicit_buckets",
600                Distribution::has_explicit_buckets,
601                Distribution::get_explicit_buckets,
602            ));
603            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::distribution_ex::Distribution_Exemplar>>(
604                "exemplars",
605                |m: &Distribution| { &m.exemplars },
606                |m: &mut Distribution| { &mut m.exemplars },
607            ));
608            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution>(
609                "Distribution",
610                fields,
611                file_descriptor_proto()
612            )
613        })
614    }
615
616    fn default_instance() -> &'static Distribution {
617        static instance: ::protobuf::rt::LazyV2<Distribution> = ::protobuf::rt::LazyV2::INIT;
618        instance.get(Distribution::new)
619    }
620}
621
622impl ::protobuf::Clear for Distribution {
623    fn clear(&mut self) {
624        self.count = 0;
625        self.mean = 0.;
626        self.minimum = 0.;
627        self.maximum = 0.;
628        self.sum_of_squared_deviation = 0.;
629        self.bucket_counts.clear();
630        self.bucket_option = ::std::option::Option::None;
631        self.bucket_option = ::std::option::Option::None;
632        self.bucket_option = ::std::option::Option::None;
633        self.exemplars.clear();
634        self.unknown_fields.clear();
635    }
636}
637
638impl ::std::fmt::Debug for Distribution {
639    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
640        ::protobuf::text_format::fmt(self, f)
641    }
642}
643
644impl ::protobuf::reflect::ProtobufValue for Distribution {
645    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
646        ::protobuf::reflect::ReflectValueRef::Message(self)
647    }
648}
649
650#[derive(PartialEq,Clone,Default)]
651pub struct Distribution_LinearBuckets {
652    // message fields
653    pub num_finite_buckets: i32,
654    pub width: f64,
655    pub offset: f64,
656    // special fields
657    pub unknown_fields: ::protobuf::UnknownFields,
658    pub cached_size: ::protobuf::CachedSize,
659}
660
661impl<'a> ::std::default::Default for &'a Distribution_LinearBuckets {
662    fn default() -> &'a Distribution_LinearBuckets {
663        <Distribution_LinearBuckets as ::protobuf::Message>::default_instance()
664    }
665}
666
667impl Distribution_LinearBuckets {
668    pub fn new() -> Distribution_LinearBuckets {
669        ::std::default::Default::default()
670    }
671
672    // int32 num_finite_buckets = 1;
673
674
675    pub fn get_num_finite_buckets(&self) -> i32 {
676        self.num_finite_buckets
677    }
678    pub fn clear_num_finite_buckets(&mut self) {
679        self.num_finite_buckets = 0;
680    }
681
682    // Param is passed by value, moved
683    pub fn set_num_finite_buckets(&mut self, v: i32) {
684        self.num_finite_buckets = v;
685    }
686
687    // double width = 2;
688
689
690    pub fn get_width(&self) -> f64 {
691        self.width
692    }
693    pub fn clear_width(&mut self) {
694        self.width = 0.;
695    }
696
697    // Param is passed by value, moved
698    pub fn set_width(&mut self, v: f64) {
699        self.width = v;
700    }
701
702    // double offset = 3;
703
704
705    pub fn get_offset(&self) -> f64 {
706        self.offset
707    }
708    pub fn clear_offset(&mut self) {
709        self.offset = 0.;
710    }
711
712    // Param is passed by value, moved
713    pub fn set_offset(&mut self, v: f64) {
714        self.offset = v;
715    }
716}
717
718impl ::protobuf::Message for Distribution_LinearBuckets {
719    fn is_initialized(&self) -> bool {
720        true
721    }
722
723    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
724        while !is.eof()? {
725            let (field_number, wire_type) = is.read_tag_unpack()?;
726            match field_number {
727                1 => {
728                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
729                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
730                    }
731                    let tmp = is.read_int32()?;
732                    self.num_finite_buckets = tmp;
733                },
734                2 => {
735                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
736                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
737                    }
738                    let tmp = is.read_double()?;
739                    self.width = tmp;
740                },
741                3 => {
742                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
743                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
744                    }
745                    let tmp = is.read_double()?;
746                    self.offset = tmp;
747                },
748                _ => {
749                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
750                },
751            };
752        }
753        ::std::result::Result::Ok(())
754    }
755
756    // Compute sizes of nested messages
757    #[allow(unused_variables)]
758    fn compute_size(&self) -> u32 {
759        let mut my_size = 0;
760        if self.num_finite_buckets != 0 {
761            my_size += ::protobuf::rt::value_size(1, self.num_finite_buckets, ::protobuf::wire_format::WireTypeVarint);
762        }
763        if self.width != 0. {
764            my_size += 9;
765        }
766        if self.offset != 0. {
767            my_size += 9;
768        }
769        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
770        self.cached_size.set(my_size);
771        my_size
772    }
773
774    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
775        if self.num_finite_buckets != 0 {
776            os.write_int32(1, self.num_finite_buckets)?;
777        }
778        if self.width != 0. {
779            os.write_double(2, self.width)?;
780        }
781        if self.offset != 0. {
782            os.write_double(3, self.offset)?;
783        }
784        os.write_unknown_fields(self.get_unknown_fields())?;
785        ::std::result::Result::Ok(())
786    }
787
788    fn get_cached_size(&self) -> u32 {
789        self.cached_size.get()
790    }
791
792    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
793        &self.unknown_fields
794    }
795
796    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
797        &mut self.unknown_fields
798    }
799
800    fn as_any(&self) -> &dyn (::std::any::Any) {
801        self as &dyn (::std::any::Any)
802    }
803    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
804        self as &mut dyn (::std::any::Any)
805    }
806    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
807        self
808    }
809
810    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
811        Self::descriptor_static()
812    }
813
814    fn new() -> Distribution_LinearBuckets {
815        Distribution_LinearBuckets::new()
816    }
817
818    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
819        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
820        descriptor.get(|| {
821            let mut fields = ::std::vec::Vec::new();
822            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
823                "num_finite_buckets",
824                |m: &Distribution_LinearBuckets| { &m.num_finite_buckets },
825                |m: &mut Distribution_LinearBuckets| { &mut m.num_finite_buckets },
826            ));
827            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
828                "width",
829                |m: &Distribution_LinearBuckets| { &m.width },
830                |m: &mut Distribution_LinearBuckets| { &mut m.width },
831            ));
832            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
833                "offset",
834                |m: &Distribution_LinearBuckets| { &m.offset },
835                |m: &mut Distribution_LinearBuckets| { &mut m.offset },
836            ));
837            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_LinearBuckets>(
838                "Distribution.LinearBuckets",
839                fields,
840                file_descriptor_proto()
841            )
842        })
843    }
844
845    fn default_instance() -> &'static Distribution_LinearBuckets {
846        static instance: ::protobuf::rt::LazyV2<Distribution_LinearBuckets> = ::protobuf::rt::LazyV2::INIT;
847        instance.get(Distribution_LinearBuckets::new)
848    }
849}
850
851impl ::protobuf::Clear for Distribution_LinearBuckets {
852    fn clear(&mut self) {
853        self.num_finite_buckets = 0;
854        self.width = 0.;
855        self.offset = 0.;
856        self.unknown_fields.clear();
857    }
858}
859
860impl ::std::fmt::Debug for Distribution_LinearBuckets {
861    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
862        ::protobuf::text_format::fmt(self, f)
863    }
864}
865
866impl ::protobuf::reflect::ProtobufValue for Distribution_LinearBuckets {
867    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
868        ::protobuf::reflect::ReflectValueRef::Message(self)
869    }
870}
871
872#[derive(PartialEq,Clone,Default)]
873pub struct Distribution_ExponentialBuckets {
874    // message fields
875    pub num_finite_buckets: i32,
876    pub growth_factor: f64,
877    pub scale: f64,
878    // special fields
879    pub unknown_fields: ::protobuf::UnknownFields,
880    pub cached_size: ::protobuf::CachedSize,
881}
882
883impl<'a> ::std::default::Default for &'a Distribution_ExponentialBuckets {
884    fn default() -> &'a Distribution_ExponentialBuckets {
885        <Distribution_ExponentialBuckets as ::protobuf::Message>::default_instance()
886    }
887}
888
889impl Distribution_ExponentialBuckets {
890    pub fn new() -> Distribution_ExponentialBuckets {
891        ::std::default::Default::default()
892    }
893
894    // int32 num_finite_buckets = 1;
895
896
897    pub fn get_num_finite_buckets(&self) -> i32 {
898        self.num_finite_buckets
899    }
900    pub fn clear_num_finite_buckets(&mut self) {
901        self.num_finite_buckets = 0;
902    }
903
904    // Param is passed by value, moved
905    pub fn set_num_finite_buckets(&mut self, v: i32) {
906        self.num_finite_buckets = v;
907    }
908
909    // double growth_factor = 2;
910
911
912    pub fn get_growth_factor(&self) -> f64 {
913        self.growth_factor
914    }
915    pub fn clear_growth_factor(&mut self) {
916        self.growth_factor = 0.;
917    }
918
919    // Param is passed by value, moved
920    pub fn set_growth_factor(&mut self, v: f64) {
921        self.growth_factor = v;
922    }
923
924    // double scale = 3;
925
926
927    pub fn get_scale(&self) -> f64 {
928        self.scale
929    }
930    pub fn clear_scale(&mut self) {
931        self.scale = 0.;
932    }
933
934    // Param is passed by value, moved
935    pub fn set_scale(&mut self, v: f64) {
936        self.scale = v;
937    }
938}
939
940impl ::protobuf::Message for Distribution_ExponentialBuckets {
941    fn is_initialized(&self) -> bool {
942        true
943    }
944
945    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
946        while !is.eof()? {
947            let (field_number, wire_type) = is.read_tag_unpack()?;
948            match field_number {
949                1 => {
950                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
951                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
952                    }
953                    let tmp = is.read_int32()?;
954                    self.num_finite_buckets = tmp;
955                },
956                2 => {
957                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
958                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
959                    }
960                    let tmp = is.read_double()?;
961                    self.growth_factor = tmp;
962                },
963                3 => {
964                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
965                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
966                    }
967                    let tmp = is.read_double()?;
968                    self.scale = tmp;
969                },
970                _ => {
971                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
972                },
973            };
974        }
975        ::std::result::Result::Ok(())
976    }
977
978    // Compute sizes of nested messages
979    #[allow(unused_variables)]
980    fn compute_size(&self) -> u32 {
981        let mut my_size = 0;
982        if self.num_finite_buckets != 0 {
983            my_size += ::protobuf::rt::value_size(1, self.num_finite_buckets, ::protobuf::wire_format::WireTypeVarint);
984        }
985        if self.growth_factor != 0. {
986            my_size += 9;
987        }
988        if self.scale != 0. {
989            my_size += 9;
990        }
991        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
992        self.cached_size.set(my_size);
993        my_size
994    }
995
996    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
997        if self.num_finite_buckets != 0 {
998            os.write_int32(1, self.num_finite_buckets)?;
999        }
1000        if self.growth_factor != 0. {
1001            os.write_double(2, self.growth_factor)?;
1002        }
1003        if self.scale != 0. {
1004            os.write_double(3, self.scale)?;
1005        }
1006        os.write_unknown_fields(self.get_unknown_fields())?;
1007        ::std::result::Result::Ok(())
1008    }
1009
1010    fn get_cached_size(&self) -> u32 {
1011        self.cached_size.get()
1012    }
1013
1014    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1015        &self.unknown_fields
1016    }
1017
1018    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1019        &mut self.unknown_fields
1020    }
1021
1022    fn as_any(&self) -> &dyn (::std::any::Any) {
1023        self as &dyn (::std::any::Any)
1024    }
1025    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1026        self as &mut dyn (::std::any::Any)
1027    }
1028    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1029        self
1030    }
1031
1032    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1033        Self::descriptor_static()
1034    }
1035
1036    fn new() -> Distribution_ExponentialBuckets {
1037        Distribution_ExponentialBuckets::new()
1038    }
1039
1040    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1041        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1042        descriptor.get(|| {
1043            let mut fields = ::std::vec::Vec::new();
1044            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1045                "num_finite_buckets",
1046                |m: &Distribution_ExponentialBuckets| { &m.num_finite_buckets },
1047                |m: &mut Distribution_ExponentialBuckets| { &mut m.num_finite_buckets },
1048            ));
1049            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1050                "growth_factor",
1051                |m: &Distribution_ExponentialBuckets| { &m.growth_factor },
1052                |m: &mut Distribution_ExponentialBuckets| { &mut m.growth_factor },
1053            ));
1054            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1055                "scale",
1056                |m: &Distribution_ExponentialBuckets| { &m.scale },
1057                |m: &mut Distribution_ExponentialBuckets| { &mut m.scale },
1058            ));
1059            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_ExponentialBuckets>(
1060                "Distribution.ExponentialBuckets",
1061                fields,
1062                file_descriptor_proto()
1063            )
1064        })
1065    }
1066
1067    fn default_instance() -> &'static Distribution_ExponentialBuckets {
1068        static instance: ::protobuf::rt::LazyV2<Distribution_ExponentialBuckets> = ::protobuf::rt::LazyV2::INIT;
1069        instance.get(Distribution_ExponentialBuckets::new)
1070    }
1071}
1072
1073impl ::protobuf::Clear for Distribution_ExponentialBuckets {
1074    fn clear(&mut self) {
1075        self.num_finite_buckets = 0;
1076        self.growth_factor = 0.;
1077        self.scale = 0.;
1078        self.unknown_fields.clear();
1079    }
1080}
1081
1082impl ::std::fmt::Debug for Distribution_ExponentialBuckets {
1083    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1084        ::protobuf::text_format::fmt(self, f)
1085    }
1086}
1087
1088impl ::protobuf::reflect::ProtobufValue for Distribution_ExponentialBuckets {
1089    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1090        ::protobuf::reflect::ReflectValueRef::Message(self)
1091    }
1092}
1093
1094#[derive(PartialEq,Clone,Default)]
1095pub struct Distribution_ExplicitBuckets {
1096    // message fields
1097    pub bounds: ::std::vec::Vec<f64>,
1098    // special fields
1099    pub unknown_fields: ::protobuf::UnknownFields,
1100    pub cached_size: ::protobuf::CachedSize,
1101}
1102
1103impl<'a> ::std::default::Default for &'a Distribution_ExplicitBuckets {
1104    fn default() -> &'a Distribution_ExplicitBuckets {
1105        <Distribution_ExplicitBuckets as ::protobuf::Message>::default_instance()
1106    }
1107}
1108
1109impl Distribution_ExplicitBuckets {
1110    pub fn new() -> Distribution_ExplicitBuckets {
1111        ::std::default::Default::default()
1112    }
1113
1114    // repeated double bounds = 1;
1115
1116
1117    pub fn get_bounds(&self) -> &[f64] {
1118        &self.bounds
1119    }
1120    pub fn clear_bounds(&mut self) {
1121        self.bounds.clear();
1122    }
1123
1124    // Param is passed by value, moved
1125    pub fn set_bounds(&mut self, v: ::std::vec::Vec<f64>) {
1126        self.bounds = v;
1127    }
1128
1129    // Mutable pointer to the field.
1130    pub fn mut_bounds(&mut self) -> &mut ::std::vec::Vec<f64> {
1131        &mut self.bounds
1132    }
1133
1134    // Take field
1135    pub fn take_bounds(&mut self) -> ::std::vec::Vec<f64> {
1136        ::std::mem::replace(&mut self.bounds, ::std::vec::Vec::new())
1137    }
1138}
1139
1140impl ::protobuf::Message for Distribution_ExplicitBuckets {
1141    fn is_initialized(&self) -> bool {
1142        true
1143    }
1144
1145    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1146        while !is.eof()? {
1147            let (field_number, wire_type) = is.read_tag_unpack()?;
1148            match field_number {
1149                1 => {
1150                    ::protobuf::rt::read_repeated_double_into(wire_type, is, &mut self.bounds)?;
1151                },
1152                _ => {
1153                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1154                },
1155            };
1156        }
1157        ::std::result::Result::Ok(())
1158    }
1159
1160    // Compute sizes of nested messages
1161    #[allow(unused_variables)]
1162    fn compute_size(&self) -> u32 {
1163        let mut my_size = 0;
1164        my_size += 9 * self.bounds.len() as u32;
1165        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1166        self.cached_size.set(my_size);
1167        my_size
1168    }
1169
1170    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1171        for v in &self.bounds {
1172            os.write_double(1, *v)?;
1173        };
1174        os.write_unknown_fields(self.get_unknown_fields())?;
1175        ::std::result::Result::Ok(())
1176    }
1177
1178    fn get_cached_size(&self) -> u32 {
1179        self.cached_size.get()
1180    }
1181
1182    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1183        &self.unknown_fields
1184    }
1185
1186    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1187        &mut self.unknown_fields
1188    }
1189
1190    fn as_any(&self) -> &dyn (::std::any::Any) {
1191        self as &dyn (::std::any::Any)
1192    }
1193    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1194        self as &mut dyn (::std::any::Any)
1195    }
1196    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1197        self
1198    }
1199
1200    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1201        Self::descriptor_static()
1202    }
1203
1204    fn new() -> Distribution_ExplicitBuckets {
1205        Distribution_ExplicitBuckets::new()
1206    }
1207
1208    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1209        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1210        descriptor.get(|| {
1211            let mut fields = ::std::vec::Vec::new();
1212            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1213                "bounds",
1214                |m: &Distribution_ExplicitBuckets| { &m.bounds },
1215                |m: &mut Distribution_ExplicitBuckets| { &mut m.bounds },
1216            ));
1217            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_ExplicitBuckets>(
1218                "Distribution.ExplicitBuckets",
1219                fields,
1220                file_descriptor_proto()
1221            )
1222        })
1223    }
1224
1225    fn default_instance() -> &'static Distribution_ExplicitBuckets {
1226        static instance: ::protobuf::rt::LazyV2<Distribution_ExplicitBuckets> = ::protobuf::rt::LazyV2::INIT;
1227        instance.get(Distribution_ExplicitBuckets::new)
1228    }
1229}
1230
1231impl ::protobuf::Clear for Distribution_ExplicitBuckets {
1232    fn clear(&mut self) {
1233        self.bounds.clear();
1234        self.unknown_fields.clear();
1235    }
1236}
1237
1238impl ::std::fmt::Debug for Distribution_ExplicitBuckets {
1239    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1240        ::protobuf::text_format::fmt(self, f)
1241    }
1242}
1243
1244impl ::protobuf::reflect::ProtobufValue for Distribution_ExplicitBuckets {
1245    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1246        ::protobuf::reflect::ReflectValueRef::Message(self)
1247    }
1248}
1249
1250static file_descriptor_proto_data: &'static [u8] = b"\
1251    \n/google/api/servicecontrol/v1/distribution.proto\x12\x1cgoogle.api.ser\
1252    vicecontrol.v1\x1a\x1dgoogle/api/distribution.proto\"\xf1\x06\n\x0cDistr\
1253    ibution\x12\x14\n\x05count\x18\x01\x20\x01(\x03R\x05count\x12\x12\n\x04m\
1254    ean\x18\x02\x20\x01(\x01R\x04mean\x12\x18\n\x07minimum\x18\x03\x20\x01(\
1255    \x01R\x07minimum\x12\x18\n\x07maximum\x18\x04\x20\x01(\x01R\x07maximum\
1256    \x127\n\x18sum_of_squared_deviation\x18\x05\x20\x01(\x01R\x15sumOfSquare\
1257    dDeviation\x12#\n\rbucket_counts\x18\x06\x20\x03(\x03R\x0cbucketCounts\
1258    \x12a\n\x0elinear_buckets\x18\x07\x20\x01(\x0b28.google.api.servicecontr\
1259    ol.v1.Distribution.LinearBucketsH\0R\rlinearBuckets\x12p\n\x13exponentia\
1260    l_buckets\x18\x08\x20\x01(\x0b2=.google.api.servicecontrol.v1.Distributi\
1261    on.ExponentialBucketsH\0R\x12exponentialBuckets\x12g\n\x10explicit_bucke\
1262    ts\x18\t\x20\x01(\x0b2:.google.api.servicecontrol.v1.Distribution.Explic\
1263    itBucketsH\0R\x0fexplicitBuckets\x12?\n\texemplars\x18\n\x20\x03(\x0b2!.\
1264    google.api.Distribution.ExemplarR\texemplars\x1ak\n\rLinearBuckets\x12,\
1265    \n\x12num_finite_buckets\x18\x01\x20\x01(\x05R\x10numFiniteBuckets\x12\
1266    \x14\n\x05width\x18\x02\x20\x01(\x01R\x05width\x12\x16\n\x06offset\x18\
1267    \x03\x20\x01(\x01R\x06offset\x1a}\n\x12ExponentialBuckets\x12,\n\x12num_\
1268    finite_buckets\x18\x01\x20\x01(\x05R\x10numFiniteBuckets\x12#\n\rgrowth_\
1269    factor\x18\x02\x20\x01(\x01R\x0cgrowthFactor\x12\x14\n\x05scale\x18\x03\
1270    \x20\x01(\x01R\x05scale\x1a)\n\x0fExplicitBuckets\x12\x16\n\x06bounds\
1271    \x18\x01\x20\x03(\x01R\x06boundsB\x0f\n\rbucket_optionB\xec\x01\n\x20com\
1272    .google.api.servicecontrol.v1B\x11DistributionProtoP\x01ZJcloud.google.c\
1273    om/go/servicecontrol/apiv1/servicecontrolpb;servicecontrolpb\xf8\x01\x01\
1274    \xaa\x02\x1eGoogle.Cloud.ServiceControl.V1\xca\x02\x1eGoogle\\Cloud\\Ser\
1275    viceControl\\V1\xea\x02!Google::Cloud::ServiceControl::V1J\xbc4\n\x07\
1276    \x12\x05\x0e\0\xa5\x01\x01\n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\
1277    \x04\x20Copyright\x202021\x20Google\x20LLC\n\n\x20Licensed\x20under\x20t\
1278    he\x20Apache\x20License,\x20Version\x202.0\x20(the\x20\"License\");\n\
1279    \x20you\x20may\x20not\x20use\x20this\x20file\x20except\x20in\x20complian\
1280    ce\x20with\x20the\x20License.\n\x20You\x20may\x20obtain\x20a\x20copy\x20\
1281    of\x20the\x20License\x20at\n\n\x20\x20\x20\x20\x20http://www.apache.org/\
1282    licenses/LICENSE-2.0\n\n\x20Unless\x20required\x20by\x20applicable\x20la\
1283    w\x20or\x20agreed\x20to\x20in\x20writing,\x20software\n\x20distributed\
1284    \x20under\x20the\x20License\x20is\x20distributed\x20on\x20an\x20\"AS\x20\
1285    IS\"\x20BASIS,\n\x20WITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20A\
1286    NY\x20KIND,\x20either\x20express\x20or\x20implied.\n\x20See\x20the\x20Li\
1287    cense\x20for\x20the\x20specific\x20language\x20governing\x20permissions\
1288    \x20and\n\x20limitations\x20under\x20the\x20License.\n\n\x08\n\x01\x02\
1289    \x12\x03\x10\0%\n\t\n\x02\x03\0\x12\x03\x12\0'\n\x08\n\x01\x08\x12\x03\
1290    \x14\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x14\0\x1f\n\x08\n\x01\x08\x12\x03\
1291    \x15\0;\n\t\n\x02\x08%\x12\x03\x15\0;\n\x08\n\x01\x08\x12\x03\x16\0a\n\t\
1292    \n\x02\x08\x0b\x12\x03\x16\0a\n\x08\n\x01\x08\x12\x03\x17\0\"\n\t\n\x02\
1293    \x08\n\x12\x03\x17\0\"\n\x08\n\x01\x08\x12\x03\x18\02\n\t\n\x02\x08\x08\
1294    \x12\x03\x18\02\n\x08\n\x01\x08\x12\x03\x19\09\n\t\n\x02\x08\x01\x12\x03\
1295    \x19\09\n\x08\n\x01\x08\x12\x03\x1a\0;\n\t\n\x02\x08)\x12\x03\x1a\0;\n\
1296    \x08\n\x01\x08\x12\x03\x1b\0:\n\t\n\x02\x08-\x12\x03\x1b\0:\n\x89\x03\n\
1297    \x02\x04\0\x12\x05%\0\xa5\x01\x01\x1a\xfb\x02\x20Distribution\x20represe\
1298    nts\x20a\x20frequency\x20distribution\x20of\x20double-valued\x20sample\n\
1299    \x20points.\x20It\x20contains\x20the\x20size\x20of\x20the\x20population\
1300    \x20of\x20sample\x20points\x20plus\n\x20additional\x20optional\x20inform\
1301    ation:\n\n\x20*\x20the\x20arithmetic\x20mean\x20of\x20the\x20samples\n\
1302    \x20*\x20the\x20minimum\x20and\x20maximum\x20of\x20the\x20samples\n\x20*\
1303    \x20the\x20sum-squared-deviation\x20of\x20the\x20samples,\x20used\x20to\
1304    \x20compute\x20variance\n\x20*\x20a\x20histogram\x20of\x20the\x20values\
1305    \x20of\x20the\x20sample\x20points\n\n\n\n\x03\x04\0\x01\x12\x03%\x08\x14\
1306    \n7\n\x04\x04\0\x03\0\x12\x04'\x027\x03\x1a)\x20Describing\x20buckets\
1307    \x20with\x20constant\x20width.\n\n\x0c\n\x05\x04\0\x03\0\x01\x12\x03'\n\
1308    \x17\n\xc1\x01\n\x06\x04\0\x03\0\x02\0\x12\x03+\x04!\x1a\xb1\x01\x20The\
1309    \x20number\x20of\x20finite\x20buckets.\x20With\x20the\x20underflow\x20an\
1310    d\x20overflow\x20buckets,\n\x20the\x20total\x20number\x20of\x20buckets\
1311    \x20is\x20`num_finite_buckets`\x20+\x202.\n\x20See\x20comments\x20on\x20\
1312    `bucket_options`\x20for\x20details.\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x05\
1313    \x12\x03+\x04\t\n\x0e\n\x07\x04\0\x03\0\x02\0\x01\x12\x03+\n\x1c\n\x0e\n\
1314    \x07\x04\0\x03\0\x02\0\x03\x12\x03+\x1f\x20\n\xc1\x01\n\x06\x04\0\x03\0\
1315    \x02\x01\x12\x031\x04\x15\x1a\xb1\x01\x20The\x20i'th\x20linear\x20bucket\
1316    \x20covers\x20the\x20interval\n\x20\x20\x20[offset\x20+\x20(i-1)\x20*\
1317    \x20width,\x20offset\x20+\x20i\x20*\x20width)\n\x20where\x20i\x20ranges\
1318    \x20from\x201\x20to\x20num_finite_buckets,\x20inclusive.\n\x20Must\x20be\
1319    \x20strictly\x20positive.\n\n\x0e\n\x07\x04\0\x03\0\x02\x01\x05\x12\x031\
1320    \x04\n\n\x0e\n\x07\x04\0\x03\0\x02\x01\x01\x12\x031\x0b\x10\n\x0e\n\x07\
1321    \x04\0\x03\0\x02\x01\x03\x12\x031\x13\x14\n\xa5\x01\n\x06\x04\0\x03\0\
1322    \x02\x02\x12\x036\x04\x16\x1a\x95\x01\x20The\x20i'th\x20linear\x20bucket\
1323    \x20covers\x20the\x20interval\n\x20\x20\x20[offset\x20+\x20(i-1)\x20*\
1324    \x20width,\x20offset\x20+\x20i\x20*\x20width)\n\x20where\x20i\x20ranges\
1325    \x20from\x201\x20to\x20num_finite_buckets,\x20inclusive.\n\n\x0e\n\x07\
1326    \x04\0\x03\0\x02\x02\x05\x12\x036\x04\n\n\x0e\n\x07\x04\0\x03\0\x02\x02\
1327    \x01\x12\x036\x0b\x11\n\x0e\n\x07\x04\0\x03\0\x02\x02\x03\x12\x036\x14\
1328    \x15\nD\n\x04\x04\0\x03\x01\x12\x04:\x02K\x03\x1a6\x20Describing\x20buck\
1329    ets\x20with\x20exponentially\x20growing\x20width.\n\n\x0c\n\x05\x04\0\
1330    \x03\x01\x01\x12\x03:\n\x1c\n\xc1\x01\n\x06\x04\0\x03\x01\x02\0\x12\x03>\
1331    \x04!\x1a\xb1\x01\x20The\x20number\x20of\x20finite\x20buckets.\x20With\
1332    \x20the\x20underflow\x20and\x20overflow\x20buckets,\n\x20the\x20total\
1333    \x20number\x20of\x20buckets\x20is\x20`num_finite_buckets`\x20+\x202.\n\
1334    \x20See\x20comments\x20on\x20`bucket_options`\x20for\x20details.\n\n\x0e\
1335    \n\x07\x04\0\x03\x01\x02\0\x05\x12\x03>\x04\t\n\x0e\n\x07\x04\0\x03\x01\
1336    \x02\0\x01\x12\x03>\n\x1c\n\x0e\n\x07\x04\0\x03\x01\x02\0\x03\x12\x03>\
1337    \x1f\x20\n\xcd\x01\n\x06\x04\0\x03\x01\x02\x01\x12\x03D\x04\x1d\x1a\xbd\
1338    \x01\x20The\x20i'th\x20exponential\x20bucket\x20covers\x20the\x20interva\
1339    l\n\x20\x20\x20[scale\x20*\x20growth_factor^(i-1),\x20scale\x20*\x20grow\
1340    th_factor^i)\n\x20where\x20i\x20ranges\x20from\x201\x20to\x20num_finite_\
1341    buckets\x20inclusive.\n\x20Must\x20be\x20larger\x20than\x201.0.\n\n\x0e\
1342    \n\x07\x04\0\x03\x01\x02\x01\x05\x12\x03D\x04\n\n\x0e\n\x07\x04\0\x03\
1343    \x01\x02\x01\x01\x12\x03D\x0b\x18\n\x0e\n\x07\x04\0\x03\x01\x02\x01\x03\
1344    \x12\x03D\x1b\x1c\n\xc1\x01\n\x06\x04\0\x03\x01\x02\x02\x12\x03J\x04\x15\
1345    \x1a\xb1\x01\x20The\x20i'th\x20exponential\x20bucket\x20covers\x20the\
1346    \x20interval\n\x20\x20\x20[scale\x20*\x20growth_factor^(i-1),\x20scale\
1347    \x20*\x20growth_factor^i)\n\x20where\x20i\x20ranges\x20from\x201\x20to\
1348    \x20num_finite_buckets\x20inclusive.\n\x20Must\x20be\x20>\x200.\n\n\x0e\
1349    \n\x07\x04\0\x03\x01\x02\x02\x05\x12\x03J\x04\n\n\x0e\n\x07\x04\0\x03\
1350    \x01\x02\x02\x01\x12\x03J\x0b\x10\n\x0e\n\x07\x04\0\x03\x01\x02\x02\x03\
1351    \x12\x03J\x13\x14\nF\n\x04\x04\0\x03\x02\x12\x04N\x02_\x03\x1a8\x20Descr\
1352    ibing\x20buckets\x20with\x20arbitrary\x20user-provided\x20width.\n\n\x0c\
1353    \n\x05\x04\0\x03\x02\x01\x12\x03N\n\x19\n\xec\x05\n\x06\x04\0\x03\x02\
1354    \x02\0\x12\x03^\x04\x1f\x1a\xdc\x05\x20'bound'\x20is\x20a\x20list\x20of\
1355    \x20strictly\x20increasing\x20boundaries\x20between\n\x20buckets.\x20Not\
1356    e\x20that\x20a\x20list\x20of\x20length\x20N-1\x20defines\x20N\x20buckets\
1357    \x20because\n\x20of\x20fenceposting.\x20See\x20comments\x20on\x20`bucket\
1358    _options`\x20for\x20details.\n\n\x20The\x20i'th\x20finite\x20bucket\x20c\
1359    overs\x20the\x20interval\n\x20\x20\x20[bound[i-1],\x20bound[i])\n\x20whe\
1360    re\x20i\x20ranges\x20from\x201\x20to\x20bound_size()\x20-\x201.\x20Note\
1361    \x20that\x20there\x20are\x20no\n\x20finite\x20buckets\x20at\x20all\x20if\
1362    \x20'bound'\x20only\x20contains\x20a\x20single\x20element;\x20in\n\x20th\
1363    at\x20special\x20case\x20the\x20single\x20bound\x20defines\x20the\x20bou\
1364    ndary\x20between\x20the\n\x20underflow\x20and\x20overflow\x20buckets.\n\
1365    \n\x20bucket\x20number\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
1366    \x20\x20\x20\x20\x20\x20\x20lower\x20bound\x20\x20\x20\x20upper\x20bound\
1367    \n\x20\x20i\x20==\x200\x20(underflow)\x20\x20\x20\x20\x20\x20\x20\x20\
1368    \x20\x20\x20\x20\x20\x20-inf\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\
1369    bound[i]\n\x20\x200\x20<\x20i\x20<\x20bound_size()\x20\x20\x20\x20\x20\
1370    \x20\x20\x20\x20\x20\x20\x20bound[i-1]\x20\x20\x20\x20\x20bound[i]\n\x20\
1371    \x20i\x20==\x20bound_size()\x20(overflow)\x20\x20\x20\x20bound[i-1]\x20\
1372    \x20\x20\x20\x20+inf\n\n\x0e\n\x07\x04\0\x03\x02\x02\0\x04\x12\x03^\x04\
1373    \x0c\n\x0e\n\x07\x04\0\x03\x02\x02\0\x05\x12\x03^\r\x13\n\x0e\n\x07\x04\
1374    \0\x03\x02\x02\0\x01\x12\x03^\x14\x1a\n\x0e\n\x07\x04\0\x03\x02\x02\0\
1375    \x03\x12\x03^\x1d\x1e\nM\n\x04\x04\0\x02\0\x12\x03b\x02\x12\x1a@\x20The\
1376    \x20total\x20number\x20of\x20samples\x20in\x20the\x20distribution.\x20Mu\
1377    st\x20be\x20>=\x200.\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03b\x02\x07\n\
1378    \x0c\n\x05\x04\0\x02\0\x01\x12\x03b\x08\r\n\x0c\n\x05\x04\0\x02\0\x03\
1379    \x12\x03b\x10\x11\nx\n\x04\x04\0\x02\x01\x12\x03f\x02\x12\x1ak\x20The\
1380    \x20arithmetic\x20mean\x20of\x20the\x20samples\x20in\x20the\x20distribut\
1381    ion.\x20If\x20`count`\x20is\n\x20zero\x20then\x20this\x20field\x20must\
1382    \x20be\x20zero.\n\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03f\x02\x08\n\x0c\n\
1383    \x05\x04\0\x02\x01\x01\x12\x03f\t\r\n\x0c\n\x05\x04\0\x02\x01\x03\x12\
1384    \x03f\x10\x11\nS\n\x04\x04\0\x02\x02\x12\x03i\x02\x15\x1aF\x20The\x20min\
1385    imum\x20of\x20the\x20population\x20of\x20values.\x20Ignored\x20if\x20`co\
1386    unt`\x20is\x20zero.\n\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03i\x02\x08\n\
1387    \x0c\n\x05\x04\0\x02\x02\x01\x12\x03i\t\x10\n\x0c\n\x05\x04\0\x02\x02\
1388    \x03\x12\x03i\x13\x14\nS\n\x04\x04\0\x02\x03\x12\x03l\x02\x15\x1aF\x20Th\
1389    e\x20maximum\x20of\x20the\x20population\x20of\x20values.\x20Ignored\x20i\
1390    f\x20`count`\x20is\x20zero.\n\n\x0c\n\x05\x04\0\x02\x03\x05\x12\x03l\x02\
1391    \x08\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03l\t\x10\n\x0c\n\x05\x04\0\x02\
1392    \x03\x03\x12\x03l\x13\x14\n\xe0\x01\n\x04\x04\0\x02\x04\x12\x03r\x02&\
1393    \x1a\xd2\x01\x20The\x20sum\x20of\x20squared\x20deviations\x20from\x20the\
1394    \x20mean:\n\x20\x20\x20Sum[i=1..count]((x_i\x20-\x20mean)^2)\n\x20where\
1395    \x20each\x20x_i\x20is\x20a\x20sample\x20values.\x20If\x20`count`\x20is\
1396    \x20zero\x20then\x20this\x20field\n\x20must\x20be\x20zero,\x20otherwise\
1397    \x20validation\x20of\x20the\x20request\x20fails.\n\n\x0c\n\x05\x04\0\x02\
1398    \x04\x05\x12\x03r\x02\x08\n\x0c\n\x05\x04\0\x02\x04\x01\x12\x03r\t!\n\
1399    \x0c\n\x05\x04\0\x02\x04\x03\x12\x03r$%\n\xb8\x04\n\x04\x04\0\x02\x05\
1400    \x12\x03\x7f\x02#\x1a\xaa\x04\x20The\x20number\x20of\x20samples\x20in\
1401    \x20each\x20histogram\x20bucket.\x20`bucket_counts`\x20are\n\x20optional\
1402    .\x20If\x20present,\x20they\x20must\x20sum\x20to\x20the\x20`count`\x20va\
1403    lue.\n\n\x20The\x20buckets\x20are\x20defined\x20below\x20in\x20`bucket_o\
1404    ption`.\x20There\x20are\x20N\x20buckets.\n\x20`bucket_counts[0]`\x20is\
1405    \x20the\x20number\x20of\x20samples\x20in\x20the\x20underflow\x20bucket.\
1406    \n\x20`bucket_counts[1]`\x20to\x20`bucket_counts[N-1]`\x20are\x20the\x20\
1407    numbers\x20of\x20samples\n\x20in\x20each\x20of\x20the\x20finite\x20bucke\
1408    ts.\x20And\x20`bucket_counts[N]\x20is\x20the\x20number\n\x20of\x20sample\
1409    s\x20in\x20the\x20overflow\x20bucket.\x20See\x20the\x20comments\x20of\
1410    \x20`bucket_option`\n\x20below\x20for\x20more\x20details.\n\n\x20Any\x20\
1411    suffix\x20of\x20trailing\x20zeros\x20may\x20be\x20omitted.\n\n\x0c\n\x05\
1412    \x04\0\x02\x05\x04\x12\x03\x7f\x02\n\n\x0c\n\x05\x04\0\x02\x05\x05\x12\
1413    \x03\x7f\x0b\x10\n\x0c\n\x05\x04\0\x02\x05\x01\x12\x03\x7f\x11\x1e\n\x0c\
1414    \n\x05\x04\0\x02\x05\x03\x12\x03\x7f!\"\n\xf2\x08\n\x04\x04\0\x08\0\x12\
1415    \x06\x98\x01\x02\xa1\x01\x03\x1a\xe1\x08\x20Defines\x20the\x20buckets\
1416    \x20in\x20the\x20histogram.\x20`bucket_option`\x20and\x20`bucket_counts`\
1417    \n\x20must\x20be\x20both\x20set,\x20or\x20both\x20unset.\n\n\x20Buckets\
1418    \x20are\x20numbered\x20in\x20the\x20range\x20of\x20[0,\x20N],\x20with\
1419    \x20a\x20total\x20of\x20N+1\x20buckets.\n\x20There\x20must\x20be\x20at\
1420    \x20least\x20two\x20buckets\x20(a\x20single-bucket\x20histogram\x20gives\
1421    \n\x20no\x20information\x20that\x20isn't\x20already\x20provided\x20by\
1422    \x20`count`).\n\n\x20The\x20first\x20bucket\x20is\x20the\x20underflow\
1423    \x20bucket\x20which\x20has\x20a\x20lower\x20bound\n\x20of\x20-inf.\x20Th\
1424    e\x20last\x20bucket\x20is\x20the\x20overflow\x20bucket\x20which\x20has\
1425    \x20an\n\x20upper\x20bound\x20of\x20+inf.\x20All\x20other\x20buckets\x20\
1426    (if\x20any)\x20are\x20called\x20\"finite\"\n\x20buckets\x20because\x20th\
1427    ey\x20have\x20finite\x20lower\x20and\x20upper\x20bounds.\x20As\x20descri\
1428    bed\n\x20below,\x20there\x20are\x20three\x20ways\x20to\x20define\x20the\
1429    \x20finite\x20buckets.\n\n\x20\x20\x20(1)\x20Buckets\x20with\x20constant\
1430    \x20width.\n\x20\x20\x20(2)\x20Buckets\x20with\x20exponentially\x20growi\
1431    ng\x20widths.\n\x20\x20\x20(3)\x20Buckets\x20with\x20arbitrary\x20user-p\
1432    rovided\x20widths.\n\n\x20In\x20all\x20cases,\x20the\x20buckets\x20cover\
1433    \x20the\x20entire\x20real\x20number\x20line\x20(-inf,\n\x20+inf).\x20Buc\
1434    ket\x20upper\x20bounds\x20are\x20exclusive\x20and\x20lower\x20bounds\x20\
1435    are\n\x20inclusive.\x20The\x20upper\x20bound\x20of\x20the\x20underflow\
1436    \x20bucket\x20is\x20equal\x20to\x20the\n\x20lower\x20bound\x20of\x20the\
1437    \x20smallest\x20finite\x20bucket;\x20the\x20lower\x20bound\x20of\x20the\
1438    \n\x20overflow\x20bucket\x20is\x20equal\x20to\x20the\x20upper\x20bound\
1439    \x20of\x20the\x20largest\x20finite\n\x20bucket.\n\n\r\n\x05\x04\0\x08\0\
1440    \x01\x12\x04\x98\x01\x08\x15\n,\n\x04\x04\0\x02\x06\x12\x04\x9a\x01\x04%\
1441    \x1a\x1e\x20Buckets\x20with\x20constant\x20width.\n\n\r\n\x05\x04\0\x02\
1442    \x06\x06\x12\x04\x9a\x01\x04\x11\n\r\n\x05\x04\0\x02\x06\x01\x12\x04\x9a\
1443    \x01\x12\x20\n\r\n\x05\x04\0\x02\x06\x03\x12\x04\x9a\x01#$\n9\n\x04\x04\
1444    \0\x02\x07\x12\x04\x9d\x01\x04/\x1a+\x20Buckets\x20with\x20exponentially\
1445    \x20growing\x20width.\n\n\r\n\x05\x04\0\x02\x07\x06\x12\x04\x9d\x01\x04\
1446    \x16\n\r\n\x05\x04\0\x02\x07\x01\x12\x04\x9d\x01\x17*\n\r\n\x05\x04\0\
1447    \x02\x07\x03\x12\x04\x9d\x01-.\n;\n\x04\x04\0\x02\x08\x12\x04\xa0\x01\
1448    \x04)\x1a-\x20Buckets\x20with\x20arbitrary\x20user-provided\x20width.\n\
1449    \n\r\n\x05\x04\0\x02\x08\x06\x12\x04\xa0\x01\x04\x13\n\r\n\x05\x04\0\x02\
1450    \x08\x01\x12\x04\xa0\x01\x14$\n\r\n\x05\x04\0\x02\x08\x03\x12\x04\xa0\
1451    \x01'(\nM\n\x04\x04\0\x02\t\x12\x04\xa4\x01\x02;\x1a?\x20Example\x20poin\
1452    ts.\x20Must\x20be\x20in\x20increasing\x20order\x20of\x20`value`\x20field\
1453    .\n\n\r\n\x05\x04\0\x02\t\x04\x12\x04\xa4\x01\x02\n\n\r\n\x05\x04\0\x02\
1454    \t\x06\x12\x04\xa4\x01\x0b+\n\r\n\x05\x04\0\x02\t\x01\x12\x04\xa4\x01,5\
1455    \n\r\n\x05\x04\0\x02\t\x03\x12\x04\xa4\x018:b\x06proto3\
1456";
1457
1458static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
1459
1460fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
1461    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
1462}
1463
1464pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
1465    file_descriptor_proto_lazy.get(|| {
1466        parse_descriptor_proto()
1467    })
1468}