/** GENERATED BY BENDEC TYPE GENERATOR */
#[allow(unused_imports)]
use serde::{Deserialize, Deserializer, Serialize, Serializer};

// primitive built-in: u8
// primitive built-in: u16
// primitive built-in: u32
// ignored: char

/// alias description
pub type Age = u8;

/// struct description
#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct Header {
  /// field description
  pub msg_type: u8,
}

#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct Uri {
  pub protocol: [u8; 10],
  pub host: [u8; 32],
  pub port: u16,
}

#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct User {
  pub first_name: [u8; 16],
  pub last_name: [u8; 16],
  pub uri: Uri,
  pub age: Age,
}

#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct UserExtra {
  pub first_name: [u8; 16],
  pub last_name: [u8; 16],
  pub uri: Uri,
  pub age: Age,
  pub uris: [Uri; 4],
}

#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct UserAdd {
  pub header: Header,
  pub user: User,
}

pub type CustomerAdd = UserAdd;

#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct Group {
  pub header: Header,
  pub ints: [u8; 8],
  pub users: [User; 5],
}

pub type Price = u32;

#[repr(C, packed)]
#[derive(Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields, default)]
pub struct Person {
  pub a: u16,
  pub b: u32,
  pub c: u32,
  pub d: u8,
}

#[repr(C, packed)]
#[derive(Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct LargeMessage {
  pub header: Header,
  pub person_1: Person,
  pub person_2: Person,
  pub aaa: u32,
  pub bbb: Price,
  pub ccc: u32,
  pub ddd: u32,
  pub eee: u32,
  pub fff: u8,
  pub ggg: u8,
  pub name_1: [u8; 64],
  pub name_2: [u8; 64],
  pub name_3: [u8; 64],
  pub name_4: [u8; 64],
}

