steam-vent-proto 0.1.0

Protobuf structs used by the Steam client protocol
Documentation
// This file is generated by rust-protobuf 2.24.1. Do not edit
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `steammessages_appoverview.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_24_1;

#[derive(PartialEq,Clone,Default)]
pub struct CAppOverview_AppAssociation {
    // message fields
    field_type: ::std::option::Option<EAppAssociationType>,
    name: ::protobuf::SingularField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CAppOverview_AppAssociation {
    fn default() -> &'a CAppOverview_AppAssociation {
        <CAppOverview_AppAssociation as ::protobuf::Message>::default_instance()
    }
}

impl CAppOverview_AppAssociation {
    pub fn new() -> CAppOverview_AppAssociation {
        ::std::default::Default::default()
    }

    // optional .EAppAssociationType type = 1;


    pub fn get_field_type(&self) -> EAppAssociationType {
        self.field_type.unwrap_or(EAppAssociationType::k_EAppAssociationTypeInvalid)
    }
    pub fn clear_field_type(&mut self) {
        self.field_type = ::std::option::Option::None;
    }

    pub fn has_field_type(&self) -> bool {
        self.field_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_field_type(&mut self, v: EAppAssociationType) {
        self.field_type = ::std::option::Option::Some(v);
    }

    // optional string name = 2;


    pub fn get_name(&self) -> &str {
        match self.name.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_name(&mut self) {
        self.name.clear();
    }

    pub fn has_name(&self) -> bool {
        self.name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_name(&mut self, v: ::std::string::String) {
        self.name = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_name(&mut self) -> &mut ::std::string::String {
        if self.name.is_none() {
            self.name.set_default();
        }
        self.name.as_mut().unwrap()
    }

    // Take field
    pub fn take_name(&mut self) -> ::std::string::String {
        self.name.take().unwrap_or_else(|| ::std::string::String::new())
    }
}

impl ::protobuf::Message for CAppOverview_AppAssociation {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_proto2_enum_with_unknown_fields_into(wire_type, is, &mut self.field_type, 1, &mut self.unknown_fields)?
                },
                2 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.name)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.field_type {
            my_size += ::protobuf::rt::enum_size(1, v);
        }
        if let Some(ref v) = self.name.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.field_type {
            os.write_enum(1, ::protobuf::ProtobufEnum::value(&v))?;
        }
        if let Some(ref v) = self.name.as_ref() {
            os.write_string(2, &v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CAppOverview_AppAssociation {
        CAppOverview_AppAssociation::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeEnum<EAppAssociationType>>(
                "type",
                |m: &CAppOverview_AppAssociation| { &m.field_type },
                |m: &mut CAppOverview_AppAssociation| { &mut m.field_type },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "name",
                |m: &CAppOverview_AppAssociation| { &m.name },
                |m: &mut CAppOverview_AppAssociation| { &mut m.name },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CAppOverview_AppAssociation>(
                "CAppOverview_AppAssociation",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CAppOverview_AppAssociation {
        static instance: ::protobuf::rt::LazyV2<CAppOverview_AppAssociation> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CAppOverview_AppAssociation::new)
    }
}

impl ::protobuf::Clear for CAppOverview_AppAssociation {
    fn clear(&mut self) {
        self.field_type = ::std::option::Option::None;
        self.name.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CAppOverview_AppAssociation {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CAppOverview_AppAssociation {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CAppOverview_PerClientData {
    // message fields
    clientid: ::std::option::Option<u64>,
    client_name: ::protobuf::SingularField<::std::string::String>,
    display_status: ::std::option::Option<EDisplayStatus>,
    status_percentage: ::std::option::Option<u32>,
    active_beta: ::protobuf::SingularField<::std::string::String>,
    installed: ::std::option::Option<bool>,
    bytes_downloaded: ::std::option::Option<u64>,
    bytes_total: ::std::option::Option<u64>,
    streaming_to_local_client: ::std::option::Option<bool>,
    is_available_on_current_platform: ::std::option::Option<bool>,
    is_invalid_os_type: ::std::option::Option<bool>,
    playtime_left: ::std::option::Option<u32>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CAppOverview_PerClientData {
    fn default() -> &'a CAppOverview_PerClientData {
        <CAppOverview_PerClientData as ::protobuf::Message>::default_instance()
    }
}

impl CAppOverview_PerClientData {
    pub fn new() -> CAppOverview_PerClientData {
        ::std::default::Default::default()
    }

    // optional uint64 clientid = 1;


    pub fn get_clientid(&self) -> u64 {
        self.clientid.unwrap_or(0)
    }
    pub fn clear_clientid(&mut self) {
        self.clientid = ::std::option::Option::None;
    }

    pub fn has_clientid(&self) -> bool {
        self.clientid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_clientid(&mut self, v: u64) {
        self.clientid = ::std::option::Option::Some(v);
    }

    // optional string client_name = 2;


    pub fn get_client_name(&self) -> &str {
        match self.client_name.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_client_name(&mut self) {
        self.client_name.clear();
    }

    pub fn has_client_name(&self) -> bool {
        self.client_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_client_name(&mut self, v: ::std::string::String) {
        self.client_name = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_client_name(&mut self) -> &mut ::std::string::String {
        if self.client_name.is_none() {
            self.client_name.set_default();
        }
        self.client_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_client_name(&mut self) -> ::std::string::String {
        self.client_name.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .EDisplayStatus display_status = 3;


    pub fn get_display_status(&self) -> EDisplayStatus {
        self.display_status.unwrap_or(EDisplayStatus::k_EDisplayStatusInvalid)
    }
    pub fn clear_display_status(&mut self) {
        self.display_status = ::std::option::Option::None;
    }

    pub fn has_display_status(&self) -> bool {
        self.display_status.is_some()
    }

    // Param is passed by value, moved
    pub fn set_display_status(&mut self, v: EDisplayStatus) {
        self.display_status = ::std::option::Option::Some(v);
    }

    // optional uint32 status_percentage = 4;


    pub fn get_status_percentage(&self) -> u32 {
        self.status_percentage.unwrap_or(0u32)
    }
    pub fn clear_status_percentage(&mut self) {
        self.status_percentage = ::std::option::Option::None;
    }

    pub fn has_status_percentage(&self) -> bool {
        self.status_percentage.is_some()
    }

    // Param is passed by value, moved
    pub fn set_status_percentage(&mut self, v: u32) {
        self.status_percentage = ::std::option::Option::Some(v);
    }

    // optional string active_beta = 5;


    pub fn get_active_beta(&self) -> &str {
        match self.active_beta.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_active_beta(&mut self) {
        self.active_beta.clear();
    }

    pub fn has_active_beta(&self) -> bool {
        self.active_beta.is_some()
    }

    // Param is passed by value, moved
    pub fn set_active_beta(&mut self, v: ::std::string::String) {
        self.active_beta = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_active_beta(&mut self) -> &mut ::std::string::String {
        if self.active_beta.is_none() {
            self.active_beta.set_default();
        }
        self.active_beta.as_mut().unwrap()
    }

    // Take field
    pub fn take_active_beta(&mut self) -> ::std::string::String {
        self.active_beta.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bool installed = 6;


    pub fn get_installed(&self) -> bool {
        self.installed.unwrap_or(false)
    }
    pub fn clear_installed(&mut self) {
        self.installed = ::std::option::Option::None;
    }

    pub fn has_installed(&self) -> bool {
        self.installed.is_some()
    }

    // Param is passed by value, moved
    pub fn set_installed(&mut self, v: bool) {
        self.installed = ::std::option::Option::Some(v);
    }

    // optional uint64 bytes_downloaded = 7;


    pub fn get_bytes_downloaded(&self) -> u64 {
        self.bytes_downloaded.unwrap_or(0u64)
    }
    pub fn clear_bytes_downloaded(&mut self) {
        self.bytes_downloaded = ::std::option::Option::None;
    }

    pub fn has_bytes_downloaded(&self) -> bool {
        self.bytes_downloaded.is_some()
    }

    // Param is passed by value, moved
    pub fn set_bytes_downloaded(&mut self, v: u64) {
        self.bytes_downloaded = ::std::option::Option::Some(v);
    }

    // optional uint64 bytes_total = 8;


    pub fn get_bytes_total(&self) -> u64 {
        self.bytes_total.unwrap_or(0u64)
    }
    pub fn clear_bytes_total(&mut self) {
        self.bytes_total = ::std::option::Option::None;
    }

    pub fn has_bytes_total(&self) -> bool {
        self.bytes_total.is_some()
    }

    // Param is passed by value, moved
    pub fn set_bytes_total(&mut self, v: u64) {
        self.bytes_total = ::std::option::Option::Some(v);
    }

    // optional bool streaming_to_local_client = 9;


    pub fn get_streaming_to_local_client(&self) -> bool {
        self.streaming_to_local_client.unwrap_or(false)
    }
    pub fn clear_streaming_to_local_client(&mut self) {
        self.streaming_to_local_client = ::std::option::Option::None;
    }

    pub fn has_streaming_to_local_client(&self) -> bool {
        self.streaming_to_local_client.is_some()
    }

    // Param is passed by value, moved
    pub fn set_streaming_to_local_client(&mut self, v: bool) {
        self.streaming_to_local_client = ::std::option::Option::Some(v);
    }

    // optional bool is_available_on_current_platform = 10;


    pub fn get_is_available_on_current_platform(&self) -> bool {
        self.is_available_on_current_platform.unwrap_or(false)
    }
    pub fn clear_is_available_on_current_platform(&mut self) {
        self.is_available_on_current_platform = ::std::option::Option::None;
    }

    pub fn has_is_available_on_current_platform(&self) -> bool {
        self.is_available_on_current_platform.is_some()
    }

    // Param is passed by value, moved
    pub fn set_is_available_on_current_platform(&mut self, v: bool) {
        self.is_available_on_current_platform = ::std::option::Option::Some(v);
    }

    // optional bool is_invalid_os_type = 11;


    pub fn get_is_invalid_os_type(&self) -> bool {
        self.is_invalid_os_type.unwrap_or(false)
    }
    pub fn clear_is_invalid_os_type(&mut self) {
        self.is_invalid_os_type = ::std::option::Option::None;
    }

    pub fn has_is_invalid_os_type(&self) -> bool {
        self.is_invalid_os_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_is_invalid_os_type(&mut self, v: bool) {
        self.is_invalid_os_type = ::std::option::Option::Some(v);
    }

    // optional uint32 playtime_left = 12;


    pub fn get_playtime_left(&self) -> u32 {
        self.playtime_left.unwrap_or(0)
    }
    pub fn clear_playtime_left(&mut self) {
        self.playtime_left = ::std::option::Option::None;
    }

    pub fn has_playtime_left(&self) -> bool {
        self.playtime_left.is_some()
    }

    // Param is passed by value, moved
    pub fn set_playtime_left(&mut self, v: u32) {
        self.playtime_left = ::std::option::Option::Some(v);
    }
}

impl ::protobuf::Message for CAppOverview_PerClientData {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.clientid = ::std::option::Option::Some(tmp);
                },
                2 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.client_name)?;
                },
                3 => {
                    ::protobuf::rt::read_proto2_enum_with_unknown_fields_into(wire_type, is, &mut self.display_status, 3, &mut self.unknown_fields)?
                },
                4 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.status_percentage = ::std::option::Option::Some(tmp);
                },
                5 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.active_beta)?;
                },
                6 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.installed = ::std::option::Option::Some(tmp);
                },
                7 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.bytes_downloaded = ::std::option::Option::Some(tmp);
                },
                8 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.bytes_total = ::std::option::Option::Some(tmp);
                },
                9 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.streaming_to_local_client = ::std::option::Option::Some(tmp);
                },
                10 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.is_available_on_current_platform = ::std::option::Option::Some(tmp);
                },
                11 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.is_invalid_os_type = ::std::option::Option::Some(tmp);
                },
                12 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.playtime_left = ::std::option::Option::Some(tmp);
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.clientid {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.client_name.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.display_status {
            my_size += ::protobuf::rt::enum_size(3, v);
        }
        if let Some(v) = self.status_percentage {
            my_size += ::protobuf::rt::value_size(4, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.active_beta.as_ref() {
            my_size += ::protobuf::rt::string_size(5, &v);
        }
        if let Some(v) = self.installed {
            my_size += 2;
        }
        if let Some(v) = self.bytes_downloaded {
            my_size += ::protobuf::rt::value_size(7, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.bytes_total {
            my_size += ::protobuf::rt::value_size(8, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.streaming_to_local_client {
            my_size += 2;
        }
        if let Some(v) = self.is_available_on_current_platform {
            my_size += 2;
        }
        if let Some(v) = self.is_invalid_os_type {
            my_size += 2;
        }
        if let Some(v) = self.playtime_left {
            my_size += ::protobuf::rt::value_size(12, v, ::protobuf::wire_format::WireTypeVarint);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.clientid {
            os.write_uint64(1, v)?;
        }
        if let Some(ref v) = self.client_name.as_ref() {
            os.write_string(2, &v)?;
        }
        if let Some(v) = self.display_status {
            os.write_enum(3, ::protobuf::ProtobufEnum::value(&v))?;
        }
        if let Some(v) = self.status_percentage {
            os.write_uint32(4, v)?;
        }
        if let Some(ref v) = self.active_beta.as_ref() {
            os.write_string(5, &v)?;
        }
        if let Some(v) = self.installed {
            os.write_bool(6, v)?;
        }
        if let Some(v) = self.bytes_downloaded {
            os.write_uint64(7, v)?;
        }
        if let Some(v) = self.bytes_total {
            os.write_uint64(8, v)?;
        }
        if let Some(v) = self.streaming_to_local_client {
            os.write_bool(9, v)?;
        }
        if let Some(v) = self.is_available_on_current_platform {
            os.write_bool(10, v)?;
        }
        if let Some(v) = self.is_invalid_os_type {
            os.write_bool(11, v)?;
        }
        if let Some(v) = self.playtime_left {
            os.write_uint32(12, v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CAppOverview_PerClientData {
        CAppOverview_PerClientData::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "clientid",
                |m: &CAppOverview_PerClientData| { &m.clientid },
                |m: &mut CAppOverview_PerClientData| { &mut m.clientid },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "client_name",
                |m: &CAppOverview_PerClientData| { &m.client_name },
                |m: &mut CAppOverview_PerClientData| { &mut m.client_name },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeEnum<EDisplayStatus>>(
                "display_status",
                |m: &CAppOverview_PerClientData| { &m.display_status },
                |m: &mut CAppOverview_PerClientData| { &mut m.display_status },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "status_percentage",
                |m: &CAppOverview_PerClientData| { &m.status_percentage },
                |m: &mut CAppOverview_PerClientData| { &mut m.status_percentage },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "active_beta",
                |m: &CAppOverview_PerClientData| { &m.active_beta },
                |m: &mut CAppOverview_PerClientData| { &mut m.active_beta },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "installed",
                |m: &CAppOverview_PerClientData| { &m.installed },
                |m: &mut CAppOverview_PerClientData| { &mut m.installed },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "bytes_downloaded",
                |m: &CAppOverview_PerClientData| { &m.bytes_downloaded },
                |m: &mut CAppOverview_PerClientData| { &mut m.bytes_downloaded },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "bytes_total",
                |m: &CAppOverview_PerClientData| { &m.bytes_total },
                |m: &mut CAppOverview_PerClientData| { &mut m.bytes_total },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "streaming_to_local_client",
                |m: &CAppOverview_PerClientData| { &m.streaming_to_local_client },
                |m: &mut CAppOverview_PerClientData| { &mut m.streaming_to_local_client },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "is_available_on_current_platform",
                |m: &CAppOverview_PerClientData| { &m.is_available_on_current_platform },
                |m: &mut CAppOverview_PerClientData| { &mut m.is_available_on_current_platform },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "is_invalid_os_type",
                |m: &CAppOverview_PerClientData| { &m.is_invalid_os_type },
                |m: &mut CAppOverview_PerClientData| { &mut m.is_invalid_os_type },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "playtime_left",
                |m: &CAppOverview_PerClientData| { &m.playtime_left },
                |m: &mut CAppOverview_PerClientData| { &mut m.playtime_left },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CAppOverview_PerClientData>(
                "CAppOverview_PerClientData",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CAppOverview_PerClientData {
        static instance: ::protobuf::rt::LazyV2<CAppOverview_PerClientData> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CAppOverview_PerClientData::new)
    }
}

impl ::protobuf::Clear for CAppOverview_PerClientData {
    fn clear(&mut self) {
        self.clientid = ::std::option::Option::None;
        self.client_name.clear();
        self.display_status = ::std::option::Option::None;
        self.status_percentage = ::std::option::Option::None;
        self.active_beta.clear();
        self.installed = ::std::option::Option::None;
        self.bytes_downloaded = ::std::option::Option::None;
        self.bytes_total = ::std::option::Option::None;
        self.streaming_to_local_client = ::std::option::Option::None;
        self.is_available_on_current_platform = ::std::option::Option::None;
        self.is_invalid_os_type = ::std::option::Option::None;
        self.playtime_left = ::std::option::Option::None;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CAppOverview_PerClientData {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CAppOverview_PerClientData {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CAppOverview {
    // message fields
    appid: ::std::option::Option<u32>,
    display_name: ::protobuf::SingularField<::std::string::String>,
    visible_in_game_list: ::std::option::Option<bool>,
    sort_as: ::protobuf::SingularField<::std::string::String>,
    app_type: ::std::option::Option<EProtoAppType>,
    mru_index: ::std::option::Option<u32>,
    rt_recent_activity_time: ::std::option::Option<u32>,
    minutes_playtime_forever: ::std::option::Option<u32>,
    minutes_playtime_last_two_weeks: ::std::option::Option<u32>,
    rt_last_time_played: ::std::option::Option<u32>,
    pub store_tag: ::std::vec::Vec<u32>,
    pub association: ::protobuf::RepeatedField<CAppOverview_AppAssociation>,
    pub store_category: ::std::vec::Vec<u32>,
    rt_original_release_date: ::std::option::Option<u32>,
    rt_steam_release_date: ::std::option::Option<u32>,
    icon_hash: ::protobuf::SingularField<::std::string::String>,
    logo_hash: ::protobuf::SingularField<::std::string::String>,
    controller_support: ::std::option::Option<EAppControllerSupportLevel>,
    vr_supported: ::std::option::Option<bool>,
    metacritic_score: ::std::option::Option<u32>,
    size_on_disk: ::std::option::Option<u64>,
    third_party_mod: ::std::option::Option<bool>,
    icon_data: ::protobuf::SingularField<::std::string::String>,
    icon_data_format: ::protobuf::SingularField<::std::string::String>,
    gameid: ::protobuf::SingularField<::std::string::String>,
    library_capsule_filename: ::protobuf::SingularField<::std::string::String>,
    pub per_client_data: ::protobuf::RepeatedField<CAppOverview_PerClientData>,
    most_available_clientid: ::std::option::Option<u64>,
    selected_clientid: ::std::option::Option<u64>,
    rt_store_asset_mtime: ::std::option::Option<u32>,
    rt_custom_image_mtime: ::std::option::Option<u32>,
    optional_parent_app_id: ::std::option::Option<u32>,
    owner_account_id: ::std::option::Option<u32>,
    compat_mapping_enabled: ::std::option::Option<bool>,
    compat_mapping_priority: ::std::option::Option<u32>,
    compat_mapping_tool_name: ::protobuf::SingularField<::std::string::String>,
    review_score_with_bombs: ::std::option::Option<u32>,
    review_percentage_with_bombs: ::std::option::Option<u32>,
    review_score_without_bombs: ::std::option::Option<u32>,
    review_percentage_without_bombs: ::std::option::Option<u32>,
    library_id: ::protobuf::SingularField<::std::string::String>,
    vr_only: ::std::option::Option<bool>,
    mastersub_appid: ::std::option::Option<u32>,
    mastersub_includedwith_logo: ::protobuf::SingularField<::std::string::String>,
    compat_allowlist_setting: ::std::option::Option<u32>,
    site_license_site_name: ::protobuf::SingularField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CAppOverview {
    fn default() -> &'a CAppOverview {
        <CAppOverview as ::protobuf::Message>::default_instance()
    }
}

impl CAppOverview {
    pub fn new() -> CAppOverview {
        ::std::default::Default::default()
    }

    // optional uint32 appid = 1;


    pub fn get_appid(&self) -> u32 {
        self.appid.unwrap_or(0)
    }
    pub fn clear_appid(&mut self) {
        self.appid = ::std::option::Option::None;
    }

    pub fn has_appid(&self) -> bool {
        self.appid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_appid(&mut self, v: u32) {
        self.appid = ::std::option::Option::Some(v);
    }

    // optional string display_name = 2;


    pub fn get_display_name(&self) -> &str {
        match self.display_name.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_display_name(&mut self) {
        self.display_name.clear();
    }

    pub fn has_display_name(&self) -> bool {
        self.display_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_display_name(&mut self, v: ::std::string::String) {
        self.display_name = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
        if self.display_name.is_none() {
            self.display_name.set_default();
        }
        self.display_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_display_name(&mut self) -> ::std::string::String {
        self.display_name.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bool visible_in_game_list = 4;


    pub fn get_visible_in_game_list(&self) -> bool {
        self.visible_in_game_list.unwrap_or(false)
    }
    pub fn clear_visible_in_game_list(&mut self) {
        self.visible_in_game_list = ::std::option::Option::None;
    }

    pub fn has_visible_in_game_list(&self) -> bool {
        self.visible_in_game_list.is_some()
    }

    // Param is passed by value, moved
    pub fn set_visible_in_game_list(&mut self, v: bool) {
        self.visible_in_game_list = ::std::option::Option::Some(v);
    }

    // optional string sort_as = 6;


    pub fn get_sort_as(&self) -> &str {
        match self.sort_as.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_sort_as(&mut self) {
        self.sort_as.clear();
    }

    pub fn has_sort_as(&self) -> bool {
        self.sort_as.is_some()
    }

    // Param is passed by value, moved
    pub fn set_sort_as(&mut self, v: ::std::string::String) {
        self.sort_as = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_sort_as(&mut self) -> &mut ::std::string::String {
        if self.sort_as.is_none() {
            self.sort_as.set_default();
        }
        self.sort_as.as_mut().unwrap()
    }

    // Take field
    pub fn take_sort_as(&mut self) -> ::std::string::String {
        self.sort_as.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .EProtoAppType app_type = 7;


    pub fn get_app_type(&self) -> EProtoAppType {
        self.app_type.unwrap_or(EProtoAppType::k_EAppTypeInvalid)
    }
    pub fn clear_app_type(&mut self) {
        self.app_type = ::std::option::Option::None;
    }

    pub fn has_app_type(&self) -> bool {
        self.app_type.is_some()
    }

    // Param is passed by value, moved
    pub fn set_app_type(&mut self, v: EProtoAppType) {
        self.app_type = ::std::option::Option::Some(v);
    }

    // optional uint32 mru_index = 13;


    pub fn get_mru_index(&self) -> u32 {
        self.mru_index.unwrap_or(0)
    }
    pub fn clear_mru_index(&mut self) {
        self.mru_index = ::std::option::Option::None;
    }

    pub fn has_mru_index(&self) -> bool {
        self.mru_index.is_some()
    }

    // Param is passed by value, moved
    pub fn set_mru_index(&mut self, v: u32) {
        self.mru_index = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_recent_activity_time = 14;


    pub fn get_rt_recent_activity_time(&self) -> u32 {
        self.rt_recent_activity_time.unwrap_or(0u32)
    }
    pub fn clear_rt_recent_activity_time(&mut self) {
        self.rt_recent_activity_time = ::std::option::Option::None;
    }

    pub fn has_rt_recent_activity_time(&self) -> bool {
        self.rt_recent_activity_time.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_recent_activity_time(&mut self, v: u32) {
        self.rt_recent_activity_time = ::std::option::Option::Some(v);
    }

    // optional uint32 minutes_playtime_forever = 16;


    pub fn get_minutes_playtime_forever(&self) -> u32 {
        self.minutes_playtime_forever.unwrap_or(0u32)
    }
    pub fn clear_minutes_playtime_forever(&mut self) {
        self.minutes_playtime_forever = ::std::option::Option::None;
    }

    pub fn has_minutes_playtime_forever(&self) -> bool {
        self.minutes_playtime_forever.is_some()
    }

    // Param is passed by value, moved
    pub fn set_minutes_playtime_forever(&mut self, v: u32) {
        self.minutes_playtime_forever = ::std::option::Option::Some(v);
    }

    // optional uint32 minutes_playtime_last_two_weeks = 17;


    pub fn get_minutes_playtime_last_two_weeks(&self) -> u32 {
        self.minutes_playtime_last_two_weeks.unwrap_or(0u32)
    }
    pub fn clear_minutes_playtime_last_two_weeks(&mut self) {
        self.minutes_playtime_last_two_weeks = ::std::option::Option::None;
    }

    pub fn has_minutes_playtime_last_two_weeks(&self) -> bool {
        self.minutes_playtime_last_two_weeks.is_some()
    }

    // Param is passed by value, moved
    pub fn set_minutes_playtime_last_two_weeks(&mut self, v: u32) {
        self.minutes_playtime_last_two_weeks = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_last_time_played = 18;


    pub fn get_rt_last_time_played(&self) -> u32 {
        self.rt_last_time_played.unwrap_or(0u32)
    }
    pub fn clear_rt_last_time_played(&mut self) {
        self.rt_last_time_played = ::std::option::Option::None;
    }

    pub fn has_rt_last_time_played(&self) -> bool {
        self.rt_last_time_played.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_last_time_played(&mut self, v: u32) {
        self.rt_last_time_played = ::std::option::Option::Some(v);
    }

    // repeated uint32 store_tag = 19;


    pub fn get_store_tag(&self) -> &[u32] {
        &self.store_tag
    }
    pub fn clear_store_tag(&mut self) {
        self.store_tag.clear();
    }

    // Param is passed by value, moved
    pub fn set_store_tag(&mut self, v: ::std::vec::Vec<u32>) {
        self.store_tag = v;
    }

    // Mutable pointer to the field.
    pub fn mut_store_tag(&mut self) -> &mut ::std::vec::Vec<u32> {
        &mut self.store_tag
    }

    // Take field
    pub fn take_store_tag(&mut self) -> ::std::vec::Vec<u32> {
        ::std::mem::replace(&mut self.store_tag, ::std::vec::Vec::new())
    }

    // repeated .CAppOverview_AppAssociation association = 20;


    pub fn get_association(&self) -> &[CAppOverview_AppAssociation] {
        &self.association
    }
    pub fn clear_association(&mut self) {
        self.association.clear();
    }

    // Param is passed by value, moved
    pub fn set_association(&mut self, v: ::protobuf::RepeatedField<CAppOverview_AppAssociation>) {
        self.association = v;
    }

    // Mutable pointer to the field.
    pub fn mut_association(&mut self) -> &mut ::protobuf::RepeatedField<CAppOverview_AppAssociation> {
        &mut self.association
    }

    // Take field
    pub fn take_association(&mut self) -> ::protobuf::RepeatedField<CAppOverview_AppAssociation> {
        ::std::mem::replace(&mut self.association, ::protobuf::RepeatedField::new())
    }

    // repeated uint32 store_category = 23;


    pub fn get_store_category(&self) -> &[u32] {
        &self.store_category
    }
    pub fn clear_store_category(&mut self) {
        self.store_category.clear();
    }

    // Param is passed by value, moved
    pub fn set_store_category(&mut self, v: ::std::vec::Vec<u32>) {
        self.store_category = v;
    }

    // Mutable pointer to the field.
    pub fn mut_store_category(&mut self) -> &mut ::std::vec::Vec<u32> {
        &mut self.store_category
    }

    // Take field
    pub fn take_store_category(&mut self) -> ::std::vec::Vec<u32> {
        ::std::mem::replace(&mut self.store_category, ::std::vec::Vec::new())
    }

    // optional uint32 rt_original_release_date = 25;


    pub fn get_rt_original_release_date(&self) -> u32 {
        self.rt_original_release_date.unwrap_or(0u32)
    }
    pub fn clear_rt_original_release_date(&mut self) {
        self.rt_original_release_date = ::std::option::Option::None;
    }

    pub fn has_rt_original_release_date(&self) -> bool {
        self.rt_original_release_date.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_original_release_date(&mut self, v: u32) {
        self.rt_original_release_date = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_steam_release_date = 26;


    pub fn get_rt_steam_release_date(&self) -> u32 {
        self.rt_steam_release_date.unwrap_or(0u32)
    }
    pub fn clear_rt_steam_release_date(&mut self) {
        self.rt_steam_release_date = ::std::option::Option::None;
    }

    pub fn has_rt_steam_release_date(&self) -> bool {
        self.rt_steam_release_date.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_steam_release_date(&mut self, v: u32) {
        self.rt_steam_release_date = ::std::option::Option::Some(v);
    }

    // optional string icon_hash = 27;


    pub fn get_icon_hash(&self) -> &str {
        match self.icon_hash.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_icon_hash(&mut self) {
        self.icon_hash.clear();
    }

    pub fn has_icon_hash(&self) -> bool {
        self.icon_hash.is_some()
    }

    // Param is passed by value, moved
    pub fn set_icon_hash(&mut self, v: ::std::string::String) {
        self.icon_hash = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_icon_hash(&mut self) -> &mut ::std::string::String {
        if self.icon_hash.is_none() {
            self.icon_hash.set_default();
        }
        self.icon_hash.as_mut().unwrap()
    }

    // Take field
    pub fn take_icon_hash(&mut self) -> ::std::string::String {
        self.icon_hash.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string logo_hash = 30;


    pub fn get_logo_hash(&self) -> &str {
        match self.logo_hash.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_logo_hash(&mut self) {
        self.logo_hash.clear();
    }

    pub fn has_logo_hash(&self) -> bool {
        self.logo_hash.is_some()
    }

    // Param is passed by value, moved
    pub fn set_logo_hash(&mut self, v: ::std::string::String) {
        self.logo_hash = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_logo_hash(&mut self) -> &mut ::std::string::String {
        if self.logo_hash.is_none() {
            self.logo_hash.set_default();
        }
        self.logo_hash.as_mut().unwrap()
    }

    // Take field
    pub fn take_logo_hash(&mut self) -> ::std::string::String {
        self.logo_hash.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional .EAppControllerSupportLevel controller_support = 31;


    pub fn get_controller_support(&self) -> EAppControllerSupportLevel {
        self.controller_support.unwrap_or(EAppControllerSupportLevel::k_EAppControllerSupportLevelNone)
    }
    pub fn clear_controller_support(&mut self) {
        self.controller_support = ::std::option::Option::None;
    }

    pub fn has_controller_support(&self) -> bool {
        self.controller_support.is_some()
    }

    // Param is passed by value, moved
    pub fn set_controller_support(&mut self, v: EAppControllerSupportLevel) {
        self.controller_support = ::std::option::Option::Some(v);
    }

    // optional bool vr_supported = 32;


    pub fn get_vr_supported(&self) -> bool {
        self.vr_supported.unwrap_or(false)
    }
    pub fn clear_vr_supported(&mut self) {
        self.vr_supported = ::std::option::Option::None;
    }

    pub fn has_vr_supported(&self) -> bool {
        self.vr_supported.is_some()
    }

    // Param is passed by value, moved
    pub fn set_vr_supported(&mut self, v: bool) {
        self.vr_supported = ::std::option::Option::Some(v);
    }

    // optional uint32 metacritic_score = 36;


    pub fn get_metacritic_score(&self) -> u32 {
        self.metacritic_score.unwrap_or(0)
    }
    pub fn clear_metacritic_score(&mut self) {
        self.metacritic_score = ::std::option::Option::None;
    }

    pub fn has_metacritic_score(&self) -> bool {
        self.metacritic_score.is_some()
    }

    // Param is passed by value, moved
    pub fn set_metacritic_score(&mut self, v: u32) {
        self.metacritic_score = ::std::option::Option::Some(v);
    }

    // optional uint64 size_on_disk = 37;


    pub fn get_size_on_disk(&self) -> u64 {
        self.size_on_disk.unwrap_or(0)
    }
    pub fn clear_size_on_disk(&mut self) {
        self.size_on_disk = ::std::option::Option::None;
    }

    pub fn has_size_on_disk(&self) -> bool {
        self.size_on_disk.is_some()
    }

    // Param is passed by value, moved
    pub fn set_size_on_disk(&mut self, v: u64) {
        self.size_on_disk = ::std::option::Option::Some(v);
    }

    // optional bool third_party_mod = 38;


    pub fn get_third_party_mod(&self) -> bool {
        self.third_party_mod.unwrap_or(false)
    }
    pub fn clear_third_party_mod(&mut self) {
        self.third_party_mod = ::std::option::Option::None;
    }

    pub fn has_third_party_mod(&self) -> bool {
        self.third_party_mod.is_some()
    }

    // Param is passed by value, moved
    pub fn set_third_party_mod(&mut self, v: bool) {
        self.third_party_mod = ::std::option::Option::Some(v);
    }

    // optional string icon_data = 39;


    pub fn get_icon_data(&self) -> &str {
        match self.icon_data.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_icon_data(&mut self) {
        self.icon_data.clear();
    }

    pub fn has_icon_data(&self) -> bool {
        self.icon_data.is_some()
    }

    // Param is passed by value, moved
    pub fn set_icon_data(&mut self, v: ::std::string::String) {
        self.icon_data = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_icon_data(&mut self) -> &mut ::std::string::String {
        if self.icon_data.is_none() {
            self.icon_data.set_default();
        }
        self.icon_data.as_mut().unwrap()
    }

    // Take field
    pub fn take_icon_data(&mut self) -> ::std::string::String {
        self.icon_data.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string icon_data_format = 40;


    pub fn get_icon_data_format(&self) -> &str {
        match self.icon_data_format.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_icon_data_format(&mut self) {
        self.icon_data_format.clear();
    }

    pub fn has_icon_data_format(&self) -> bool {
        self.icon_data_format.is_some()
    }

    // Param is passed by value, moved
    pub fn set_icon_data_format(&mut self, v: ::std::string::String) {
        self.icon_data_format = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_icon_data_format(&mut self) -> &mut ::std::string::String {
        if self.icon_data_format.is_none() {
            self.icon_data_format.set_default();
        }
        self.icon_data_format.as_mut().unwrap()
    }

    // Take field
    pub fn take_icon_data_format(&mut self) -> ::std::string::String {
        self.icon_data_format.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string gameid = 41;


    pub fn get_gameid(&self) -> &str {
        match self.gameid.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_gameid(&mut self) {
        self.gameid.clear();
    }

    pub fn has_gameid(&self) -> bool {
        self.gameid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_gameid(&mut self, v: ::std::string::String) {
        self.gameid = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_gameid(&mut self) -> &mut ::std::string::String {
        if self.gameid.is_none() {
            self.gameid.set_default();
        }
        self.gameid.as_mut().unwrap()
    }

    // Take field
    pub fn take_gameid(&mut self) -> ::std::string::String {
        self.gameid.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional string library_capsule_filename = 42;


    pub fn get_library_capsule_filename(&self) -> &str {
        match self.library_capsule_filename.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_library_capsule_filename(&mut self) {
        self.library_capsule_filename.clear();
    }

    pub fn has_library_capsule_filename(&self) -> bool {
        self.library_capsule_filename.is_some()
    }

    // Param is passed by value, moved
    pub fn set_library_capsule_filename(&mut self, v: ::std::string::String) {
        self.library_capsule_filename = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_library_capsule_filename(&mut self) -> &mut ::std::string::String {
        if self.library_capsule_filename.is_none() {
            self.library_capsule_filename.set_default();
        }
        self.library_capsule_filename.as_mut().unwrap()
    }

    // Take field
    pub fn take_library_capsule_filename(&mut self) -> ::std::string::String {
        self.library_capsule_filename.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // repeated .CAppOverview_PerClientData per_client_data = 43;


    pub fn get_per_client_data(&self) -> &[CAppOverview_PerClientData] {
        &self.per_client_data
    }
    pub fn clear_per_client_data(&mut self) {
        self.per_client_data.clear();
    }

    // Param is passed by value, moved
    pub fn set_per_client_data(&mut self, v: ::protobuf::RepeatedField<CAppOverview_PerClientData>) {
        self.per_client_data = v;
    }

    // Mutable pointer to the field.
    pub fn mut_per_client_data(&mut self) -> &mut ::protobuf::RepeatedField<CAppOverview_PerClientData> {
        &mut self.per_client_data
    }

    // Take field
    pub fn take_per_client_data(&mut self) -> ::protobuf::RepeatedField<CAppOverview_PerClientData> {
        ::std::mem::replace(&mut self.per_client_data, ::protobuf::RepeatedField::new())
    }

    // optional uint64 most_available_clientid = 44;


    pub fn get_most_available_clientid(&self) -> u64 {
        self.most_available_clientid.unwrap_or(0)
    }
    pub fn clear_most_available_clientid(&mut self) {
        self.most_available_clientid = ::std::option::Option::None;
    }

    pub fn has_most_available_clientid(&self) -> bool {
        self.most_available_clientid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_most_available_clientid(&mut self, v: u64) {
        self.most_available_clientid = ::std::option::Option::Some(v);
    }

    // optional uint64 selected_clientid = 45;


    pub fn get_selected_clientid(&self) -> u64 {
        self.selected_clientid.unwrap_or(0)
    }
    pub fn clear_selected_clientid(&mut self) {
        self.selected_clientid = ::std::option::Option::None;
    }

    pub fn has_selected_clientid(&self) -> bool {
        self.selected_clientid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_selected_clientid(&mut self, v: u64) {
        self.selected_clientid = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_store_asset_mtime = 46;


    pub fn get_rt_store_asset_mtime(&self) -> u32 {
        self.rt_store_asset_mtime.unwrap_or(0)
    }
    pub fn clear_rt_store_asset_mtime(&mut self) {
        self.rt_store_asset_mtime = ::std::option::Option::None;
    }

    pub fn has_rt_store_asset_mtime(&self) -> bool {
        self.rt_store_asset_mtime.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_store_asset_mtime(&mut self, v: u32) {
        self.rt_store_asset_mtime = ::std::option::Option::Some(v);
    }

    // optional uint32 rt_custom_image_mtime = 47;


    pub fn get_rt_custom_image_mtime(&self) -> u32 {
        self.rt_custom_image_mtime.unwrap_or(0)
    }
    pub fn clear_rt_custom_image_mtime(&mut self) {
        self.rt_custom_image_mtime = ::std::option::Option::None;
    }

    pub fn has_rt_custom_image_mtime(&self) -> bool {
        self.rt_custom_image_mtime.is_some()
    }

    // Param is passed by value, moved
    pub fn set_rt_custom_image_mtime(&mut self, v: u32) {
        self.rt_custom_image_mtime = ::std::option::Option::Some(v);
    }

    // optional uint32 optional_parent_app_id = 48;


    pub fn get_optional_parent_app_id(&self) -> u32 {
        self.optional_parent_app_id.unwrap_or(0)
    }
    pub fn clear_optional_parent_app_id(&mut self) {
        self.optional_parent_app_id = ::std::option::Option::None;
    }

    pub fn has_optional_parent_app_id(&self) -> bool {
        self.optional_parent_app_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_optional_parent_app_id(&mut self, v: u32) {
        self.optional_parent_app_id = ::std::option::Option::Some(v);
    }

    // optional uint32 owner_account_id = 49;


    pub fn get_owner_account_id(&self) -> u32 {
        self.owner_account_id.unwrap_or(0)
    }
    pub fn clear_owner_account_id(&mut self) {
        self.owner_account_id = ::std::option::Option::None;
    }

    pub fn has_owner_account_id(&self) -> bool {
        self.owner_account_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_owner_account_id(&mut self, v: u32) {
        self.owner_account_id = ::std::option::Option::Some(v);
    }

    // optional bool compat_mapping_enabled = 50;


    pub fn get_compat_mapping_enabled(&self) -> bool {
        self.compat_mapping_enabled.unwrap_or(false)
    }
    pub fn clear_compat_mapping_enabled(&mut self) {
        self.compat_mapping_enabled = ::std::option::Option::None;
    }

    pub fn has_compat_mapping_enabled(&self) -> bool {
        self.compat_mapping_enabled.is_some()
    }

    // Param is passed by value, moved
    pub fn set_compat_mapping_enabled(&mut self, v: bool) {
        self.compat_mapping_enabled = ::std::option::Option::Some(v);
    }

    // optional uint32 compat_mapping_priority = 51;


    pub fn get_compat_mapping_priority(&self) -> u32 {
        self.compat_mapping_priority.unwrap_or(0)
    }
    pub fn clear_compat_mapping_priority(&mut self) {
        self.compat_mapping_priority = ::std::option::Option::None;
    }

    pub fn has_compat_mapping_priority(&self) -> bool {
        self.compat_mapping_priority.is_some()
    }

    // Param is passed by value, moved
    pub fn set_compat_mapping_priority(&mut self, v: u32) {
        self.compat_mapping_priority = ::std::option::Option::Some(v);
    }

    // optional string compat_mapping_tool_name = 52;


    pub fn get_compat_mapping_tool_name(&self) -> &str {
        match self.compat_mapping_tool_name.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_compat_mapping_tool_name(&mut self) {
        self.compat_mapping_tool_name.clear();
    }

    pub fn has_compat_mapping_tool_name(&self) -> bool {
        self.compat_mapping_tool_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_compat_mapping_tool_name(&mut self, v: ::std::string::String) {
        self.compat_mapping_tool_name = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_compat_mapping_tool_name(&mut self) -> &mut ::std::string::String {
        if self.compat_mapping_tool_name.is_none() {
            self.compat_mapping_tool_name.set_default();
        }
        self.compat_mapping_tool_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_compat_mapping_tool_name(&mut self) -> ::std::string::String {
        self.compat_mapping_tool_name.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint32 review_score_with_bombs = 53;


    pub fn get_review_score_with_bombs(&self) -> u32 {
        self.review_score_with_bombs.unwrap_or(0)
    }
    pub fn clear_review_score_with_bombs(&mut self) {
        self.review_score_with_bombs = ::std::option::Option::None;
    }

    pub fn has_review_score_with_bombs(&self) -> bool {
        self.review_score_with_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_score_with_bombs(&mut self, v: u32) {
        self.review_score_with_bombs = ::std::option::Option::Some(v);
    }

    // optional uint32 review_percentage_with_bombs = 54;


    pub fn get_review_percentage_with_bombs(&self) -> u32 {
        self.review_percentage_with_bombs.unwrap_or(0)
    }
    pub fn clear_review_percentage_with_bombs(&mut self) {
        self.review_percentage_with_bombs = ::std::option::Option::None;
    }

    pub fn has_review_percentage_with_bombs(&self) -> bool {
        self.review_percentage_with_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_percentage_with_bombs(&mut self, v: u32) {
        self.review_percentage_with_bombs = ::std::option::Option::Some(v);
    }

    // optional uint32 review_score_without_bombs = 55;


    pub fn get_review_score_without_bombs(&self) -> u32 {
        self.review_score_without_bombs.unwrap_or(0)
    }
    pub fn clear_review_score_without_bombs(&mut self) {
        self.review_score_without_bombs = ::std::option::Option::None;
    }

    pub fn has_review_score_without_bombs(&self) -> bool {
        self.review_score_without_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_score_without_bombs(&mut self, v: u32) {
        self.review_score_without_bombs = ::std::option::Option::Some(v);
    }

    // optional uint32 review_percentage_without_bombs = 56;


    pub fn get_review_percentage_without_bombs(&self) -> u32 {
        self.review_percentage_without_bombs.unwrap_or(0)
    }
    pub fn clear_review_percentage_without_bombs(&mut self) {
        self.review_percentage_without_bombs = ::std::option::Option::None;
    }

    pub fn has_review_percentage_without_bombs(&self) -> bool {
        self.review_percentage_without_bombs.is_some()
    }

    // Param is passed by value, moved
    pub fn set_review_percentage_without_bombs(&mut self, v: u32) {
        self.review_percentage_without_bombs = ::std::option::Option::Some(v);
    }

    // optional string library_id = 57;


    pub fn get_library_id(&self) -> &str {
        match self.library_id.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_library_id(&mut self) {
        self.library_id.clear();
    }

    pub fn has_library_id(&self) -> bool {
        self.library_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_library_id(&mut self, v: ::std::string::String) {
        self.library_id = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_library_id(&mut self) -> &mut ::std::string::String {
        if self.library_id.is_none() {
            self.library_id.set_default();
        }
        self.library_id.as_mut().unwrap()
    }

    // Take field
    pub fn take_library_id(&mut self) -> ::std::string::String {
        self.library_id.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional bool vr_only = 58;


    pub fn get_vr_only(&self) -> bool {
        self.vr_only.unwrap_or(false)
    }
    pub fn clear_vr_only(&mut self) {
        self.vr_only = ::std::option::Option::None;
    }

    pub fn has_vr_only(&self) -> bool {
        self.vr_only.is_some()
    }

    // Param is passed by value, moved
    pub fn set_vr_only(&mut self, v: bool) {
        self.vr_only = ::std::option::Option::Some(v);
    }

    // optional uint32 mastersub_appid = 59;


    pub fn get_mastersub_appid(&self) -> u32 {
        self.mastersub_appid.unwrap_or(0)
    }
    pub fn clear_mastersub_appid(&mut self) {
        self.mastersub_appid = ::std::option::Option::None;
    }

    pub fn has_mastersub_appid(&self) -> bool {
        self.mastersub_appid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_mastersub_appid(&mut self, v: u32) {
        self.mastersub_appid = ::std::option::Option::Some(v);
    }

    // optional string mastersub_includedwith_logo = 60;


    pub fn get_mastersub_includedwith_logo(&self) -> &str {
        match self.mastersub_includedwith_logo.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_mastersub_includedwith_logo(&mut self) {
        self.mastersub_includedwith_logo.clear();
    }

    pub fn has_mastersub_includedwith_logo(&self) -> bool {
        self.mastersub_includedwith_logo.is_some()
    }

    // Param is passed by value, moved
    pub fn set_mastersub_includedwith_logo(&mut self, v: ::std::string::String) {
        self.mastersub_includedwith_logo = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_mastersub_includedwith_logo(&mut self) -> &mut ::std::string::String {
        if self.mastersub_includedwith_logo.is_none() {
            self.mastersub_includedwith_logo.set_default();
        }
        self.mastersub_includedwith_logo.as_mut().unwrap()
    }

    // Take field
    pub fn take_mastersub_includedwith_logo(&mut self) -> ::std::string::String {
        self.mastersub_includedwith_logo.take().unwrap_or_else(|| ::std::string::String::new())
    }

    // optional uint32 compat_allowlist_setting = 61;


    pub fn get_compat_allowlist_setting(&self) -> u32 {
        self.compat_allowlist_setting.unwrap_or(0u32)
    }
    pub fn clear_compat_allowlist_setting(&mut self) {
        self.compat_allowlist_setting = ::std::option::Option::None;
    }

    pub fn has_compat_allowlist_setting(&self) -> bool {
        self.compat_allowlist_setting.is_some()
    }

    // Param is passed by value, moved
    pub fn set_compat_allowlist_setting(&mut self, v: u32) {
        self.compat_allowlist_setting = ::std::option::Option::Some(v);
    }

    // optional string site_license_site_name = 62;


    pub fn get_site_license_site_name(&self) -> &str {
        match self.site_license_site_name.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_site_license_site_name(&mut self) {
        self.site_license_site_name.clear();
    }

    pub fn has_site_license_site_name(&self) -> bool {
        self.site_license_site_name.is_some()
    }

    // Param is passed by value, moved
    pub fn set_site_license_site_name(&mut self, v: ::std::string::String) {
        self.site_license_site_name = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_site_license_site_name(&mut self) -> &mut ::std::string::String {
        if self.site_license_site_name.is_none() {
            self.site_license_site_name.set_default();
        }
        self.site_license_site_name.as_mut().unwrap()
    }

    // Take field
    pub fn take_site_license_site_name(&mut self) -> ::std::string::String {
        self.site_license_site_name.take().unwrap_or_else(|| ::std::string::String::new())
    }
}

impl ::protobuf::Message for CAppOverview {
    fn is_initialized(&self) -> bool {
        for v in &self.association {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.per_client_data {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.appid = ::std::option::Option::Some(tmp);
                },
                2 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.display_name)?;
                },
                4 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.visible_in_game_list = ::std::option::Option::Some(tmp);
                },
                6 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.sort_as)?;
                },
                7 => {
                    ::protobuf::rt::read_proto2_enum_with_unknown_fields_into(wire_type, is, &mut self.app_type, 7, &mut self.unknown_fields)?
                },
                13 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.mru_index = ::std::option::Option::Some(tmp);
                },
                14 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.rt_recent_activity_time = ::std::option::Option::Some(tmp);
                },
                16 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.minutes_playtime_forever = ::std::option::Option::Some(tmp);
                },
                17 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.minutes_playtime_last_two_weeks = ::std::option::Option::Some(tmp);
                },
                18 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.rt_last_time_played = ::std::option::Option::Some(tmp);
                },
                19 => {
                    ::protobuf::rt::read_repeated_uint32_into(wire_type, is, &mut self.store_tag)?;
                },
                20 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.association)?;
                },
                23 => {
                    ::protobuf::rt::read_repeated_uint32_into(wire_type, is, &mut self.store_category)?;
                },
                25 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.rt_original_release_date = ::std::option::Option::Some(tmp);
                },
                26 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.rt_steam_release_date = ::std::option::Option::Some(tmp);
                },
                27 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.icon_hash)?;
                },
                30 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.logo_hash)?;
                },
                31 => {
                    ::protobuf::rt::read_proto2_enum_with_unknown_fields_into(wire_type, is, &mut self.controller_support, 31, &mut self.unknown_fields)?
                },
                32 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.vr_supported = ::std::option::Option::Some(tmp);
                },
                36 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.metacritic_score = ::std::option::Option::Some(tmp);
                },
                37 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.size_on_disk = ::std::option::Option::Some(tmp);
                },
                38 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.third_party_mod = ::std::option::Option::Some(tmp);
                },
                39 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.icon_data)?;
                },
                40 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.icon_data_format)?;
                },
                41 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.gameid)?;
                },
                42 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.library_capsule_filename)?;
                },
                43 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.per_client_data)?;
                },
                44 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.most_available_clientid = ::std::option::Option::Some(tmp);
                },
                45 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.selected_clientid = ::std::option::Option::Some(tmp);
                },
                46 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.rt_store_asset_mtime = ::std::option::Option::Some(tmp);
                },
                47 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.rt_custom_image_mtime = ::std::option::Option::Some(tmp);
                },
                48 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.optional_parent_app_id = ::std::option::Option::Some(tmp);
                },
                49 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.owner_account_id = ::std::option::Option::Some(tmp);
                },
                50 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.compat_mapping_enabled = ::std::option::Option::Some(tmp);
                },
                51 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.compat_mapping_priority = ::std::option::Option::Some(tmp);
                },
                52 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.compat_mapping_tool_name)?;
                },
                53 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.review_score_with_bombs = ::std::option::Option::Some(tmp);
                },
                54 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.review_percentage_with_bombs = ::std::option::Option::Some(tmp);
                },
                55 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.review_score_without_bombs = ::std::option::Option::Some(tmp);
                },
                56 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.review_percentage_without_bombs = ::std::option::Option::Some(tmp);
                },
                57 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.library_id)?;
                },
                58 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.vr_only = ::std::option::Option::Some(tmp);
                },
                59 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.mastersub_appid = ::std::option::Option::Some(tmp);
                },
                60 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.mastersub_includedwith_logo)?;
                },
                61 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.compat_allowlist_setting = ::std::option::Option::Some(tmp);
                },
                62 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.site_license_site_name)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.appid {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.display_name.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        if let Some(v) = self.visible_in_game_list {
            my_size += 2;
        }
        if let Some(ref v) = self.sort_as.as_ref() {
            my_size += ::protobuf::rt::string_size(6, &v);
        }
        if let Some(v) = self.app_type {
            my_size += ::protobuf::rt::enum_size(7, v);
        }
        if let Some(v) = self.mru_index {
            my_size += ::protobuf::rt::value_size(13, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.rt_recent_activity_time {
            my_size += ::protobuf::rt::value_size(14, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.minutes_playtime_forever {
            my_size += ::protobuf::rt::value_size(16, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.minutes_playtime_last_two_weeks {
            my_size += ::protobuf::rt::value_size(17, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.rt_last_time_played {
            my_size += ::protobuf::rt::value_size(18, v, ::protobuf::wire_format::WireTypeVarint);
        }
        for value in &self.store_tag {
            my_size += ::protobuf::rt::value_size(19, *value, ::protobuf::wire_format::WireTypeVarint);
        };
        for value in &self.association {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.store_category {
            my_size += ::protobuf::rt::value_size(23, *value, ::protobuf::wire_format::WireTypeVarint);
        };
        if let Some(v) = self.rt_original_release_date {
            my_size += ::protobuf::rt::value_size(25, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.rt_steam_release_date {
            my_size += ::protobuf::rt::value_size(26, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.icon_hash.as_ref() {
            my_size += ::protobuf::rt::string_size(27, &v);
        }
        if let Some(ref v) = self.logo_hash.as_ref() {
            my_size += ::protobuf::rt::string_size(30, &v);
        }
        if let Some(v) = self.controller_support {
            my_size += ::protobuf::rt::enum_size(31, v);
        }
        if let Some(v) = self.vr_supported {
            my_size += 3;
        }
        if let Some(v) = self.metacritic_score {
            my_size += ::protobuf::rt::value_size(36, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.size_on_disk {
            my_size += ::protobuf::rt::value_size(37, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.third_party_mod {
            my_size += 3;
        }
        if let Some(ref v) = self.icon_data.as_ref() {
            my_size += ::protobuf::rt::string_size(39, &v);
        }
        if let Some(ref v) = self.icon_data_format.as_ref() {
            my_size += ::protobuf::rt::string_size(40, &v);
        }
        if let Some(ref v) = self.gameid.as_ref() {
            my_size += ::protobuf::rt::string_size(41, &v);
        }
        if let Some(ref v) = self.library_capsule_filename.as_ref() {
            my_size += ::protobuf::rt::string_size(42, &v);
        }
        for value in &self.per_client_data {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        if let Some(v) = self.most_available_clientid {
            my_size += ::protobuf::rt::value_size(44, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.selected_clientid {
            my_size += ::protobuf::rt::value_size(45, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.rt_store_asset_mtime {
            my_size += ::protobuf::rt::value_size(46, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.rt_custom_image_mtime {
            my_size += ::protobuf::rt::value_size(47, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.optional_parent_app_id {
            my_size += ::protobuf::rt::value_size(48, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.owner_account_id {
            my_size += ::protobuf::rt::value_size(49, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.compat_mapping_enabled {
            my_size += 3;
        }
        if let Some(v) = self.compat_mapping_priority {
            my_size += ::protobuf::rt::value_size(51, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.compat_mapping_tool_name.as_ref() {
            my_size += ::protobuf::rt::string_size(52, &v);
        }
        if let Some(v) = self.review_score_with_bombs {
            my_size += ::protobuf::rt::value_size(53, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.review_percentage_with_bombs {
            my_size += ::protobuf::rt::value_size(54, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.review_score_without_bombs {
            my_size += ::protobuf::rt::value_size(55, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.review_percentage_without_bombs {
            my_size += ::protobuf::rt::value_size(56, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.library_id.as_ref() {
            my_size += ::protobuf::rt::string_size(57, &v);
        }
        if let Some(v) = self.vr_only {
            my_size += 3;
        }
        if let Some(v) = self.mastersub_appid {
            my_size += ::protobuf::rt::value_size(59, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.mastersub_includedwith_logo.as_ref() {
            my_size += ::protobuf::rt::string_size(60, &v);
        }
        if let Some(v) = self.compat_allowlist_setting {
            my_size += ::protobuf::rt::value_size(61, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.site_license_site_name.as_ref() {
            my_size += ::protobuf::rt::string_size(62, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.appid {
            os.write_uint32(1, v)?;
        }
        if let Some(ref v) = self.display_name.as_ref() {
            os.write_string(2, &v)?;
        }
        if let Some(v) = self.visible_in_game_list {
            os.write_bool(4, v)?;
        }
        if let Some(ref v) = self.sort_as.as_ref() {
            os.write_string(6, &v)?;
        }
        if let Some(v) = self.app_type {
            os.write_enum(7, ::protobuf::ProtobufEnum::value(&v))?;
        }
        if let Some(v) = self.mru_index {
            os.write_uint32(13, v)?;
        }
        if let Some(v) = self.rt_recent_activity_time {
            os.write_uint32(14, v)?;
        }
        if let Some(v) = self.minutes_playtime_forever {
            os.write_uint32(16, v)?;
        }
        if let Some(v) = self.minutes_playtime_last_two_weeks {
            os.write_uint32(17, v)?;
        }
        if let Some(v) = self.rt_last_time_played {
            os.write_uint32(18, v)?;
        }
        for v in &self.store_tag {
            os.write_uint32(19, *v)?;
        };
        for v in &self.association {
            os.write_tag(20, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.store_category {
            os.write_uint32(23, *v)?;
        };
        if let Some(v) = self.rt_original_release_date {
            os.write_uint32(25, v)?;
        }
        if let Some(v) = self.rt_steam_release_date {
            os.write_uint32(26, v)?;
        }
        if let Some(ref v) = self.icon_hash.as_ref() {
            os.write_string(27, &v)?;
        }
        if let Some(ref v) = self.logo_hash.as_ref() {
            os.write_string(30, &v)?;
        }
        if let Some(v) = self.controller_support {
            os.write_enum(31, ::protobuf::ProtobufEnum::value(&v))?;
        }
        if let Some(v) = self.vr_supported {
            os.write_bool(32, v)?;
        }
        if let Some(v) = self.metacritic_score {
            os.write_uint32(36, v)?;
        }
        if let Some(v) = self.size_on_disk {
            os.write_uint64(37, v)?;
        }
        if let Some(v) = self.third_party_mod {
            os.write_bool(38, v)?;
        }
        if let Some(ref v) = self.icon_data.as_ref() {
            os.write_string(39, &v)?;
        }
        if let Some(ref v) = self.icon_data_format.as_ref() {
            os.write_string(40, &v)?;
        }
        if let Some(ref v) = self.gameid.as_ref() {
            os.write_string(41, &v)?;
        }
        if let Some(ref v) = self.library_capsule_filename.as_ref() {
            os.write_string(42, &v)?;
        }
        for v in &self.per_client_data {
            os.write_tag(43, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        if let Some(v) = self.most_available_clientid {
            os.write_uint64(44, v)?;
        }
        if let Some(v) = self.selected_clientid {
            os.write_uint64(45, v)?;
        }
        if let Some(v) = self.rt_store_asset_mtime {
            os.write_uint32(46, v)?;
        }
        if let Some(v) = self.rt_custom_image_mtime {
            os.write_uint32(47, v)?;
        }
        if let Some(v) = self.optional_parent_app_id {
            os.write_uint32(48, v)?;
        }
        if let Some(v) = self.owner_account_id {
            os.write_uint32(49, v)?;
        }
        if let Some(v) = self.compat_mapping_enabled {
            os.write_bool(50, v)?;
        }
        if let Some(v) = self.compat_mapping_priority {
            os.write_uint32(51, v)?;
        }
        if let Some(ref v) = self.compat_mapping_tool_name.as_ref() {
            os.write_string(52, &v)?;
        }
        if let Some(v) = self.review_score_with_bombs {
            os.write_uint32(53, v)?;
        }
        if let Some(v) = self.review_percentage_with_bombs {
            os.write_uint32(54, v)?;
        }
        if let Some(v) = self.review_score_without_bombs {
            os.write_uint32(55, v)?;
        }
        if let Some(v) = self.review_percentage_without_bombs {
            os.write_uint32(56, v)?;
        }
        if let Some(ref v) = self.library_id.as_ref() {
            os.write_string(57, &v)?;
        }
        if let Some(v) = self.vr_only {
            os.write_bool(58, v)?;
        }
        if let Some(v) = self.mastersub_appid {
            os.write_uint32(59, v)?;
        }
        if let Some(ref v) = self.mastersub_includedwith_logo.as_ref() {
            os.write_string(60, &v)?;
        }
        if let Some(v) = self.compat_allowlist_setting {
            os.write_uint32(61, v)?;
        }
        if let Some(ref v) = self.site_license_site_name.as_ref() {
            os.write_string(62, &v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CAppOverview {
        CAppOverview::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "appid",
                |m: &CAppOverview| { &m.appid },
                |m: &mut CAppOverview| { &mut m.appid },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "display_name",
                |m: &CAppOverview| { &m.display_name },
                |m: &mut CAppOverview| { &mut m.display_name },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "visible_in_game_list",
                |m: &CAppOverview| { &m.visible_in_game_list },
                |m: &mut CAppOverview| { &mut m.visible_in_game_list },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "sort_as",
                |m: &CAppOverview| { &m.sort_as },
                |m: &mut CAppOverview| { &mut m.sort_as },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeEnum<EProtoAppType>>(
                "app_type",
                |m: &CAppOverview| { &m.app_type },
                |m: &mut CAppOverview| { &mut m.app_type },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "mru_index",
                |m: &CAppOverview| { &m.mru_index },
                |m: &mut CAppOverview| { &mut m.mru_index },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "rt_recent_activity_time",
                |m: &CAppOverview| { &m.rt_recent_activity_time },
                |m: &mut CAppOverview| { &mut m.rt_recent_activity_time },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "minutes_playtime_forever",
                |m: &CAppOverview| { &m.minutes_playtime_forever },
                |m: &mut CAppOverview| { &mut m.minutes_playtime_forever },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "minutes_playtime_last_two_weeks",
                |m: &CAppOverview| { &m.minutes_playtime_last_two_weeks },
                |m: &mut CAppOverview| { &mut m.minutes_playtime_last_two_weeks },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "rt_last_time_played",
                |m: &CAppOverview| { &m.rt_last_time_played },
                |m: &mut CAppOverview| { &mut m.rt_last_time_played },
            ));
            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "store_tag",
                |m: &CAppOverview| { &m.store_tag },
                |m: &mut CAppOverview| { &mut m.store_tag },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<CAppOverview_AppAssociation>>(
                "association",
                |m: &CAppOverview| { &m.association },
                |m: &mut CAppOverview| { &mut m.association },
            ));
            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "store_category",
                |m: &CAppOverview| { &m.store_category },
                |m: &mut CAppOverview| { &mut m.store_category },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "rt_original_release_date",
                |m: &CAppOverview| { &m.rt_original_release_date },
                |m: &mut CAppOverview| { &mut m.rt_original_release_date },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "rt_steam_release_date",
                |m: &CAppOverview| { &m.rt_steam_release_date },
                |m: &mut CAppOverview| { &mut m.rt_steam_release_date },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "icon_hash",
                |m: &CAppOverview| { &m.icon_hash },
                |m: &mut CAppOverview| { &mut m.icon_hash },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "logo_hash",
                |m: &CAppOverview| { &m.logo_hash },
                |m: &mut CAppOverview| { &mut m.logo_hash },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeEnum<EAppControllerSupportLevel>>(
                "controller_support",
                |m: &CAppOverview| { &m.controller_support },
                |m: &mut CAppOverview| { &mut m.controller_support },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "vr_supported",
                |m: &CAppOverview| { &m.vr_supported },
                |m: &mut CAppOverview| { &mut m.vr_supported },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "metacritic_score",
                |m: &CAppOverview| { &m.metacritic_score },
                |m: &mut CAppOverview| { &mut m.metacritic_score },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "size_on_disk",
                |m: &CAppOverview| { &m.size_on_disk },
                |m: &mut CAppOverview| { &mut m.size_on_disk },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "third_party_mod",
                |m: &CAppOverview| { &m.third_party_mod },
                |m: &mut CAppOverview| { &mut m.third_party_mod },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "icon_data",
                |m: &CAppOverview| { &m.icon_data },
                |m: &mut CAppOverview| { &mut m.icon_data },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "icon_data_format",
                |m: &CAppOverview| { &m.icon_data_format },
                |m: &mut CAppOverview| { &mut m.icon_data_format },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "gameid",
                |m: &CAppOverview| { &m.gameid },
                |m: &mut CAppOverview| { &mut m.gameid },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "library_capsule_filename",
                |m: &CAppOverview| { &m.library_capsule_filename },
                |m: &mut CAppOverview| { &mut m.library_capsule_filename },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<CAppOverview_PerClientData>>(
                "per_client_data",
                |m: &CAppOverview| { &m.per_client_data },
                |m: &mut CAppOverview| { &mut m.per_client_data },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "most_available_clientid",
                |m: &CAppOverview| { &m.most_available_clientid },
                |m: &mut CAppOverview| { &mut m.most_available_clientid },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "selected_clientid",
                |m: &CAppOverview| { &m.selected_clientid },
                |m: &mut CAppOverview| { &mut m.selected_clientid },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "rt_store_asset_mtime",
                |m: &CAppOverview| { &m.rt_store_asset_mtime },
                |m: &mut CAppOverview| { &mut m.rt_store_asset_mtime },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "rt_custom_image_mtime",
                |m: &CAppOverview| { &m.rt_custom_image_mtime },
                |m: &mut CAppOverview| { &mut m.rt_custom_image_mtime },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "optional_parent_app_id",
                |m: &CAppOverview| { &m.optional_parent_app_id },
                |m: &mut CAppOverview| { &mut m.optional_parent_app_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "owner_account_id",
                |m: &CAppOverview| { &m.owner_account_id },
                |m: &mut CAppOverview| { &mut m.owner_account_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "compat_mapping_enabled",
                |m: &CAppOverview| { &m.compat_mapping_enabled },
                |m: &mut CAppOverview| { &mut m.compat_mapping_enabled },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "compat_mapping_priority",
                |m: &CAppOverview| { &m.compat_mapping_priority },
                |m: &mut CAppOverview| { &mut m.compat_mapping_priority },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "compat_mapping_tool_name",
                |m: &CAppOverview| { &m.compat_mapping_tool_name },
                |m: &mut CAppOverview| { &mut m.compat_mapping_tool_name },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "review_score_with_bombs",
                |m: &CAppOverview| { &m.review_score_with_bombs },
                |m: &mut CAppOverview| { &mut m.review_score_with_bombs },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "review_percentage_with_bombs",
                |m: &CAppOverview| { &m.review_percentage_with_bombs },
                |m: &mut CAppOverview| { &mut m.review_percentage_with_bombs },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "review_score_without_bombs",
                |m: &CAppOverview| { &m.review_score_without_bombs },
                |m: &mut CAppOverview| { &mut m.review_score_without_bombs },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "review_percentage_without_bombs",
                |m: &CAppOverview| { &m.review_percentage_without_bombs },
                |m: &mut CAppOverview| { &mut m.review_percentage_without_bombs },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "library_id",
                |m: &CAppOverview| { &m.library_id },
                |m: &mut CAppOverview| { &mut m.library_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "vr_only",
                |m: &CAppOverview| { &m.vr_only },
                |m: &mut CAppOverview| { &mut m.vr_only },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "mastersub_appid",
                |m: &CAppOverview| { &m.mastersub_appid },
                |m: &mut CAppOverview| { &mut m.mastersub_appid },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "mastersub_includedwith_logo",
                |m: &CAppOverview| { &m.mastersub_includedwith_logo },
                |m: &mut CAppOverview| { &mut m.mastersub_includedwith_logo },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "compat_allowlist_setting",
                |m: &CAppOverview| { &m.compat_allowlist_setting },
                |m: &mut CAppOverview| { &mut m.compat_allowlist_setting },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "site_license_site_name",
                |m: &CAppOverview| { &m.site_license_site_name },
                |m: &mut CAppOverview| { &mut m.site_license_site_name },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CAppOverview>(
                "CAppOverview",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CAppOverview {
        static instance: ::protobuf::rt::LazyV2<CAppOverview> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CAppOverview::new)
    }
}

impl ::protobuf::Clear for CAppOverview {
    fn clear(&mut self) {
        self.appid = ::std::option::Option::None;
        self.display_name.clear();
        self.visible_in_game_list = ::std::option::Option::None;
        self.sort_as.clear();
        self.app_type = ::std::option::Option::None;
        self.mru_index = ::std::option::Option::None;
        self.rt_recent_activity_time = ::std::option::Option::None;
        self.minutes_playtime_forever = ::std::option::Option::None;
        self.minutes_playtime_last_two_weeks = ::std::option::Option::None;
        self.rt_last_time_played = ::std::option::Option::None;
        self.store_tag.clear();
        self.association.clear();
        self.store_category.clear();
        self.rt_original_release_date = ::std::option::Option::None;
        self.rt_steam_release_date = ::std::option::Option::None;
        self.icon_hash.clear();
        self.logo_hash.clear();
        self.controller_support = ::std::option::Option::None;
        self.vr_supported = ::std::option::Option::None;
        self.metacritic_score = ::std::option::Option::None;
        self.size_on_disk = ::std::option::Option::None;
        self.third_party_mod = ::std::option::Option::None;
        self.icon_data.clear();
        self.icon_data_format.clear();
        self.gameid.clear();
        self.library_capsule_filename.clear();
        self.per_client_data.clear();
        self.most_available_clientid = ::std::option::Option::None;
        self.selected_clientid = ::std::option::Option::None;
        self.rt_store_asset_mtime = ::std::option::Option::None;
        self.rt_custom_image_mtime = ::std::option::Option::None;
        self.optional_parent_app_id = ::std::option::Option::None;
        self.owner_account_id = ::std::option::Option::None;
        self.compat_mapping_enabled = ::std::option::Option::None;
        self.compat_mapping_priority = ::std::option::Option::None;
        self.compat_mapping_tool_name.clear();
        self.review_score_with_bombs = ::std::option::Option::None;
        self.review_percentage_with_bombs = ::std::option::Option::None;
        self.review_score_without_bombs = ::std::option::Option::None;
        self.review_percentage_without_bombs = ::std::option::Option::None;
        self.library_id.clear();
        self.vr_only = ::std::option::Option::None;
        self.mastersub_appid = ::std::option::Option::None;
        self.mastersub_includedwith_logo.clear();
        self.compat_allowlist_setting = ::std::option::Option::None;
        self.site_license_site_name.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CAppOverview {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CAppOverview {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CAppOverview_Change {
    // message fields
    pub app_overview: ::protobuf::RepeatedField<CAppOverview>,
    pub removed_appid: ::std::vec::Vec<u32>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CAppOverview_Change {
    fn default() -> &'a CAppOverview_Change {
        <CAppOverview_Change as ::protobuf::Message>::default_instance()
    }
}

impl CAppOverview_Change {
    pub fn new() -> CAppOverview_Change {
        ::std::default::Default::default()
    }

    // repeated .CAppOverview app_overview = 1;


    pub fn get_app_overview(&self) -> &[CAppOverview] {
        &self.app_overview
    }
    pub fn clear_app_overview(&mut self) {
        self.app_overview.clear();
    }

    // Param is passed by value, moved
    pub fn set_app_overview(&mut self, v: ::protobuf::RepeatedField<CAppOverview>) {
        self.app_overview = v;
    }

    // Mutable pointer to the field.
    pub fn mut_app_overview(&mut self) -> &mut ::protobuf::RepeatedField<CAppOverview> {
        &mut self.app_overview
    }

    // Take field
    pub fn take_app_overview(&mut self) -> ::protobuf::RepeatedField<CAppOverview> {
        ::std::mem::replace(&mut self.app_overview, ::protobuf::RepeatedField::new())
    }

    // repeated uint32 removed_appid = 2;


    pub fn get_removed_appid(&self) -> &[u32] {
        &self.removed_appid
    }
    pub fn clear_removed_appid(&mut self) {
        self.removed_appid.clear();
    }

    // Param is passed by value, moved
    pub fn set_removed_appid(&mut self, v: ::std::vec::Vec<u32>) {
        self.removed_appid = v;
    }

    // Mutable pointer to the field.
    pub fn mut_removed_appid(&mut self) -> &mut ::std::vec::Vec<u32> {
        &mut self.removed_appid
    }

    // Take field
    pub fn take_removed_appid(&mut self) -> ::std::vec::Vec<u32> {
        ::std::mem::replace(&mut self.removed_appid, ::std::vec::Vec::new())
    }
}

impl ::protobuf::Message for CAppOverview_Change {
    fn is_initialized(&self) -> bool {
        for v in &self.app_overview {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.app_overview)?;
                },
                2 => {
                    ::protobuf::rt::read_repeated_uint32_into(wire_type, is, &mut self.removed_appid)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.app_overview {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        for value in &self.removed_appid {
            my_size += ::protobuf::rt::value_size(2, *value, ::protobuf::wire_format::WireTypeVarint);
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        for v in &self.app_overview {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        for v in &self.removed_appid {
            os.write_uint32(2, *v)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CAppOverview_Change {
        CAppOverview_Change::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<CAppOverview>>(
                "app_overview",
                |m: &CAppOverview_Change| { &m.app_overview },
                |m: &mut CAppOverview_Change| { &mut m.app_overview },
            ));
            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "removed_appid",
                |m: &CAppOverview_Change| { &m.removed_appid },
                |m: &mut CAppOverview_Change| { &mut m.removed_appid },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CAppOverview_Change>(
                "CAppOverview_Change",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CAppOverview_Change {
        static instance: ::protobuf::rt::LazyV2<CAppOverview_Change> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CAppOverview_Change::new)
    }
}

impl ::protobuf::Clear for CAppOverview_Change {
    fn clear(&mut self) {
        self.app_overview.clear();
        self.removed_appid.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CAppOverview_Change {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CAppOverview_Change {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CAppBootstrapData {
    // message fields
    appid: ::std::option::Option<u32>,
    hidden: ::std::option::Option<bool>,
    pub user_tag: ::protobuf::RepeatedField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CAppBootstrapData {
    fn default() -> &'a CAppBootstrapData {
        <CAppBootstrapData as ::protobuf::Message>::default_instance()
    }
}

impl CAppBootstrapData {
    pub fn new() -> CAppBootstrapData {
        ::std::default::Default::default()
    }

    // optional uint32 appid = 1;


    pub fn get_appid(&self) -> u32 {
        self.appid.unwrap_or(0)
    }
    pub fn clear_appid(&mut self) {
        self.appid = ::std::option::Option::None;
    }

    pub fn has_appid(&self) -> bool {
        self.appid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_appid(&mut self, v: u32) {
        self.appid = ::std::option::Option::Some(v);
    }

    // optional bool hidden = 2;


    pub fn get_hidden(&self) -> bool {
        self.hidden.unwrap_or(false)
    }
    pub fn clear_hidden(&mut self) {
        self.hidden = ::std::option::Option::None;
    }

    pub fn has_hidden(&self) -> bool {
        self.hidden.is_some()
    }

    // Param is passed by value, moved
    pub fn set_hidden(&mut self, v: bool) {
        self.hidden = ::std::option::Option::Some(v);
    }

    // repeated string user_tag = 3;


    pub fn get_user_tag(&self) -> &[::std::string::String] {
        &self.user_tag
    }
    pub fn clear_user_tag(&mut self) {
        self.user_tag.clear();
    }

    // Param is passed by value, moved
    pub fn set_user_tag(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
        self.user_tag = v;
    }

    // Mutable pointer to the field.
    pub fn mut_user_tag(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
        &mut self.user_tag
    }

    // Take field
    pub fn take_user_tag(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
        ::std::mem::replace(&mut self.user_tag, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for CAppBootstrapData {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.appid = ::std::option::Option::Some(tmp);
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.hidden = ::std::option::Option::Some(tmp);
                },
                3 => {
                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.user_tag)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.appid {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.hidden {
            my_size += 2;
        }
        for value in &self.user_tag {
            my_size += ::protobuf::rt::string_size(3, &value);
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.appid {
            os.write_uint32(1, v)?;
        }
        if let Some(v) = self.hidden {
            os.write_bool(2, v)?;
        }
        for v in &self.user_tag {
            os.write_string(3, &v)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CAppBootstrapData {
        CAppBootstrapData::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "appid",
                |m: &CAppBootstrapData| { &m.appid },
                |m: &mut CAppBootstrapData| { &mut m.appid },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "hidden",
                |m: &CAppBootstrapData| { &m.hidden },
                |m: &mut CAppBootstrapData| { &mut m.hidden },
            ));
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "user_tag",
                |m: &CAppBootstrapData| { &m.user_tag },
                |m: &mut CAppBootstrapData| { &mut m.user_tag },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CAppBootstrapData>(
                "CAppBootstrapData",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CAppBootstrapData {
        static instance: ::protobuf::rt::LazyV2<CAppBootstrapData> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CAppBootstrapData::new)
    }
}

impl ::protobuf::Clear for CAppBootstrapData {
    fn clear(&mut self) {
        self.appid = ::std::option::Option::None;
        self.hidden = ::std::option::Option::None;
        self.user_tag.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CAppBootstrapData {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CAppBootstrapData {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CLibraryBootstrapData {
    // message fields
    pub app_data: ::protobuf::RepeatedField<CAppBootstrapData>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CLibraryBootstrapData {
    fn default() -> &'a CLibraryBootstrapData {
        <CLibraryBootstrapData as ::protobuf::Message>::default_instance()
    }
}

impl CLibraryBootstrapData {
    pub fn new() -> CLibraryBootstrapData {
        ::std::default::Default::default()
    }

    // repeated .CAppBootstrapData app_data = 1;


    pub fn get_app_data(&self) -> &[CAppBootstrapData] {
        &self.app_data
    }
    pub fn clear_app_data(&mut self) {
        self.app_data.clear();
    }

    // Param is passed by value, moved
    pub fn set_app_data(&mut self, v: ::protobuf::RepeatedField<CAppBootstrapData>) {
        self.app_data = v;
    }

    // Mutable pointer to the field.
    pub fn mut_app_data(&mut self) -> &mut ::protobuf::RepeatedField<CAppBootstrapData> {
        &mut self.app_data
    }

    // Take field
    pub fn take_app_data(&mut self) -> ::protobuf::RepeatedField<CAppBootstrapData> {
        ::std::mem::replace(&mut self.app_data, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for CLibraryBootstrapData {
    fn is_initialized(&self) -> bool {
        for v in &self.app_data {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.app_data)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.app_data {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        for v in &self.app_data {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CLibraryBootstrapData {
        CLibraryBootstrapData::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<CAppBootstrapData>>(
                "app_data",
                |m: &CLibraryBootstrapData| { &m.app_data },
                |m: &mut CLibraryBootstrapData| { &mut m.app_data },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CLibraryBootstrapData>(
                "CLibraryBootstrapData",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CLibraryBootstrapData {
        static instance: ::protobuf::rt::LazyV2<CLibraryBootstrapData> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CLibraryBootstrapData::new)
    }
}

impl ::protobuf::Clear for CLibraryBootstrapData {
    fn clear(&mut self) {
        self.app_data.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CLibraryBootstrapData {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CLibraryBootstrapData {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum EDisplayStatus {
    k_EDisplayStatusInvalid = 0,
    k_EDisplayStatusLaunching = 1,
    k_EDisplayStatusUninstalling = 2,
    k_EDisplayStatusInstalling = 3,
    k_EDisplayStatusRunning = 4,
    k_EDisplayStatusValidating = 5,
    k_EDisplayStatusUpdating = 6,
    k_EDisplayStatusDownloading = 7,
    k_EDisplayStatusSynchronizing = 8,
    k_EDisplayStatusReadyToInstall = 9,
    k_EDisplayStatusReadyToPreload = 10,
    k_EDisplayStatusReadyToLaunch = 11,
    k_EDisplayStatusRegionRestricted = 12,
    k_EDisplayStatusPresaleOnly = 13,
    k_EDisplayStatusInvalidPlatform = 14,
    k_EDisplayStatusPreloadComplete = 16,
    k_EDisplayStatusBorrowerLocked = 17,
    k_EDisplayStatusUpdatePaused = 18,
    k_EDisplayStatusUpdateQueued = 19,
    k_EDisplayStatusUpdateRequired = 20,
    k_EDisplayStatusUpdateDisabled = 21,
    k_EDisplayStatusDownloadPaused = 22,
    k_EDisplayStatusDownloadQueued = 23,
    k_EDisplayStatusDownloadRequired = 24,
    k_EDisplayStatusDownloadDisabled = 25,
    k_EDisplayStatusLicensePending = 26,
    k_EDisplayStatusLicenseExpired = 27,
    k_EDisplayStatusAvailForFree = 28,
    k_EDisplayStatusAvailToBorrow = 29,
    k_EDisplayStatusAvailGuestPass = 30,
    k_EDisplayStatusPurchase = 31,
    k_EDisplayStatusUnavailable = 32,
}

impl ::protobuf::ProtobufEnum for EDisplayStatus {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<EDisplayStatus> {
        match value {
            0 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInvalid),
            1 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLaunching),
            2 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUninstalling),
            3 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInstalling),
            4 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusRunning),
            5 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusValidating),
            6 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdating),
            7 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloading),
            8 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusSynchronizing),
            9 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToInstall),
            10 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToPreload),
            11 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusReadyToLaunch),
            12 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusRegionRestricted),
            13 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPresaleOnly),
            14 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusInvalidPlatform),
            16 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPreloadComplete),
            17 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusBorrowerLocked),
            18 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdatePaused),
            19 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateQueued),
            20 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateRequired),
            21 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUpdateDisabled),
            22 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadPaused),
            23 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadQueued),
            24 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadRequired),
            25 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusDownloadDisabled),
            26 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLicensePending),
            27 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusLicenseExpired),
            28 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailForFree),
            29 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailToBorrow),
            30 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusAvailGuestPass),
            31 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusPurchase),
            32 => ::std::option::Option::Some(EDisplayStatus::k_EDisplayStatusUnavailable),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [EDisplayStatus] = &[
            EDisplayStatus::k_EDisplayStatusInvalid,
            EDisplayStatus::k_EDisplayStatusLaunching,
            EDisplayStatus::k_EDisplayStatusUninstalling,
            EDisplayStatus::k_EDisplayStatusInstalling,
            EDisplayStatus::k_EDisplayStatusRunning,
            EDisplayStatus::k_EDisplayStatusValidating,
            EDisplayStatus::k_EDisplayStatusUpdating,
            EDisplayStatus::k_EDisplayStatusDownloading,
            EDisplayStatus::k_EDisplayStatusSynchronizing,
            EDisplayStatus::k_EDisplayStatusReadyToInstall,
            EDisplayStatus::k_EDisplayStatusReadyToPreload,
            EDisplayStatus::k_EDisplayStatusReadyToLaunch,
            EDisplayStatus::k_EDisplayStatusRegionRestricted,
            EDisplayStatus::k_EDisplayStatusPresaleOnly,
            EDisplayStatus::k_EDisplayStatusInvalidPlatform,
            EDisplayStatus::k_EDisplayStatusPreloadComplete,
            EDisplayStatus::k_EDisplayStatusBorrowerLocked,
            EDisplayStatus::k_EDisplayStatusUpdatePaused,
            EDisplayStatus::k_EDisplayStatusUpdateQueued,
            EDisplayStatus::k_EDisplayStatusUpdateRequired,
            EDisplayStatus::k_EDisplayStatusUpdateDisabled,
            EDisplayStatus::k_EDisplayStatusDownloadPaused,
            EDisplayStatus::k_EDisplayStatusDownloadQueued,
            EDisplayStatus::k_EDisplayStatusDownloadRequired,
            EDisplayStatus::k_EDisplayStatusDownloadDisabled,
            EDisplayStatus::k_EDisplayStatusLicensePending,
            EDisplayStatus::k_EDisplayStatusLicenseExpired,
            EDisplayStatus::k_EDisplayStatusAvailForFree,
            EDisplayStatus::k_EDisplayStatusAvailToBorrow,
            EDisplayStatus::k_EDisplayStatusAvailGuestPass,
            EDisplayStatus::k_EDisplayStatusPurchase,
            EDisplayStatus::k_EDisplayStatusUnavailable,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            ::protobuf::reflect::EnumDescriptor::new_pb_name::<EDisplayStatus>("EDisplayStatus", file_descriptor_proto())
        })
    }
}

impl ::std::marker::Copy for EDisplayStatus {
}

impl ::std::default::Default for EDisplayStatus {
    fn default() -> Self {
        EDisplayStatus::k_EDisplayStatusInvalid
    }
}

impl ::protobuf::reflect::ProtobufValue for EDisplayStatus {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum EProtoAppType {
    k_EAppTypeInvalid = 0,
    k_EAppTypeGame = 1,
    k_EAppTypeApplication = 2,
    k_EAppTypeTool = 4,
    k_EAppTypeDemo = 8,
    k_EAppTypeDeprected = 16,
    k_EAppTypeDLC = 32,
    k_EAppTypeGuide = 64,
    k_EAppTypeDriver = 128,
    k_EAppTypeConfig = 256,
    k_EAppTypeHardware = 512,
    k_EAppTypeFranchise = 1024,
    k_EAppTypeVideo = 2048,
    k_EAppTypePlugin = 4096,
    k_EAppTypeMusicAlbum = 8192,
    k_EAppTypeSeries = 16384,
    k_EAppTypeComic = 32768,
    k_EAppTypeBeta = 65536,
    k_EAppTypeShortcut = 1073741824,
    k_EAppTypeDepotOnly = -2147483648,
}

impl ::protobuf::ProtobufEnum for EProtoAppType {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<EProtoAppType> {
        match value {
            0 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeInvalid),
            1 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeGame),
            2 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeApplication),
            4 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeTool),
            8 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeDemo),
            16 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeDeprected),
            32 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeDLC),
            64 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeGuide),
            128 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeDriver),
            256 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeConfig),
            512 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeHardware),
            1024 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeFranchise),
            2048 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeVideo),
            4096 => ::std::option::Option::Some(EProtoAppType::k_EAppTypePlugin),
            8192 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeMusicAlbum),
            16384 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeSeries),
            32768 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeComic),
            65536 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeBeta),
            1073741824 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeShortcut),
            -2147483648 => ::std::option::Option::Some(EProtoAppType::k_EAppTypeDepotOnly),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [EProtoAppType] = &[
            EProtoAppType::k_EAppTypeInvalid,
            EProtoAppType::k_EAppTypeGame,
            EProtoAppType::k_EAppTypeApplication,
            EProtoAppType::k_EAppTypeTool,
            EProtoAppType::k_EAppTypeDemo,
            EProtoAppType::k_EAppTypeDeprected,
            EProtoAppType::k_EAppTypeDLC,
            EProtoAppType::k_EAppTypeGuide,
            EProtoAppType::k_EAppTypeDriver,
            EProtoAppType::k_EAppTypeConfig,
            EProtoAppType::k_EAppTypeHardware,
            EProtoAppType::k_EAppTypeFranchise,
            EProtoAppType::k_EAppTypeVideo,
            EProtoAppType::k_EAppTypePlugin,
            EProtoAppType::k_EAppTypeMusicAlbum,
            EProtoAppType::k_EAppTypeSeries,
            EProtoAppType::k_EAppTypeComic,
            EProtoAppType::k_EAppTypeBeta,
            EProtoAppType::k_EAppTypeShortcut,
            EProtoAppType::k_EAppTypeDepotOnly,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            ::protobuf::reflect::EnumDescriptor::new_pb_name::<EProtoAppType>("EProtoAppType", file_descriptor_proto())
        })
    }
}

impl ::std::marker::Copy for EProtoAppType {
}

impl ::std::default::Default for EProtoAppType {
    fn default() -> Self {
        EProtoAppType::k_EAppTypeInvalid
    }
}

impl ::protobuf::reflect::ProtobufValue for EProtoAppType {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum EAppAssociationType {
    k_EAppAssociationTypeInvalid = 0,
    k_EAppAssociationTypePublisher = 1,
    k_EAppAssociationTypeDeveloper = 2,
    k_EAppAssociationTypeFranchise = 3,
}

impl ::protobuf::ProtobufEnum for EAppAssociationType {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<EAppAssociationType> {
        match value {
            0 => ::std::option::Option::Some(EAppAssociationType::k_EAppAssociationTypeInvalid),
            1 => ::std::option::Option::Some(EAppAssociationType::k_EAppAssociationTypePublisher),
            2 => ::std::option::Option::Some(EAppAssociationType::k_EAppAssociationTypeDeveloper),
            3 => ::std::option::Option::Some(EAppAssociationType::k_EAppAssociationTypeFranchise),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [EAppAssociationType] = &[
            EAppAssociationType::k_EAppAssociationTypeInvalid,
            EAppAssociationType::k_EAppAssociationTypePublisher,
            EAppAssociationType::k_EAppAssociationTypeDeveloper,
            EAppAssociationType::k_EAppAssociationTypeFranchise,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            ::protobuf::reflect::EnumDescriptor::new_pb_name::<EAppAssociationType>("EAppAssociationType", file_descriptor_proto())
        })
    }
}

impl ::std::marker::Copy for EAppAssociationType {
}

impl ::std::default::Default for EAppAssociationType {
    fn default() -> Self {
        EAppAssociationType::k_EAppAssociationTypeInvalid
    }
}

impl ::protobuf::reflect::ProtobufValue for EAppAssociationType {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum EAppControllerSupportLevel {
    k_EAppControllerSupportLevelNone = 0,
    k_EAppControllerSupportLevelPartial = 1,
    k_EAppControllerSupportLevelFull = 2,
}

impl ::protobuf::ProtobufEnum for EAppControllerSupportLevel {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<EAppControllerSupportLevel> {
        match value {
            0 => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelNone),
            1 => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelPartial),
            2 => ::std::option::Option::Some(EAppControllerSupportLevel::k_EAppControllerSupportLevelFull),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [EAppControllerSupportLevel] = &[
            EAppControllerSupportLevel::k_EAppControllerSupportLevelNone,
            EAppControllerSupportLevel::k_EAppControllerSupportLevelPartial,
            EAppControllerSupportLevel::k_EAppControllerSupportLevelFull,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            ::protobuf::reflect::EnumDescriptor::new_pb_name::<EAppControllerSupportLevel>("EAppControllerSupportLevel", file_descriptor_proto())
        })
    }
}

impl ::std::marker::Copy for EAppControllerSupportLevel {
}

impl ::std::default::Default for EAppControllerSupportLevel {
    fn default() -> Self {
        EAppControllerSupportLevel::k_EAppControllerSupportLevelNone
    }
}

impl ::protobuf::reflect::ProtobufValue for EAppControllerSupportLevel {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n\x1fsteammessages_appoverview.proto\"y\n\x1bCAppOverview_AppAssociatio\
    n\x12F\n\x04type\x18\x01\x20\x01(\x0e2\x14.EAppAssociationType:\x1ck_EAp\
    pAssociationTypeInvalidR\x04type\x12\x12\n\x04name\x18\x02\x20\x01(\tR\
    \x04name\"\xc0\x04\n\x1aCAppOverview_PerClientData\x12\x1a\n\x08clientid\
    \x18\x01\x20\x01(\x04R\x08clientid\x12\x1f\n\x0bclient_name\x18\x02\x20\
    \x01(\tR\nclientName\x12O\n\x0edisplay_status\x18\x03\x20\x01(\x0e2\x0f.\
    EDisplayStatus:\x17k_EDisplayStatusInvalidR\rdisplayStatus\x12.\n\x11sta\
    tus_percentage\x18\x04\x20\x01(\r:\x010R\x10statusPercentage\x12\x1f\n\
    \x0bactive_beta\x18\x05\x20\x01(\tR\nactiveBeta\x12\x1c\n\tinstalled\x18\
    \x06\x20\x01(\x08R\tinstalled\x12,\n\x10bytes_downloaded\x18\x07\x20\x01\
    (\x04:\x010R\x0fbytesDownloaded\x12\"\n\x0bbytes_total\x18\x08\x20\x01(\
    \x04:\x010R\nbytesTotal\x129\n\x19streaming_to_local_client\x18\t\x20\
    \x01(\x08R\x16streamingToLocalClient\x12F\n\x20is_available_on_current_p\
    latform\x18\n\x20\x01(\x08R\x1cisAvailableOnCurrentPlatform\x12+\n\x12is\
    _invalid_os_type\x18\x0b\x20\x01(\x08R\x0fisInvalidOsType\x12#\n\rplayti\
    me_left\x18\x0c\x20\x01(\rR\x0cplaytimeLeft\"\xd0\x11\n\x0cCAppOverview\
    \x12\x14\n\x05appid\x18\x01\x20\x01(\rR\x05appid\x12!\n\x0cdisplay_name\
    \x18\x02\x20\x01(\tR\x0bdisplayName\x12/\n\x14visible_in_game_list\x18\
    \x04\x20\x01(\x08R\x11visibleInGameList\x12\x17\n\x07sort_as\x18\x06\x20\
    \x01(\tR\x06sortAs\x12<\n\x08app_type\x18\x07\x20\x01(\x0e2\x0e.EProtoAp\
    pType:\x11k_EAppTypeInvalidR\x07appType\x12\x1b\n\tmru_index\x18\r\x20\
    \x01(\rR\x08mruIndex\x128\n\x17rt_recent_activity_time\x18\x0e\x20\x01(\
    \r:\x010R\x14rtRecentActivityTime\x12;\n\x18minutes_playtime_forever\x18\
    \x10\x20\x01(\r:\x010R\x16minutesPlaytimeForever\x12G\n\x1fminutes_playt\
    ime_last_two_weeks\x18\x11\x20\x01(\r:\x010R\x1bminutesPlaytimeLastTwoWe\
    eks\x120\n\x13rt_last_time_played\x18\x12\x20\x01(\r:\x010R\x10rtLastTim\
    ePlayed\x12\x1b\n\tstore_tag\x18\x13\x20\x03(\rR\x08storeTag\x12>\n\x0ba\
    ssociation\x18\x14\x20\x03(\x0b2\x1c.CAppOverview_AppAssociationR\x0bass\
    ociation\x12%\n\x0estore_category\x18\x17\x20\x03(\rR\rstoreCategory\x12\
    :\n\x18rt_original_release_date\x18\x19\x20\x01(\r:\x010R\x15rtOriginalR\
    eleaseDate\x124\n\x15rt_steam_release_date\x18\x1a\x20\x01(\r:\x010R\x12\
    rtSteamReleaseDate\x12\x1b\n\ticon_hash\x18\x1b\x20\x01(\tR\x08iconHash\
    \x12\x1b\n\tlogo_hash\x18\x1e\x20\x01(\tR\x08logoHash\x12l\n\x12controll\
    er_support\x18\x1f\x20\x01(\x0e2\x1b.EAppControllerSupportLevel:\x20k_EA\
    ppControllerSupportLevelNoneR\x11controllerSupport\x12!\n\x0cvr_supporte\
    d\x18\x20\x20\x01(\x08R\x0bvrSupported\x12)\n\x10metacritic_score\x18$\
    \x20\x01(\rR\x0fmetacriticScore\x12\x20\n\x0csize_on_disk\x18%\x20\x01(\
    \x04R\nsizeOnDisk\x12&\n\x0fthird_party_mod\x18&\x20\x01(\x08R\rthirdPar\
    tyMod\x12\x1b\n\ticon_data\x18'\x20\x01(\tR\x08iconData\x12(\n\x10icon_d\
    ata_format\x18(\x20\x01(\tR\x0eiconDataFormat\x12\x16\n\x06gameid\x18)\
    \x20\x01(\tR\x06gameid\x128\n\x18library_capsule_filename\x18*\x20\x01(\
    \tR\x16libraryCapsuleFilename\x12C\n\x0fper_client_data\x18+\x20\x03(\
    \x0b2\x1b.CAppOverview_PerClientDataR\rperClientData\x126\n\x17most_avai\
    lable_clientid\x18,\x20\x01(\x04R\x15mostAvailableClientid\x12+\n\x11sel\
    ected_clientid\x18-\x20\x01(\x04R\x10selectedClientid\x12/\n\x14rt_store\
    _asset_mtime\x18.\x20\x01(\rR\x11rtStoreAssetMtime\x121\n\x15rt_custom_i\
    mage_mtime\x18/\x20\x01(\rR\x12rtCustomImageMtime\x123\n\x16optional_par\
    ent_app_id\x180\x20\x01(\rR\x13optionalParentAppId\x12(\n\x10owner_accou\
    nt_id\x181\x20\x01(\rR\x0eownerAccountId\x124\n\x16compat_mapping_enable\
    d\x182\x20\x01(\x08R\x14compatMappingEnabled\x126\n\x17compat_mapping_pr\
    iority\x183\x20\x01(\rR\x15compatMappingPriority\x127\n\x18compat_mappin\
    g_tool_name\x184\x20\x01(\tR\x15compatMappingToolName\x125\n\x17review_s\
    core_with_bombs\x185\x20\x01(\rR\x14reviewScoreWithBombs\x12?\n\x1crevie\
    w_percentage_with_bombs\x186\x20\x01(\rR\x19reviewPercentageWithBombs\
    \x12;\n\x1areview_score_without_bombs\x187\x20\x01(\rR\x17reviewScoreWit\
    houtBombs\x12E\n\x1freview_percentage_without_bombs\x188\x20\x01(\rR\x1c\
    reviewPercentageWithoutBombs\x12\x1d\n\nlibrary_id\x189\x20\x01(\tR\tlib\
    raryId\x12\x17\n\x07vr_only\x18:\x20\x01(\x08R\x06vrOnly\x12'\n\x0fmaste\
    rsub_appid\x18;\x20\x01(\rR\x0emastersubAppid\x12>\n\x1bmastersub_includ\
    edwith_logo\x18<\x20\x01(\tR\x19mastersubIncludedwithLogo\x12;\n\x18comp\
    at_allowlist_setting\x18=\x20\x01(\r:\x010R\x16compatAllowlistSetting\
    \x123\n\x16site_license_site_name\x18>\x20\x01(\tR\x13siteLicenseSiteNam\
    e\"l\n\x13CAppOverview_Change\x120\n\x0capp_overview\x18\x01\x20\x03(\
    \x0b2\r.CAppOverviewR\x0bappOverview\x12#\n\rremoved_appid\x18\x02\x20\
    \x03(\rR\x0cremovedAppid\"\\\n\x11CAppBootstrapData\x12\x14\n\x05appid\
    \x18\x01\x20\x01(\rR\x05appid\x12\x16\n\x06hidden\x18\x02\x20\x01(\x08R\
    \x06hidden\x12\x19\n\x08user_tag\x18\x03\x20\x03(\tR\x07userTag\"F\n\x15\
    CLibraryBootstrapData\x12-\n\x08app_data\x18\x01\x20\x03(\x0b2\x12.CAppB\
    ootstrapDataR\x07appData*\xdd\x08\n\x0eEDisplayStatus\x12\x1b\n\x17k_EDi\
    splayStatusInvalid\x10\0\x12\x1d\n\x19k_EDisplayStatusLaunching\x10\x01\
    \x12\x20\n\x1ck_EDisplayStatusUninstalling\x10\x02\x12\x1e\n\x1ak_EDispl\
    ayStatusInstalling\x10\x03\x12\x1b\n\x17k_EDisplayStatusRunning\x10\x04\
    \x12\x1e\n\x1ak_EDisplayStatusValidating\x10\x05\x12\x1c\n\x18k_EDisplay\
    StatusUpdating\x10\x06\x12\x1f\n\x1bk_EDisplayStatusDownloading\x10\x07\
    \x12!\n\x1dk_EDisplayStatusSynchronizing\x10\x08\x12\"\n\x1ek_EDisplaySt\
    atusReadyToInstall\x10\t\x12\"\n\x1ek_EDisplayStatusReadyToPreload\x10\n\
    \x12!\n\x1dk_EDisplayStatusReadyToLaunch\x10\x0b\x12$\n\x20k_EDisplaySta\
    tusRegionRestricted\x10\x0c\x12\x1f\n\x1bk_EDisplayStatusPresaleOnly\x10\
    \r\x12#\n\x1fk_EDisplayStatusInvalidPlatform\x10\x0e\x12#\n\x1fk_EDispla\
    yStatusPreloadComplete\x10\x10\x12\"\n\x1ek_EDisplayStatusBorrowerLocked\
    \x10\x11\x12\x20\n\x1ck_EDisplayStatusUpdatePaused\x10\x12\x12\x20\n\x1c\
    k_EDisplayStatusUpdateQueued\x10\x13\x12\"\n\x1ek_EDisplayStatusUpdateRe\
    quired\x10\x14\x12\"\n\x1ek_EDisplayStatusUpdateDisabled\x10\x15\x12\"\n\
    \x1ek_EDisplayStatusDownloadPaused\x10\x16\x12\"\n\x1ek_EDisplayStatusDo\
    wnloadQueued\x10\x17\x12$\n\x20k_EDisplayStatusDownloadRequired\x10\x18\
    \x12$\n\x20k_EDisplayStatusDownloadDisabled\x10\x19\x12\"\n\x1ek_EDispla\
    yStatusLicensePending\x10\x1a\x12\"\n\x1ek_EDisplayStatusLicenseExpired\
    \x10\x1b\x12\x20\n\x1ck_EDisplayStatusAvailForFree\x10\x1c\x12!\n\x1dk_E\
    DisplayStatusAvailToBorrow\x10\x1d\x12\"\n\x1ek_EDisplayStatusAvailGuest\
    Pass\x10\x1e\x12\x1c\n\x18k_EDisplayStatusPurchase\x10\x1f\x12\x1f\n\x1b\
    k_EDisplayStatusUnavailable\x10\x20*\xea\x03\n\rEProtoAppType\x12\x15\n\
    \x11k_EAppTypeInvalid\x10\0\x12\x12\n\x0ek_EAppTypeGame\x10\x01\x12\x19\
    \n\x15k_EAppTypeApplication\x10\x02\x12\x12\n\x0ek_EAppTypeTool\x10\x04\
    \x12\x12\n\x0ek_EAppTypeDemo\x10\x08\x12\x17\n\x13k_EAppTypeDeprected\
    \x10\x10\x12\x11\n\rk_EAppTypeDLC\x10\x20\x12\x13\n\x0fk_EAppTypeGuide\
    \x10@\x12\x15\n\x10k_EAppTypeDriver\x10\x80\x01\x12\x15\n\x10k_EAppTypeC\
    onfig\x10\x80\x02\x12\x17\n\x12k_EAppTypeHardware\x10\x80\x04\x12\x18\n\
    \x13k_EAppTypeFranchise\x10\x80\x08\x12\x14\n\x0fk_EAppTypeVideo\x10\x80\
    \x10\x12\x15\n\x10k_EAppTypePlugin\x10\x80\x20\x12\x19\n\x14k_EAppTypeMu\
    sicAlbum\x10\x80@\x12\x16\n\x10k_EAppTypeSeries\x10\x80\x80\x01\x12\x15\
    \n\x0fk_EAppTypeComic\x10\x80\x80\x02\x12\x14\n\x0ek_EAppTypeBeta\x10\
    \x80\x80\x04\x12\x1a\n\x12k_EAppTypeShortcut\x10\x80\x80\x80\x80\x04\x12\
    \x20\n\x13k_EAppTypeDepotOnly\x10\x80\x80\x80\x80\xf8\xff\xff\xff\xff\
    \x01*\xa3\x01\n\x13EAppAssociationType\x12\x20\n\x1ck_EAppAssociationTyp\
    eInvalid\x10\0\x12\"\n\x1ek_EAppAssociationTypePublisher\x10\x01\x12\"\n\
    \x1ek_EAppAssociationTypeDeveloper\x10\x02\x12\"\n\x1ek_EAppAssociationT\
    ypeFranchise\x10\x03*\x91\x01\n\x1aEAppControllerSupportLevel\x12$\n\x20\
    k_EAppControllerSupportLevelNone\x10\0\x12'\n#k_EAppControllerSupportLev\
    elPartial\x10\x01\x12$\n\x20k_EAppControllerSupportLevelFull\x10\x02B\
    \x05H\x01\x80\x01\x01J\xd3<\n\x07\x12\x05\0\0\x9c\x01\x01\n\x08\n\x01\
    \x08\x12\x03\0\0\x1c\n\t\n\x02\x08\t\x12\x03\0\0\x1c\n\x08\n\x01\x08\x12\
    \x03\x01\0\"\n\t\n\x02\x08\x10\x12\x03\x01\0\"\n\n\n\x02\x05\0\x12\x04\
    \x03\0$\x01\n\n\n\x03\x05\0\x01\x12\x03\x03\x05\x13\n\x0b\n\x04\x05\0\
    \x02\0\x12\x03\x04\x08$\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03\x04\x08\x1f\
    \n\x0c\n\x05\x05\0\x02\0\x02\x12\x03\x04\"#\n\x0b\n\x04\x05\0\x02\x01\
    \x12\x03\x05\x08&\n\x0c\n\x05\x05\0\x02\x01\x01\x12\x03\x05\x08!\n\x0c\n\
    \x05\x05\0\x02\x01\x02\x12\x03\x05$%\n\x0b\n\x04\x05\0\x02\x02\x12\x03\
    \x06\x08)\n\x0c\n\x05\x05\0\x02\x02\x01\x12\x03\x06\x08$\n\x0c\n\x05\x05\
    \0\x02\x02\x02\x12\x03\x06'(\n\x0b\n\x04\x05\0\x02\x03\x12\x03\x07\x08'\
    \n\x0c\n\x05\x05\0\x02\x03\x01\x12\x03\x07\x08\"\n\x0c\n\x05\x05\0\x02\
    \x03\x02\x12\x03\x07%&\n\x0b\n\x04\x05\0\x02\x04\x12\x03\x08\x08$\n\x0c\
    \n\x05\x05\0\x02\x04\x01\x12\x03\x08\x08\x1f\n\x0c\n\x05\x05\0\x02\x04\
    \x02\x12\x03\x08\"#\n\x0b\n\x04\x05\0\x02\x05\x12\x03\t\x08'\n\x0c\n\x05\
    \x05\0\x02\x05\x01\x12\x03\t\x08\"\n\x0c\n\x05\x05\0\x02\x05\x02\x12\x03\
    \t%&\n\x0b\n\x04\x05\0\x02\x06\x12\x03\n\x08%\n\x0c\n\x05\x05\0\x02\x06\
    \x01\x12\x03\n\x08\x20\n\x0c\n\x05\x05\0\x02\x06\x02\x12\x03\n#$\n\x0b\n\
    \x04\x05\0\x02\x07\x12\x03\x0b\x08(\n\x0c\n\x05\x05\0\x02\x07\x01\x12\
    \x03\x0b\x08#\n\x0c\n\x05\x05\0\x02\x07\x02\x12\x03\x0b&'\n\x0b\n\x04\
    \x05\0\x02\x08\x12\x03\x0c\x08*\n\x0c\n\x05\x05\0\x02\x08\x01\x12\x03\
    \x0c\x08%\n\x0c\n\x05\x05\0\x02\x08\x02\x12\x03\x0c()\n\x0b\n\x04\x05\0\
    \x02\t\x12\x03\r\x08+\n\x0c\n\x05\x05\0\x02\t\x01\x12\x03\r\x08&\n\x0c\n\
    \x05\x05\0\x02\t\x02\x12\x03\r)*\n\x0b\n\x04\x05\0\x02\n\x12\x03\x0e\x08\
    ,\n\x0c\n\x05\x05\0\x02\n\x01\x12\x03\x0e\x08&\n\x0c\n\x05\x05\0\x02\n\
    \x02\x12\x03\x0e)+\n\x0b\n\x04\x05\0\x02\x0b\x12\x03\x0f\x08+\n\x0c\n\
    \x05\x05\0\x02\x0b\x01\x12\x03\x0f\x08%\n\x0c\n\x05\x05\0\x02\x0b\x02\
    \x12\x03\x0f(*\n\x0b\n\x04\x05\0\x02\x0c\x12\x03\x10\x08.\n\x0c\n\x05\
    \x05\0\x02\x0c\x01\x12\x03\x10\x08(\n\x0c\n\x05\x05\0\x02\x0c\x02\x12\
    \x03\x10+-\n\x0b\n\x04\x05\0\x02\r\x12\x03\x11\x08)\n\x0c\n\x05\x05\0\
    \x02\r\x01\x12\x03\x11\x08#\n\x0c\n\x05\x05\0\x02\r\x02\x12\x03\x11&(\n\
    \x0b\n\x04\x05\0\x02\x0e\x12\x03\x12\x08-\n\x0c\n\x05\x05\0\x02\x0e\x01\
    \x12\x03\x12\x08'\n\x0c\n\x05\x05\0\x02\x0e\x02\x12\x03\x12*,\n\x0b\n\
    \x04\x05\0\x02\x0f\x12\x03\x13\x08-\n\x0c\n\x05\x05\0\x02\x0f\x01\x12\
    \x03\x13\x08'\n\x0c\n\x05\x05\0\x02\x0f\x02\x12\x03\x13*,\n\x0b\n\x04\
    \x05\0\x02\x10\x12\x03\x14\x08,\n\x0c\n\x05\x05\0\x02\x10\x01\x12\x03\
    \x14\x08&\n\x0c\n\x05\x05\0\x02\x10\x02\x12\x03\x14)+\n\x0b\n\x04\x05\0\
    \x02\x11\x12\x03\x15\x08*\n\x0c\n\x05\x05\0\x02\x11\x01\x12\x03\x15\x08$\
    \n\x0c\n\x05\x05\0\x02\x11\x02\x12\x03\x15')\n\x0b\n\x04\x05\0\x02\x12\
    \x12\x03\x16\x08*\n\x0c\n\x05\x05\0\x02\x12\x01\x12\x03\x16\x08$\n\x0c\n\
    \x05\x05\0\x02\x12\x02\x12\x03\x16')\n\x0b\n\x04\x05\0\x02\x13\x12\x03\
    \x17\x08,\n\x0c\n\x05\x05\0\x02\x13\x01\x12\x03\x17\x08&\n\x0c\n\x05\x05\
    \0\x02\x13\x02\x12\x03\x17)+\n\x0b\n\x04\x05\0\x02\x14\x12\x03\x18\x08,\
    \n\x0c\n\x05\x05\0\x02\x14\x01\x12\x03\x18\x08&\n\x0c\n\x05\x05\0\x02\
    \x14\x02\x12\x03\x18)+\n\x0b\n\x04\x05\0\x02\x15\x12\x03\x19\x08,\n\x0c\
    \n\x05\x05\0\x02\x15\x01\x12\x03\x19\x08&\n\x0c\n\x05\x05\0\x02\x15\x02\
    \x12\x03\x19)+\n\x0b\n\x04\x05\0\x02\x16\x12\x03\x1a\x08,\n\x0c\n\x05\
    \x05\0\x02\x16\x01\x12\x03\x1a\x08&\n\x0c\n\x05\x05\0\x02\x16\x02\x12\
    \x03\x1a)+\n\x0b\n\x04\x05\0\x02\x17\x12\x03\x1b\x08.\n\x0c\n\x05\x05\0\
    \x02\x17\x01\x12\x03\x1b\x08(\n\x0c\n\x05\x05\0\x02\x17\x02\x12\x03\x1b+\
    -\n\x0b\n\x04\x05\0\x02\x18\x12\x03\x1c\x08.\n\x0c\n\x05\x05\0\x02\x18\
    \x01\x12\x03\x1c\x08(\n\x0c\n\x05\x05\0\x02\x18\x02\x12\x03\x1c+-\n\x0b\
    \n\x04\x05\0\x02\x19\x12\x03\x1d\x08,\n\x0c\n\x05\x05\0\x02\x19\x01\x12\
    \x03\x1d\x08&\n\x0c\n\x05\x05\0\x02\x19\x02\x12\x03\x1d)+\n\x0b\n\x04\
    \x05\0\x02\x1a\x12\x03\x1e\x08,\n\x0c\n\x05\x05\0\x02\x1a\x01\x12\x03\
    \x1e\x08&\n\x0c\n\x05\x05\0\x02\x1a\x02\x12\x03\x1e)+\n\x0b\n\x04\x05\0\
    \x02\x1b\x12\x03\x1f\x08*\n\x0c\n\x05\x05\0\x02\x1b\x01\x12\x03\x1f\x08$\
    \n\x0c\n\x05\x05\0\x02\x1b\x02\x12\x03\x1f')\n\x0b\n\x04\x05\0\x02\x1c\
    \x12\x03\x20\x08+\n\x0c\n\x05\x05\0\x02\x1c\x01\x12\x03\x20\x08%\n\x0c\n\
    \x05\x05\0\x02\x1c\x02\x12\x03\x20(*\n\x0b\n\x04\x05\0\x02\x1d\x12\x03!\
    \x08,\n\x0c\n\x05\x05\0\x02\x1d\x01\x12\x03!\x08&\n\x0c\n\x05\x05\0\x02\
    \x1d\x02\x12\x03!)+\n\x0b\n\x04\x05\0\x02\x1e\x12\x03\"\x08&\n\x0c\n\x05\
    \x05\0\x02\x1e\x01\x12\x03\"\x08\x20\n\x0c\n\x05\x05\0\x02\x1e\x02\x12\
    \x03\"#%\n\x0b\n\x04\x05\0\x02\x1f\x12\x03#\x08)\n\x0c\n\x05\x05\0\x02\
    \x1f\x01\x12\x03#\x08#\n\x0c\n\x05\x05\0\x02\x1f\x02\x12\x03#&(\n\n\n\
    \x02\x05\x01\x12\x04&\0;\x01\n\n\n\x03\x05\x01\x01\x12\x03&\x05\x12\n\
    \x0b\n\x04\x05\x01\x02\0\x12\x03'\x08\x1e\n\x0c\n\x05\x05\x01\x02\0\x01\
    \x12\x03'\x08\x19\n\x0c\n\x05\x05\x01\x02\0\x02\x12\x03'\x1c\x1d\n\x0b\n\
    \x04\x05\x01\x02\x01\x12\x03(\x08\x1b\n\x0c\n\x05\x05\x01\x02\x01\x01\
    \x12\x03(\x08\x16\n\x0c\n\x05\x05\x01\x02\x01\x02\x12\x03(\x19\x1a\n\x0b\
    \n\x04\x05\x01\x02\x02\x12\x03)\x08\"\n\x0c\n\x05\x05\x01\x02\x02\x01\
    \x12\x03)\x08\x1d\n\x0c\n\x05\x05\x01\x02\x02\x02\x12\x03)\x20!\n\x0b\n\
    \x04\x05\x01\x02\x03\x12\x03*\x08\x1b\n\x0c\n\x05\x05\x01\x02\x03\x01\
    \x12\x03*\x08\x16\n\x0c\n\x05\x05\x01\x02\x03\x02\x12\x03*\x19\x1a\n\x0b\
    \n\x04\x05\x01\x02\x04\x12\x03+\x08\x1b\n\x0c\n\x05\x05\x01\x02\x04\x01\
    \x12\x03+\x08\x16\n\x0c\n\x05\x05\x01\x02\x04\x02\x12\x03+\x19\x1a\n\x0b\
    \n\x04\x05\x01\x02\x05\x12\x03,\x08!\n\x0c\n\x05\x05\x01\x02\x05\x01\x12\
    \x03,\x08\x1b\n\x0c\n\x05\x05\x01\x02\x05\x02\x12\x03,\x1e\x20\n\x0b\n\
    \x04\x05\x01\x02\x06\x12\x03-\x08\x1b\n\x0c\n\x05\x05\x01\x02\x06\x01\
    \x12\x03-\x08\x15\n\x0c\n\x05\x05\x01\x02\x06\x02\x12\x03-\x18\x1a\n\x0b\
    \n\x04\x05\x01\x02\x07\x12\x03.\x08\x1d\n\x0c\n\x05\x05\x01\x02\x07\x01\
    \x12\x03.\x08\x17\n\x0c\n\x05\x05\x01\x02\x07\x02\x12\x03.\x1a\x1c\n\x0b\
    \n\x04\x05\x01\x02\x08\x12\x03/\x08\x1f\n\x0c\n\x05\x05\x01\x02\x08\x01\
    \x12\x03/\x08\x18\n\x0c\n\x05\x05\x01\x02\x08\x02\x12\x03/\x1b\x1e\n\x0b\
    \n\x04\x05\x01\x02\t\x12\x030\x08\x1f\n\x0c\n\x05\x05\x01\x02\t\x01\x12\
    \x030\x08\x18\n\x0c\n\x05\x05\x01\x02\t\x02\x12\x030\x1b\x1e\n\x0b\n\x04\
    \x05\x01\x02\n\x12\x031\x08!\n\x0c\n\x05\x05\x01\x02\n\x01\x12\x031\x08\
    \x1a\n\x0c\n\x05\x05\x01\x02\n\x02\x12\x031\x1d\x20\n\x0b\n\x04\x05\x01\
    \x02\x0b\x12\x032\x08#\n\x0c\n\x05\x05\x01\x02\x0b\x01\x12\x032\x08\x1b\
    \n\x0c\n\x05\x05\x01\x02\x0b\x02\x12\x032\x1e\"\n\x0b\n\x04\x05\x01\x02\
    \x0c\x12\x033\x08\x1f\n\x0c\n\x05\x05\x01\x02\x0c\x01\x12\x033\x08\x17\n\
    \x0c\n\x05\x05\x01\x02\x0c\x02\x12\x033\x1a\x1e\n\x0b\n\x04\x05\x01\x02\
    \r\x12\x034\x08\x20\n\x0c\n\x05\x05\x01\x02\r\x01\x12\x034\x08\x18\n\x0c\
    \n\x05\x05\x01\x02\r\x02\x12\x034\x1b\x1f\n\x0b\n\x04\x05\x01\x02\x0e\
    \x12\x035\x08$\n\x0c\n\x05\x05\x01\x02\x0e\x01\x12\x035\x08\x1c\n\x0c\n\
    \x05\x05\x01\x02\x0e\x02\x12\x035\x1f#\n\x0b\n\x04\x05\x01\x02\x0f\x12\
    \x036\x08!\n\x0c\n\x05\x05\x01\x02\x0f\x01\x12\x036\x08\x18\n\x0c\n\x05\
    \x05\x01\x02\x0f\x02\x12\x036\x1b\x20\n\x0b\n\x04\x05\x01\x02\x10\x12\
    \x037\x08\x20\n\x0c\n\x05\x05\x01\x02\x10\x01\x12\x037\x08\x17\n\x0c\n\
    \x05\x05\x01\x02\x10\x02\x12\x037\x1a\x1f\n\x0b\n\x04\x05\x01\x02\x11\
    \x12\x038\x08\x1f\n\x0c\n\x05\x05\x01\x02\x11\x01\x12\x038\x08\x16\n\x0c\
    \n\x05\x05\x01\x02\x11\x02\x12\x038\x19\x1e\n\x0b\n\x04\x05\x01\x02\x12\
    \x12\x039\x08(\n\x0c\n\x05\x05\x01\x02\x12\x01\x12\x039\x08\x1a\n\x0c\n\
    \x05\x05\x01\x02\x12\x02\x12\x039\x1d'\n\x0b\n\x04\x05\x01\x02\x13\x12\
    \x03:\x08*\n\x0c\n\x05\x05\x01\x02\x13\x01\x12\x03:\x08\x1b\n\x0c\n\x05\
    \x05\x01\x02\x13\x02\x12\x03:\x1e)\n\n\n\x02\x05\x02\x12\x04=\0B\x01\n\n\
    \n\x03\x05\x02\x01\x12\x03=\x05\x18\n\x0b\n\x04\x05\x02\x02\0\x12\x03>\
    \x08)\n\x0c\n\x05\x05\x02\x02\0\x01\x12\x03>\x08$\n\x0c\n\x05\x05\x02\
    \x02\0\x02\x12\x03>'(\n\x0b\n\x04\x05\x02\x02\x01\x12\x03?\x08+\n\x0c\n\
    \x05\x05\x02\x02\x01\x01\x12\x03?\x08&\n\x0c\n\x05\x05\x02\x02\x01\x02\
    \x12\x03?)*\n\x0b\n\x04\x05\x02\x02\x02\x12\x03@\x08+\n\x0c\n\x05\x05\
    \x02\x02\x02\x01\x12\x03@\x08&\n\x0c\n\x05\x05\x02\x02\x02\x02\x12\x03@)\
    *\n\x0b\n\x04\x05\x02\x02\x03\x12\x03A\x08+\n\x0c\n\x05\x05\x02\x02\x03\
    \x01\x12\x03A\x08&\n\x0c\n\x05\x05\x02\x02\x03\x02\x12\x03A)*\n\n\n\x02\
    \x05\x03\x12\x04D\0H\x01\n\n\n\x03\x05\x03\x01\x12\x03D\x05\x1f\n\x0b\n\
    \x04\x05\x03\x02\0\x12\x03E\x08-\n\x0c\n\x05\x05\x03\x02\0\x01\x12\x03E\
    \x08(\n\x0c\n\x05\x05\x03\x02\0\x02\x12\x03E+,\n\x0b\n\x04\x05\x03\x02\
    \x01\x12\x03F\x080\n\x0c\n\x05\x05\x03\x02\x01\x01\x12\x03F\x08+\n\x0c\n\
    \x05\x05\x03\x02\x01\x02\x12\x03F./\n\x0b\n\x04\x05\x03\x02\x02\x12\x03G\
    \x08-\n\x0c\n\x05\x05\x03\x02\x02\x01\x12\x03G\x08(\n\x0c\n\x05\x05\x03\
    \x02\x02\x02\x12\x03G+,\n\n\n\x02\x04\0\x12\x04J\0M\x01\n\n\n\x03\x04\0\
    \x01\x12\x03J\x08#\n\x0b\n\x04\x04\0\x02\0\x12\x03K\x08X\n\x0c\n\x05\x04\
    \0\x02\0\x04\x12\x03K\x08\x10\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03K\x11%\
    \n\x0c\n\x05\x04\0\x02\0\x01\x12\x03K&*\n\x0c\n\x05\x04\0\x02\0\x03\x12\
    \x03K-.\n\x0c\n\x05\x04\0\x02\0\x08\x12\x03K/W\n\x0c\n\x05\x04\0\x02\0\
    \x07\x12\x03K:V\n\x0b\n\x04\x04\0\x02\x01\x12\x03L\x08!\n\x0c\n\x05\x04\
    \0\x02\x01\x04\x12\x03L\x08\x10\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03L\
    \x11\x17\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03L\x18\x1c\n\x0c\n\x05\x04\
    \0\x02\x01\x03\x12\x03L\x1f\x20\n\n\n\x02\x04\x01\x12\x04O\0\\\x01\n\n\n\
    \x03\x04\x01\x01\x12\x03O\x08\"\n\x0b\n\x04\x04\x01\x02\0\x12\x03P\x08%\
    \n\x0c\n\x05\x04\x01\x02\0\x04\x12\x03P\x08\x10\n\x0c\n\x05\x04\x01\x02\
    \0\x05\x12\x03P\x11\x17\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03P\x18\x20\n\
    \x0c\n\x05\x04\x01\x02\0\x03\x12\x03P#$\n\x0b\n\x04\x04\x01\x02\x01\x12\
    \x03Q\x08(\n\x0c\n\x05\x04\x01\x02\x01\x04\x12\x03Q\x08\x10\n\x0c\n\x05\
    \x04\x01\x02\x01\x05\x12\x03Q\x11\x17\n\x0c\n\x05\x04\x01\x02\x01\x01\
    \x12\x03Q\x18#\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03Q&'\n\x0b\n\x04\
    \x04\x01\x02\x02\x12\x03R\x08X\n\x0c\n\x05\x04\x01\x02\x02\x04\x12\x03R\
    \x08\x10\n\x0c\n\x05\x04\x01\x02\x02\x06\x12\x03R\x11\x20\n\x0c\n\x05\
    \x04\x01\x02\x02\x01\x12\x03R!/\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\x03R\
    23\n\x0c\n\x05\x04\x01\x02\x02\x08\x12\x03R4W\n\x0c\n\x05\x04\x01\x02\
    \x02\x07\x12\x03R?V\n\x0b\n\x04\x04\x01\x02\x03\x12\x03S\x08<\n\x0c\n\
    \x05\x04\x01\x02\x03\x04\x12\x03S\x08\x10\n\x0c\n\x05\x04\x01\x02\x03\
    \x05\x12\x03S\x11\x17\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\x03S\x18)\n\
    \x0c\n\x05\x04\x01\x02\x03\x03\x12\x03S,-\n\x0c\n\x05\x04\x01\x02\x03\
    \x08\x12\x03S.;\n\x0c\n\x05\x04\x01\x02\x03\x07\x12\x03S9:\n\x0b\n\x04\
    \x04\x01\x02\x04\x12\x03T\x08(\n\x0c\n\x05\x04\x01\x02\x04\x04\x12\x03T\
    \x08\x10\n\x0c\n\x05\x04\x01\x02\x04\x05\x12\x03T\x11\x17\n\x0c\n\x05\
    \x04\x01\x02\x04\x01\x12\x03T\x18#\n\x0c\n\x05\x04\x01\x02\x04\x03\x12\
    \x03T&'\n\x0b\n\x04\x04\x01\x02\x05\x12\x03U\x08$\n\x0c\n\x05\x04\x01\
    \x02\x05\x04\x12\x03U\x08\x10\n\x0c\n\x05\x04\x01\x02\x05\x05\x12\x03U\
    \x11\x15\n\x0c\n\x05\x04\x01\x02\x05\x01\x12\x03U\x16\x1f\n\x0c\n\x05\
    \x04\x01\x02\x05\x03\x12\x03U\"#\n\x0b\n\x04\x04\x01\x02\x06\x12\x03V\
    \x08;\n\x0c\n\x05\x04\x01\x02\x06\x04\x12\x03V\x08\x10\n\x0c\n\x05\x04\
    \x01\x02\x06\x05\x12\x03V\x11\x17\n\x0c\n\x05\x04\x01\x02\x06\x01\x12\
    \x03V\x18(\n\x0c\n\x05\x04\x01\x02\x06\x03\x12\x03V+,\n\x0c\n\x05\x04\
    \x01\x02\x06\x08\x12\x03V-:\n\x0c\n\x05\x04\x01\x02\x06\x07\x12\x03V89\n\
    \x0b\n\x04\x04\x01\x02\x07\x12\x03W\x086\n\x0c\n\x05\x04\x01\x02\x07\x04\
    \x12\x03W\x08\x10\n\x0c\n\x05\x04\x01\x02\x07\x05\x12\x03W\x11\x17\n\x0c\
    \n\x05\x04\x01\x02\x07\x01\x12\x03W\x18#\n\x0c\n\x05\x04\x01\x02\x07\x03\
    \x12\x03W&'\n\x0c\n\x05\x04\x01\x02\x07\x08\x12\x03W(5\n\x0c\n\x05\x04\
    \x01\x02\x07\x07\x12\x03W34\n\x0b\n\x04\x04\x01\x02\x08\x12\x03X\x084\n\
    \x0c\n\x05\x04\x01\x02\x08\x04\x12\x03X\x08\x10\n\x0c\n\x05\x04\x01\x02\
    \x08\x05\x12\x03X\x11\x15\n\x0c\n\x05\x04\x01\x02\x08\x01\x12\x03X\x16/\
    \n\x0c\n\x05\x04\x01\x02\x08\x03\x12\x03X23\n\x0b\n\x04\x04\x01\x02\t\
    \x12\x03Y\x08<\n\x0c\n\x05\x04\x01\x02\t\x04\x12\x03Y\x08\x10\n\x0c\n\
    \x05\x04\x01\x02\t\x05\x12\x03Y\x11\x15\n\x0c\n\x05\x04\x01\x02\t\x01\
    \x12\x03Y\x166\n\x0c\n\x05\x04\x01\x02\t\x03\x12\x03Y9;\n\x0b\n\x04\x04\
    \x01\x02\n\x12\x03Z\x08.\n\x0c\n\x05\x04\x01\x02\n\x04\x12\x03Z\x08\x10\
    \n\x0c\n\x05\x04\x01\x02\n\x05\x12\x03Z\x11\x15\n\x0c\n\x05\x04\x01\x02\
    \n\x01\x12\x03Z\x16(\n\x0c\n\x05\x04\x01\x02\n\x03\x12\x03Z+-\n\x0b\n\
    \x04\x04\x01\x02\x0b\x12\x03[\x08+\n\x0c\n\x05\x04\x01\x02\x0b\x04\x12\
    \x03[\x08\x10\n\x0c\n\x05\x04\x01\x02\x0b\x05\x12\x03[\x11\x17\n\x0c\n\
    \x05\x04\x01\x02\x0b\x01\x12\x03[\x18%\n\x0c\n\x05\x04\x01\x02\x0b\x03\
    \x12\x03[(*\n\x0b\n\x02\x04\x02\x12\x05^\0\x8d\x01\x01\n\n\n\x03\x04\x02\
    \x01\x12\x03^\x08\x14\n\x0b\n\x04\x04\x02\x02\0\x12\x03_\x08\"\n\x0c\n\
    \x05\x04\x02\x02\0\x04\x12\x03_\x08\x10\n\x0c\n\x05\x04\x02\x02\0\x05\
    \x12\x03_\x11\x17\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03_\x18\x1d\n\x0c\n\
    \x05\x04\x02\x02\0\x03\x12\x03_\x20!\n\x0b\n\x04\x04\x02\x02\x01\x12\x03\
    `\x08)\n\x0c\n\x05\x04\x02\x02\x01\x04\x12\x03`\x08\x10\n\x0c\n\x05\x04\
    \x02\x02\x01\x05\x12\x03`\x11\x17\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\
    \x03`\x18$\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03`'(\n\x0b\n\x04\x04\
    \x02\x02\x02\x12\x03a\x08/\n\x0c\n\x05\x04\x02\x02\x02\x04\x12\x03a\x08\
    \x10\n\x0c\n\x05\x04\x02\x02\x02\x05\x12\x03a\x11\x15\n\x0c\n\x05\x04\
    \x02\x02\x02\x01\x12\x03a\x16*\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03a-\
    .\n\x0b\n\x04\x04\x02\x02\x03\x12\x03b\x08$\n\x0c\n\x05\x04\x02\x02\x03\
    \x04\x12\x03b\x08\x10\n\x0c\n\x05\x04\x02\x02\x03\x05\x12\x03b\x11\x17\n\
    \x0c\n\x05\x04\x02\x02\x03\x01\x12\x03b\x18\x1f\n\x0c\n\x05\x04\x02\x02\
    \x03\x03\x12\x03b\"#\n\x0b\n\x04\x04\x02\x02\x04\x12\x03c\x08K\n\x0c\n\
    \x05\x04\x02\x02\x04\x04\x12\x03c\x08\x10\n\x0c\n\x05\x04\x02\x02\x04\
    \x06\x12\x03c\x11\x1f\n\x0c\n\x05\x04\x02\x02\x04\x01\x12\x03c\x20(\n\
    \x0c\n\x05\x04\x02\x02\x04\x03\x12\x03c+,\n\x0c\n\x05\x04\x02\x02\x04\
    \x08\x12\x03c-J\n\x0c\n\x05\x04\x02\x02\x04\x07\x12\x03c8I\n\x0b\n\x04\
    \x04\x02\x02\x05\x12\x03d\x08'\n\x0c\n\x05\x04\x02\x02\x05\x04\x12\x03d\
    \x08\x10\n\x0c\n\x05\x04\x02\x02\x05\x05\x12\x03d\x11\x17\n\x0c\n\x05\
    \x04\x02\x02\x05\x01\x12\x03d\x18!\n\x0c\n\x05\x04\x02\x02\x05\x03\x12\
    \x03d$&\n\x0b\n\x04\x04\x02\x02\x06\x12\x03e\x08C\n\x0c\n\x05\x04\x02\
    \x02\x06\x04\x12\x03e\x08\x10\n\x0c\n\x05\x04\x02\x02\x06\x05\x12\x03e\
    \x11\x17\n\x0c\n\x05\x04\x02\x02\x06\x01\x12\x03e\x18/\n\x0c\n\x05\x04\
    \x02\x02\x06\x03\x12\x03e24\n\x0c\n\x05\x04\x02\x02\x06\x08\x12\x03e5B\n\
    \x0c\n\x05\x04\x02\x02\x06\x07\x12\x03e@A\n\x0b\n\x04\x04\x02\x02\x07\
    \x12\x03f\x08D\n\x0c\n\x05\x04\x02\x02\x07\x04\x12\x03f\x08\x10\n\x0c\n\
    \x05\x04\x02\x02\x07\x05\x12\x03f\x11\x17\n\x0c\n\x05\x04\x02\x02\x07\
    \x01\x12\x03f\x180\n\x0c\n\x05\x04\x02\x02\x07\x03\x12\x03f35\n\x0c\n\
    \x05\x04\x02\x02\x07\x08\x12\x03f6C\n\x0c\n\x05\x04\x02\x02\x07\x07\x12\
    \x03fAB\n\x0b\n\x04\x04\x02\x02\x08\x12\x03g\x08K\n\x0c\n\x05\x04\x02\
    \x02\x08\x04\x12\x03g\x08\x10\n\x0c\n\x05\x04\x02\x02\x08\x05\x12\x03g\
    \x11\x17\n\x0c\n\x05\x04\x02\x02\x08\x01\x12\x03g\x187\n\x0c\n\x05\x04\
    \x02\x02\x08\x03\x12\x03g:<\n\x0c\n\x05\x04\x02\x02\x08\x08\x12\x03g=J\n\
    \x0c\n\x05\x04\x02\x02\x08\x07\x12\x03gHI\n\x0b\n\x04\x04\x02\x02\t\x12\
    \x03h\x08?\n\x0c\n\x05\x04\x02\x02\t\x04\x12\x03h\x08\x10\n\x0c\n\x05\
    \x04\x02\x02\t\x05\x12\x03h\x11\x17\n\x0c\n\x05\x04\x02\x02\t\x01\x12\
    \x03h\x18+\n\x0c\n\x05\x04\x02\x02\t\x03\x12\x03h.0\n\x0c\n\x05\x04\x02\
    \x02\t\x08\x12\x03h1>\n\x0c\n\x05\x04\x02\x02\t\x07\x12\x03h<=\n\x0b\n\
    \x04\x04\x02\x02\n\x12\x03i\x08'\n\x0c\n\x05\x04\x02\x02\n\x04\x12\x03i\
    \x08\x10\n\x0c\n\x05\x04\x02\x02\n\x05\x12\x03i\x11\x17\n\x0c\n\x05\x04\
    \x02\x02\n\x01\x12\x03i\x18!\n\x0c\n\x05\x04\x02\x02\n\x03\x12\x03i$&\n\
    \x0b\n\x04\x04\x02\x02\x0b\x12\x03j\x08?\n\x0c\n\x05\x04\x02\x02\x0b\x04\
    \x12\x03j\x08\x10\n\x0c\n\x05\x04\x02\x02\x0b\x06\x12\x03j\x11-\n\x0c\n\
    \x05\x04\x02\x02\x0b\x01\x12\x03j.9\n\x0c\n\x05\x04\x02\x02\x0b\x03\x12\
    \x03j<>\n\x0b\n\x04\x04\x02\x02\x0c\x12\x03k\x08,\n\x0c\n\x05\x04\x02\
    \x02\x0c\x04\x12\x03k\x08\x10\n\x0c\n\x05\x04\x02\x02\x0c\x05\x12\x03k\
    \x11\x17\n\x0c\n\x05\x04\x02\x02\x0c\x01\x12\x03k\x18&\n\x0c\n\x05\x04\
    \x02\x02\x0c\x03\x12\x03k)+\n\x0b\n\x04\x04\x02\x02\r\x12\x03l\x08D\n\
    \x0c\n\x05\x04\x02\x02\r\x04\x12\x03l\x08\x10\n\x0c\n\x05\x04\x02\x02\r\
    \x05\x12\x03l\x11\x17\n\x0c\n\x05\x04\x02\x02\r\x01\x12\x03l\x180\n\x0c\
    \n\x05\x04\x02\x02\r\x03\x12\x03l35\n\x0c\n\x05\x04\x02\x02\r\x08\x12\
    \x03l6C\n\x0c\n\x05\x04\x02\x02\r\x07\x12\x03lAB\n\x0b\n\x04\x04\x02\x02\
    \x0e\x12\x03m\x08A\n\x0c\n\x05\x04\x02\x02\x0e\x04\x12\x03m\x08\x10\n\
    \x0c\n\x05\x04\x02\x02\x0e\x05\x12\x03m\x11\x17\n\x0c\n\x05\x04\x02\x02\
    \x0e\x01\x12\x03m\x18-\n\x0c\n\x05\x04\x02\x02\x0e\x03\x12\x03m02\n\x0c\
    \n\x05\x04\x02\x02\x0e\x08\x12\x03m3@\n\x0c\n\x05\x04\x02\x02\x0e\x07\
    \x12\x03m>?\n\x0b\n\x04\x04\x02\x02\x0f\x12\x03n\x08'\n\x0c\n\x05\x04\
    \x02\x02\x0f\x04\x12\x03n\x08\x10\n\x0c\n\x05\x04\x02\x02\x0f\x05\x12\
    \x03n\x11\x17\n\x0c\n\x05\x04\x02\x02\x0f\x01\x12\x03n\x18!\n\x0c\n\x05\
    \x04\x02\x02\x0f\x03\x12\x03n$&\n\x0b\n\x04\x04\x02\x02\x10\x12\x03o\x08\
    '\n\x0c\n\x05\x04\x02\x02\x10\x04\x12\x03o\x08\x10\n\x0c\n\x05\x04\x02\
    \x02\x10\x05\x12\x03o\x11\x17\n\x0c\n\x05\x04\x02\x02\x10\x01\x12\x03o\
    \x18!\n\x0c\n\x05\x04\x02\x02\x10\x03\x12\x03o$&\n\x0b\n\x04\x04\x02\x02\
    \x11\x12\x03p\x08r\n\x0c\n\x05\x04\x02\x02\x11\x04\x12\x03p\x08\x10\n\
    \x0c\n\x05\x04\x02\x02\x11\x06\x12\x03p\x11,\n\x0c\n\x05\x04\x02\x02\x11\
    \x01\x12\x03p-?\n\x0c\n\x05\x04\x02\x02\x11\x03\x12\x03pBD\n\x0c\n\x05\
    \x04\x02\x02\x11\x08\x12\x03pEq\n\x0c\n\x05\x04\x02\x02\x11\x07\x12\x03p\
    Pp\n\x0b\n\x04\x04\x02\x02\x12\x12\x03q\x08(\n\x0c\n\x05\x04\x02\x02\x12\
    \x04\x12\x03q\x08\x10\n\x0c\n\x05\x04\x02\x02\x12\x05\x12\x03q\x11\x15\n\
    \x0c\n\x05\x04\x02\x02\x12\x01\x12\x03q\x16\"\n\x0c\n\x05\x04\x02\x02\
    \x12\x03\x12\x03q%'\n\x0b\n\x04\x04\x02\x02\x13\x12\x03r\x08.\n\x0c\n\
    \x05\x04\x02\x02\x13\x04\x12\x03r\x08\x10\n\x0c\n\x05\x04\x02\x02\x13\
    \x05\x12\x03r\x11\x17\n\x0c\n\x05\x04\x02\x02\x13\x01\x12\x03r\x18(\n\
    \x0c\n\x05\x04\x02\x02\x13\x03\x12\x03r+-\n\x0b\n\x04\x04\x02\x02\x14\
    \x12\x03s\x08*\n\x0c\n\x05\x04\x02\x02\x14\x04\x12\x03s\x08\x10\n\x0c\n\
    \x05\x04\x02\x02\x14\x05\x12\x03s\x11\x17\n\x0c\n\x05\x04\x02\x02\x14\
    \x01\x12\x03s\x18$\n\x0c\n\x05\x04\x02\x02\x14\x03\x12\x03s')\n\x0b\n\
    \x04\x04\x02\x02\x15\x12\x03t\x08+\n\x0c\n\x05\x04\x02\x02\x15\x04\x12\
    \x03t\x08\x10\n\x0c\n\x05\x04\x02\x02\x15\x05\x12\x03t\x11\x15\n\x0c\n\
    \x05\x04\x02\x02\x15\x01\x12\x03t\x16%\n\x0c\n\x05\x04\x02\x02\x15\x03\
    \x12\x03t(*\n\x0b\n\x04\x04\x02\x02\x16\x12\x03u\x08'\n\x0c\n\x05\x04\
    \x02\x02\x16\x04\x12\x03u\x08\x10\n\x0c\n\x05\x04\x02\x02\x16\x05\x12\
    \x03u\x11\x17\n\x0c\n\x05\x04\x02\x02\x16\x01\x12\x03u\x18!\n\x0c\n\x05\
    \x04\x02\x02\x16\x03\x12\x03u$&\n\x0b\n\x04\x04\x02\x02\x17\x12\x03v\x08\
    .\n\x0c\n\x05\x04\x02\x02\x17\x04\x12\x03v\x08\x10\n\x0c\n\x05\x04\x02\
    \x02\x17\x05\x12\x03v\x11\x17\n\x0c\n\x05\x04\x02\x02\x17\x01\x12\x03v\
    \x18(\n\x0c\n\x05\x04\x02\x02\x17\x03\x12\x03v+-\n\x0b\n\x04\x04\x02\x02\
    \x18\x12\x03w\x08$\n\x0c\n\x05\x04\x02\x02\x18\x04\x12\x03w\x08\x10\n\
    \x0c\n\x05\x04\x02\x02\x18\x05\x12\x03w\x11\x17\n\x0c\n\x05\x04\x02\x02\
    \x18\x01\x12\x03w\x18\x1e\n\x0c\n\x05\x04\x02\x02\x18\x03\x12\x03w!#\n\
    \x0b\n\x04\x04\x02\x02\x19\x12\x03x\x086\n\x0c\n\x05\x04\x02\x02\x19\x04\
    \x12\x03x\x08\x10\n\x0c\n\x05\x04\x02\x02\x19\x05\x12\x03x\x11\x17\n\x0c\
    \n\x05\x04\x02\x02\x19\x01\x12\x03x\x180\n\x0c\n\x05\x04\x02\x02\x19\x03\
    \x12\x03x35\n\x0b\n\x04\x04\x02\x02\x1a\x12\x03y\x08B\n\x0c\n\x05\x04\
    \x02\x02\x1a\x04\x12\x03y\x08\x10\n\x0c\n\x05\x04\x02\x02\x1a\x06\x12\
    \x03y\x11,\n\x0c\n\x05\x04\x02\x02\x1a\x01\x12\x03y-<\n\x0c\n\x05\x04\
    \x02\x02\x1a\x03\x12\x03y?A\n\x0b\n\x04\x04\x02\x02\x1b\x12\x03z\x085\n\
    \x0c\n\x05\x04\x02\x02\x1b\x04\x12\x03z\x08\x10\n\x0c\n\x05\x04\x02\x02\
    \x1b\x05\x12\x03z\x11\x17\n\x0c\n\x05\x04\x02\x02\x1b\x01\x12\x03z\x18/\
    \n\x0c\n\x05\x04\x02\x02\x1b\x03\x12\x03z24\n\x0b\n\x04\x04\x02\x02\x1c\
    \x12\x03{\x08/\n\x0c\n\x05\x04\x02\x02\x1c\x04\x12\x03{\x08\x10\n\x0c\n\
    \x05\x04\x02\x02\x1c\x05\x12\x03{\x11\x17\n\x0c\n\x05\x04\x02\x02\x1c\
    \x01\x12\x03{\x18)\n\x0c\n\x05\x04\x02\x02\x1c\x03\x12\x03{,.\n\x0b\n\
    \x04\x04\x02\x02\x1d\x12\x03|\x082\n\x0c\n\x05\x04\x02\x02\x1d\x04\x12\
    \x03|\x08\x10\n\x0c\n\x05\x04\x02\x02\x1d\x05\x12\x03|\x11\x17\n\x0c\n\
    \x05\x04\x02\x02\x1d\x01\x12\x03|\x18,\n\x0c\n\x05\x04\x02\x02\x1d\x03\
    \x12\x03|/1\n\x0b\n\x04\x04\x02\x02\x1e\x12\x03}\x083\n\x0c\n\x05\x04\
    \x02\x02\x1e\x04\x12\x03}\x08\x10\n\x0c\n\x05\x04\x02\x02\x1e\x05\x12\
    \x03}\x11\x17\n\x0c\n\x05\x04\x02\x02\x1e\x01\x12\x03}\x18-\n\x0c\n\x05\
    \x04\x02\x02\x1e\x03\x12\x03}02\n\x0b\n\x04\x04\x02\x02\x1f\x12\x03~\x08\
    4\n\x0c\n\x05\x04\x02\x02\x1f\x04\x12\x03~\x08\x10\n\x0c\n\x05\x04\x02\
    \x02\x1f\x05\x12\x03~\x11\x17\n\x0c\n\x05\x04\x02\x02\x1f\x01\x12\x03~\
    \x18.\n\x0c\n\x05\x04\x02\x02\x1f\x03\x12\x03~13\n\x0b\n\x04\x04\x02\x02\
    \x20\x12\x03\x7f\x08.\n\x0c\n\x05\x04\x02\x02\x20\x04\x12\x03\x7f\x08\
    \x10\n\x0c\n\x05\x04\x02\x02\x20\x05\x12\x03\x7f\x11\x17\n\x0c\n\x05\x04\
    \x02\x02\x20\x01\x12\x03\x7f\x18(\n\x0c\n\x05\x04\x02\x02\x20\x03\x12\
    \x03\x7f+-\n\x0c\n\x04\x04\x02\x02!\x12\x04\x80\x01\x082\n\r\n\x05\x04\
    \x02\x02!\x04\x12\x04\x80\x01\x08\x10\n\r\n\x05\x04\x02\x02!\x05\x12\x04\
    \x80\x01\x11\x15\n\r\n\x05\x04\x02\x02!\x01\x12\x04\x80\x01\x16,\n\r\n\
    \x05\x04\x02\x02!\x03\x12\x04\x80\x01/1\n\x0c\n\x04\x04\x02\x02\"\x12\
    \x04\x81\x01\x085\n\r\n\x05\x04\x02\x02\"\x04\x12\x04\x81\x01\x08\x10\n\
    \r\n\x05\x04\x02\x02\"\x05\x12\x04\x81\x01\x11\x17\n\r\n\x05\x04\x02\x02\
    \"\x01\x12\x04\x81\x01\x18/\n\r\n\x05\x04\x02\x02\"\x03\x12\x04\x81\x012\
    4\n\x0c\n\x04\x04\x02\x02#\x12\x04\x82\x01\x086\n\r\n\x05\x04\x02\x02#\
    \x04\x12\x04\x82\x01\x08\x10\n\r\n\x05\x04\x02\x02#\x05\x12\x04\x82\x01\
    \x11\x17\n\r\n\x05\x04\x02\x02#\x01\x12\x04\x82\x01\x180\n\r\n\x05\x04\
    \x02\x02#\x03\x12\x04\x82\x0135\n\x0c\n\x04\x04\x02\x02$\x12\x04\x83\x01\
    \x085\n\r\n\x05\x04\x02\x02$\x04\x12\x04\x83\x01\x08\x10\n\r\n\x05\x04\
    \x02\x02$\x05\x12\x04\x83\x01\x11\x17\n\r\n\x05\x04\x02\x02$\x01\x12\x04\
    \x83\x01\x18/\n\r\n\x05\x04\x02\x02$\x03\x12\x04\x83\x0124\n\x0c\n\x04\
    \x04\x02\x02%\x12\x04\x84\x01\x08:\n\r\n\x05\x04\x02\x02%\x04\x12\x04\
    \x84\x01\x08\x10\n\r\n\x05\x04\x02\x02%\x05\x12\x04\x84\x01\x11\x17\n\r\
    \n\x05\x04\x02\x02%\x01\x12\x04\x84\x01\x184\n\r\n\x05\x04\x02\x02%\x03\
    \x12\x04\x84\x0179\n\x0c\n\x04\x04\x02\x02&\x12\x04\x85\x01\x088\n\r\n\
    \x05\x04\x02\x02&\x04\x12\x04\x85\x01\x08\x10\n\r\n\x05\x04\x02\x02&\x05\
    \x12\x04\x85\x01\x11\x17\n\r\n\x05\x04\x02\x02&\x01\x12\x04\x85\x01\x182\
    \n\r\n\x05\x04\x02\x02&\x03\x12\x04\x85\x0157\n\x0c\n\x04\x04\x02\x02'\
    \x12\x04\x86\x01\x08=\n\r\n\x05\x04\x02\x02'\x04\x12\x04\x86\x01\x08\x10\
    \n\r\n\x05\x04\x02\x02'\x05\x12\x04\x86\x01\x11\x17\n\r\n\x05\x04\x02\
    \x02'\x01\x12\x04\x86\x01\x187\n\r\n\x05\x04\x02\x02'\x03\x12\x04\x86\
    \x01:<\n\x0c\n\x04\x04\x02\x02(\x12\x04\x87\x01\x08(\n\r\n\x05\x04\x02\
    \x02(\x04\x12\x04\x87\x01\x08\x10\n\r\n\x05\x04\x02\x02(\x05\x12\x04\x87\
    \x01\x11\x17\n\r\n\x05\x04\x02\x02(\x01\x12\x04\x87\x01\x18\"\n\r\n\x05\
    \x04\x02\x02(\x03\x12\x04\x87\x01%'\n\x0c\n\x04\x04\x02\x02)\x12\x04\x88\
    \x01\x08#\n\r\n\x05\x04\x02\x02)\x04\x12\x04\x88\x01\x08\x10\n\r\n\x05\
    \x04\x02\x02)\x05\x12\x04\x88\x01\x11\x15\n\r\n\x05\x04\x02\x02)\x01\x12\
    \x04\x88\x01\x16\x1d\n\r\n\x05\x04\x02\x02)\x03\x12\x04\x88\x01\x20\"\n\
    \x0c\n\x04\x04\x02\x02*\x12\x04\x89\x01\x08-\n\r\n\x05\x04\x02\x02*\x04\
    \x12\x04\x89\x01\x08\x10\n\r\n\x05\x04\x02\x02*\x05\x12\x04\x89\x01\x11\
    \x17\n\r\n\x05\x04\x02\x02*\x01\x12\x04\x89\x01\x18'\n\r\n\x05\x04\x02\
    \x02*\x03\x12\x04\x89\x01*,\n\x0c\n\x04\x04\x02\x02+\x12\x04\x8a\x01\x08\
    9\n\r\n\x05\x04\x02\x02+\x04\x12\x04\x8a\x01\x08\x10\n\r\n\x05\x04\x02\
    \x02+\x05\x12\x04\x8a\x01\x11\x17\n\r\n\x05\x04\x02\x02+\x01\x12\x04\x8a\
    \x01\x183\n\r\n\x05\x04\x02\x02+\x03\x12\x04\x8a\x0168\n\x0c\n\x04\x04\
    \x02\x02,\x12\x04\x8b\x01\x08D\n\r\n\x05\x04\x02\x02,\x04\x12\x04\x8b\
    \x01\x08\x10\n\r\n\x05\x04\x02\x02,\x05\x12\x04\x8b\x01\x11\x17\n\r\n\
    \x05\x04\x02\x02,\x01\x12\x04\x8b\x01\x180\n\r\n\x05\x04\x02\x02,\x03\
    \x12\x04\x8b\x0135\n\r\n\x05\x04\x02\x02,\x08\x12\x04\x8b\x016C\n\r\n\
    \x05\x04\x02\x02,\x07\x12\x04\x8b\x01AB\n\x0c\n\x04\x04\x02\x02-\x12\x04\
    \x8c\x01\x084\n\r\n\x05\x04\x02\x02-\x04\x12\x04\x8c\x01\x08\x10\n\r\n\
    \x05\x04\x02\x02-\x05\x12\x04\x8c\x01\x11\x17\n\r\n\x05\x04\x02\x02-\x01\
    \x12\x04\x8c\x01\x18.\n\r\n\x05\x04\x02\x02-\x03\x12\x04\x8c\x0113\n\x0c\
    \n\x02\x04\x03\x12\x06\x8f\x01\0\x92\x01\x01\n\x0b\n\x03\x04\x03\x01\x12\
    \x04\x8f\x01\x08\x1b\n\x0c\n\x04\x04\x03\x02\0\x12\x04\x90\x01\x080\n\r\
    \n\x05\x04\x03\x02\0\x04\x12\x04\x90\x01\x08\x10\n\r\n\x05\x04\x03\x02\0\
    \x06\x12\x04\x90\x01\x11\x1e\n\r\n\x05\x04\x03\x02\0\x01\x12\x04\x90\x01\
    \x1f+\n\r\n\x05\x04\x03\x02\0\x03\x12\x04\x90\x01./\n\x0c\n\x04\x04\x03\
    \x02\x01\x12\x04\x91\x01\x08*\n\r\n\x05\x04\x03\x02\x01\x04\x12\x04\x91\
    \x01\x08\x10\n\r\n\x05\x04\x03\x02\x01\x05\x12\x04\x91\x01\x11\x17\n\r\n\
    \x05\x04\x03\x02\x01\x01\x12\x04\x91\x01\x18%\n\r\n\x05\x04\x03\x02\x01\
    \x03\x12\x04\x91\x01()\n\x0c\n\x02\x04\x04\x12\x06\x94\x01\0\x98\x01\x01\
    \n\x0b\n\x03\x04\x04\x01\x12\x04\x94\x01\x08\x19\n\x0c\n\x04\x04\x04\x02\
    \0\x12\x04\x95\x01\x08\"\n\r\n\x05\x04\x04\x02\0\x04\x12\x04\x95\x01\x08\
    \x10\n\r\n\x05\x04\x04\x02\0\x05\x12\x04\x95\x01\x11\x17\n\r\n\x05\x04\
    \x04\x02\0\x01\x12\x04\x95\x01\x18\x1d\n\r\n\x05\x04\x04\x02\0\x03\x12\
    \x04\x95\x01\x20!\n\x0c\n\x04\x04\x04\x02\x01\x12\x04\x96\x01\x08!\n\r\n\
    \x05\x04\x04\x02\x01\x04\x12\x04\x96\x01\x08\x10\n\r\n\x05\x04\x04\x02\
    \x01\x05\x12\x04\x96\x01\x11\x15\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\
    \x96\x01\x16\x1c\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\x96\x01\x1f\x20\n\
    \x0c\n\x04\x04\x04\x02\x02\x12\x04\x97\x01\x08%\n\r\n\x05\x04\x04\x02\
    \x02\x04\x12\x04\x97\x01\x08\x10\n\r\n\x05\x04\x04\x02\x02\x05\x12\x04\
    \x97\x01\x11\x17\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\x97\x01\x18\x20\n\
    \r\n\x05\x04\x04\x02\x02\x03\x12\x04\x97\x01#$\n\x0c\n\x02\x04\x05\x12\
    \x06\x9a\x01\0\x9c\x01\x01\n\x0b\n\x03\x04\x05\x01\x12\x04\x9a\x01\x08\
    \x1d\n\x0c\n\x04\x04\x05\x02\0\x12\x04\x9b\x01\x081\n\r\n\x05\x04\x05\
    \x02\0\x04\x12\x04\x9b\x01\x08\x10\n\r\n\x05\x04\x05\x02\0\x06\x12\x04\
    \x9b\x01\x11#\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\x9b\x01$,\n\r\n\x05\
    \x04\x05\x02\0\x03\x12\x04\x9b\x01/0\
";

static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    file_descriptor_proto_lazy.get(|| {
        parse_descriptor_proto()
    })
}