google_cloud_rust_raw/identity/accesscontextmanager/v1/
access_level.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/identity/accesscontextmanager/v1/access_level.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 AccessLevel {
28    // message fields
29    pub name: ::std::string::String,
30    pub title: ::std::string::String,
31    pub description: ::std::string::String,
32    pub create_time: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
33    pub update_time: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
34    // message oneof groups
35    pub level: ::std::option::Option<AccessLevel_oneof_level>,
36    // special fields
37    pub unknown_fields: ::protobuf::UnknownFields,
38    pub cached_size: ::protobuf::CachedSize,
39}
40
41impl<'a> ::std::default::Default for &'a AccessLevel {
42    fn default() -> &'a AccessLevel {
43        <AccessLevel as ::protobuf::Message>::default_instance()
44    }
45}
46
47#[derive(Clone,PartialEq,Debug)]
48pub enum AccessLevel_oneof_level {
49    basic(BasicLevel),
50    custom(CustomLevel),
51}
52
53impl AccessLevel {
54    pub fn new() -> AccessLevel {
55        ::std::default::Default::default()
56    }
57
58    // string name = 1;
59
60
61    pub fn get_name(&self) -> &str {
62        &self.name
63    }
64    pub fn clear_name(&mut self) {
65        self.name.clear();
66    }
67
68    // Param is passed by value, moved
69    pub fn set_name(&mut self, v: ::std::string::String) {
70        self.name = v;
71    }
72
73    // Mutable pointer to the field.
74    // If field is not initialized, it is initialized with default value first.
75    pub fn mut_name(&mut self) -> &mut ::std::string::String {
76        &mut self.name
77    }
78
79    // Take field
80    pub fn take_name(&mut self) -> ::std::string::String {
81        ::std::mem::replace(&mut self.name, ::std::string::String::new())
82    }
83
84    // string title = 2;
85
86
87    pub fn get_title(&self) -> &str {
88        &self.title
89    }
90    pub fn clear_title(&mut self) {
91        self.title.clear();
92    }
93
94    // Param is passed by value, moved
95    pub fn set_title(&mut self, v: ::std::string::String) {
96        self.title = v;
97    }
98
99    // Mutable pointer to the field.
100    // If field is not initialized, it is initialized with default value first.
101    pub fn mut_title(&mut self) -> &mut ::std::string::String {
102        &mut self.title
103    }
104
105    // Take field
106    pub fn take_title(&mut self) -> ::std::string::String {
107        ::std::mem::replace(&mut self.title, ::std::string::String::new())
108    }
109
110    // string description = 3;
111
112
113    pub fn get_description(&self) -> &str {
114        &self.description
115    }
116    pub fn clear_description(&mut self) {
117        self.description.clear();
118    }
119
120    // Param is passed by value, moved
121    pub fn set_description(&mut self, v: ::std::string::String) {
122        self.description = v;
123    }
124
125    // Mutable pointer to the field.
126    // If field is not initialized, it is initialized with default value first.
127    pub fn mut_description(&mut self) -> &mut ::std::string::String {
128        &mut self.description
129    }
130
131    // Take field
132    pub fn take_description(&mut self) -> ::std::string::String {
133        ::std::mem::replace(&mut self.description, ::std::string::String::new())
134    }
135
136    // .google.identity.accesscontextmanager.v1.BasicLevel basic = 4;
137
138
139    pub fn get_basic(&self) -> &BasicLevel {
140        match self.level {
141            ::std::option::Option::Some(AccessLevel_oneof_level::basic(ref v)) => v,
142            _ => <BasicLevel as ::protobuf::Message>::default_instance(),
143        }
144    }
145    pub fn clear_basic(&mut self) {
146        self.level = ::std::option::Option::None;
147    }
148
149    pub fn has_basic(&self) -> bool {
150        match self.level {
151            ::std::option::Option::Some(AccessLevel_oneof_level::basic(..)) => true,
152            _ => false,
153        }
154    }
155
156    // Param is passed by value, moved
157    pub fn set_basic(&mut self, v: BasicLevel) {
158        self.level = ::std::option::Option::Some(AccessLevel_oneof_level::basic(v))
159    }
160
161    // Mutable pointer to the field.
162    pub fn mut_basic(&mut self) -> &mut BasicLevel {
163        if let ::std::option::Option::Some(AccessLevel_oneof_level::basic(_)) = self.level {
164        } else {
165            self.level = ::std::option::Option::Some(AccessLevel_oneof_level::basic(BasicLevel::new()));
166        }
167        match self.level {
168            ::std::option::Option::Some(AccessLevel_oneof_level::basic(ref mut v)) => v,
169            _ => panic!(),
170        }
171    }
172
173    // Take field
174    pub fn take_basic(&mut self) -> BasicLevel {
175        if self.has_basic() {
176            match self.level.take() {
177                ::std::option::Option::Some(AccessLevel_oneof_level::basic(v)) => v,
178                _ => panic!(),
179            }
180        } else {
181            BasicLevel::new()
182        }
183    }
184
185    // .google.identity.accesscontextmanager.v1.CustomLevel custom = 5;
186
187
188    pub fn get_custom(&self) -> &CustomLevel {
189        match self.level {
190            ::std::option::Option::Some(AccessLevel_oneof_level::custom(ref v)) => v,
191            _ => <CustomLevel as ::protobuf::Message>::default_instance(),
192        }
193    }
194    pub fn clear_custom(&mut self) {
195        self.level = ::std::option::Option::None;
196    }
197
198    pub fn has_custom(&self) -> bool {
199        match self.level {
200            ::std::option::Option::Some(AccessLevel_oneof_level::custom(..)) => true,
201            _ => false,
202        }
203    }
204
205    // Param is passed by value, moved
206    pub fn set_custom(&mut self, v: CustomLevel) {
207        self.level = ::std::option::Option::Some(AccessLevel_oneof_level::custom(v))
208    }
209
210    // Mutable pointer to the field.
211    pub fn mut_custom(&mut self) -> &mut CustomLevel {
212        if let ::std::option::Option::Some(AccessLevel_oneof_level::custom(_)) = self.level {
213        } else {
214            self.level = ::std::option::Option::Some(AccessLevel_oneof_level::custom(CustomLevel::new()));
215        }
216        match self.level {
217            ::std::option::Option::Some(AccessLevel_oneof_level::custom(ref mut v)) => v,
218            _ => panic!(),
219        }
220    }
221
222    // Take field
223    pub fn take_custom(&mut self) -> CustomLevel {
224        if self.has_custom() {
225            match self.level.take() {
226                ::std::option::Option::Some(AccessLevel_oneof_level::custom(v)) => v,
227                _ => panic!(),
228            }
229        } else {
230            CustomLevel::new()
231        }
232    }
233
234    // .google.protobuf.Timestamp create_time = 6;
235
236
237    pub fn get_create_time(&self) -> &::protobuf::well_known_types::Timestamp {
238        self.create_time.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
239    }
240    pub fn clear_create_time(&mut self) {
241        self.create_time.clear();
242    }
243
244    pub fn has_create_time(&self) -> bool {
245        self.create_time.is_some()
246    }
247
248    // Param is passed by value, moved
249    pub fn set_create_time(&mut self, v: ::protobuf::well_known_types::Timestamp) {
250        self.create_time = ::protobuf::SingularPtrField::some(v);
251    }
252
253    // Mutable pointer to the field.
254    // If field is not initialized, it is initialized with default value first.
255    pub fn mut_create_time(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
256        if self.create_time.is_none() {
257            self.create_time.set_default();
258        }
259        self.create_time.as_mut().unwrap()
260    }
261
262    // Take field
263    pub fn take_create_time(&mut self) -> ::protobuf::well_known_types::Timestamp {
264        self.create_time.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
265    }
266
267    // .google.protobuf.Timestamp update_time = 7;
268
269
270    pub fn get_update_time(&self) -> &::protobuf::well_known_types::Timestamp {
271        self.update_time.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
272    }
273    pub fn clear_update_time(&mut self) {
274        self.update_time.clear();
275    }
276
277    pub fn has_update_time(&self) -> bool {
278        self.update_time.is_some()
279    }
280
281    // Param is passed by value, moved
282    pub fn set_update_time(&mut self, v: ::protobuf::well_known_types::Timestamp) {
283        self.update_time = ::protobuf::SingularPtrField::some(v);
284    }
285
286    // Mutable pointer to the field.
287    // If field is not initialized, it is initialized with default value first.
288    pub fn mut_update_time(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
289        if self.update_time.is_none() {
290            self.update_time.set_default();
291        }
292        self.update_time.as_mut().unwrap()
293    }
294
295    // Take field
296    pub fn take_update_time(&mut self) -> ::protobuf::well_known_types::Timestamp {
297        self.update_time.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
298    }
299}
300
301impl ::protobuf::Message for AccessLevel {
302    fn is_initialized(&self) -> bool {
303        if let Some(AccessLevel_oneof_level::basic(ref v)) = self.level {
304            if !v.is_initialized() {
305                return false;
306            }
307        }
308        if let Some(AccessLevel_oneof_level::custom(ref v)) = self.level {
309            if !v.is_initialized() {
310                return false;
311            }
312        }
313        for v in &self.create_time {
314            if !v.is_initialized() {
315                return false;
316            }
317        };
318        for v in &self.update_time {
319            if !v.is_initialized() {
320                return false;
321            }
322        };
323        true
324    }
325
326    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
327        while !is.eof()? {
328            let (field_number, wire_type) = is.read_tag_unpack()?;
329            match field_number {
330                1 => {
331                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
332                },
333                2 => {
334                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.title)?;
335                },
336                3 => {
337                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.description)?;
338                },
339                4 => {
340                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
341                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
342                    }
343                    self.level = ::std::option::Option::Some(AccessLevel_oneof_level::basic(is.read_message()?));
344                },
345                5 => {
346                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
347                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
348                    }
349                    self.level = ::std::option::Option::Some(AccessLevel_oneof_level::custom(is.read_message()?));
350                },
351                6 => {
352                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.create_time)?;
353                },
354                7 => {
355                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.update_time)?;
356                },
357                _ => {
358                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
359                },
360            };
361        }
362        ::std::result::Result::Ok(())
363    }
364
365    // Compute sizes of nested messages
366    #[allow(unused_variables)]
367    fn compute_size(&self) -> u32 {
368        let mut my_size = 0;
369        if !self.name.is_empty() {
370            my_size += ::protobuf::rt::string_size(1, &self.name);
371        }
372        if !self.title.is_empty() {
373            my_size += ::protobuf::rt::string_size(2, &self.title);
374        }
375        if !self.description.is_empty() {
376            my_size += ::protobuf::rt::string_size(3, &self.description);
377        }
378        if let Some(ref v) = self.create_time.as_ref() {
379            let len = v.compute_size();
380            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
381        }
382        if let Some(ref v) = self.update_time.as_ref() {
383            let len = v.compute_size();
384            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
385        }
386        if let ::std::option::Option::Some(ref v) = self.level {
387            match v {
388                &AccessLevel_oneof_level::basic(ref v) => {
389                    let len = v.compute_size();
390                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
391                },
392                &AccessLevel_oneof_level::custom(ref v) => {
393                    let len = v.compute_size();
394                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
395                },
396            };
397        }
398        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
399        self.cached_size.set(my_size);
400        my_size
401    }
402
403    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
404        if !self.name.is_empty() {
405            os.write_string(1, &self.name)?;
406        }
407        if !self.title.is_empty() {
408            os.write_string(2, &self.title)?;
409        }
410        if !self.description.is_empty() {
411            os.write_string(3, &self.description)?;
412        }
413        if let Some(ref v) = self.create_time.as_ref() {
414            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
415            os.write_raw_varint32(v.get_cached_size())?;
416            v.write_to_with_cached_sizes(os)?;
417        }
418        if let Some(ref v) = self.update_time.as_ref() {
419            os.write_tag(7, ::protobuf::wire_format::WireTypeLengthDelimited)?;
420            os.write_raw_varint32(v.get_cached_size())?;
421            v.write_to_with_cached_sizes(os)?;
422        }
423        if let ::std::option::Option::Some(ref v) = self.level {
424            match v {
425                &AccessLevel_oneof_level::basic(ref v) => {
426                    os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
427                    os.write_raw_varint32(v.get_cached_size())?;
428                    v.write_to_with_cached_sizes(os)?;
429                },
430                &AccessLevel_oneof_level::custom(ref v) => {
431                    os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
432                    os.write_raw_varint32(v.get_cached_size())?;
433                    v.write_to_with_cached_sizes(os)?;
434                },
435            };
436        }
437        os.write_unknown_fields(self.get_unknown_fields())?;
438        ::std::result::Result::Ok(())
439    }
440
441    fn get_cached_size(&self) -> u32 {
442        self.cached_size.get()
443    }
444
445    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
446        &self.unknown_fields
447    }
448
449    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
450        &mut self.unknown_fields
451    }
452
453    fn as_any(&self) -> &dyn (::std::any::Any) {
454        self as &dyn (::std::any::Any)
455    }
456    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
457        self as &mut dyn (::std::any::Any)
458    }
459    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
460        self
461    }
462
463    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
464        Self::descriptor_static()
465    }
466
467    fn new() -> AccessLevel {
468        AccessLevel::new()
469    }
470
471    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
472        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
473        descriptor.get(|| {
474            let mut fields = ::std::vec::Vec::new();
475            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
476                "name",
477                |m: &AccessLevel| { &m.name },
478                |m: &mut AccessLevel| { &mut m.name },
479            ));
480            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
481                "title",
482                |m: &AccessLevel| { &m.title },
483                |m: &mut AccessLevel| { &mut m.title },
484            ));
485            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
486                "description",
487                |m: &AccessLevel| { &m.description },
488                |m: &mut AccessLevel| { &mut m.description },
489            ));
490            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, BasicLevel>(
491                "basic",
492                AccessLevel::has_basic,
493                AccessLevel::get_basic,
494            ));
495            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, CustomLevel>(
496                "custom",
497                AccessLevel::has_custom,
498                AccessLevel::get_custom,
499            ));
500            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
501                "create_time",
502                |m: &AccessLevel| { &m.create_time },
503                |m: &mut AccessLevel| { &mut m.create_time },
504            ));
505            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
506                "update_time",
507                |m: &AccessLevel| { &m.update_time },
508                |m: &mut AccessLevel| { &mut m.update_time },
509            ));
510            ::protobuf::reflect::MessageDescriptor::new_pb_name::<AccessLevel>(
511                "AccessLevel",
512                fields,
513                file_descriptor_proto()
514            )
515        })
516    }
517
518    fn default_instance() -> &'static AccessLevel {
519        static instance: ::protobuf::rt::LazyV2<AccessLevel> = ::protobuf::rt::LazyV2::INIT;
520        instance.get(AccessLevel::new)
521    }
522}
523
524impl ::protobuf::Clear for AccessLevel {
525    fn clear(&mut self) {
526        self.name.clear();
527        self.title.clear();
528        self.description.clear();
529        self.level = ::std::option::Option::None;
530        self.level = ::std::option::Option::None;
531        self.create_time.clear();
532        self.update_time.clear();
533        self.unknown_fields.clear();
534    }
535}
536
537impl ::std::fmt::Debug for AccessLevel {
538    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
539        ::protobuf::text_format::fmt(self, f)
540    }
541}
542
543impl ::protobuf::reflect::ProtobufValue for AccessLevel {
544    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
545        ::protobuf::reflect::ReflectValueRef::Message(self)
546    }
547}
548
549#[derive(PartialEq,Clone,Default)]
550pub struct BasicLevel {
551    // message fields
552    pub conditions: ::protobuf::RepeatedField<Condition>,
553    pub combining_function: BasicLevel_ConditionCombiningFunction,
554    // special fields
555    pub unknown_fields: ::protobuf::UnknownFields,
556    pub cached_size: ::protobuf::CachedSize,
557}
558
559impl<'a> ::std::default::Default for &'a BasicLevel {
560    fn default() -> &'a BasicLevel {
561        <BasicLevel as ::protobuf::Message>::default_instance()
562    }
563}
564
565impl BasicLevel {
566    pub fn new() -> BasicLevel {
567        ::std::default::Default::default()
568    }
569
570    // repeated .google.identity.accesscontextmanager.v1.Condition conditions = 1;
571
572
573    pub fn get_conditions(&self) -> &[Condition] {
574        &self.conditions
575    }
576    pub fn clear_conditions(&mut self) {
577        self.conditions.clear();
578    }
579
580    // Param is passed by value, moved
581    pub fn set_conditions(&mut self, v: ::protobuf::RepeatedField<Condition>) {
582        self.conditions = v;
583    }
584
585    // Mutable pointer to the field.
586    pub fn mut_conditions(&mut self) -> &mut ::protobuf::RepeatedField<Condition> {
587        &mut self.conditions
588    }
589
590    // Take field
591    pub fn take_conditions(&mut self) -> ::protobuf::RepeatedField<Condition> {
592        ::std::mem::replace(&mut self.conditions, ::protobuf::RepeatedField::new())
593    }
594
595    // .google.identity.accesscontextmanager.v1.BasicLevel.ConditionCombiningFunction combining_function = 2;
596
597
598    pub fn get_combining_function(&self) -> BasicLevel_ConditionCombiningFunction {
599        self.combining_function
600    }
601    pub fn clear_combining_function(&mut self) {
602        self.combining_function = BasicLevel_ConditionCombiningFunction::AND;
603    }
604
605    // Param is passed by value, moved
606    pub fn set_combining_function(&mut self, v: BasicLevel_ConditionCombiningFunction) {
607        self.combining_function = v;
608    }
609}
610
611impl ::protobuf::Message for BasicLevel {
612    fn is_initialized(&self) -> bool {
613        for v in &self.conditions {
614            if !v.is_initialized() {
615                return false;
616            }
617        };
618        true
619    }
620
621    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
622        while !is.eof()? {
623            let (field_number, wire_type) = is.read_tag_unpack()?;
624            match field_number {
625                1 => {
626                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.conditions)?;
627                },
628                2 => {
629                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.combining_function, 2, &mut self.unknown_fields)?
630                },
631                _ => {
632                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
633                },
634            };
635        }
636        ::std::result::Result::Ok(())
637    }
638
639    // Compute sizes of nested messages
640    #[allow(unused_variables)]
641    fn compute_size(&self) -> u32 {
642        let mut my_size = 0;
643        for value in &self.conditions {
644            let len = value.compute_size();
645            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
646        };
647        if self.combining_function != BasicLevel_ConditionCombiningFunction::AND {
648            my_size += ::protobuf::rt::enum_size(2, self.combining_function);
649        }
650        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
651        self.cached_size.set(my_size);
652        my_size
653    }
654
655    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
656        for v in &self.conditions {
657            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
658            os.write_raw_varint32(v.get_cached_size())?;
659            v.write_to_with_cached_sizes(os)?;
660        };
661        if self.combining_function != BasicLevel_ConditionCombiningFunction::AND {
662            os.write_enum(2, ::protobuf::ProtobufEnum::value(&self.combining_function))?;
663        }
664        os.write_unknown_fields(self.get_unknown_fields())?;
665        ::std::result::Result::Ok(())
666    }
667
668    fn get_cached_size(&self) -> u32 {
669        self.cached_size.get()
670    }
671
672    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
673        &self.unknown_fields
674    }
675
676    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
677        &mut self.unknown_fields
678    }
679
680    fn as_any(&self) -> &dyn (::std::any::Any) {
681        self as &dyn (::std::any::Any)
682    }
683    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
684        self as &mut dyn (::std::any::Any)
685    }
686    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
687        self
688    }
689
690    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
691        Self::descriptor_static()
692    }
693
694    fn new() -> BasicLevel {
695        BasicLevel::new()
696    }
697
698    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
699        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
700        descriptor.get(|| {
701            let mut fields = ::std::vec::Vec::new();
702            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Condition>>(
703                "conditions",
704                |m: &BasicLevel| { &m.conditions },
705                |m: &mut BasicLevel| { &mut m.conditions },
706            ));
707            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<BasicLevel_ConditionCombiningFunction>>(
708                "combining_function",
709                |m: &BasicLevel| { &m.combining_function },
710                |m: &mut BasicLevel| { &mut m.combining_function },
711            ));
712            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BasicLevel>(
713                "BasicLevel",
714                fields,
715                file_descriptor_proto()
716            )
717        })
718    }
719
720    fn default_instance() -> &'static BasicLevel {
721        static instance: ::protobuf::rt::LazyV2<BasicLevel> = ::protobuf::rt::LazyV2::INIT;
722        instance.get(BasicLevel::new)
723    }
724}
725
726impl ::protobuf::Clear for BasicLevel {
727    fn clear(&mut self) {
728        self.conditions.clear();
729        self.combining_function = BasicLevel_ConditionCombiningFunction::AND;
730        self.unknown_fields.clear();
731    }
732}
733
734impl ::std::fmt::Debug for BasicLevel {
735    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
736        ::protobuf::text_format::fmt(self, f)
737    }
738}
739
740impl ::protobuf::reflect::ProtobufValue for BasicLevel {
741    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
742        ::protobuf::reflect::ReflectValueRef::Message(self)
743    }
744}
745
746#[derive(Clone,PartialEq,Eq,Debug,Hash)]
747pub enum BasicLevel_ConditionCombiningFunction {
748    AND = 0,
749    OR = 1,
750}
751
752impl ::protobuf::ProtobufEnum for BasicLevel_ConditionCombiningFunction {
753    fn value(&self) -> i32 {
754        *self as i32
755    }
756
757    fn from_i32(value: i32) -> ::std::option::Option<BasicLevel_ConditionCombiningFunction> {
758        match value {
759            0 => ::std::option::Option::Some(BasicLevel_ConditionCombiningFunction::AND),
760            1 => ::std::option::Option::Some(BasicLevel_ConditionCombiningFunction::OR),
761            _ => ::std::option::Option::None
762        }
763    }
764
765    fn values() -> &'static [Self] {
766        static values: &'static [BasicLevel_ConditionCombiningFunction] = &[
767            BasicLevel_ConditionCombiningFunction::AND,
768            BasicLevel_ConditionCombiningFunction::OR,
769        ];
770        values
771    }
772
773    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
774        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
775        descriptor.get(|| {
776            ::protobuf::reflect::EnumDescriptor::new_pb_name::<BasicLevel_ConditionCombiningFunction>("BasicLevel.ConditionCombiningFunction", file_descriptor_proto())
777        })
778    }
779}
780
781impl ::std::marker::Copy for BasicLevel_ConditionCombiningFunction {
782}
783
784impl ::std::default::Default for BasicLevel_ConditionCombiningFunction {
785    fn default() -> Self {
786        BasicLevel_ConditionCombiningFunction::AND
787    }
788}
789
790impl ::protobuf::reflect::ProtobufValue for BasicLevel_ConditionCombiningFunction {
791    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
792        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
793    }
794}
795
796#[derive(PartialEq,Clone,Default)]
797pub struct Condition {
798    // message fields
799    pub ip_subnetworks: ::protobuf::RepeatedField<::std::string::String>,
800    pub device_policy: ::protobuf::SingularPtrField<DevicePolicy>,
801    pub required_access_levels: ::protobuf::RepeatedField<::std::string::String>,
802    pub negate: bool,
803    pub members: ::protobuf::RepeatedField<::std::string::String>,
804    pub regions: ::protobuf::RepeatedField<::std::string::String>,
805    // special fields
806    pub unknown_fields: ::protobuf::UnknownFields,
807    pub cached_size: ::protobuf::CachedSize,
808}
809
810impl<'a> ::std::default::Default for &'a Condition {
811    fn default() -> &'a Condition {
812        <Condition as ::protobuf::Message>::default_instance()
813    }
814}
815
816impl Condition {
817    pub fn new() -> Condition {
818        ::std::default::Default::default()
819    }
820
821    // repeated string ip_subnetworks = 1;
822
823
824    pub fn get_ip_subnetworks(&self) -> &[::std::string::String] {
825        &self.ip_subnetworks
826    }
827    pub fn clear_ip_subnetworks(&mut self) {
828        self.ip_subnetworks.clear();
829    }
830
831    // Param is passed by value, moved
832    pub fn set_ip_subnetworks(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
833        self.ip_subnetworks = v;
834    }
835
836    // Mutable pointer to the field.
837    pub fn mut_ip_subnetworks(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
838        &mut self.ip_subnetworks
839    }
840
841    // Take field
842    pub fn take_ip_subnetworks(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
843        ::std::mem::replace(&mut self.ip_subnetworks, ::protobuf::RepeatedField::new())
844    }
845
846    // .google.identity.accesscontextmanager.v1.DevicePolicy device_policy = 2;
847
848
849    pub fn get_device_policy(&self) -> &DevicePolicy {
850        self.device_policy.as_ref().unwrap_or_else(|| <DevicePolicy as ::protobuf::Message>::default_instance())
851    }
852    pub fn clear_device_policy(&mut self) {
853        self.device_policy.clear();
854    }
855
856    pub fn has_device_policy(&self) -> bool {
857        self.device_policy.is_some()
858    }
859
860    // Param is passed by value, moved
861    pub fn set_device_policy(&mut self, v: DevicePolicy) {
862        self.device_policy = ::protobuf::SingularPtrField::some(v);
863    }
864
865    // Mutable pointer to the field.
866    // If field is not initialized, it is initialized with default value first.
867    pub fn mut_device_policy(&mut self) -> &mut DevicePolicy {
868        if self.device_policy.is_none() {
869            self.device_policy.set_default();
870        }
871        self.device_policy.as_mut().unwrap()
872    }
873
874    // Take field
875    pub fn take_device_policy(&mut self) -> DevicePolicy {
876        self.device_policy.take().unwrap_or_else(|| DevicePolicy::new())
877    }
878
879    // repeated string required_access_levels = 3;
880
881
882    pub fn get_required_access_levels(&self) -> &[::std::string::String] {
883        &self.required_access_levels
884    }
885    pub fn clear_required_access_levels(&mut self) {
886        self.required_access_levels.clear();
887    }
888
889    // Param is passed by value, moved
890    pub fn set_required_access_levels(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
891        self.required_access_levels = v;
892    }
893
894    // Mutable pointer to the field.
895    pub fn mut_required_access_levels(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
896        &mut self.required_access_levels
897    }
898
899    // Take field
900    pub fn take_required_access_levels(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
901        ::std::mem::replace(&mut self.required_access_levels, ::protobuf::RepeatedField::new())
902    }
903
904    // bool negate = 5;
905
906
907    pub fn get_negate(&self) -> bool {
908        self.negate
909    }
910    pub fn clear_negate(&mut self) {
911        self.negate = false;
912    }
913
914    // Param is passed by value, moved
915    pub fn set_negate(&mut self, v: bool) {
916        self.negate = v;
917    }
918
919    // repeated string members = 6;
920
921
922    pub fn get_members(&self) -> &[::std::string::String] {
923        &self.members
924    }
925    pub fn clear_members(&mut self) {
926        self.members.clear();
927    }
928
929    // Param is passed by value, moved
930    pub fn set_members(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
931        self.members = v;
932    }
933
934    // Mutable pointer to the field.
935    pub fn mut_members(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
936        &mut self.members
937    }
938
939    // Take field
940    pub fn take_members(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
941        ::std::mem::replace(&mut self.members, ::protobuf::RepeatedField::new())
942    }
943
944    // repeated string regions = 7;
945
946
947    pub fn get_regions(&self) -> &[::std::string::String] {
948        &self.regions
949    }
950    pub fn clear_regions(&mut self) {
951        self.regions.clear();
952    }
953
954    // Param is passed by value, moved
955    pub fn set_regions(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
956        self.regions = v;
957    }
958
959    // Mutable pointer to the field.
960    pub fn mut_regions(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
961        &mut self.regions
962    }
963
964    // Take field
965    pub fn take_regions(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
966        ::std::mem::replace(&mut self.regions, ::protobuf::RepeatedField::new())
967    }
968}
969
970impl ::protobuf::Message for Condition {
971    fn is_initialized(&self) -> bool {
972        for v in &self.device_policy {
973            if !v.is_initialized() {
974                return false;
975            }
976        };
977        true
978    }
979
980    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
981        while !is.eof()? {
982            let (field_number, wire_type) = is.read_tag_unpack()?;
983            match field_number {
984                1 => {
985                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.ip_subnetworks)?;
986                },
987                2 => {
988                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.device_policy)?;
989                },
990                3 => {
991                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.required_access_levels)?;
992                },
993                5 => {
994                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
995                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
996                    }
997                    let tmp = is.read_bool()?;
998                    self.negate = tmp;
999                },
1000                6 => {
1001                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.members)?;
1002                },
1003                7 => {
1004                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.regions)?;
1005                },
1006                _ => {
1007                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1008                },
1009            };
1010        }
1011        ::std::result::Result::Ok(())
1012    }
1013
1014    // Compute sizes of nested messages
1015    #[allow(unused_variables)]
1016    fn compute_size(&self) -> u32 {
1017        let mut my_size = 0;
1018        for value in &self.ip_subnetworks {
1019            my_size += ::protobuf::rt::string_size(1, &value);
1020        };
1021        if let Some(ref v) = self.device_policy.as_ref() {
1022            let len = v.compute_size();
1023            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1024        }
1025        for value in &self.required_access_levels {
1026            my_size += ::protobuf::rt::string_size(3, &value);
1027        };
1028        if self.negate != false {
1029            my_size += 2;
1030        }
1031        for value in &self.members {
1032            my_size += ::protobuf::rt::string_size(6, &value);
1033        };
1034        for value in &self.regions {
1035            my_size += ::protobuf::rt::string_size(7, &value);
1036        };
1037        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1038        self.cached_size.set(my_size);
1039        my_size
1040    }
1041
1042    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1043        for v in &self.ip_subnetworks {
1044            os.write_string(1, &v)?;
1045        };
1046        if let Some(ref v) = self.device_policy.as_ref() {
1047            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1048            os.write_raw_varint32(v.get_cached_size())?;
1049            v.write_to_with_cached_sizes(os)?;
1050        }
1051        for v in &self.required_access_levels {
1052            os.write_string(3, &v)?;
1053        };
1054        if self.negate != false {
1055            os.write_bool(5, self.negate)?;
1056        }
1057        for v in &self.members {
1058            os.write_string(6, &v)?;
1059        };
1060        for v in &self.regions {
1061            os.write_string(7, &v)?;
1062        };
1063        os.write_unknown_fields(self.get_unknown_fields())?;
1064        ::std::result::Result::Ok(())
1065    }
1066
1067    fn get_cached_size(&self) -> u32 {
1068        self.cached_size.get()
1069    }
1070
1071    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1072        &self.unknown_fields
1073    }
1074
1075    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1076        &mut self.unknown_fields
1077    }
1078
1079    fn as_any(&self) -> &dyn (::std::any::Any) {
1080        self as &dyn (::std::any::Any)
1081    }
1082    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1083        self as &mut dyn (::std::any::Any)
1084    }
1085    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1086        self
1087    }
1088
1089    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1090        Self::descriptor_static()
1091    }
1092
1093    fn new() -> Condition {
1094        Condition::new()
1095    }
1096
1097    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1098        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1099        descriptor.get(|| {
1100            let mut fields = ::std::vec::Vec::new();
1101            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1102                "ip_subnetworks",
1103                |m: &Condition| { &m.ip_subnetworks },
1104                |m: &mut Condition| { &mut m.ip_subnetworks },
1105            ));
1106            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<DevicePolicy>>(
1107                "device_policy",
1108                |m: &Condition| { &m.device_policy },
1109                |m: &mut Condition| { &mut m.device_policy },
1110            ));
1111            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1112                "required_access_levels",
1113                |m: &Condition| { &m.required_access_levels },
1114                |m: &mut Condition| { &mut m.required_access_levels },
1115            ));
1116            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1117                "negate",
1118                |m: &Condition| { &m.negate },
1119                |m: &mut Condition| { &mut m.negate },
1120            ));
1121            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1122                "members",
1123                |m: &Condition| { &m.members },
1124                |m: &mut Condition| { &mut m.members },
1125            ));
1126            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1127                "regions",
1128                |m: &Condition| { &m.regions },
1129                |m: &mut Condition| { &mut m.regions },
1130            ));
1131            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Condition>(
1132                "Condition",
1133                fields,
1134                file_descriptor_proto()
1135            )
1136        })
1137    }
1138
1139    fn default_instance() -> &'static Condition {
1140        static instance: ::protobuf::rt::LazyV2<Condition> = ::protobuf::rt::LazyV2::INIT;
1141        instance.get(Condition::new)
1142    }
1143}
1144
1145impl ::protobuf::Clear for Condition {
1146    fn clear(&mut self) {
1147        self.ip_subnetworks.clear();
1148        self.device_policy.clear();
1149        self.required_access_levels.clear();
1150        self.negate = false;
1151        self.members.clear();
1152        self.regions.clear();
1153        self.unknown_fields.clear();
1154    }
1155}
1156
1157impl ::std::fmt::Debug for Condition {
1158    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1159        ::protobuf::text_format::fmt(self, f)
1160    }
1161}
1162
1163impl ::protobuf::reflect::ProtobufValue for Condition {
1164    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1165        ::protobuf::reflect::ReflectValueRef::Message(self)
1166    }
1167}
1168
1169#[derive(PartialEq,Clone,Default)]
1170pub struct CustomLevel {
1171    // message fields
1172    pub expr: ::protobuf::SingularPtrField<super::expr::Expr>,
1173    // special fields
1174    pub unknown_fields: ::protobuf::UnknownFields,
1175    pub cached_size: ::protobuf::CachedSize,
1176}
1177
1178impl<'a> ::std::default::Default for &'a CustomLevel {
1179    fn default() -> &'a CustomLevel {
1180        <CustomLevel as ::protobuf::Message>::default_instance()
1181    }
1182}
1183
1184impl CustomLevel {
1185    pub fn new() -> CustomLevel {
1186        ::std::default::Default::default()
1187    }
1188
1189    // .google.type.Expr expr = 1;
1190
1191
1192    pub fn get_expr(&self) -> &super::expr::Expr {
1193        self.expr.as_ref().unwrap_or_else(|| <super::expr::Expr as ::protobuf::Message>::default_instance())
1194    }
1195    pub fn clear_expr(&mut self) {
1196        self.expr.clear();
1197    }
1198
1199    pub fn has_expr(&self) -> bool {
1200        self.expr.is_some()
1201    }
1202
1203    // Param is passed by value, moved
1204    pub fn set_expr(&mut self, v: super::expr::Expr) {
1205        self.expr = ::protobuf::SingularPtrField::some(v);
1206    }
1207
1208    // Mutable pointer to the field.
1209    // If field is not initialized, it is initialized with default value first.
1210    pub fn mut_expr(&mut self) -> &mut super::expr::Expr {
1211        if self.expr.is_none() {
1212            self.expr.set_default();
1213        }
1214        self.expr.as_mut().unwrap()
1215    }
1216
1217    // Take field
1218    pub fn take_expr(&mut self) -> super::expr::Expr {
1219        self.expr.take().unwrap_or_else(|| super::expr::Expr::new())
1220    }
1221}
1222
1223impl ::protobuf::Message for CustomLevel {
1224    fn is_initialized(&self) -> bool {
1225        for v in &self.expr {
1226            if !v.is_initialized() {
1227                return false;
1228            }
1229        };
1230        true
1231    }
1232
1233    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1234        while !is.eof()? {
1235            let (field_number, wire_type) = is.read_tag_unpack()?;
1236            match field_number {
1237                1 => {
1238                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.expr)?;
1239                },
1240                _ => {
1241                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1242                },
1243            };
1244        }
1245        ::std::result::Result::Ok(())
1246    }
1247
1248    // Compute sizes of nested messages
1249    #[allow(unused_variables)]
1250    fn compute_size(&self) -> u32 {
1251        let mut my_size = 0;
1252        if let Some(ref v) = self.expr.as_ref() {
1253            let len = v.compute_size();
1254            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1255        }
1256        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1257        self.cached_size.set(my_size);
1258        my_size
1259    }
1260
1261    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1262        if let Some(ref v) = self.expr.as_ref() {
1263            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1264            os.write_raw_varint32(v.get_cached_size())?;
1265            v.write_to_with_cached_sizes(os)?;
1266        }
1267        os.write_unknown_fields(self.get_unknown_fields())?;
1268        ::std::result::Result::Ok(())
1269    }
1270
1271    fn get_cached_size(&self) -> u32 {
1272        self.cached_size.get()
1273    }
1274
1275    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1276        &self.unknown_fields
1277    }
1278
1279    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1280        &mut self.unknown_fields
1281    }
1282
1283    fn as_any(&self) -> &dyn (::std::any::Any) {
1284        self as &dyn (::std::any::Any)
1285    }
1286    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1287        self as &mut dyn (::std::any::Any)
1288    }
1289    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1290        self
1291    }
1292
1293    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1294        Self::descriptor_static()
1295    }
1296
1297    fn new() -> CustomLevel {
1298        CustomLevel::new()
1299    }
1300
1301    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1302        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1303        descriptor.get(|| {
1304            let mut fields = ::std::vec::Vec::new();
1305            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::expr::Expr>>(
1306                "expr",
1307                |m: &CustomLevel| { &m.expr },
1308                |m: &mut CustomLevel| { &mut m.expr },
1309            ));
1310            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CustomLevel>(
1311                "CustomLevel",
1312                fields,
1313                file_descriptor_proto()
1314            )
1315        })
1316    }
1317
1318    fn default_instance() -> &'static CustomLevel {
1319        static instance: ::protobuf::rt::LazyV2<CustomLevel> = ::protobuf::rt::LazyV2::INIT;
1320        instance.get(CustomLevel::new)
1321    }
1322}
1323
1324impl ::protobuf::Clear for CustomLevel {
1325    fn clear(&mut self) {
1326        self.expr.clear();
1327        self.unknown_fields.clear();
1328    }
1329}
1330
1331impl ::std::fmt::Debug for CustomLevel {
1332    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1333        ::protobuf::text_format::fmt(self, f)
1334    }
1335}
1336
1337impl ::protobuf::reflect::ProtobufValue for CustomLevel {
1338    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1339        ::protobuf::reflect::ReflectValueRef::Message(self)
1340    }
1341}
1342
1343#[derive(PartialEq,Clone,Default)]
1344pub struct DevicePolicy {
1345    // message fields
1346    pub require_screenlock: bool,
1347    pub allowed_encryption_statuses: ::std::vec::Vec<super::device_resources::DeviceEncryptionStatus>,
1348    pub os_constraints: ::protobuf::RepeatedField<OsConstraint>,
1349    pub allowed_device_management_levels: ::std::vec::Vec<super::device_resources::DeviceManagementLevel>,
1350    pub require_admin_approval: bool,
1351    pub require_corp_owned: bool,
1352    // special fields
1353    pub unknown_fields: ::protobuf::UnknownFields,
1354    pub cached_size: ::protobuf::CachedSize,
1355}
1356
1357impl<'a> ::std::default::Default for &'a DevicePolicy {
1358    fn default() -> &'a DevicePolicy {
1359        <DevicePolicy as ::protobuf::Message>::default_instance()
1360    }
1361}
1362
1363impl DevicePolicy {
1364    pub fn new() -> DevicePolicy {
1365        ::std::default::Default::default()
1366    }
1367
1368    // bool require_screenlock = 1;
1369
1370
1371    pub fn get_require_screenlock(&self) -> bool {
1372        self.require_screenlock
1373    }
1374    pub fn clear_require_screenlock(&mut self) {
1375        self.require_screenlock = false;
1376    }
1377
1378    // Param is passed by value, moved
1379    pub fn set_require_screenlock(&mut self, v: bool) {
1380        self.require_screenlock = v;
1381    }
1382
1383    // repeated .google.identity.accesscontextmanager.type.DeviceEncryptionStatus allowed_encryption_statuses = 2;
1384
1385
1386    pub fn get_allowed_encryption_statuses(&self) -> &[super::device_resources::DeviceEncryptionStatus] {
1387        &self.allowed_encryption_statuses
1388    }
1389    pub fn clear_allowed_encryption_statuses(&mut self) {
1390        self.allowed_encryption_statuses.clear();
1391    }
1392
1393    // Param is passed by value, moved
1394    pub fn set_allowed_encryption_statuses(&mut self, v: ::std::vec::Vec<super::device_resources::DeviceEncryptionStatus>) {
1395        self.allowed_encryption_statuses = v;
1396    }
1397
1398    // Mutable pointer to the field.
1399    pub fn mut_allowed_encryption_statuses(&mut self) -> &mut ::std::vec::Vec<super::device_resources::DeviceEncryptionStatus> {
1400        &mut self.allowed_encryption_statuses
1401    }
1402
1403    // Take field
1404    pub fn take_allowed_encryption_statuses(&mut self) -> ::std::vec::Vec<super::device_resources::DeviceEncryptionStatus> {
1405        ::std::mem::replace(&mut self.allowed_encryption_statuses, ::std::vec::Vec::new())
1406    }
1407
1408    // repeated .google.identity.accesscontextmanager.v1.OsConstraint os_constraints = 3;
1409
1410
1411    pub fn get_os_constraints(&self) -> &[OsConstraint] {
1412        &self.os_constraints
1413    }
1414    pub fn clear_os_constraints(&mut self) {
1415        self.os_constraints.clear();
1416    }
1417
1418    // Param is passed by value, moved
1419    pub fn set_os_constraints(&mut self, v: ::protobuf::RepeatedField<OsConstraint>) {
1420        self.os_constraints = v;
1421    }
1422
1423    // Mutable pointer to the field.
1424    pub fn mut_os_constraints(&mut self) -> &mut ::protobuf::RepeatedField<OsConstraint> {
1425        &mut self.os_constraints
1426    }
1427
1428    // Take field
1429    pub fn take_os_constraints(&mut self) -> ::protobuf::RepeatedField<OsConstraint> {
1430        ::std::mem::replace(&mut self.os_constraints, ::protobuf::RepeatedField::new())
1431    }
1432
1433    // repeated .google.identity.accesscontextmanager.type.DeviceManagementLevel allowed_device_management_levels = 6;
1434
1435
1436    pub fn get_allowed_device_management_levels(&self) -> &[super::device_resources::DeviceManagementLevel] {
1437        &self.allowed_device_management_levels
1438    }
1439    pub fn clear_allowed_device_management_levels(&mut self) {
1440        self.allowed_device_management_levels.clear();
1441    }
1442
1443    // Param is passed by value, moved
1444    pub fn set_allowed_device_management_levels(&mut self, v: ::std::vec::Vec<super::device_resources::DeviceManagementLevel>) {
1445        self.allowed_device_management_levels = v;
1446    }
1447
1448    // Mutable pointer to the field.
1449    pub fn mut_allowed_device_management_levels(&mut self) -> &mut ::std::vec::Vec<super::device_resources::DeviceManagementLevel> {
1450        &mut self.allowed_device_management_levels
1451    }
1452
1453    // Take field
1454    pub fn take_allowed_device_management_levels(&mut self) -> ::std::vec::Vec<super::device_resources::DeviceManagementLevel> {
1455        ::std::mem::replace(&mut self.allowed_device_management_levels, ::std::vec::Vec::new())
1456    }
1457
1458    // bool require_admin_approval = 7;
1459
1460
1461    pub fn get_require_admin_approval(&self) -> bool {
1462        self.require_admin_approval
1463    }
1464    pub fn clear_require_admin_approval(&mut self) {
1465        self.require_admin_approval = false;
1466    }
1467
1468    // Param is passed by value, moved
1469    pub fn set_require_admin_approval(&mut self, v: bool) {
1470        self.require_admin_approval = v;
1471    }
1472
1473    // bool require_corp_owned = 8;
1474
1475
1476    pub fn get_require_corp_owned(&self) -> bool {
1477        self.require_corp_owned
1478    }
1479    pub fn clear_require_corp_owned(&mut self) {
1480        self.require_corp_owned = false;
1481    }
1482
1483    // Param is passed by value, moved
1484    pub fn set_require_corp_owned(&mut self, v: bool) {
1485        self.require_corp_owned = v;
1486    }
1487}
1488
1489impl ::protobuf::Message for DevicePolicy {
1490    fn is_initialized(&self) -> bool {
1491        for v in &self.os_constraints {
1492            if !v.is_initialized() {
1493                return false;
1494            }
1495        };
1496        true
1497    }
1498
1499    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1500        while !is.eof()? {
1501            let (field_number, wire_type) = is.read_tag_unpack()?;
1502            match field_number {
1503                1 => {
1504                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1505                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1506                    }
1507                    let tmp = is.read_bool()?;
1508                    self.require_screenlock = tmp;
1509                },
1510                2 => {
1511                    ::protobuf::rt::read_repeated_enum_with_unknown_fields_into(wire_type, is, &mut self.allowed_encryption_statuses, 2, &mut self.unknown_fields)?
1512                },
1513                3 => {
1514                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.os_constraints)?;
1515                },
1516                6 => {
1517                    ::protobuf::rt::read_repeated_enum_with_unknown_fields_into(wire_type, is, &mut self.allowed_device_management_levels, 6, &mut self.unknown_fields)?
1518                },
1519                7 => {
1520                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1521                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1522                    }
1523                    let tmp = is.read_bool()?;
1524                    self.require_admin_approval = tmp;
1525                },
1526                8 => {
1527                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1528                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1529                    }
1530                    let tmp = is.read_bool()?;
1531                    self.require_corp_owned = tmp;
1532                },
1533                _ => {
1534                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1535                },
1536            };
1537        }
1538        ::std::result::Result::Ok(())
1539    }
1540
1541    // Compute sizes of nested messages
1542    #[allow(unused_variables)]
1543    fn compute_size(&self) -> u32 {
1544        let mut my_size = 0;
1545        if self.require_screenlock != false {
1546            my_size += 2;
1547        }
1548        for value in &self.allowed_encryption_statuses {
1549            my_size += ::protobuf::rt::enum_size(2, *value);
1550        };
1551        for value in &self.os_constraints {
1552            let len = value.compute_size();
1553            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1554        };
1555        for value in &self.allowed_device_management_levels {
1556            my_size += ::protobuf::rt::enum_size(6, *value);
1557        };
1558        if self.require_admin_approval != false {
1559            my_size += 2;
1560        }
1561        if self.require_corp_owned != false {
1562            my_size += 2;
1563        }
1564        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1565        self.cached_size.set(my_size);
1566        my_size
1567    }
1568
1569    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1570        if self.require_screenlock != false {
1571            os.write_bool(1, self.require_screenlock)?;
1572        }
1573        for v in &self.allowed_encryption_statuses {
1574            os.write_enum(2, ::protobuf::ProtobufEnum::value(v))?;
1575        };
1576        for v in &self.os_constraints {
1577            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1578            os.write_raw_varint32(v.get_cached_size())?;
1579            v.write_to_with_cached_sizes(os)?;
1580        };
1581        for v in &self.allowed_device_management_levels {
1582            os.write_enum(6, ::protobuf::ProtobufEnum::value(v))?;
1583        };
1584        if self.require_admin_approval != false {
1585            os.write_bool(7, self.require_admin_approval)?;
1586        }
1587        if self.require_corp_owned != false {
1588            os.write_bool(8, self.require_corp_owned)?;
1589        }
1590        os.write_unknown_fields(self.get_unknown_fields())?;
1591        ::std::result::Result::Ok(())
1592    }
1593
1594    fn get_cached_size(&self) -> u32 {
1595        self.cached_size.get()
1596    }
1597
1598    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1599        &self.unknown_fields
1600    }
1601
1602    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1603        &mut self.unknown_fields
1604    }
1605
1606    fn as_any(&self) -> &dyn (::std::any::Any) {
1607        self as &dyn (::std::any::Any)
1608    }
1609    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1610        self as &mut dyn (::std::any::Any)
1611    }
1612    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1613        self
1614    }
1615
1616    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1617        Self::descriptor_static()
1618    }
1619
1620    fn new() -> DevicePolicy {
1621        DevicePolicy::new()
1622    }
1623
1624    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1625        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1626        descriptor.get(|| {
1627            let mut fields = ::std::vec::Vec::new();
1628            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1629                "require_screenlock",
1630                |m: &DevicePolicy| { &m.require_screenlock },
1631                |m: &mut DevicePolicy| { &mut m.require_screenlock },
1632            ));
1633            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeEnum<super::device_resources::DeviceEncryptionStatus>>(
1634                "allowed_encryption_statuses",
1635                |m: &DevicePolicy| { &m.allowed_encryption_statuses },
1636                |m: &mut DevicePolicy| { &mut m.allowed_encryption_statuses },
1637            ));
1638            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OsConstraint>>(
1639                "os_constraints",
1640                |m: &DevicePolicy| { &m.os_constraints },
1641                |m: &mut DevicePolicy| { &mut m.os_constraints },
1642            ));
1643            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeEnum<super::device_resources::DeviceManagementLevel>>(
1644                "allowed_device_management_levels",
1645                |m: &DevicePolicy| { &m.allowed_device_management_levels },
1646                |m: &mut DevicePolicy| { &mut m.allowed_device_management_levels },
1647            ));
1648            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1649                "require_admin_approval",
1650                |m: &DevicePolicy| { &m.require_admin_approval },
1651                |m: &mut DevicePolicy| { &mut m.require_admin_approval },
1652            ));
1653            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1654                "require_corp_owned",
1655                |m: &DevicePolicy| { &m.require_corp_owned },
1656                |m: &mut DevicePolicy| { &mut m.require_corp_owned },
1657            ));
1658            ::protobuf::reflect::MessageDescriptor::new_pb_name::<DevicePolicy>(
1659                "DevicePolicy",
1660                fields,
1661                file_descriptor_proto()
1662            )
1663        })
1664    }
1665
1666    fn default_instance() -> &'static DevicePolicy {
1667        static instance: ::protobuf::rt::LazyV2<DevicePolicy> = ::protobuf::rt::LazyV2::INIT;
1668        instance.get(DevicePolicy::new)
1669    }
1670}
1671
1672impl ::protobuf::Clear for DevicePolicy {
1673    fn clear(&mut self) {
1674        self.require_screenlock = false;
1675        self.allowed_encryption_statuses.clear();
1676        self.os_constraints.clear();
1677        self.allowed_device_management_levels.clear();
1678        self.require_admin_approval = false;
1679        self.require_corp_owned = false;
1680        self.unknown_fields.clear();
1681    }
1682}
1683
1684impl ::std::fmt::Debug for DevicePolicy {
1685    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1686        ::protobuf::text_format::fmt(self, f)
1687    }
1688}
1689
1690impl ::protobuf::reflect::ProtobufValue for DevicePolicy {
1691    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1692        ::protobuf::reflect::ReflectValueRef::Message(self)
1693    }
1694}
1695
1696#[derive(PartialEq,Clone,Default)]
1697pub struct OsConstraint {
1698    // message fields
1699    pub os_type: super::device_resources::OsType,
1700    pub minimum_version: ::std::string::String,
1701    pub require_verified_chrome_os: bool,
1702    // special fields
1703    pub unknown_fields: ::protobuf::UnknownFields,
1704    pub cached_size: ::protobuf::CachedSize,
1705}
1706
1707impl<'a> ::std::default::Default for &'a OsConstraint {
1708    fn default() -> &'a OsConstraint {
1709        <OsConstraint as ::protobuf::Message>::default_instance()
1710    }
1711}
1712
1713impl OsConstraint {
1714    pub fn new() -> OsConstraint {
1715        ::std::default::Default::default()
1716    }
1717
1718    // .google.identity.accesscontextmanager.type.OsType os_type = 1;
1719
1720
1721    pub fn get_os_type(&self) -> super::device_resources::OsType {
1722        self.os_type
1723    }
1724    pub fn clear_os_type(&mut self) {
1725        self.os_type = super::device_resources::OsType::OS_UNSPECIFIED;
1726    }
1727
1728    // Param is passed by value, moved
1729    pub fn set_os_type(&mut self, v: super::device_resources::OsType) {
1730        self.os_type = v;
1731    }
1732
1733    // string minimum_version = 2;
1734
1735
1736    pub fn get_minimum_version(&self) -> &str {
1737        &self.minimum_version
1738    }
1739    pub fn clear_minimum_version(&mut self) {
1740        self.minimum_version.clear();
1741    }
1742
1743    // Param is passed by value, moved
1744    pub fn set_minimum_version(&mut self, v: ::std::string::String) {
1745        self.minimum_version = v;
1746    }
1747
1748    // Mutable pointer to the field.
1749    // If field is not initialized, it is initialized with default value first.
1750    pub fn mut_minimum_version(&mut self) -> &mut ::std::string::String {
1751        &mut self.minimum_version
1752    }
1753
1754    // Take field
1755    pub fn take_minimum_version(&mut self) -> ::std::string::String {
1756        ::std::mem::replace(&mut self.minimum_version, ::std::string::String::new())
1757    }
1758
1759    // bool require_verified_chrome_os = 3;
1760
1761
1762    pub fn get_require_verified_chrome_os(&self) -> bool {
1763        self.require_verified_chrome_os
1764    }
1765    pub fn clear_require_verified_chrome_os(&mut self) {
1766        self.require_verified_chrome_os = false;
1767    }
1768
1769    // Param is passed by value, moved
1770    pub fn set_require_verified_chrome_os(&mut self, v: bool) {
1771        self.require_verified_chrome_os = v;
1772    }
1773}
1774
1775impl ::protobuf::Message for OsConstraint {
1776    fn is_initialized(&self) -> bool {
1777        true
1778    }
1779
1780    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1781        while !is.eof()? {
1782            let (field_number, wire_type) = is.read_tag_unpack()?;
1783            match field_number {
1784                1 => {
1785                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.os_type, 1, &mut self.unknown_fields)?
1786                },
1787                2 => {
1788                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.minimum_version)?;
1789                },
1790                3 => {
1791                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1792                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1793                    }
1794                    let tmp = is.read_bool()?;
1795                    self.require_verified_chrome_os = tmp;
1796                },
1797                _ => {
1798                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1799                },
1800            };
1801        }
1802        ::std::result::Result::Ok(())
1803    }
1804
1805    // Compute sizes of nested messages
1806    #[allow(unused_variables)]
1807    fn compute_size(&self) -> u32 {
1808        let mut my_size = 0;
1809        if self.os_type != super::device_resources::OsType::OS_UNSPECIFIED {
1810            my_size += ::protobuf::rt::enum_size(1, self.os_type);
1811        }
1812        if !self.minimum_version.is_empty() {
1813            my_size += ::protobuf::rt::string_size(2, &self.minimum_version);
1814        }
1815        if self.require_verified_chrome_os != false {
1816            my_size += 2;
1817        }
1818        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1819        self.cached_size.set(my_size);
1820        my_size
1821    }
1822
1823    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1824        if self.os_type != super::device_resources::OsType::OS_UNSPECIFIED {
1825            os.write_enum(1, ::protobuf::ProtobufEnum::value(&self.os_type))?;
1826        }
1827        if !self.minimum_version.is_empty() {
1828            os.write_string(2, &self.minimum_version)?;
1829        }
1830        if self.require_verified_chrome_os != false {
1831            os.write_bool(3, self.require_verified_chrome_os)?;
1832        }
1833        os.write_unknown_fields(self.get_unknown_fields())?;
1834        ::std::result::Result::Ok(())
1835    }
1836
1837    fn get_cached_size(&self) -> u32 {
1838        self.cached_size.get()
1839    }
1840
1841    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1842        &self.unknown_fields
1843    }
1844
1845    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1846        &mut self.unknown_fields
1847    }
1848
1849    fn as_any(&self) -> &dyn (::std::any::Any) {
1850        self as &dyn (::std::any::Any)
1851    }
1852    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1853        self as &mut dyn (::std::any::Any)
1854    }
1855    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1856        self
1857    }
1858
1859    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1860        Self::descriptor_static()
1861    }
1862
1863    fn new() -> OsConstraint {
1864        OsConstraint::new()
1865    }
1866
1867    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1868        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1869        descriptor.get(|| {
1870            let mut fields = ::std::vec::Vec::new();
1871            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<super::device_resources::OsType>>(
1872                "os_type",
1873                |m: &OsConstraint| { &m.os_type },
1874                |m: &mut OsConstraint| { &mut m.os_type },
1875            ));
1876            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1877                "minimum_version",
1878                |m: &OsConstraint| { &m.minimum_version },
1879                |m: &mut OsConstraint| { &mut m.minimum_version },
1880            ));
1881            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1882                "require_verified_chrome_os",
1883                |m: &OsConstraint| { &m.require_verified_chrome_os },
1884                |m: &mut OsConstraint| { &mut m.require_verified_chrome_os },
1885            ));
1886            ::protobuf::reflect::MessageDescriptor::new_pb_name::<OsConstraint>(
1887                "OsConstraint",
1888                fields,
1889                file_descriptor_proto()
1890            )
1891        })
1892    }
1893
1894    fn default_instance() -> &'static OsConstraint {
1895        static instance: ::protobuf::rt::LazyV2<OsConstraint> = ::protobuf::rt::LazyV2::INIT;
1896        instance.get(OsConstraint::new)
1897    }
1898}
1899
1900impl ::protobuf::Clear for OsConstraint {
1901    fn clear(&mut self) {
1902        self.os_type = super::device_resources::OsType::OS_UNSPECIFIED;
1903        self.minimum_version.clear();
1904        self.require_verified_chrome_os = false;
1905        self.unknown_fields.clear();
1906    }
1907}
1908
1909impl ::std::fmt::Debug for OsConstraint {
1910    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1911        ::protobuf::text_format::fmt(self, f)
1912    }
1913}
1914
1915impl ::protobuf::reflect::ProtobufValue for OsConstraint {
1916    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1917        ::protobuf::reflect::ReflectValueRef::Message(self)
1918    }
1919}
1920
1921static file_descriptor_proto_data: &'static [u8] = b"\
1922    \n:google/identity/accesscontextmanager/v1/access_level.proto\x12'google\
1923    .identity.accesscontextmanager.v1\x1a\x19google/api/resource.proto\x1a@g\
1924    oogle/identity/accesscontextmanager/type/device_resources.proto\x1a\x1fg\
1925    oogle/protobuf/timestamp.proto\x1a\x16google/type/expr.proto\"\xeb\x03\n\
1926    \x0bAccessLevel\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x14\n\
1927    \x05title\x18\x02\x20\x01(\tR\x05title\x12\x20\n\x0bdescription\x18\x03\
1928    \x20\x01(\tR\x0bdescription\x12K\n\x05basic\x18\x04\x20\x01(\x0b23.googl\
1929    e.identity.accesscontextmanager.v1.BasicLevelH\0R\x05basic\x12N\n\x06cus\
1930    tom\x18\x05\x20\x01(\x0b24.google.identity.accesscontextmanager.v1.Custo\
1931    mLevelH\0R\x06custom\x12;\n\x0bcreate_time\x18\x06\x20\x01(\x0b2\x1a.goo\
1932    gle.protobuf.TimestampR\ncreateTime\x12;\n\x0bupdate_time\x18\x07\x20\
1933    \x01(\x0b2\x1a.google.protobuf.TimestampR\nupdateTimeB\x07\n\x05level:p\
1934    \xeaAm\n/accesscontextmanager.googleapis.com/AccessLevel\x12:accessPolic\
1935    ies/{access_policy}/accessLevels/{access_level}\"\x8e\x02\n\nBasicLevel\
1936    \x12R\n\nconditions\x18\x01\x20\x03(\x0b22.google.identity.accesscontext\
1937    manager.v1.ConditionR\nconditions\x12}\n\x12combining_function\x18\x02\
1938    \x20\x01(\x0e2N.google.identity.accesscontextmanager.v1.BasicLevel.Condi\
1939    tionCombiningFunctionR\x11combiningFunction\"-\n\x1aConditionCombiningFu\
1940    nction\x12\x07\n\x03AND\x10\0\x12\x06\n\x02OR\x10\x01\"\x90\x02\n\tCondi\
1941    tion\x12%\n\x0eip_subnetworks\x18\x01\x20\x03(\tR\ripSubnetworks\x12Z\n\
1942    \rdevice_policy\x18\x02\x20\x01(\x0b25.google.identity.accesscontextmana\
1943    ger.v1.DevicePolicyR\x0cdevicePolicy\x124\n\x16required_access_levels\
1944    \x18\x03\x20\x03(\tR\x14requiredAccessLevels\x12\x16\n\x06negate\x18\x05\
1945    \x20\x01(\x08R\x06negate\x12\x18\n\x07members\x18\x06\x20\x03(\tR\x07mem\
1946    bers\x12\x18\n\x07regions\x18\x07\x20\x03(\tR\x07regions\"4\n\x0bCustomL\
1947    evel\x12%\n\x04expr\x18\x01\x20\x01(\x0b2\x11.google.type.ExprR\x04expr\
1948    \"\x8f\x04\n\x0cDevicePolicy\x12-\n\x12require_screenlock\x18\x01\x20\
1949    \x01(\x08R\x11requireScreenlock\x12\x81\x01\n\x1ballowed_encryption_stat\
1950    uses\x18\x02\x20\x03(\x0e2A.google.identity.accesscontextmanager.type.De\
1951    viceEncryptionStatusR\x19allowedEncryptionStatuses\x12\\\n\x0eos_constra\
1952    ints\x18\x03\x20\x03(\x0b25.google.identity.accesscontextmanager.v1.OsCo\
1953    nstraintR\rosConstraints\x12\x89\x01\n\x20allowed_device_management_leve\
1954    ls\x18\x06\x20\x03(\x0e2@.google.identity.accesscontextmanager.type.Devi\
1955    ceManagementLevelR\x1dallowedDeviceManagementLevels\x124\n\x16require_ad\
1956    min_approval\x18\x07\x20\x01(\x08R\x14requireAdminApproval\x12,\n\x12req\
1957    uire_corp_owned\x18\x08\x20\x01(\x08R\x10requireCorpOwned\"\xc0\x01\n\
1958    \x0cOsConstraint\x12J\n\x07os_type\x18\x01\x20\x01(\x0e21.google.identit\
1959    y.accesscontextmanager.type.OsTypeR\x06osType\x12'\n\x0fminimum_version\
1960    \x18\x02\x20\x01(\tR\x0eminimumVersion\x12;\n\x1arequire_verified_chrome\
1961    _os\x18\x03\x20\x01(\x08R\x17requireVerifiedChromeOsB\xa7\x02\n+com.goog\
1962    le.identity.accesscontextmanager.v1B\x10AccessLevelProtoP\x01Z\\cloud.go\
1963    ogle.com/go/accesscontextmanager/apiv1/accesscontextmanagerpb;accesscont\
1964    extmanagerpb\xa2\x02\x04GACM\xaa\x02'Google.Identity.AccessContextManage\
1965    r.V1\xca\x02'Google\\Identity\\AccessContextManager\\V1\xea\x02*Google::\
1966    Identity::AccessContextManager::V1J\xe7>\n\x07\x12\x05\x0e\0\xbf\x01\x01\
1967    \n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyright\x202022\x20\
1968    Google\x20LLC\n\n\x20Licensed\x20under\x20the\x20Apache\x20License,\x20V\
1969    ersion\x202.0\x20(the\x20\"License\");\n\x20you\x20may\x20not\x20use\x20\
1970    this\x20file\x20except\x20in\x20compliance\x20with\x20the\x20License.\n\
1971    \x20You\x20may\x20obtain\x20a\x20copy\x20of\x20the\x20License\x20at\n\n\
1972    \x20\x20\x20\x20\x20http://www.apache.org/licenses/LICENSE-2.0\n\n\x20Un\
1973    less\x20required\x20by\x20applicable\x20law\x20or\x20agreed\x20to\x20in\
1974    \x20writing,\x20software\n\x20distributed\x20under\x20the\x20License\x20\
1975    is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\x20WITHOUT\x20\
1976    WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20either\x20expres\
1977    s\x20or\x20implied.\n\x20See\x20the\x20License\x20for\x20the\x20specific\
1978    \x20language\x20governing\x20permissions\x20and\n\x20limitations\x20unde\
1979    r\x20the\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\00\n\t\n\x02\x03\0\
1980    \x12\x03\x12\0#\n\t\n\x02\x03\x01\x12\x03\x13\0J\n\t\n\x02\x03\x02\x12\
1981    \x03\x14\0)\n\t\n\x02\x03\x03\x12\x03\x15\0\x20\n\x08\n\x01\x08\x12\x03\
1982    \x17\0D\n\t\n\x02\x08%\x12\x03\x17\0D\n\x08\n\x01\x08\x12\x03\x18\0s\n\t\
1983    \n\x02\x08\x0b\x12\x03\x18\0s\n\x08\n\x01\x08\x12\x03\x19\0\"\n\t\n\x02\
1984    \x08\n\x12\x03\x19\0\"\n\x08\n\x01\x08\x12\x03\x1a\01\n\t\n\x02\x08\x08\
1985    \x12\x03\x1a\01\n\x08\n\x01\x08\x12\x03\x1b\0D\n\t\n\x02\x08\x01\x12\x03\
1986    \x1b\0D\n\x08\n\x01\x08\x12\x03\x1c\0\"\n\t\n\x02\x08$\x12\x03\x1c\0\"\n\
1987    \x08\n\x01\x08\x12\x03\x1d\0D\n\t\n\x02\x08)\x12\x03\x1d\0D\n\x08\n\x01\
1988    \x08\x12\x03\x1e\0C\n\t\n\x02\x08-\x12\x03\x1e\0C\n\xaf\x01\n\x02\x04\0\
1989    \x12\x04#\0C\x01\x1a\xa2\x01\x20An\x20`AccessLevel`\x20is\x20a\x20label\
1990    \x20that\x20can\x20be\x20applied\x20to\x20requests\x20to\x20Google\x20Cl\
1991    oud\n\x20services,\x20along\x20with\x20a\x20list\x20of\x20requirements\
1992    \x20necessary\x20for\x20the\x20label\x20to\x20be\n\x20applied.\n\n\n\n\
1993    \x03\x04\0\x01\x12\x03#\x08\x13\n\x0b\n\x03\x04\0\x07\x12\x04$\x02'\x04\
1994    \n\r\n\x05\x04\0\x07\x9d\x08\x12\x04$\x02'\x04\n\xa6\x02\n\x04\x04\0\x02\
1995    \0\x12\x03-\x02\x12\x1a\x98\x02\x20Required.\x20Resource\x20name\x20for\
1996    \x20the\x20Access\x20Level.\x20The\x20`short_name`\x20component\n\x20mus\
1997    t\x20begin\x20with\x20a\x20letter\x20and\x20only\x20include\x20alphanume\
1998    ric\x20and\x20'_'.\x20Format:\n\x20`accessPolicies/{access_policy}/acces\
1999    sLevels/{access_level}`.\x20The\x20maximum\n\x20length\x20of\x20the\x20`\
2000    access_level`\x20component\x20is\x2050\x20characters.\n\n\x0c\n\x05\x04\
2001    \0\x02\0\x05\x12\x03-\x02\x08\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03-\t\r\n\
2002    \x0c\n\x05\x04\0\x02\0\x03\x12\x03-\x10\x11\nF\n\x04\x04\0\x02\x01\x12\
2003    \x030\x02\x13\x1a9\x20Human\x20readable\x20title.\x20Must\x20be\x20uniqu\
2004    e\x20within\x20the\x20Policy.\n\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x030\
2005    \x02\x08\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x030\t\x0e\n\x0c\n\x05\x04\0\
2006    \x02\x01\x03\x12\x030\x11\x12\nV\n\x04\x04\0\x02\x02\x12\x033\x02\x19\
2007    \x1aI\x20Description\x20of\x20the\x20`AccessLevel`\x20and\x20its\x20use.\
2008    \x20Does\x20not\x20affect\x20behavior.\n\n\x0c\n\x05\x04\0\x02\x02\x05\
2009    \x12\x033\x02\x08\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x033\t\x14\n\x0c\n\
2010    \x05\x04\0\x02\x02\x03\x12\x033\x17\x18\nT\n\x04\x04\0\x08\0\x12\x046\
2011    \x02<\x03\x1aF\x20Required.\x20Describes\x20the\x20necessary\x20conditio\
2012    ns\x20for\x20the\x20level\x20to\x20apply.\n\n\x0c\n\x05\x04\0\x08\0\x01\
2013    \x12\x036\x08\r\n7\n\x04\x04\0\x02\x03\x12\x038\x04\x19\x1a*\x20A\x20`Ba\
2014    sicLevel`\x20composed\x20of\x20`Conditions`.\n\n\x0c\n\x05\x04\0\x02\x03\
2015    \x06\x12\x038\x04\x0e\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x038\x0f\x14\n\
2016    \x0c\n\x05\x04\0\x02\x03\x03\x12\x038\x17\x18\nI\n\x04\x04\0\x02\x04\x12\
2017    \x03;\x04\x1b\x1a<\x20A\x20`CustomLevel`\x20written\x20in\x20the\x20Comm\
2018    on\x20Expression\x20Language.\n\n\x0c\n\x05\x04\0\x02\x04\x06\x12\x03;\
2019    \x04\x0f\n\x0c\n\x05\x04\0\x02\x04\x01\x12\x03;\x10\x16\n\x0c\n\x05\x04\
2020    \0\x02\x04\x03\x12\x03;\x19\x1a\nF\n\x04\x04\0\x02\x05\x12\x03?\x02,\x1a\
2021    9\x20Output\x20only.\x20Time\x20the\x20`AccessLevel`\x20was\x20created\
2022    \x20in\x20UTC.\n\n\x0c\n\x05\x04\0\x02\x05\x06\x12\x03?\x02\x1b\n\x0c\n\
2023    \x05\x04\0\x02\x05\x01\x12\x03?\x1c'\n\x0c\n\x05\x04\0\x02\x05\x03\x12\
2024    \x03?*+\nF\n\x04\x04\0\x02\x06\x12\x03B\x02,\x1a9\x20Output\x20only.\x20\
2025    Time\x20the\x20`AccessLevel`\x20was\x20updated\x20in\x20UTC.\n\n\x0c\n\
2026    \x05\x04\0\x02\x06\x06\x12\x03B\x02\x1b\n\x0c\n\x05\x04\0\x02\x06\x01\
2027    \x12\x03B\x1c'\n\x0c\n\x05\x04\0\x02\x06\x03\x12\x03B*+\nS\n\x02\x04\x01\
2028    \x12\x04F\0Z\x01\x1aG\x20`BasicLevel`\x20is\x20an\x20`AccessLevel`\x20us\
2029    ing\x20a\x20set\x20of\x20recommended\x20features.\n\n\n\n\x03\x04\x01\
2030    \x01\x12\x03F\x08\x12\n\x88\x01\n\x04\x04\x01\x04\0\x12\x04I\x02O\x03\
2031    \x1az\x20Options\x20for\x20how\x20the\x20`conditions`\x20list\x20should\
2032    \x20be\x20combined\x20to\x20determine\x20if\n\x20this\x20`AccessLevel`\
2033    \x20is\x20applied.\x20Default\x20is\x20AND.\n\n\x0c\n\x05\x04\x01\x04\0\
2034    \x01\x12\x03I\x07!\nO\n\x06\x04\x01\x04\0\x02\0\x12\x03K\x04\x0c\x1a@\
2035    \x20All\x20`Conditions`\x20must\x20be\x20true\x20for\x20the\x20`BasicLev\
2036    el`\x20to\x20be\x20true.\n\n\x0e\n\x07\x04\x01\x04\0\x02\0\x01\x12\x03K\
2037    \x04\x07\n\x0e\n\x07\x04\x01\x04\0\x02\0\x02\x12\x03K\n\x0b\nT\n\x06\x04\
2038    \x01\x04\0\x02\x01\x12\x03N\x04\x0b\x1aE\x20If\x20at\x20least\x20one\x20\
2039    `Condition`\x20is\x20true,\x20then\x20the\x20`BasicLevel`\x20is\x20true.\
2040    \n\n\x0e\n\x07\x04\x01\x04\0\x02\x01\x01\x12\x03N\x04\x06\n\x0e\n\x07\
2041    \x04\x01\x04\0\x02\x01\x02\x12\x03N\t\n\nT\n\x04\x04\x01\x02\0\x12\x03R\
2042    \x02$\x1aG\x20Required.\x20A\x20list\x20of\x20requirements\x20for\x20the\
2043    \x20`AccessLevel`\x20to\x20be\x20granted.\n\n\x0c\n\x05\x04\x01\x02\0\
2044    \x04\x12\x03R\x02\n\n\x0c\n\x05\x04\x01\x02\0\x06\x12\x03R\x0b\x14\n\x0c\
2045    \n\x05\x04\x01\x02\0\x01\x12\x03R\x15\x1f\n\x0c\n\x05\x04\x01\x02\0\x03\
2046    \x12\x03R\"#\n\xe9\x02\n\x04\x04\x01\x02\x01\x12\x03Y\x024\x1a\xdb\x02\
2047    \x20How\x20the\x20`conditions`\x20list\x20should\x20be\x20combined\x20to\
2048    \x20determine\x20if\x20a\x20request\x20is\n\x20granted\x20this\x20`Acces\
2049    sLevel`.\x20If\x20AND\x20is\x20used,\x20each\x20`Condition`\x20in\n\x20`\
2050    conditions`\x20must\x20be\x20satisfied\x20for\x20the\x20`AccessLevel`\
2051    \x20to\x20be\x20applied.\x20If\x20OR\n\x20is\x20used,\x20at\x20least\x20\
2052    one\x20`Condition`\x20in\x20`conditions`\x20must\x20be\x20satisfied\x20f\
2053    or\x20the\n\x20`AccessLevel`\x20to\x20be\x20applied.\x20Default\x20behav\
2054    ior\x20is\x20AND.\n\n\x0c\n\x05\x04\x01\x02\x01\x06\x12\x03Y\x02\x1c\n\
2055    \x0c\n\x05\x04\x01\x02\x01\x01\x12\x03Y\x1d/\n\x0c\n\x05\x04\x01\x02\x01\
2056    \x03\x12\x03Y23\n\x84\x03\n\x02\x04\x02\x12\x05a\0\x87\x01\x01\x1a\xf6\
2057    \x02\x20A\x20condition\x20necessary\x20for\x20an\x20`AccessLevel`\x20to\
2058    \x20be\x20granted.\x20The\x20Condition\x20is\x20an\n\x20AND\x20over\x20i\
2059    ts\x20fields.\x20So\x20a\x20Condition\x20is\x20true\x20if:\x201)\x20the\
2060    \x20request\x20IP\x20is\x20from\x20one\n\x20of\x20the\x20listed\x20subne\
2061    tworks\x20AND\x202)\x20the\x20originating\x20device\x20complies\x20with\
2062    \x20the\n\x20listed\x20device\x20policy\x20AND\x203)\x20all\x20listed\
2063    \x20access\x20levels\x20are\x20granted\x20AND\x204)\x20the\n\x20request\
2064    \x20was\x20sent\x20at\x20a\x20time\x20allowed\x20by\x20the\x20DateTimeRe\
2065    striction.\n\n\n\n\x03\x04\x02\x01\x12\x03a\x08\x11\n\xac\x04\n\x04\x04\
2066    \x02\x02\0\x12\x03j\x02%\x1a\x9e\x04\x20CIDR\x20block\x20IP\x20subnetwor\
2067    k\x20specification.\x20May\x20be\x20IPv4\x20or\x20IPv6.\x20Note\x20that\
2068    \x20for\n\x20a\x20CIDR\x20IP\x20address\x20block,\x20the\x20specified\
2069    \x20IP\x20address\x20portion\x20must\x20be\x20properly\n\x20truncated\
2070    \x20(i.e.\x20all\x20the\x20host\x20bits\x20must\x20be\x20zero)\x20or\x20\
2071    the\x20input\x20is\x20considered\n\x20malformed.\x20For\x20example,\x20\
2072    \"192.0.2.0/24\"\x20is\x20accepted\x20but\x20\"192.0.2.1/24\"\x20is\n\
2073    \x20not.\x20Similarly,\x20for\x20IPv6,\x20\"2001:db8::/32\"\x20is\x20acc\
2074    epted\x20whereas\n\x20\"2001:db8::1/32\"\x20is\x20not.\x20The\x20origina\
2075    ting\x20IP\x20of\x20a\x20request\x20must\x20be\x20in\x20one\x20of\n\x20t\
2076    he\x20listed\x20subnets\x20in\x20order\x20for\x20this\x20Condition\x20to\
2077    \x20be\x20true.\x20If\x20empty,\x20all\x20IP\n\x20addresses\x20are\x20al\
2078    lowed.\n\n\x0c\n\x05\x04\x02\x02\0\x04\x12\x03j\x02\n\n\x0c\n\x05\x04\
2079    \x02\x02\0\x05\x12\x03j\x0b\x11\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03j\
2080    \x12\x20\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03j#$\n\x92\x01\n\x04\x04\
2081    \x02\x02\x01\x12\x03n\x02!\x1a\x84\x01\x20Device\x20specific\x20restrict\
2082    ions,\x20all\x20restrictions\x20must\x20hold\x20for\x20the\n\x20Conditio\
2083    n\x20to\x20be\x20true.\x20If\x20not\x20specified,\x20all\x20devices\x20a\
2084    re\x20allowed.\n\n\x0c\n\x05\x04\x02\x02\x01\x06\x12\x03n\x02\x0e\n\x0c\
2085    \n\x05\x04\x02\x02\x01\x01\x12\x03n\x0f\x1c\n\x0c\n\x05\x04\x02\x02\x01\
2086    \x03\x12\x03n\x1f\x20\n\xb0\x02\n\x04\x04\x02\x02\x02\x12\x03u\x02-\x1a\
2087    \xa2\x02\x20A\x20list\x20of\x20other\x20access\x20levels\x20defined\x20i\
2088    n\x20the\x20same\x20`Policy`,\x20referenced\x20by\n\x20resource\x20name.\
2089    \x20Referencing\x20an\x20`AccessLevel`\x20which\x20does\x20not\x20exist\
2090    \x20is\x20an\n\x20error.\x20All\x20access\x20levels\x20listed\x20must\
2091    \x20be\x20granted\x20for\x20the\x20Condition\n\x20to\x20be\x20true.\x20E\
2092    xample:\n\x20\"`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME\"`\n\n\
2093    \x0c\n\x05\x04\x02\x02\x02\x04\x12\x03u\x02\n\n\x0c\n\x05\x04\x02\x02\
2094    \x02\x05\x12\x03u\x0b\x11\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03u\x12(\
2095    \n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03u+,\n\xca\x01\n\x04\x04\x02\x02\
2096    \x03\x12\x03z\x02\x12\x1a\xbc\x01\x20Whether\x20to\x20negate\x20the\x20C\
2097    ondition.\x20If\x20true,\x20the\x20Condition\x20becomes\x20a\x20NAND\x20\
2098    over\n\x20its\x20non-empty\x20fields,\x20each\x20field\x20must\x20be\x20\
2099    false\x20for\x20the\x20Condition\x20overall\x20to\n\x20be\x20satisfied.\
2100    \x20Defaults\x20to\x20false.\n\n\x0c\n\x05\x04\x02\x02\x03\x05\x12\x03z\
2101    \x02\x06\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03z\x07\r\n\x0c\n\x05\x04\
2102    \x02\x02\x03\x03\x12\x03z\x10\x11\n\xe1\x01\n\x04\x04\x02\x02\x04\x12\
2103    \x04\x82\x01\x02\x1e\x1a\xd2\x01\x20The\x20request\x20must\x20be\x20made\
2104    \x20by\x20one\x20of\x20the\x20provided\x20user\x20or\x20service\n\x20acc\
2105    ounts.\x20Groups\x20are\x20not\x20supported.\n\x20Syntax:\n\x20`user:{em\
2106    ailid}`\n\x20`serviceAccount:{emailid}`\n\x20If\x20not\x20specified,\x20\
2107    a\x20request\x20may\x20come\x20from\x20any\x20user.\n\n\r\n\x05\x04\x02\
2108    \x02\x04\x04\x12\x04\x82\x01\x02\n\n\r\n\x05\x04\x02\x02\x04\x05\x12\x04\
2109    \x82\x01\x0b\x11\n\r\n\x05\x04\x02\x02\x04\x01\x12\x04\x82\x01\x12\x19\n\
2110    \r\n\x05\x04\x02\x02\x04\x03\x12\x04\x82\x01\x1c\x1d\n\x7f\n\x04\x04\x02\
2111    \x02\x05\x12\x04\x86\x01\x02\x1e\x1aq\x20The\x20request\x20must\x20origi\
2112    nate\x20from\x20one\x20of\x20the\x20provided\x20countries/regions.\n\x20\
2113    Must\x20be\x20valid\x20ISO\x203166-1\x20alpha-2\x20codes.\n\n\r\n\x05\
2114    \x04\x02\x02\x05\x04\x12\x04\x86\x01\x02\n\n\r\n\x05\x04\x02\x02\x05\x05\
2115    \x12\x04\x86\x01\x0b\x11\n\r\n\x05\x04\x02\x02\x05\x01\x12\x04\x86\x01\
2116    \x12\x19\n\r\n\x05\x04\x02\x02\x05\x03\x12\x04\x86\x01\x1c\x1d\n\xde\x01\
2117    \n\x02\x04\x03\x12\x06\x8c\x01\0\x8f\x01\x01\x1a\xcf\x01\x20`CustomLevel\
2118    `\x20is\x20an\x20`AccessLevel`\x20using\x20the\x20Cloud\x20Common\x20Exp\
2119    ression\x20Language\n\x20to\x20represent\x20the\x20necessary\x20conditio\
2120    ns\x20for\x20the\x20level\x20to\x20apply\x20to\x20a\x20request.\n\x20See\
2121    \x20CEL\x20spec\x20at:\x20https://github.com/google/cel-spec\n\n\x0b\n\
2122    \x03\x04\x03\x01\x12\x04\x8c\x01\x08\x13\nI\n\x04\x04\x03\x02\0\x12\x04\
2123    \x8e\x01\x02\x1c\x1a;\x20Required.\x20A\x20Cloud\x20CEL\x20expression\
2124    \x20evaluating\x20to\x20a\x20boolean.\n\n\r\n\x05\x04\x03\x02\0\x06\x12\
2125    \x04\x8e\x01\x02\x12\n\r\n\x05\x04\x03\x02\0\x01\x12\x04\x8e\x01\x13\x17\
2126    \n\r\n\x05\x04\x03\x02\0\x03\x12\x04\x8e\x01\x1a\x1b\n\xfd\x04\n\x02\x04\
2127    \x04\x12\x06\x9a\x01\0\xae\x01\x01\x1a\xee\x04\x20`DevicePolicy`\x20spec\
2128    ifies\x20device\x20specific\x20restrictions\x20necessary\x20to\x20acquir\
2129    e\x20a\n\x20given\x20access\x20level.\x20A\x20`DevicePolicy`\x20specifie\
2130    s\x20requirements\x20for\x20requests\x20from\n\x20devices\x20to\x20be\
2131    \x20granted\x20access\x20levels,\x20it\x20does\x20not\x20do\x20any\x20en\
2132    forcement\x20on\x20the\n\x20device.\x20`DevicePolicy`\x20acts\x20as\x20a\
2133    n\x20AND\x20over\x20all\x20specified\x20fields,\x20and\x20each\n\x20repe\
2134    ated\x20field\x20is\x20an\x20OR\x20over\x20its\x20elements.\x20Any\x20un\
2135    set\x20fields\x20are\x20ignored.\x20For\n\x20example,\x20if\x20the\x20pr\
2136    oto\x20is\x20{\x20os_type\x20:\x20DESKTOP_WINDOWS,\x20os_type\x20:\n\x20\
2137    DESKTOP_LINUX,\x20encryption_status:\x20ENCRYPTED},\x20then\x20the\x20De\
2138    vicePolicy\x20will\x20be\n\x20true\x20for\x20requests\x20originating\x20\
2139    from\x20encrypted\x20Linux\x20desktops\x20and\x20encrypted\n\x20Windows\
2140    \x20desktops.\n\n\x0b\n\x03\x04\x04\x01\x12\x04\x9a\x01\x08\x14\nl\n\x04\
2141    \x04\x04\x02\0\x12\x04\x9d\x01\x02\x1e\x1a^\x20Whether\x20or\x20not\x20s\
2142    creenlock\x20is\x20required\x20for\x20the\x20DevicePolicy\x20to\x20be\
2143    \x20true.\n\x20Defaults\x20to\x20`false`.\n\n\r\n\x05\x04\x04\x02\0\x05\
2144    \x12\x04\x9d\x01\x02\x06\n\r\n\x05\x04\x04\x02\0\x01\x12\x04\x9d\x01\x07\
2145    \x19\n\r\n\x05\x04\x04\x02\0\x03\x12\x04\x9d\x01\x1c\x1d\nP\n\x04\x04\
2146    \x04\x02\x01\x12\x04\xa0\x01\x02l\x1aB\x20Allowed\x20encryptions\x20stat\
2147    uses,\x20an\x20empty\x20list\x20allows\x20all\x20statuses.\n\n\r\n\x05\
2148    \x04\x04\x02\x01\x04\x12\x04\xa0\x01\x02\n\n\r\n\x05\x04\x04\x02\x01\x06\
2149    \x12\x04\xa0\x01\x0bK\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\xa0\x01Lg\n\
2150    \r\n\x05\x04\x04\x02\x01\x03\x12\x04\xa0\x01jk\nU\n\x04\x04\x04\x02\x02\
2151    \x12\x04\xa3\x01\x02+\x1aG\x20Allowed\x20OS\x20versions,\x20an\x20empty\
2152    \x20list\x20allows\x20all\x20types\x20and\x20all\x20versions.\n\n\r\n\
2153    \x05\x04\x04\x02\x02\x04\x12\x04\xa3\x01\x02\n\n\r\n\x05\x04\x04\x02\x02\
2154    \x06\x12\x04\xa3\x01\x0b\x17\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\xa3\
2155    \x01\x18&\n\r\n\x05\x04\x04\x02\x02\x03\x12\x04\xa3\x01)*\n^\n\x04\x04\
2156    \x04\x02\x03\x12\x04\xa7\x01\x02p\x1aP\x20Allowed\x20device\x20managemen\
2157    t\x20levels,\x20an\x20empty\x20list\x20allows\x20all\x20management\n\x20\
2158    levels.\n\n\r\n\x05\x04\x04\x02\x03\x04\x12\x04\xa7\x01\x02\n\n\r\n\x05\
2159    \x04\x04\x02\x03\x06\x12\x04\xa7\x01\x0bJ\n\r\n\x05\x04\x04\x02\x03\x01\
2160    \x12\x04\xa7\x01Kk\n\r\n\x05\x04\x04\x02\x03\x03\x12\x04\xa7\x01no\nN\n\
2161    \x04\x04\x04\x02\x04\x12\x04\xaa\x01\x02\"\x1a@\x20Whether\x20the\x20dev\
2162    ice\x20needs\x20to\x20be\x20approved\x20by\x20the\x20customer\x20admin.\
2163    \n\n\r\n\x05\x04\x04\x02\x04\x05\x12\x04\xaa\x01\x02\x06\n\r\n\x05\x04\
2164    \x04\x02\x04\x01\x12\x04\xaa\x01\x07\x1d\n\r\n\x05\x04\x04\x02\x04\x03\
2165    \x12\x04\xaa\x01\x20!\n:\n\x04\x04\x04\x02\x05\x12\x04\xad\x01\x02\x1e\
2166    \x1a,\x20Whether\x20the\x20device\x20needs\x20to\x20be\x20corp\x20owned.\
2167    \n\n\r\n\x05\x04\x04\x02\x05\x05\x12\x04\xad\x01\x02\x06\n\r\n\x05\x04\
2168    \x04\x02\x05\x01\x12\x04\xad\x01\x07\x19\n\r\n\x05\x04\x04\x02\x05\x03\
2169    \x12\x04\xad\x01\x1c\x1d\nT\n\x02\x04\x05\x12\x06\xb1\x01\0\xbf\x01\x01\
2170    \x1aF\x20A\x20restriction\x20on\x20the\x20OS\x20type\x20and\x20version\
2171    \x20of\x20devices\x20making\x20requests.\n\n\x0b\n\x03\x04\x05\x01\x12\
2172    \x04\xb1\x01\x08\x14\n.\n\x04\x04\x05\x02\0\x12\x04\xb3\x01\x02?\x1a\x20\
2173    \x20Required.\x20The\x20allowed\x20OS\x20type.\n\n\r\n\x05\x04\x05\x02\0\
2174    \x06\x12\x04\xb3\x01\x022\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\xb3\x013:\
2175    \n\r\n\x05\x04\x05\x02\0\x03\x12\x04\xb3\x01=>\n\xb1\x01\n\x04\x04\x05\
2176    \x02\x01\x12\x04\xb8\x01\x02\x1d\x1a\xa2\x01\x20The\x20minimum\x20allowe\
2177    d\x20OS\x20version.\x20If\x20not\x20set,\x20any\x20version\x20of\x20this\
2178    \x20OS\n\x20satisfies\x20the\x20constraint.\x20Format:\x20`\"major.minor\
2179    .patch\"`.\n\x20Examples:\x20`\"10.5.301\"`,\x20`\"9.2.1\"`.\n\n\r\n\x05\
2180    \x04\x05\x02\x01\x05\x12\x04\xb8\x01\x02\x08\n\r\n\x05\x04\x05\x02\x01\
2181    \x01\x12\x04\xb8\x01\t\x18\n\r\n\x05\x04\x05\x02\x01\x03\x12\x04\xb8\x01\
2182    \x1b\x1c\n\x81\x02\n\x04\x04\x05\x02\x02\x12\x04\xbe\x01\x02&\x1a\xf2\
2183    \x01\x20Only\x20allows\x20requests\x20from\x20devices\x20with\x20a\x20ve\
2184    rified\x20Chrome\x20OS.\n\x20Verifications\x20includes\x20requirements\
2185    \x20that\x20the\x20device\x20is\x20enterprise-managed,\n\x20conformant\
2186    \x20to\x20domain\x20policies,\x20and\x20the\x20caller\x20has\x20permissi\
2187    on\x20to\x20call\n\x20the\x20API\x20targeted\x20by\x20the\x20request.\n\
2188    \n\r\n\x05\x04\x05\x02\x02\x05\x12\x04\xbe\x01\x02\x06\n\r\n\x05\x04\x05\
2189    \x02\x02\x01\x12\x04\xbe\x01\x07!\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\
2190    \xbe\x01$%b\x06proto3\
2191";
2192
2193static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
2194
2195fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
2196    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
2197}
2198
2199pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
2200    file_descriptor_proto_lazy.get(|| {
2201        parse_descriptor_proto()
2202    })
2203}