// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: rec_room/persistence/avatar_data.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace RecRoom.Protobuf {

  /// <summary>Holder for reflection information generated from rec_room/persistence/avatar_data.proto</summary>
  public static partial class AvatarDataReflection {

    #region Descriptor
    /// <summary>File descriptor for rec_room/persistence/avatar_data.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static AvatarDataReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiZyZWNfcm9vbS9wZXJzaXN0ZW5jZS9hdmF0YXJfZGF0YS5wcm90bxIIcmVj",
            "X3Jvb20aFGNvcmUvZ3VpZF9kYXRhLnByb3RvGhdjb3JlL3ZlY3RvcjNfZGF0",
            "YS5wcm90bxoXY29yZS92ZWN0b3IyX2RhdGEucHJvdG8aFWNvcmUvY29sb3Jf",
            "ZGF0YS5wcm90bxoaY29yZS9tZXNzYWdlX29wdGlvbnMucHJvdG8aKHJlY19y",
            "b29tL3JlY19uZXQvdWdjX2FjY2Vzc2liaWxpdHkucHJvdG8ipQYKCkF2YXRh",
            "ckRhdGESLwoOYXZhdGFyX3ZlcnNpb24YASABKA4yFy5yZWNfcm9vbS5BdmF0",
            "YXJWZXJzaW9uEjoKEW91dGZpdF9zZWxlY3Rpb25zGAIgAygLMh8ucmVjX3Jv",
            "b20uQm9keVBhcnRTZWxlY3Rpb25EYXRhEiIKCnNraW5fY29sb3IYAyABKAsy",
            "Di5jb3JlLkd1aWREYXRhEiUKDWJvZHlfc2hhcGVfaWQYBCABKAsyDi5jb3Jl",
            "Lkd1aWREYXRhEhEKCWhpZGVfZWFycxgFIAEoCBIyCg91c2VfaGVsbWV0X2hh",
            "aXIYBiABKA4yGS5yZWNfcm9vbS5IZWxtZXRIYWlyU3RhdGUSHQoVdXNlX2hh",
            "dF9hbmNob3JfcGFyYW1zGAcgASgIEjUKEWhhdF9hbmNob3JfcGFyYW1zGAgg",
            "ASgLMhoucmVjX3Jvb20uQW5jaG9yUGFyYW1zRGF0YRJMChtmYWNlX2N1c3Rv",
            "bWl6YXRpb25fc2V0dGluZ3MYCSABKAsyJy5yZWNfcm9vbS5GYWNlQ3VzdG9t",
            "aXphdGlvblNldHRpbmdzRGF0YRIlCgloYWlyX2RhdGEYCiABKAsyEi5yZWNf",
            "cm9vbS5IYWlyRGF0YRImCgpiZWFyZF9kYXRhGAsgASgLMhIucmVjX3Jvb20u",
            "SGFpckRhdGESMgoQYXZhdGFyX2JvZHlfdHlwZRgMIAEoDjIYLnJlY19yb29t",
            "LkF2YXRhckJvZHlUeXBlEjYKEmJvZHlfcHJvcGVydHlfZGF0YRgNIAEoCzIa",
            "LnJlY19yb29tLkJvZHlQcm9wZXJ0eURhdGESNgoSZmFjZV9wcm9wZXJ0eV9k",
            "YXRhGA4gASgLMhoucmVjX3Jvb20uRmFjZVByb3BlcnR5RGF0YRI2ChJub3Nl",
            "X3Byb3BlcnR5X2RhdGEYDyABKAsyGi5yZWNfcm9vbS5Ob3NlUHJvcGVydHlE",
            "YXRhEiIKCmJvZHlfcGFpbnQYECABKAsyDi5jb3JlLkd1aWREYXRhEiUKCWF1",
            "cmFfZGF0YRgRIAEoCzISLnJlY19yb29tLkF1cmFEYXRhIqkBCg9TYXZlZE91",
            "dGZpdERhdGESKQoLYXZhdGFyX2RhdGEYASABKAsyFC5yZWNfcm9vbS5BdmF0",
            "YXJEYXRhEgwKBG5hbWUYAiABKAkSDAoEc2xvdBgDIAEoBRIcChR0aHVtYm5h",
            "aWxfaW1hZ2VfbmFtZRgEIAEoCRIxCg1hY2Nlc3NpYmlsaXR5GAUgASgOMhou",
            "cmVjX3Jvb20uVWdjQWNjZXNzaWJpbGl0eSKMAQoISGFpckRhdGESKAoQcHJp",
            "bWFyeV9jb2xvcl9pZBgBIAEoCzIOLmNvcmUuR3VpZERhdGESKgoSc2Vjb25k",
            "YXJ5X2NvbG9yX2lkGAIgASgLMg4uY29yZS5HdWlkRGF0YRIqChJwYXR0ZXJu",
            "X3RleHR1cmVfaWQYAyABKAsyDi5jb3JlLkd1aWREYXRhInwKFUJvZHlQYXJ0",
            "U2VsZWN0aW9uRGF0YRIpCg1yYXdfYm9keV9wYXJ0GAEgASgOMhIucmVjX3Jv",
            "b20uQm9keVBhcnQSOAoLYXZhdGFyX2l0ZW0YAiABKAsyIy5yZWNfcm9vbS5B",
            "dmF0YXJJdGVtRGVzY3JpcHRpb25EYXRhItsBChlBdmF0YXJJdGVtRGVzY3Jp",
            "cHRpb25EYXRhEiYKDmF2YXRhcl9pdGVtX2lkGAEgASgLMg4uY29yZS5HdWlk",
            "RGF0YRIvChdhdmF0YXJfaXRlbV9tYXRlcmlhbF9pZBgCIAEoCzIOLmNvcmUu",
            "R3VpZERhdGESLQoVY3VzdG9tX2F2YXRhcl9pdGVtX2lkGAMgASgLMg4uY29y",
            "ZS5HdWlkRGF0YRI2Ch1jdXN0b21fYXZhdGFyX2l0ZW1fYmFzZV9jb2xvchgE",
            "IAEoCzIPLmNvcmUuQ29sb3JEYXRhIpsDCh1GYWNlQ3VzdG9taXphdGlvblNl",
            "dHRpbmdzRGF0YRJECgxleWVfc2V0dGluZ3MYASABKAsyLi5yZWNfcm9vbS5G",
            "YWNlRmVhdHVyZUN1c3RvbWl6YXRpb25TZXR0aW5nc0RhdGESSgoSZXllX2Jy",
            "b3dzX3NldHRpbmdzGAIgASgLMi4ucmVjX3Jvb20uRmFjZUZlYXR1cmVDdXN0",
            "b21pemF0aW9uU2V0dGluZ3NEYXRhEkYKDm1vdXRoX3NldHRpbmdzGAMgASgL",
            "Mi4ucmVjX3Jvb20uRmFjZUZlYXR1cmVDdXN0b21pemF0aW9uU2V0dGluZ3NE",
            "YXRhEiUKDWZhY2Vfc2hhcGVfaWQYBCABKAsyDi5jb3JlLkd1aWREYXRhEkUK",
            "DW5vc2Vfc2V0dGluZ3MYBSABKAsyLi5yZWNfcm9vbS5GYWNlRmVhdHVyZUN1",
            "c3RvbWl6YXRpb25TZXR0aW5nc0RhdGESEgoKaGVhZF9zY2FsZRgGIAEoAhIe",
            "ChZtb2Rlcm5fYmVhbl9oZWFkX3NjYWxlGAcgASgCIrQCChBCb2R5UHJvcGVy",
            "dHlEYXRhEhMKC2JpY2VwX3dpZHRoGAEgASgCEhUKDWZvcmVhcm1fd2lkdGgY",
            "AiABKAISEgoKY2hlc3Rfc2l6ZRgDIAEoAhIRCgljaGVzdF9vdXQYBCABKAIS",
            "EgoKd2Fpc3Rfc2l6ZRgFIAEoAhIRCgloaXBfd2lkdGgYBiABKAISEwoLbmVj",
            "a19sZW5ndGgYByABKAISFgoObmVja190aGlja25lc3MYCCABKAISEwoLdGhp",
            "Z2hfd2lkdGgYCSABKAISEgoKY2FsZl93aWR0aBgKIAEoAhISCgpmb290X3dp",
            "ZHRoGAsgASgCEhEKCWZvb3Rfc2l6ZRgMIAEoAhIWCg5zaG91bGRlcl93aWR0",
            "aBgNIAEoAhIRCgliZWxseV9vdXQYDiABKAIirwEKEEZhY2VQcm9wZXJ0eURh",
            "dGESEgoKY2hlZWtfcHVmZhgBIAEoAhIRCglqYXdfd2lkdGgYAiABKAISEgoK",
            "amF3X2luX291dBgDIAEoAhISCgpjaGluX3dpZHRoGAQgASgCEhEKCWNoaW5f",
            "c2l6ZRgFIAEoAhIQCghlYXJfc2l6ZRgGIAEoAhIRCgllYXJfYW5nbGUYByAB",
            "KAISFAoMaGVhZF9zdHJldGNoGAggASgCIr4BChBOb3NlUHJvcGVydHlEYXRh",
            "EhIKCm5vc2Vfd2lkdGgYASABKAISEwoLbm9zZV9oZWlnaHQYAiABKAISEwoL",
            "bm9zZV9sZW5ndGgYAyABKAISEgoKbm9zZV9hbmdsZRgEIAEoAhISCgpub3Nl",
            "X2J1bGdlGAUgASgCEhgKEG5vc2VfcGluY2hfZmxhaXIYBiABKAISEgoKbm9z",
            "ZV9zbmVlchgHIAEoAhIWCg5ub3NlX3RpcF9zY2FsZRgIIAEoAiKmAQokRmFj",
            "ZUZlYXR1cmVDdXN0b21pemF0aW9uU2V0dGluZ3NEYXRhEhoKAmlkGAEgASgL",
            "Mg4uY29yZS5HdWlkRGF0YRIqCg9wb3NpdGlvbl9vZmZzZXQYAiABKAsyES5j",
            "b3JlLlZlY3RvcjJEYXRhEhQKDHNjYWxlX29mZnNldBgDIAEoAhIQCghyb3Rh",
            "dGlvbhgEIAEoAhIOCgZhc3BlY3QYBSABKAIiogEKEEFuY2hvclBhcmFtc0Rh",
            "dGESLgoTbm9ybWFsaXplZF9wb3NpdGlvbhgBIAEoCzIRLmNvcmUuVmVjdG9y",
            "MkRhdGESLQoSaGVtaXNwaGVyZV9vZmZzZXRzGAIgASgLMhEuY29yZS5WZWN0",
            "b3IzRGF0YRIvChRoZW1pc3BoZXJlX3JvdGF0aW9ucxgDIAEoCzIRLmNvcmUu",
            "VmVjdG9yM0RhdGEiFgoIQXVyYURhdGESCgoCaWQYASABKAUqMwoPSGVsbWV0",
            "SGFpclN0YXRlEg8KC0xlZ2FjeV9IaWRlEAASBgoCT24QARIHCgNPZmYQAiqa",
            "AQoIQm9keVBhcnQSCAoETm9uZRAAEggKBEhlYWQQARIJCgVUb3JzbxACEgwK",
            "CExlZnRIYW5kEAMSDQoJUmlnaHRIYW5kEAQSCQoFTW91dGgQBRIICgRMZWdz",
            "EAYSDAoITGVmdEZvb3QQBxINCglSaWdodEZvb3QQCBIMCghGdWxsQm9keRAJ",
            "EggKBE5vc2UQChIICgRGYWNlEAsqXAoOQXZhdGFyQm9keVR5cGUSGAoURmxv",
            "YXRpbmdCZWFuQm9keVR5cGUQABIQCgxGdWxsQm9keVR5cGUQARIeChpNb2Rl",
            "cm5GbG9hdGluZ0JlYW5Cb2R5VHlwZRACKoICCg1BdmF0YXJWZXJzaW9uEgoK",
            "BkxlZ2FjeRAAEgwKCFZlcnNpb24xEAESFQoRQWRkZWROb3NlU2V0dGluZ3MQ",
            "AhISCg5BZGRlZEhlYWRTY2FsZRADEhwKGEFkZGVkTW9kZXJuQmVhbkhlYWRT",
            "Y2FsZRAEEhcKE0FkZGVkQm9keVByb3BlcnRpZXMQBRIXChNBZGRlZEZhY2VQ",
            "cm9wZXJ0aWVzEAYSFwoTQWRkZWROb3NlUHJvcGVydGllcxAHEhwKGFVwZGF0",
            "ZWRIZWFkQW5kTm9zZVJhbmdlcxAIEhIKDkFkZGVkQm9keVBhaW50EAkSEQoN",
            "QWRkZWRBdXJhRGF0YRAKQhOqAhBSZWNSb29tLlByb3RvYnVmYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::RecRoom.Protobuf.Core.GuidDataReflection.Descriptor, global::RecRoom.Protobuf.Core.Vector3DataReflection.Descriptor, global::RecRoom.Protobuf.Core.Vector2DataReflection.Descriptor, global::RecRoom.Protobuf.Core.ColorDataReflection.Descriptor, global::RecRoom.Protobuf.Core.MessageOptionsReflection.Descriptor, global::RecNet.Protobuf.UgcAccessibilityReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::RecRoom.Protobuf.HelmetHairState), typeof(global::RecRoom.Protobuf.BodyPart), typeof(global::RecRoom.Protobuf.AvatarBodyType), typeof(global::RecRoom.Protobuf.AvatarVersion), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.AvatarData), global::RecRoom.Protobuf.AvatarData.Parser, new[]{ "AvatarVersion", "OutfitSelections", "SkinColor", "BodyShapeId", "HideEars", "UseHelmetHair", "UseHatAnchorParams", "HatAnchorParams", "FaceCustomizationSettings", "HairData", "BeardData", "AvatarBodyType", "BodyPropertyData", "FacePropertyData", "NosePropertyData", "BodyPaint", "AuraData" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.SavedOutfitData), global::RecRoom.Protobuf.SavedOutfitData.Parser, new[]{ "AvatarData", "Name", "Slot", "ThumbnailImageName", "Accessibility" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.HairData), global::RecRoom.Protobuf.HairData.Parser, new[]{ "PrimaryColorId", "SecondaryColorId", "PatternTextureId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.BodyPartSelectionData), global::RecRoom.Protobuf.BodyPartSelectionData.Parser, new[]{ "RawBodyPart", "AvatarItem" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.AvatarItemDescriptionData), global::RecRoom.Protobuf.AvatarItemDescriptionData.Parser, new[]{ "AvatarItemId", "AvatarItemMaterialId", "CustomAvatarItemId", "CustomAvatarItemBaseColor" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.FaceCustomizationSettingsData), global::RecRoom.Protobuf.FaceCustomizationSettingsData.Parser, new[]{ "EyeSettings", "EyeBrowsSettings", "MouthSettings", "FaceShapeId", "NoseSettings", "HeadScale", "ModernBeanHeadScale" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.BodyPropertyData), global::RecRoom.Protobuf.BodyPropertyData.Parser, new[]{ "BicepWidth", "ForearmWidth", "ChestSize", "ChestOut", "WaistSize", "HipWidth", "NeckLength", "NeckThickness", "ThighWidth", "CalfWidth", "FootWidth", "FootSize", "ShoulderWidth", "BellyOut" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.FacePropertyData), global::RecRoom.Protobuf.FacePropertyData.Parser, new[]{ "CheekPuff", "JawWidth", "JawInOut", "ChinWidth", "ChinSize", "EarSize", "EarAngle", "HeadStretch" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.NosePropertyData), global::RecRoom.Protobuf.NosePropertyData.Parser, new[]{ "NoseWidth", "NoseHeight", "NoseLength", "NoseAngle", "NoseBulge", "NosePinchFlair", "NoseSneer", "NoseTipScale" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData), global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData.Parser, new[]{ "Id", "PositionOffset", "ScaleOffset", "Rotation", "Aspect" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.AnchorParamsData), global::RecRoom.Protobuf.AnchorParamsData.Parser, new[]{ "NormalizedPosition", "HemisphereOffsets", "HemisphereRotations" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.AuraData), global::RecRoom.Protobuf.AuraData.Parser, new[]{ "Id" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum HelmetHairState {
    [pbr::OriginalName("Legacy_Hide")] LegacyHide = 0,
    [pbr::OriginalName("On")] On = 1,
    [pbr::OriginalName("Off")] Off = 2,
  }

  public enum BodyPart {
    [pbr::OriginalName("None")] None = 0,
    [pbr::OriginalName("Head")] Head = 1,
    [pbr::OriginalName("Torso")] Torso = 2,
    [pbr::OriginalName("LeftHand")] LeftHand = 3,
    [pbr::OriginalName("RightHand")] RightHand = 4,
    [pbr::OriginalName("Mouth")] Mouth = 5,
    [pbr::OriginalName("Legs")] Legs = 6,
    [pbr::OriginalName("LeftFoot")] LeftFoot = 7,
    [pbr::OriginalName("RightFoot")] RightFoot = 8,
    [pbr::OriginalName("FullBody")] FullBody = 9,
    [pbr::OriginalName("Nose")] Nose = 10,
    [pbr::OriginalName("Face")] Face = 11,
  }

  public enum AvatarBodyType {
    [pbr::OriginalName("FloatingBeanBodyType")] FloatingBeanBodyType = 0,
    [pbr::OriginalName("FullBodyType")] FullBodyType = 1,
    [pbr::OriginalName("ModernFloatingBeanBodyType")] ModernFloatingBeanBodyType = 2,
  }

  public enum AvatarVersion {
    [pbr::OriginalName("Legacy")] Legacy = 0,
    [pbr::OriginalName("Version1")] Version1 = 1,
    [pbr::OriginalName("AddedNoseSettings")] AddedNoseSettings = 2,
    [pbr::OriginalName("AddedHeadScale")] AddedHeadScale = 3,
    [pbr::OriginalName("AddedModernBeanHeadScale")] AddedModernBeanHeadScale = 4,
    [pbr::OriginalName("AddedBodyProperties")] AddedBodyProperties = 5,
    [pbr::OriginalName("AddedFaceProperties")] AddedFaceProperties = 6,
    [pbr::OriginalName("AddedNoseProperties")] AddedNoseProperties = 7,
    [pbr::OriginalName("UpdatedHeadAndNoseRanges")] UpdatedHeadAndNoseRanges = 8,
    [pbr::OriginalName("AddedBodyPaint")] AddedBodyPaint = 9,
    [pbr::OriginalName("AddedAuraData")] AddedAuraData = 10,
  }

  #endregion

  #region Messages
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AvatarData : pb::IMessage<AvatarData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AvatarData> _parser = new pb::MessageParser<AvatarData>(() => new AvatarData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AvatarData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AvatarData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AvatarData(AvatarData other) : this() {
      avatarVersion_ = other.avatarVersion_;
      outfitSelections_ = other.outfitSelections_.Clone();
      skinColor_ = other.skinColor_ != null ? other.skinColor_.Clone() : null;
      bodyShapeId_ = other.bodyShapeId_ != null ? other.bodyShapeId_.Clone() : null;
      hideEars_ = other.hideEars_;
      useHelmetHair_ = other.useHelmetHair_;
      useHatAnchorParams_ = other.useHatAnchorParams_;
      hatAnchorParams_ = other.hatAnchorParams_ != null ? other.hatAnchorParams_.Clone() : null;
      faceCustomizationSettings_ = other.faceCustomizationSettings_ != null ? other.faceCustomizationSettings_.Clone() : null;
      hairData_ = other.hairData_ != null ? other.hairData_.Clone() : null;
      beardData_ = other.beardData_ != null ? other.beardData_.Clone() : null;
      avatarBodyType_ = other.avatarBodyType_;
      bodyPropertyData_ = other.bodyPropertyData_ != null ? other.bodyPropertyData_.Clone() : null;
      facePropertyData_ = other.facePropertyData_ != null ? other.facePropertyData_.Clone() : null;
      nosePropertyData_ = other.nosePropertyData_ != null ? other.nosePropertyData_.Clone() : null;
      bodyPaint_ = other.bodyPaint_ != null ? other.bodyPaint_.Clone() : null;
      auraData_ = other.auraData_ != null ? other.auraData_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AvatarData Clone() {
      return new AvatarData(this);
    }

    /// <summary>Field number for the "avatar_version" field.</summary>
    public const int AvatarVersionFieldNumber = 1;
    private global::RecRoom.Protobuf.AvatarVersion avatarVersion_ = global::RecRoom.Protobuf.AvatarVersion.Legacy;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AvatarVersion AvatarVersion {
      get { return avatarVersion_; }
      set {
        avatarVersion_ = value;
      }
    }

    /// <summary>Field number for the "outfit_selections" field.</summary>
    public const int OutfitSelectionsFieldNumber = 2;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.BodyPartSelectionData> _repeated_outfitSelections_codec
        = pb::FieldCodec.ForMessage(18, global::RecRoom.Protobuf.BodyPartSelectionData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.BodyPartSelectionData> outfitSelections_ = new pbc::RepeatedField<global::RecRoom.Protobuf.BodyPartSelectionData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.BodyPartSelectionData> OutfitSelections {
      get { return outfitSelections_; }
    }

    /// <summary>Field number for the "skin_color" field.</summary>
    public const int SkinColorFieldNumber = 3;
    private global::RecRoom.Protobuf.Core.GuidData skinColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData SkinColor {
      get { return skinColor_; }
      set {
        skinColor_ = value;
      }
    }

    /// <summary>Field number for the "body_shape_id" field.</summary>
    public const int BodyShapeIdFieldNumber = 4;
    private global::RecRoom.Protobuf.Core.GuidData bodyShapeId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData BodyShapeId {
      get { return bodyShapeId_; }
      set {
        bodyShapeId_ = value;
      }
    }

    /// <summary>Field number for the "hide_ears" field.</summary>
    public const int HideEarsFieldNumber = 5;
    private bool hideEars_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HideEars {
      get { return hideEars_; }
      set {
        hideEars_ = value;
      }
    }

    /// <summary>Field number for the "use_helmet_hair" field.</summary>
    public const int UseHelmetHairFieldNumber = 6;
    private global::RecRoom.Protobuf.HelmetHairState useHelmetHair_ = global::RecRoom.Protobuf.HelmetHairState.LegacyHide;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.HelmetHairState UseHelmetHair {
      get { return useHelmetHair_; }
      set {
        useHelmetHair_ = value;
      }
    }

    /// <summary>Field number for the "use_hat_anchor_params" field.</summary>
    public const int UseHatAnchorParamsFieldNumber = 7;
    private bool useHatAnchorParams_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool UseHatAnchorParams {
      get { return useHatAnchorParams_; }
      set {
        useHatAnchorParams_ = value;
      }
    }

    /// <summary>Field number for the "hat_anchor_params" field.</summary>
    public const int HatAnchorParamsFieldNumber = 8;
    private global::RecRoom.Protobuf.AnchorParamsData hatAnchorParams_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AnchorParamsData HatAnchorParams {
      get { return hatAnchorParams_; }
      set {
        hatAnchorParams_ = value;
      }
    }

    /// <summary>Field number for the "face_customization_settings" field.</summary>
    public const int FaceCustomizationSettingsFieldNumber = 9;
    private global::RecRoom.Protobuf.FaceCustomizationSettingsData faceCustomizationSettings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.FaceCustomizationSettingsData FaceCustomizationSettings {
      get { return faceCustomizationSettings_; }
      set {
        faceCustomizationSettings_ = value;
      }
    }

    /// <summary>Field number for the "hair_data" field.</summary>
    public const int HairDataFieldNumber = 10;
    private global::RecRoom.Protobuf.HairData hairData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.HairData HairData {
      get { return hairData_; }
      set {
        hairData_ = value;
      }
    }

    /// <summary>Field number for the "beard_data" field.</summary>
    public const int BeardDataFieldNumber = 11;
    private global::RecRoom.Protobuf.HairData beardData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.HairData BeardData {
      get { return beardData_; }
      set {
        beardData_ = value;
      }
    }

    /// <summary>Field number for the "avatar_body_type" field.</summary>
    public const int AvatarBodyTypeFieldNumber = 12;
    private global::RecRoom.Protobuf.AvatarBodyType avatarBodyType_ = global::RecRoom.Protobuf.AvatarBodyType.FloatingBeanBodyType;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AvatarBodyType AvatarBodyType {
      get { return avatarBodyType_; }
      set {
        avatarBodyType_ = value;
      }
    }

    /// <summary>Field number for the "body_property_data" field.</summary>
    public const int BodyPropertyDataFieldNumber = 13;
    private global::RecRoom.Protobuf.BodyPropertyData bodyPropertyData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.BodyPropertyData BodyPropertyData {
      get { return bodyPropertyData_; }
      set {
        bodyPropertyData_ = value;
      }
    }

    /// <summary>Field number for the "face_property_data" field.</summary>
    public const int FacePropertyDataFieldNumber = 14;
    private global::RecRoom.Protobuf.FacePropertyData facePropertyData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.FacePropertyData FacePropertyData {
      get { return facePropertyData_; }
      set {
        facePropertyData_ = value;
      }
    }

    /// <summary>Field number for the "nose_property_data" field.</summary>
    public const int NosePropertyDataFieldNumber = 15;
    private global::RecRoom.Protobuf.NosePropertyData nosePropertyData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.NosePropertyData NosePropertyData {
      get { return nosePropertyData_; }
      set {
        nosePropertyData_ = value;
      }
    }

    /// <summary>Field number for the "body_paint" field.</summary>
    public const int BodyPaintFieldNumber = 16;
    private global::RecRoom.Protobuf.Core.GuidData bodyPaint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData BodyPaint {
      get { return bodyPaint_; }
      set {
        bodyPaint_ = value;
      }
    }

    /// <summary>Field number for the "aura_data" field.</summary>
    public const int AuraDataFieldNumber = 17;
    private global::RecRoom.Protobuf.AuraData auraData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AuraData AuraData {
      get { return auraData_; }
      set {
        auraData_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AvatarData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AvatarData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AvatarVersion != other.AvatarVersion) return false;
      if(!outfitSelections_.Equals(other.outfitSelections_)) return false;
      if (!object.Equals(SkinColor, other.SkinColor)) return false;
      if (!object.Equals(BodyShapeId, other.BodyShapeId)) return false;
      if (HideEars != other.HideEars) return false;
      if (UseHelmetHair != other.UseHelmetHair) return false;
      if (UseHatAnchorParams != other.UseHatAnchorParams) return false;
      if (!object.Equals(HatAnchorParams, other.HatAnchorParams)) return false;
      if (!object.Equals(FaceCustomizationSettings, other.FaceCustomizationSettings)) return false;
      if (!object.Equals(HairData, other.HairData)) return false;
      if (!object.Equals(BeardData, other.BeardData)) return false;
      if (AvatarBodyType != other.AvatarBodyType) return false;
      if (!object.Equals(BodyPropertyData, other.BodyPropertyData)) return false;
      if (!object.Equals(FacePropertyData, other.FacePropertyData)) return false;
      if (!object.Equals(NosePropertyData, other.NosePropertyData)) return false;
      if (!object.Equals(BodyPaint, other.BodyPaint)) return false;
      if (!object.Equals(AuraData, other.AuraData)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AvatarVersion != global::RecRoom.Protobuf.AvatarVersion.Legacy) hash ^= AvatarVersion.GetHashCode();
      hash ^= outfitSelections_.GetHashCode();
      if (skinColor_ != null) hash ^= SkinColor.GetHashCode();
      if (bodyShapeId_ != null) hash ^= BodyShapeId.GetHashCode();
      if (HideEars != false) hash ^= HideEars.GetHashCode();
      if (UseHelmetHair != global::RecRoom.Protobuf.HelmetHairState.LegacyHide) hash ^= UseHelmetHair.GetHashCode();
      if (UseHatAnchorParams != false) hash ^= UseHatAnchorParams.GetHashCode();
      if (hatAnchorParams_ != null) hash ^= HatAnchorParams.GetHashCode();
      if (faceCustomizationSettings_ != null) hash ^= FaceCustomizationSettings.GetHashCode();
      if (hairData_ != null) hash ^= HairData.GetHashCode();
      if (beardData_ != null) hash ^= BeardData.GetHashCode();
      if (AvatarBodyType != global::RecRoom.Protobuf.AvatarBodyType.FloatingBeanBodyType) hash ^= AvatarBodyType.GetHashCode();
      if (bodyPropertyData_ != null) hash ^= BodyPropertyData.GetHashCode();
      if (facePropertyData_ != null) hash ^= FacePropertyData.GetHashCode();
      if (nosePropertyData_ != null) hash ^= NosePropertyData.GetHashCode();
      if (bodyPaint_ != null) hash ^= BodyPaint.GetHashCode();
      if (auraData_ != null) hash ^= AuraData.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AvatarVersion != global::RecRoom.Protobuf.AvatarVersion.Legacy) {
        output.WriteRawTag(8);
        output.WriteEnum((int) AvatarVersion);
      }
      outfitSelections_.WriteTo(output, _repeated_outfitSelections_codec);
      if (skinColor_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SkinColor);
      }
      if (bodyShapeId_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(BodyShapeId);
      }
      if (HideEars != false) {
        output.WriteRawTag(40);
        output.WriteBool(HideEars);
      }
      if (UseHelmetHair != global::RecRoom.Protobuf.HelmetHairState.LegacyHide) {
        output.WriteRawTag(48);
        output.WriteEnum((int) UseHelmetHair);
      }
      if (UseHatAnchorParams != false) {
        output.WriteRawTag(56);
        output.WriteBool(UseHatAnchorParams);
      }
      if (hatAnchorParams_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(HatAnchorParams);
      }
      if (faceCustomizationSettings_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(FaceCustomizationSettings);
      }
      if (hairData_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(HairData);
      }
      if (beardData_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(BeardData);
      }
      if (AvatarBodyType != global::RecRoom.Protobuf.AvatarBodyType.FloatingBeanBodyType) {
        output.WriteRawTag(96);
        output.WriteEnum((int) AvatarBodyType);
      }
      if (bodyPropertyData_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(BodyPropertyData);
      }
      if (facePropertyData_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(FacePropertyData);
      }
      if (nosePropertyData_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(NosePropertyData);
      }
      if (bodyPaint_ != null) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(BodyPaint);
      }
      if (auraData_ != null) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(AuraData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AvatarVersion != global::RecRoom.Protobuf.AvatarVersion.Legacy) {
        output.WriteRawTag(8);
        output.WriteEnum((int) AvatarVersion);
      }
      outfitSelections_.WriteTo(ref output, _repeated_outfitSelections_codec);
      if (skinColor_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SkinColor);
      }
      if (bodyShapeId_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(BodyShapeId);
      }
      if (HideEars != false) {
        output.WriteRawTag(40);
        output.WriteBool(HideEars);
      }
      if (UseHelmetHair != global::RecRoom.Protobuf.HelmetHairState.LegacyHide) {
        output.WriteRawTag(48);
        output.WriteEnum((int) UseHelmetHair);
      }
      if (UseHatAnchorParams != false) {
        output.WriteRawTag(56);
        output.WriteBool(UseHatAnchorParams);
      }
      if (hatAnchorParams_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(HatAnchorParams);
      }
      if (faceCustomizationSettings_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(FaceCustomizationSettings);
      }
      if (hairData_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(HairData);
      }
      if (beardData_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(BeardData);
      }
      if (AvatarBodyType != global::RecRoom.Protobuf.AvatarBodyType.FloatingBeanBodyType) {
        output.WriteRawTag(96);
        output.WriteEnum((int) AvatarBodyType);
      }
      if (bodyPropertyData_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(BodyPropertyData);
      }
      if (facePropertyData_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(FacePropertyData);
      }
      if (nosePropertyData_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(NosePropertyData);
      }
      if (bodyPaint_ != null) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(BodyPaint);
      }
      if (auraData_ != null) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(AuraData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AvatarVersion != global::RecRoom.Protobuf.AvatarVersion.Legacy) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AvatarVersion);
      }
      size += outfitSelections_.CalculateSize(_repeated_outfitSelections_codec);
      if (skinColor_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SkinColor);
      }
      if (bodyShapeId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BodyShapeId);
      }
      if (HideEars != false) {
        size += 1 + 1;
      }
      if (UseHelmetHair != global::RecRoom.Protobuf.HelmetHairState.LegacyHide) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UseHelmetHair);
      }
      if (UseHatAnchorParams != false) {
        size += 1 + 1;
      }
      if (hatAnchorParams_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(HatAnchorParams);
      }
      if (faceCustomizationSettings_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FaceCustomizationSettings);
      }
      if (hairData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(HairData);
      }
      if (beardData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BeardData);
      }
      if (AvatarBodyType != global::RecRoom.Protobuf.AvatarBodyType.FloatingBeanBodyType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AvatarBodyType);
      }
      if (bodyPropertyData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BodyPropertyData);
      }
      if (facePropertyData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FacePropertyData);
      }
      if (nosePropertyData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(NosePropertyData);
      }
      if (bodyPaint_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(BodyPaint);
      }
      if (auraData_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AuraData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AvatarData other) {
      if (other == null) {
        return;
      }
      if (other.AvatarVersion != global::RecRoom.Protobuf.AvatarVersion.Legacy) {
        AvatarVersion = other.AvatarVersion;
      }
      outfitSelections_.Add(other.outfitSelections_);
      if (other.skinColor_ != null) {
        if (skinColor_ == null) {
          SkinColor = new global::RecRoom.Protobuf.Core.GuidData();
        }
        SkinColor.MergeFrom(other.SkinColor);
      }
      if (other.bodyShapeId_ != null) {
        if (bodyShapeId_ == null) {
          BodyShapeId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        BodyShapeId.MergeFrom(other.BodyShapeId);
      }
      if (other.HideEars != false) {
        HideEars = other.HideEars;
      }
      if (other.UseHelmetHair != global::RecRoom.Protobuf.HelmetHairState.LegacyHide) {
        UseHelmetHair = other.UseHelmetHair;
      }
      if (other.UseHatAnchorParams != false) {
        UseHatAnchorParams = other.UseHatAnchorParams;
      }
      if (other.hatAnchorParams_ != null) {
        if (hatAnchorParams_ == null) {
          HatAnchorParams = new global::RecRoom.Protobuf.AnchorParamsData();
        }
        HatAnchorParams.MergeFrom(other.HatAnchorParams);
      }
      if (other.faceCustomizationSettings_ != null) {
        if (faceCustomizationSettings_ == null) {
          FaceCustomizationSettings = new global::RecRoom.Protobuf.FaceCustomizationSettingsData();
        }
        FaceCustomizationSettings.MergeFrom(other.FaceCustomizationSettings);
      }
      if (other.hairData_ != null) {
        if (hairData_ == null) {
          HairData = new global::RecRoom.Protobuf.HairData();
        }
        HairData.MergeFrom(other.HairData);
      }
      if (other.beardData_ != null) {
        if (beardData_ == null) {
          BeardData = new global::RecRoom.Protobuf.HairData();
        }
        BeardData.MergeFrom(other.BeardData);
      }
      if (other.AvatarBodyType != global::RecRoom.Protobuf.AvatarBodyType.FloatingBeanBodyType) {
        AvatarBodyType = other.AvatarBodyType;
      }
      if (other.bodyPropertyData_ != null) {
        if (bodyPropertyData_ == null) {
          BodyPropertyData = new global::RecRoom.Protobuf.BodyPropertyData();
        }
        BodyPropertyData.MergeFrom(other.BodyPropertyData);
      }
      if (other.facePropertyData_ != null) {
        if (facePropertyData_ == null) {
          FacePropertyData = new global::RecRoom.Protobuf.FacePropertyData();
        }
        FacePropertyData.MergeFrom(other.FacePropertyData);
      }
      if (other.nosePropertyData_ != null) {
        if (nosePropertyData_ == null) {
          NosePropertyData = new global::RecRoom.Protobuf.NosePropertyData();
        }
        NosePropertyData.MergeFrom(other.NosePropertyData);
      }
      if (other.bodyPaint_ != null) {
        if (bodyPaint_ == null) {
          BodyPaint = new global::RecRoom.Protobuf.Core.GuidData();
        }
        BodyPaint.MergeFrom(other.BodyPaint);
      }
      if (other.auraData_ != null) {
        if (auraData_ == null) {
          AuraData = new global::RecRoom.Protobuf.AuraData();
        }
        AuraData.MergeFrom(other.AuraData);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            AvatarVersion = (global::RecRoom.Protobuf.AvatarVersion) input.ReadEnum();
            break;
          }
          case 18: {
            outfitSelections_.AddEntriesFrom(input, _repeated_outfitSelections_codec);
            break;
          }
          case 26: {
            if (skinColor_ == null) {
              SkinColor = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(SkinColor);
            break;
          }
          case 34: {
            if (bodyShapeId_ == null) {
              BodyShapeId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(BodyShapeId);
            break;
          }
          case 40: {
            HideEars = input.ReadBool();
            break;
          }
          case 48: {
            UseHelmetHair = (global::RecRoom.Protobuf.HelmetHairState) input.ReadEnum();
            break;
          }
          case 56: {
            UseHatAnchorParams = input.ReadBool();
            break;
          }
          case 66: {
            if (hatAnchorParams_ == null) {
              HatAnchorParams = new global::RecRoom.Protobuf.AnchorParamsData();
            }
            input.ReadMessage(HatAnchorParams);
            break;
          }
          case 74: {
            if (faceCustomizationSettings_ == null) {
              FaceCustomizationSettings = new global::RecRoom.Protobuf.FaceCustomizationSettingsData();
            }
            input.ReadMessage(FaceCustomizationSettings);
            break;
          }
          case 82: {
            if (hairData_ == null) {
              HairData = new global::RecRoom.Protobuf.HairData();
            }
            input.ReadMessage(HairData);
            break;
          }
          case 90: {
            if (beardData_ == null) {
              BeardData = new global::RecRoom.Protobuf.HairData();
            }
            input.ReadMessage(BeardData);
            break;
          }
          case 96: {
            AvatarBodyType = (global::RecRoom.Protobuf.AvatarBodyType) input.ReadEnum();
            break;
          }
          case 106: {
            if (bodyPropertyData_ == null) {
              BodyPropertyData = new global::RecRoom.Protobuf.BodyPropertyData();
            }
            input.ReadMessage(BodyPropertyData);
            break;
          }
          case 114: {
            if (facePropertyData_ == null) {
              FacePropertyData = new global::RecRoom.Protobuf.FacePropertyData();
            }
            input.ReadMessage(FacePropertyData);
            break;
          }
          case 122: {
            if (nosePropertyData_ == null) {
              NosePropertyData = new global::RecRoom.Protobuf.NosePropertyData();
            }
            input.ReadMessage(NosePropertyData);
            break;
          }
          case 130: {
            if (bodyPaint_ == null) {
              BodyPaint = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(BodyPaint);
            break;
          }
          case 138: {
            if (auraData_ == null) {
              AuraData = new global::RecRoom.Protobuf.AuraData();
            }
            input.ReadMessage(AuraData);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            AvatarVersion = (global::RecRoom.Protobuf.AvatarVersion) input.ReadEnum();
            break;
          }
          case 18: {
            outfitSelections_.AddEntriesFrom(ref input, _repeated_outfitSelections_codec);
            break;
          }
          case 26: {
            if (skinColor_ == null) {
              SkinColor = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(SkinColor);
            break;
          }
          case 34: {
            if (bodyShapeId_ == null) {
              BodyShapeId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(BodyShapeId);
            break;
          }
          case 40: {
            HideEars = input.ReadBool();
            break;
          }
          case 48: {
            UseHelmetHair = (global::RecRoom.Protobuf.HelmetHairState) input.ReadEnum();
            break;
          }
          case 56: {
            UseHatAnchorParams = input.ReadBool();
            break;
          }
          case 66: {
            if (hatAnchorParams_ == null) {
              HatAnchorParams = new global::RecRoom.Protobuf.AnchorParamsData();
            }
            input.ReadMessage(HatAnchorParams);
            break;
          }
          case 74: {
            if (faceCustomizationSettings_ == null) {
              FaceCustomizationSettings = new global::RecRoom.Protobuf.FaceCustomizationSettingsData();
            }
            input.ReadMessage(FaceCustomizationSettings);
            break;
          }
          case 82: {
            if (hairData_ == null) {
              HairData = new global::RecRoom.Protobuf.HairData();
            }
            input.ReadMessage(HairData);
            break;
          }
          case 90: {
            if (beardData_ == null) {
              BeardData = new global::RecRoom.Protobuf.HairData();
            }
            input.ReadMessage(BeardData);
            break;
          }
          case 96: {
            AvatarBodyType = (global::RecRoom.Protobuf.AvatarBodyType) input.ReadEnum();
            break;
          }
          case 106: {
            if (bodyPropertyData_ == null) {
              BodyPropertyData = new global::RecRoom.Protobuf.BodyPropertyData();
            }
            input.ReadMessage(BodyPropertyData);
            break;
          }
          case 114: {
            if (facePropertyData_ == null) {
              FacePropertyData = new global::RecRoom.Protobuf.FacePropertyData();
            }
            input.ReadMessage(FacePropertyData);
            break;
          }
          case 122: {
            if (nosePropertyData_ == null) {
              NosePropertyData = new global::RecRoom.Protobuf.NosePropertyData();
            }
            input.ReadMessage(NosePropertyData);
            break;
          }
          case 130: {
            if (bodyPaint_ == null) {
              BodyPaint = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(BodyPaint);
            break;
          }
          case 138: {
            if (auraData_ == null) {
              AuraData = new global::RecRoom.Protobuf.AuraData();
            }
            input.ReadMessage(AuraData);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SavedOutfitData : pb::IMessage<SavedOutfitData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SavedOutfitData> _parser = new pb::MessageParser<SavedOutfitData>(() => new SavedOutfitData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SavedOutfitData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SavedOutfitData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SavedOutfitData(SavedOutfitData other) : this() {
      avatarData_ = other.avatarData_ != null ? other.avatarData_.Clone() : null;
      name_ = other.name_;
      slot_ = other.slot_;
      thumbnailImageName_ = other.thumbnailImageName_;
      accessibility_ = other.accessibility_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SavedOutfitData Clone() {
      return new SavedOutfitData(this);
    }

    /// <summary>Field number for the "avatar_data" field.</summary>
    public const int AvatarDataFieldNumber = 1;
    private global::RecRoom.Protobuf.AvatarData avatarData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AvatarData AvatarData {
      get { return avatarData_; }
      set {
        avatarData_ = value;
      }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "slot" field.</summary>
    public const int SlotFieldNumber = 3;
    private int slot_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Slot {
      get { return slot_; }
      set {
        slot_ = value;
      }
    }

    /// <summary>Field number for the "thumbnail_image_name" field.</summary>
    public const int ThumbnailImageNameFieldNumber = 4;
    private string thumbnailImageName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ThumbnailImageName {
      get { return thumbnailImageName_; }
      set {
        thumbnailImageName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "accessibility" field.</summary>
    public const int AccessibilityFieldNumber = 5;
    private global::RecNet.Protobuf.UgcAccessibility accessibility_ = global::RecNet.Protobuf.UgcAccessibility.Private;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecNet.Protobuf.UgcAccessibility Accessibility {
      get { return accessibility_; }
      set {
        accessibility_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SavedOutfitData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SavedOutfitData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AvatarData, other.AvatarData)) return false;
      if (Name != other.Name) return false;
      if (Slot != other.Slot) return false;
      if (ThumbnailImageName != other.ThumbnailImageName) return false;
      if (Accessibility != other.Accessibility) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (avatarData_ != null) hash ^= AvatarData.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Slot != 0) hash ^= Slot.GetHashCode();
      if (ThumbnailImageName.Length != 0) hash ^= ThumbnailImageName.GetHashCode();
      if (Accessibility != global::RecNet.Protobuf.UgcAccessibility.Private) hash ^= Accessibility.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (avatarData_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AvatarData);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (Slot != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Slot);
      }
      if (ThumbnailImageName.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(ThumbnailImageName);
      }
      if (Accessibility != global::RecNet.Protobuf.UgcAccessibility.Private) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Accessibility);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (avatarData_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AvatarData);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (Slot != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Slot);
      }
      if (ThumbnailImageName.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(ThumbnailImageName);
      }
      if (Accessibility != global::RecNet.Protobuf.UgcAccessibility.Private) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Accessibility);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (avatarData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AvatarData);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Slot != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Slot);
      }
      if (ThumbnailImageName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ThumbnailImageName);
      }
      if (Accessibility != global::RecNet.Protobuf.UgcAccessibility.Private) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Accessibility);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SavedOutfitData other) {
      if (other == null) {
        return;
      }
      if (other.avatarData_ != null) {
        if (avatarData_ == null) {
          AvatarData = new global::RecRoom.Protobuf.AvatarData();
        }
        AvatarData.MergeFrom(other.AvatarData);
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Slot != 0) {
        Slot = other.Slot;
      }
      if (other.ThumbnailImageName.Length != 0) {
        ThumbnailImageName = other.ThumbnailImageName;
      }
      if (other.Accessibility != global::RecNet.Protobuf.UgcAccessibility.Private) {
        Accessibility = other.Accessibility;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (avatarData_ == null) {
              AvatarData = new global::RecRoom.Protobuf.AvatarData();
            }
            input.ReadMessage(AvatarData);
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 24: {
            Slot = input.ReadInt32();
            break;
          }
          case 34: {
            ThumbnailImageName = input.ReadString();
            break;
          }
          case 40: {
            Accessibility = (global::RecNet.Protobuf.UgcAccessibility) input.ReadEnum();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (avatarData_ == null) {
              AvatarData = new global::RecRoom.Protobuf.AvatarData();
            }
            input.ReadMessage(AvatarData);
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 24: {
            Slot = input.ReadInt32();
            break;
          }
          case 34: {
            ThumbnailImageName = input.ReadString();
            break;
          }
          case 40: {
            Accessibility = (global::RecNet.Protobuf.UgcAccessibility) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class HairData : pb::IMessage<HairData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<HairData> _parser = new pb::MessageParser<HairData>(() => new HairData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<HairData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HairData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HairData(HairData other) : this() {
      primaryColorId_ = other.primaryColorId_ != null ? other.primaryColorId_.Clone() : null;
      secondaryColorId_ = other.secondaryColorId_ != null ? other.secondaryColorId_.Clone() : null;
      patternTextureId_ = other.patternTextureId_ != null ? other.patternTextureId_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public HairData Clone() {
      return new HairData(this);
    }

    /// <summary>Field number for the "primary_color_id" field.</summary>
    public const int PrimaryColorIdFieldNumber = 1;
    private global::RecRoom.Protobuf.Core.GuidData primaryColorId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData PrimaryColorId {
      get { return primaryColorId_; }
      set {
        primaryColorId_ = value;
      }
    }

    /// <summary>Field number for the "secondary_color_id" field.</summary>
    public const int SecondaryColorIdFieldNumber = 2;
    private global::RecRoom.Protobuf.Core.GuidData secondaryColorId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData SecondaryColorId {
      get { return secondaryColorId_; }
      set {
        secondaryColorId_ = value;
      }
    }

    /// <summary>Field number for the "pattern_texture_id" field.</summary>
    public const int PatternTextureIdFieldNumber = 3;
    private global::RecRoom.Protobuf.Core.GuidData patternTextureId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData PatternTextureId {
      get { return patternTextureId_; }
      set {
        patternTextureId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as HairData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(HairData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(PrimaryColorId, other.PrimaryColorId)) return false;
      if (!object.Equals(SecondaryColorId, other.SecondaryColorId)) return false;
      if (!object.Equals(PatternTextureId, other.PatternTextureId)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (primaryColorId_ != null) hash ^= PrimaryColorId.GetHashCode();
      if (secondaryColorId_ != null) hash ^= SecondaryColorId.GetHashCode();
      if (patternTextureId_ != null) hash ^= PatternTextureId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (primaryColorId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(PrimaryColorId);
      }
      if (secondaryColorId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(SecondaryColorId);
      }
      if (patternTextureId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(PatternTextureId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (primaryColorId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(PrimaryColorId);
      }
      if (secondaryColorId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(SecondaryColorId);
      }
      if (patternTextureId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(PatternTextureId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (primaryColorId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PrimaryColorId);
      }
      if (secondaryColorId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondaryColorId);
      }
      if (patternTextureId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PatternTextureId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(HairData other) {
      if (other == null) {
        return;
      }
      if (other.primaryColorId_ != null) {
        if (primaryColorId_ == null) {
          PrimaryColorId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        PrimaryColorId.MergeFrom(other.PrimaryColorId);
      }
      if (other.secondaryColorId_ != null) {
        if (secondaryColorId_ == null) {
          SecondaryColorId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        SecondaryColorId.MergeFrom(other.SecondaryColorId);
      }
      if (other.patternTextureId_ != null) {
        if (patternTextureId_ == null) {
          PatternTextureId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        PatternTextureId.MergeFrom(other.PatternTextureId);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (primaryColorId_ == null) {
              PrimaryColorId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(PrimaryColorId);
            break;
          }
          case 18: {
            if (secondaryColorId_ == null) {
              SecondaryColorId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(SecondaryColorId);
            break;
          }
          case 26: {
            if (patternTextureId_ == null) {
              PatternTextureId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(PatternTextureId);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (primaryColorId_ == null) {
              PrimaryColorId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(PrimaryColorId);
            break;
          }
          case 18: {
            if (secondaryColorId_ == null) {
              SecondaryColorId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(SecondaryColorId);
            break;
          }
          case 26: {
            if (patternTextureId_ == null) {
              PatternTextureId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(PatternTextureId);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BodyPartSelectionData : pb::IMessage<BodyPartSelectionData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BodyPartSelectionData> _parser = new pb::MessageParser<BodyPartSelectionData>(() => new BodyPartSelectionData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BodyPartSelectionData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyPartSelectionData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyPartSelectionData(BodyPartSelectionData other) : this() {
      rawBodyPart_ = other.rawBodyPart_;
      avatarItem_ = other.avatarItem_ != null ? other.avatarItem_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyPartSelectionData Clone() {
      return new BodyPartSelectionData(this);
    }

    /// <summary>Field number for the "raw_body_part" field.</summary>
    public const int RawBodyPartFieldNumber = 1;
    private global::RecRoom.Protobuf.BodyPart rawBodyPart_ = global::RecRoom.Protobuf.BodyPart.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.BodyPart RawBodyPart {
      get { return rawBodyPart_; }
      set {
        rawBodyPart_ = value;
      }
    }

    /// <summary>Field number for the "avatar_item" field.</summary>
    public const int AvatarItemFieldNumber = 2;
    private global::RecRoom.Protobuf.AvatarItemDescriptionData avatarItem_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AvatarItemDescriptionData AvatarItem {
      get { return avatarItem_; }
      set {
        avatarItem_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BodyPartSelectionData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BodyPartSelectionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (RawBodyPart != other.RawBodyPart) return false;
      if (!object.Equals(AvatarItem, other.AvatarItem)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (RawBodyPart != global::RecRoom.Protobuf.BodyPart.None) hash ^= RawBodyPart.GetHashCode();
      if (avatarItem_ != null) hash ^= AvatarItem.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (RawBodyPart != global::RecRoom.Protobuf.BodyPart.None) {
        output.WriteRawTag(8);
        output.WriteEnum((int) RawBodyPart);
      }
      if (avatarItem_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AvatarItem);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (RawBodyPart != global::RecRoom.Protobuf.BodyPart.None) {
        output.WriteRawTag(8);
        output.WriteEnum((int) RawBodyPart);
      }
      if (avatarItem_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AvatarItem);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (RawBodyPart != global::RecRoom.Protobuf.BodyPart.None) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RawBodyPart);
      }
      if (avatarItem_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AvatarItem);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BodyPartSelectionData other) {
      if (other == null) {
        return;
      }
      if (other.RawBodyPart != global::RecRoom.Protobuf.BodyPart.None) {
        RawBodyPart = other.RawBodyPart;
      }
      if (other.avatarItem_ != null) {
        if (avatarItem_ == null) {
          AvatarItem = new global::RecRoom.Protobuf.AvatarItemDescriptionData();
        }
        AvatarItem.MergeFrom(other.AvatarItem);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            RawBodyPart = (global::RecRoom.Protobuf.BodyPart) input.ReadEnum();
            break;
          }
          case 18: {
            if (avatarItem_ == null) {
              AvatarItem = new global::RecRoom.Protobuf.AvatarItemDescriptionData();
            }
            input.ReadMessage(AvatarItem);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            RawBodyPart = (global::RecRoom.Protobuf.BodyPart) input.ReadEnum();
            break;
          }
          case 18: {
            if (avatarItem_ == null) {
              AvatarItem = new global::RecRoom.Protobuf.AvatarItemDescriptionData();
            }
            input.ReadMessage(AvatarItem);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AvatarItemDescriptionData : pb::IMessage<AvatarItemDescriptionData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AvatarItemDescriptionData> _parser = new pb::MessageParser<AvatarItemDescriptionData>(() => new AvatarItemDescriptionData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AvatarItemDescriptionData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AvatarItemDescriptionData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AvatarItemDescriptionData(AvatarItemDescriptionData other) : this() {
      avatarItemId_ = other.avatarItemId_ != null ? other.avatarItemId_.Clone() : null;
      avatarItemMaterialId_ = other.avatarItemMaterialId_ != null ? other.avatarItemMaterialId_.Clone() : null;
      customAvatarItemId_ = other.customAvatarItemId_ != null ? other.customAvatarItemId_.Clone() : null;
      customAvatarItemBaseColor_ = other.customAvatarItemBaseColor_ != null ? other.customAvatarItemBaseColor_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AvatarItemDescriptionData Clone() {
      return new AvatarItemDescriptionData(this);
    }

    /// <summary>Field number for the "avatar_item_id" field.</summary>
    public const int AvatarItemIdFieldNumber = 1;
    private global::RecRoom.Protobuf.Core.GuidData avatarItemId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData AvatarItemId {
      get { return avatarItemId_; }
      set {
        avatarItemId_ = value;
      }
    }

    /// <summary>Field number for the "avatar_item_material_id" field.</summary>
    public const int AvatarItemMaterialIdFieldNumber = 2;
    private global::RecRoom.Protobuf.Core.GuidData avatarItemMaterialId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData AvatarItemMaterialId {
      get { return avatarItemMaterialId_; }
      set {
        avatarItemMaterialId_ = value;
      }
    }

    /// <summary>Field number for the "custom_avatar_item_id" field.</summary>
    public const int CustomAvatarItemIdFieldNumber = 3;
    private global::RecRoom.Protobuf.Core.GuidData customAvatarItemId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData CustomAvatarItemId {
      get { return customAvatarItemId_; }
      set {
        customAvatarItemId_ = value;
      }
    }

    /// <summary>Field number for the "custom_avatar_item_base_color" field.</summary>
    public const int CustomAvatarItemBaseColorFieldNumber = 4;
    private global::RecRoom.Protobuf.Core.ColorData customAvatarItemBaseColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.ColorData CustomAvatarItemBaseColor {
      get { return customAvatarItemBaseColor_; }
      set {
        customAvatarItemBaseColor_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AvatarItemDescriptionData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AvatarItemDescriptionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AvatarItemId, other.AvatarItemId)) return false;
      if (!object.Equals(AvatarItemMaterialId, other.AvatarItemMaterialId)) return false;
      if (!object.Equals(CustomAvatarItemId, other.CustomAvatarItemId)) return false;
      if (!object.Equals(CustomAvatarItemBaseColor, other.CustomAvatarItemBaseColor)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (avatarItemId_ != null) hash ^= AvatarItemId.GetHashCode();
      if (avatarItemMaterialId_ != null) hash ^= AvatarItemMaterialId.GetHashCode();
      if (customAvatarItemId_ != null) hash ^= CustomAvatarItemId.GetHashCode();
      if (customAvatarItemBaseColor_ != null) hash ^= CustomAvatarItemBaseColor.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (avatarItemId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AvatarItemId);
      }
      if (avatarItemMaterialId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AvatarItemMaterialId);
      }
      if (customAvatarItemId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(CustomAvatarItemId);
      }
      if (customAvatarItemBaseColor_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(CustomAvatarItemBaseColor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (avatarItemId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AvatarItemId);
      }
      if (avatarItemMaterialId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AvatarItemMaterialId);
      }
      if (customAvatarItemId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(CustomAvatarItemId);
      }
      if (customAvatarItemBaseColor_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(CustomAvatarItemBaseColor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (avatarItemId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AvatarItemId);
      }
      if (avatarItemMaterialId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AvatarItemMaterialId);
      }
      if (customAvatarItemId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CustomAvatarItemId);
      }
      if (customAvatarItemBaseColor_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CustomAvatarItemBaseColor);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AvatarItemDescriptionData other) {
      if (other == null) {
        return;
      }
      if (other.avatarItemId_ != null) {
        if (avatarItemId_ == null) {
          AvatarItemId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        AvatarItemId.MergeFrom(other.AvatarItemId);
      }
      if (other.avatarItemMaterialId_ != null) {
        if (avatarItemMaterialId_ == null) {
          AvatarItemMaterialId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        AvatarItemMaterialId.MergeFrom(other.AvatarItemMaterialId);
      }
      if (other.customAvatarItemId_ != null) {
        if (customAvatarItemId_ == null) {
          CustomAvatarItemId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        CustomAvatarItemId.MergeFrom(other.CustomAvatarItemId);
      }
      if (other.customAvatarItemBaseColor_ != null) {
        if (customAvatarItemBaseColor_ == null) {
          CustomAvatarItemBaseColor = new global::RecRoom.Protobuf.Core.ColorData();
        }
        CustomAvatarItemBaseColor.MergeFrom(other.CustomAvatarItemBaseColor);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (avatarItemId_ == null) {
              AvatarItemId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(AvatarItemId);
            break;
          }
          case 18: {
            if (avatarItemMaterialId_ == null) {
              AvatarItemMaterialId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(AvatarItemMaterialId);
            break;
          }
          case 26: {
            if (customAvatarItemId_ == null) {
              CustomAvatarItemId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(CustomAvatarItemId);
            break;
          }
          case 34: {
            if (customAvatarItemBaseColor_ == null) {
              CustomAvatarItemBaseColor = new global::RecRoom.Protobuf.Core.ColorData();
            }
            input.ReadMessage(CustomAvatarItemBaseColor);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (avatarItemId_ == null) {
              AvatarItemId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(AvatarItemId);
            break;
          }
          case 18: {
            if (avatarItemMaterialId_ == null) {
              AvatarItemMaterialId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(AvatarItemMaterialId);
            break;
          }
          case 26: {
            if (customAvatarItemId_ == null) {
              CustomAvatarItemId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(CustomAvatarItemId);
            break;
          }
          case 34: {
            if (customAvatarItemBaseColor_ == null) {
              CustomAvatarItemBaseColor = new global::RecRoom.Protobuf.Core.ColorData();
            }
            input.ReadMessage(CustomAvatarItemBaseColor);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FaceCustomizationSettingsData : pb::IMessage<FaceCustomizationSettingsData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FaceCustomizationSettingsData> _parser = new pb::MessageParser<FaceCustomizationSettingsData>(() => new FaceCustomizationSettingsData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FaceCustomizationSettingsData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FaceCustomizationSettingsData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FaceCustomizationSettingsData(FaceCustomizationSettingsData other) : this() {
      eyeSettings_ = other.eyeSettings_ != null ? other.eyeSettings_.Clone() : null;
      eyeBrowsSettings_ = other.eyeBrowsSettings_ != null ? other.eyeBrowsSettings_.Clone() : null;
      mouthSettings_ = other.mouthSettings_ != null ? other.mouthSettings_.Clone() : null;
      faceShapeId_ = other.faceShapeId_ != null ? other.faceShapeId_.Clone() : null;
      noseSettings_ = other.noseSettings_ != null ? other.noseSettings_.Clone() : null;
      headScale_ = other.headScale_;
      modernBeanHeadScale_ = other.modernBeanHeadScale_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FaceCustomizationSettingsData Clone() {
      return new FaceCustomizationSettingsData(this);
    }

    /// <summary>Field number for the "eye_settings" field.</summary>
    public const int EyeSettingsFieldNumber = 1;
    private global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData eyeSettings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData EyeSettings {
      get { return eyeSettings_; }
      set {
        eyeSettings_ = value;
      }
    }

    /// <summary>Field number for the "eye_brows_settings" field.</summary>
    public const int EyeBrowsSettingsFieldNumber = 2;
    private global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData eyeBrowsSettings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData EyeBrowsSettings {
      get { return eyeBrowsSettings_; }
      set {
        eyeBrowsSettings_ = value;
      }
    }

    /// <summary>Field number for the "mouth_settings" field.</summary>
    public const int MouthSettingsFieldNumber = 3;
    private global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData mouthSettings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData MouthSettings {
      get { return mouthSettings_; }
      set {
        mouthSettings_ = value;
      }
    }

    /// <summary>Field number for the "face_shape_id" field.</summary>
    public const int FaceShapeIdFieldNumber = 4;
    private global::RecRoom.Protobuf.Core.GuidData faceShapeId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData FaceShapeId {
      get { return faceShapeId_; }
      set {
        faceShapeId_ = value;
      }
    }

    /// <summary>Field number for the "nose_settings" field.</summary>
    public const int NoseSettingsFieldNumber = 5;
    private global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData noseSettings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData NoseSettings {
      get { return noseSettings_; }
      set {
        noseSettings_ = value;
      }
    }

    /// <summary>Field number for the "head_scale" field.</summary>
    public const int HeadScaleFieldNumber = 6;
    private float headScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float HeadScale {
      get { return headScale_; }
      set {
        headScale_ = value;
      }
    }

    /// <summary>Field number for the "modern_bean_head_scale" field.</summary>
    public const int ModernBeanHeadScaleFieldNumber = 7;
    private float modernBeanHeadScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ModernBeanHeadScale {
      get { return modernBeanHeadScale_; }
      set {
        modernBeanHeadScale_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FaceCustomizationSettingsData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FaceCustomizationSettingsData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(EyeSettings, other.EyeSettings)) return false;
      if (!object.Equals(EyeBrowsSettings, other.EyeBrowsSettings)) return false;
      if (!object.Equals(MouthSettings, other.MouthSettings)) return false;
      if (!object.Equals(FaceShapeId, other.FaceShapeId)) return false;
      if (!object.Equals(NoseSettings, other.NoseSettings)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(HeadScale, other.HeadScale)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ModernBeanHeadScale, other.ModernBeanHeadScale)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (eyeSettings_ != null) hash ^= EyeSettings.GetHashCode();
      if (eyeBrowsSettings_ != null) hash ^= EyeBrowsSettings.GetHashCode();
      if (mouthSettings_ != null) hash ^= MouthSettings.GetHashCode();
      if (faceShapeId_ != null) hash ^= FaceShapeId.GetHashCode();
      if (noseSettings_ != null) hash ^= NoseSettings.GetHashCode();
      if (HeadScale != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(HeadScale);
      if (ModernBeanHeadScale != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ModernBeanHeadScale);
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (eyeSettings_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(EyeSettings);
      }
      if (eyeBrowsSettings_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(EyeBrowsSettings);
      }
      if (mouthSettings_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(MouthSettings);
      }
      if (faceShapeId_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FaceShapeId);
      }
      if (noseSettings_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(NoseSettings);
      }
      if (HeadScale != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(HeadScale);
      }
      if (ModernBeanHeadScale != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(ModernBeanHeadScale);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (eyeSettings_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(EyeSettings);
      }
      if (eyeBrowsSettings_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(EyeBrowsSettings);
      }
      if (mouthSettings_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(MouthSettings);
      }
      if (faceShapeId_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FaceShapeId);
      }
      if (noseSettings_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(NoseSettings);
      }
      if (HeadScale != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(HeadScale);
      }
      if (ModernBeanHeadScale != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(ModernBeanHeadScale);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (eyeSettings_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EyeSettings);
      }
      if (eyeBrowsSettings_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EyeBrowsSettings);
      }
      if (mouthSettings_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MouthSettings);
      }
      if (faceShapeId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FaceShapeId);
      }
      if (noseSettings_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(NoseSettings);
      }
      if (HeadScale != 0F) {
        size += 1 + 4;
      }
      if (ModernBeanHeadScale != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FaceCustomizationSettingsData other) {
      if (other == null) {
        return;
      }
      if (other.eyeSettings_ != null) {
        if (eyeSettings_ == null) {
          EyeSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
        }
        EyeSettings.MergeFrom(other.EyeSettings);
      }
      if (other.eyeBrowsSettings_ != null) {
        if (eyeBrowsSettings_ == null) {
          EyeBrowsSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
        }
        EyeBrowsSettings.MergeFrom(other.EyeBrowsSettings);
      }
      if (other.mouthSettings_ != null) {
        if (mouthSettings_ == null) {
          MouthSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
        }
        MouthSettings.MergeFrom(other.MouthSettings);
      }
      if (other.faceShapeId_ != null) {
        if (faceShapeId_ == null) {
          FaceShapeId = new global::RecRoom.Protobuf.Core.GuidData();
        }
        FaceShapeId.MergeFrom(other.FaceShapeId);
      }
      if (other.noseSettings_ != null) {
        if (noseSettings_ == null) {
          NoseSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
        }
        NoseSettings.MergeFrom(other.NoseSettings);
      }
      if (other.HeadScale != 0F) {
        HeadScale = other.HeadScale;
      }
      if (other.ModernBeanHeadScale != 0F) {
        ModernBeanHeadScale = other.ModernBeanHeadScale;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (eyeSettings_ == null) {
              EyeSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(EyeSettings);
            break;
          }
          case 18: {
            if (eyeBrowsSettings_ == null) {
              EyeBrowsSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(EyeBrowsSettings);
            break;
          }
          case 26: {
            if (mouthSettings_ == null) {
              MouthSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(MouthSettings);
            break;
          }
          case 34: {
            if (faceShapeId_ == null) {
              FaceShapeId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(FaceShapeId);
            break;
          }
          case 42: {
            if (noseSettings_ == null) {
              NoseSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(NoseSettings);
            break;
          }
          case 53: {
            HeadScale = input.ReadFloat();
            break;
          }
          case 61: {
            ModernBeanHeadScale = input.ReadFloat();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (eyeSettings_ == null) {
              EyeSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(EyeSettings);
            break;
          }
          case 18: {
            if (eyeBrowsSettings_ == null) {
              EyeBrowsSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(EyeBrowsSettings);
            break;
          }
          case 26: {
            if (mouthSettings_ == null) {
              MouthSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(MouthSettings);
            break;
          }
          case 34: {
            if (faceShapeId_ == null) {
              FaceShapeId = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(FaceShapeId);
            break;
          }
          case 42: {
            if (noseSettings_ == null) {
              NoseSettings = new global::RecRoom.Protobuf.FaceFeatureCustomizationSettingsData();
            }
            input.ReadMessage(NoseSettings);
            break;
          }
          case 53: {
            HeadScale = input.ReadFloat();
            break;
          }
          case 61: {
            ModernBeanHeadScale = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BodyPropertyData : pb::IMessage<BodyPropertyData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BodyPropertyData> _parser = new pb::MessageParser<BodyPropertyData>(() => new BodyPropertyData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BodyPropertyData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyPropertyData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyPropertyData(BodyPropertyData other) : this() {
      bicepWidth_ = other.bicepWidth_;
      forearmWidth_ = other.forearmWidth_;
      chestSize_ = other.chestSize_;
      chestOut_ = other.chestOut_;
      waistSize_ = other.waistSize_;
      hipWidth_ = other.hipWidth_;
      neckLength_ = other.neckLength_;
      neckThickness_ = other.neckThickness_;
      thighWidth_ = other.thighWidth_;
      calfWidth_ = other.calfWidth_;
      footWidth_ = other.footWidth_;
      footSize_ = other.footSize_;
      shoulderWidth_ = other.shoulderWidth_;
      bellyOut_ = other.bellyOut_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyPropertyData Clone() {
      return new BodyPropertyData(this);
    }

    /// <summary>Field number for the "bicep_width" field.</summary>
    public const int BicepWidthFieldNumber = 1;
    private float bicepWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float BicepWidth {
      get { return bicepWidth_; }
      set {
        bicepWidth_ = value;
      }
    }

    /// <summary>Field number for the "forearm_width" field.</summary>
    public const int ForearmWidthFieldNumber = 2;
    private float forearmWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ForearmWidth {
      get { return forearmWidth_; }
      set {
        forearmWidth_ = value;
      }
    }

    /// <summary>Field number for the "chest_size" field.</summary>
    public const int ChestSizeFieldNumber = 3;
    private float chestSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ChestSize {
      get { return chestSize_; }
      set {
        chestSize_ = value;
      }
    }

    /// <summary>Field number for the "chest_out" field.</summary>
    public const int ChestOutFieldNumber = 4;
    private float chestOut_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ChestOut {
      get { return chestOut_; }
      set {
        chestOut_ = value;
      }
    }

    /// <summary>Field number for the "waist_size" field.</summary>
    public const int WaistSizeFieldNumber = 5;
    private float waistSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float WaistSize {
      get { return waistSize_; }
      set {
        waistSize_ = value;
      }
    }

    /// <summary>Field number for the "hip_width" field.</summary>
    public const int HipWidthFieldNumber = 6;
    private float hipWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float HipWidth {
      get { return hipWidth_; }
      set {
        hipWidth_ = value;
      }
    }

    /// <summary>Field number for the "neck_length" field.</summary>
    public const int NeckLengthFieldNumber = 7;
    private float neckLength_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NeckLength {
      get { return neckLength_; }
      set {
        neckLength_ = value;
      }
    }

    /// <summary>Field number for the "neck_thickness" field.</summary>
    public const int NeckThicknessFieldNumber = 8;
    private float neckThickness_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NeckThickness {
      get { return neckThickness_; }
      set {
        neckThickness_ = value;
      }
    }

    /// <summary>Field number for the "thigh_width" field.</summary>
    public const int ThighWidthFieldNumber = 9;
    private float thighWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ThighWidth {
      get { return thighWidth_; }
      set {
        thighWidth_ = value;
      }
    }

    /// <summary>Field number for the "calf_width" field.</summary>
    public const int CalfWidthFieldNumber = 10;
    private float calfWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float CalfWidth {
      get { return calfWidth_; }
      set {
        calfWidth_ = value;
      }
    }

    /// <summary>Field number for the "foot_width" field.</summary>
    public const int FootWidthFieldNumber = 11;
    private float footWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float FootWidth {
      get { return footWidth_; }
      set {
        footWidth_ = value;
      }
    }

    /// <summary>Field number for the "foot_size" field.</summary>
    public const int FootSizeFieldNumber = 12;
    private float footSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float FootSize {
      get { return footSize_; }
      set {
        footSize_ = value;
      }
    }

    /// <summary>Field number for the "shoulder_width" field.</summary>
    public const int ShoulderWidthFieldNumber = 13;
    private float shoulderWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ShoulderWidth {
      get { return shoulderWidth_; }
      set {
        shoulderWidth_ = value;
      }
    }

    /// <summary>Field number for the "belly_out" field.</summary>
    public const int BellyOutFieldNumber = 14;
    private float bellyOut_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float BellyOut {
      get { return bellyOut_; }
      set {
        bellyOut_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BodyPropertyData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BodyPropertyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(BicepWidth, other.BicepWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ForearmWidth, other.ForearmWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ChestSize, other.ChestSize)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ChestOut, other.ChestOut)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(WaistSize, other.WaistSize)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(HipWidth, other.HipWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NeckLength, other.NeckLength)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NeckThickness, other.NeckThickness)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ThighWidth, other.ThighWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CalfWidth, other.CalfWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(FootWidth, other.FootWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(FootSize, other.FootSize)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ShoulderWidth, other.ShoulderWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(BellyOut, other.BellyOut)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (BicepWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(BicepWidth);
      if (ForearmWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ForearmWidth);
      if (ChestSize != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ChestSize);
      if (ChestOut != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ChestOut);
      if (WaistSize != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(WaistSize);
      if (HipWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(HipWidth);
      if (NeckLength != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NeckLength);
      if (NeckThickness != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NeckThickness);
      if (ThighWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ThighWidth);
      if (CalfWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CalfWidth);
      if (FootWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(FootWidth);
      if (FootSize != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(FootSize);
      if (ShoulderWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ShoulderWidth);
      if (BellyOut != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(BellyOut);
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (BicepWidth != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(BicepWidth);
      }
      if (ForearmWidth != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(ForearmWidth);
      }
      if (ChestSize != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(ChestSize);
      }
      if (ChestOut != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(ChestOut);
      }
      if (WaistSize != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(WaistSize);
      }
      if (HipWidth != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(HipWidth);
      }
      if (NeckLength != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(NeckLength);
      }
      if (NeckThickness != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(NeckThickness);
      }
      if (ThighWidth != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(ThighWidth);
      }
      if (CalfWidth != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(CalfWidth);
      }
      if (FootWidth != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(FootWidth);
      }
      if (FootSize != 0F) {
        output.WriteRawTag(101);
        output.WriteFloat(FootSize);
      }
      if (ShoulderWidth != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(ShoulderWidth);
      }
      if (BellyOut != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(BellyOut);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (BicepWidth != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(BicepWidth);
      }
      if (ForearmWidth != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(ForearmWidth);
      }
      if (ChestSize != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(ChestSize);
      }
      if (ChestOut != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(ChestOut);
      }
      if (WaistSize != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(WaistSize);
      }
      if (HipWidth != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(HipWidth);
      }
      if (NeckLength != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(NeckLength);
      }
      if (NeckThickness != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(NeckThickness);
      }
      if (ThighWidth != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(ThighWidth);
      }
      if (CalfWidth != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(CalfWidth);
      }
      if (FootWidth != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(FootWidth);
      }
      if (FootSize != 0F) {
        output.WriteRawTag(101);
        output.WriteFloat(FootSize);
      }
      if (ShoulderWidth != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(ShoulderWidth);
      }
      if (BellyOut != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(BellyOut);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (BicepWidth != 0F) {
        size += 1 + 4;
      }
      if (ForearmWidth != 0F) {
        size += 1 + 4;
      }
      if (ChestSize != 0F) {
        size += 1 + 4;
      }
      if (ChestOut != 0F) {
        size += 1 + 4;
      }
      if (WaistSize != 0F) {
        size += 1 + 4;
      }
      if (HipWidth != 0F) {
        size += 1 + 4;
      }
      if (NeckLength != 0F) {
        size += 1 + 4;
      }
      if (NeckThickness != 0F) {
        size += 1 + 4;
      }
      if (ThighWidth != 0F) {
        size += 1 + 4;
      }
      if (CalfWidth != 0F) {
        size += 1 + 4;
      }
      if (FootWidth != 0F) {
        size += 1 + 4;
      }
      if (FootSize != 0F) {
        size += 1 + 4;
      }
      if (ShoulderWidth != 0F) {
        size += 1 + 4;
      }
      if (BellyOut != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BodyPropertyData other) {
      if (other == null) {
        return;
      }
      if (other.BicepWidth != 0F) {
        BicepWidth = other.BicepWidth;
      }
      if (other.ForearmWidth != 0F) {
        ForearmWidth = other.ForearmWidth;
      }
      if (other.ChestSize != 0F) {
        ChestSize = other.ChestSize;
      }
      if (other.ChestOut != 0F) {
        ChestOut = other.ChestOut;
      }
      if (other.WaistSize != 0F) {
        WaistSize = other.WaistSize;
      }
      if (other.HipWidth != 0F) {
        HipWidth = other.HipWidth;
      }
      if (other.NeckLength != 0F) {
        NeckLength = other.NeckLength;
      }
      if (other.NeckThickness != 0F) {
        NeckThickness = other.NeckThickness;
      }
      if (other.ThighWidth != 0F) {
        ThighWidth = other.ThighWidth;
      }
      if (other.CalfWidth != 0F) {
        CalfWidth = other.CalfWidth;
      }
      if (other.FootWidth != 0F) {
        FootWidth = other.FootWidth;
      }
      if (other.FootSize != 0F) {
        FootSize = other.FootSize;
      }
      if (other.ShoulderWidth != 0F) {
        ShoulderWidth = other.ShoulderWidth;
      }
      if (other.BellyOut != 0F) {
        BellyOut = other.BellyOut;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            BicepWidth = input.ReadFloat();
            break;
          }
          case 21: {
            ForearmWidth = input.ReadFloat();
            break;
          }
          case 29: {
            ChestSize = input.ReadFloat();
            break;
          }
          case 37: {
            ChestOut = input.ReadFloat();
            break;
          }
          case 45: {
            WaistSize = input.ReadFloat();
            break;
          }
          case 53: {
            HipWidth = input.ReadFloat();
            break;
          }
          case 61: {
            NeckLength = input.ReadFloat();
            break;
          }
          case 69: {
            NeckThickness = input.ReadFloat();
            break;
          }
          case 77: {
            ThighWidth = input.ReadFloat();
            break;
          }
          case 85: {
            CalfWidth = input.ReadFloat();
            break;
          }
          case 93: {
            FootWidth = input.ReadFloat();
            break;
          }
          case 101: {
            FootSize = input.ReadFloat();
            break;
          }
          case 109: {
            ShoulderWidth = input.ReadFloat();
            break;
          }
          case 117: {
            BellyOut = input.ReadFloat();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            BicepWidth = input.ReadFloat();
            break;
          }
          case 21: {
            ForearmWidth = input.ReadFloat();
            break;
          }
          case 29: {
            ChestSize = input.ReadFloat();
            break;
          }
          case 37: {
            ChestOut = input.ReadFloat();
            break;
          }
          case 45: {
            WaistSize = input.ReadFloat();
            break;
          }
          case 53: {
            HipWidth = input.ReadFloat();
            break;
          }
          case 61: {
            NeckLength = input.ReadFloat();
            break;
          }
          case 69: {
            NeckThickness = input.ReadFloat();
            break;
          }
          case 77: {
            ThighWidth = input.ReadFloat();
            break;
          }
          case 85: {
            CalfWidth = input.ReadFloat();
            break;
          }
          case 93: {
            FootWidth = input.ReadFloat();
            break;
          }
          case 101: {
            FootSize = input.ReadFloat();
            break;
          }
          case 109: {
            ShoulderWidth = input.ReadFloat();
            break;
          }
          case 117: {
            BellyOut = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FacePropertyData : pb::IMessage<FacePropertyData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FacePropertyData> _parser = new pb::MessageParser<FacePropertyData>(() => new FacePropertyData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FacePropertyData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FacePropertyData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FacePropertyData(FacePropertyData other) : this() {
      cheekPuff_ = other.cheekPuff_;
      jawWidth_ = other.jawWidth_;
      jawInOut_ = other.jawInOut_;
      chinWidth_ = other.chinWidth_;
      chinSize_ = other.chinSize_;
      earSize_ = other.earSize_;
      earAngle_ = other.earAngle_;
      headStretch_ = other.headStretch_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FacePropertyData Clone() {
      return new FacePropertyData(this);
    }

    /// <summary>Field number for the "cheek_puff" field.</summary>
    public const int CheekPuffFieldNumber = 1;
    private float cheekPuff_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float CheekPuff {
      get { return cheekPuff_; }
      set {
        cheekPuff_ = value;
      }
    }

    /// <summary>Field number for the "jaw_width" field.</summary>
    public const int JawWidthFieldNumber = 2;
    private float jawWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float JawWidth {
      get { return jawWidth_; }
      set {
        jawWidth_ = value;
      }
    }

    /// <summary>Field number for the "jaw_in_out" field.</summary>
    public const int JawInOutFieldNumber = 3;
    private float jawInOut_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float JawInOut {
      get { return jawInOut_; }
      set {
        jawInOut_ = value;
      }
    }

    /// <summary>Field number for the "chin_width" field.</summary>
    public const int ChinWidthFieldNumber = 4;
    private float chinWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ChinWidth {
      get { return chinWidth_; }
      set {
        chinWidth_ = value;
      }
    }

    /// <summary>Field number for the "chin_size" field.</summary>
    public const int ChinSizeFieldNumber = 5;
    private float chinSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ChinSize {
      get { return chinSize_; }
      set {
        chinSize_ = value;
      }
    }

    /// <summary>Field number for the "ear_size" field.</summary>
    public const int EarSizeFieldNumber = 6;
    private float earSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float EarSize {
      get { return earSize_; }
      set {
        earSize_ = value;
      }
    }

    /// <summary>Field number for the "ear_angle" field.</summary>
    public const int EarAngleFieldNumber = 7;
    private float earAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float EarAngle {
      get { return earAngle_; }
      set {
        earAngle_ = value;
      }
    }

    /// <summary>Field number for the "head_stretch" field.</summary>
    public const int HeadStretchFieldNumber = 8;
    private float headStretch_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float HeadStretch {
      get { return headStretch_; }
      set {
        headStretch_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FacePropertyData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FacePropertyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CheekPuff, other.CheekPuff)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(JawWidth, other.JawWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(JawInOut, other.JawInOut)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ChinWidth, other.ChinWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ChinSize, other.ChinSize)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(EarSize, other.EarSize)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(EarAngle, other.EarAngle)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(HeadStretch, other.HeadStretch)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (CheekPuff != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CheekPuff);
      if (JawWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(JawWidth);
      if (JawInOut != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(JawInOut);
      if (ChinWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ChinWidth);
      if (ChinSize != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ChinSize);
      if (EarSize != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(EarSize);
      if (EarAngle != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(EarAngle);
      if (HeadStretch != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(HeadStretch);
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (CheekPuff != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(CheekPuff);
      }
      if (JawWidth != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(JawWidth);
      }
      if (JawInOut != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(JawInOut);
      }
      if (ChinWidth != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(ChinWidth);
      }
      if (ChinSize != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(ChinSize);
      }
      if (EarSize != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(EarSize);
      }
      if (EarAngle != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(EarAngle);
      }
      if (HeadStretch != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(HeadStretch);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (CheekPuff != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(CheekPuff);
      }
      if (JawWidth != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(JawWidth);
      }
      if (JawInOut != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(JawInOut);
      }
      if (ChinWidth != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(ChinWidth);
      }
      if (ChinSize != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(ChinSize);
      }
      if (EarSize != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(EarSize);
      }
      if (EarAngle != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(EarAngle);
      }
      if (HeadStretch != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(HeadStretch);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (CheekPuff != 0F) {
        size += 1 + 4;
      }
      if (JawWidth != 0F) {
        size += 1 + 4;
      }
      if (JawInOut != 0F) {
        size += 1 + 4;
      }
      if (ChinWidth != 0F) {
        size += 1 + 4;
      }
      if (ChinSize != 0F) {
        size += 1 + 4;
      }
      if (EarSize != 0F) {
        size += 1 + 4;
      }
      if (EarAngle != 0F) {
        size += 1 + 4;
      }
      if (HeadStretch != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FacePropertyData other) {
      if (other == null) {
        return;
      }
      if (other.CheekPuff != 0F) {
        CheekPuff = other.CheekPuff;
      }
      if (other.JawWidth != 0F) {
        JawWidth = other.JawWidth;
      }
      if (other.JawInOut != 0F) {
        JawInOut = other.JawInOut;
      }
      if (other.ChinWidth != 0F) {
        ChinWidth = other.ChinWidth;
      }
      if (other.ChinSize != 0F) {
        ChinSize = other.ChinSize;
      }
      if (other.EarSize != 0F) {
        EarSize = other.EarSize;
      }
      if (other.EarAngle != 0F) {
        EarAngle = other.EarAngle;
      }
      if (other.HeadStretch != 0F) {
        HeadStretch = other.HeadStretch;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            CheekPuff = input.ReadFloat();
            break;
          }
          case 21: {
            JawWidth = input.ReadFloat();
            break;
          }
          case 29: {
            JawInOut = input.ReadFloat();
            break;
          }
          case 37: {
            ChinWidth = input.ReadFloat();
            break;
          }
          case 45: {
            ChinSize = input.ReadFloat();
            break;
          }
          case 53: {
            EarSize = input.ReadFloat();
            break;
          }
          case 61: {
            EarAngle = input.ReadFloat();
            break;
          }
          case 69: {
            HeadStretch = input.ReadFloat();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            CheekPuff = input.ReadFloat();
            break;
          }
          case 21: {
            JawWidth = input.ReadFloat();
            break;
          }
          case 29: {
            JawInOut = input.ReadFloat();
            break;
          }
          case 37: {
            ChinWidth = input.ReadFloat();
            break;
          }
          case 45: {
            ChinSize = input.ReadFloat();
            break;
          }
          case 53: {
            EarSize = input.ReadFloat();
            break;
          }
          case 61: {
            EarAngle = input.ReadFloat();
            break;
          }
          case 69: {
            HeadStretch = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class NosePropertyData : pb::IMessage<NosePropertyData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<NosePropertyData> _parser = new pb::MessageParser<NosePropertyData>(() => new NosePropertyData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<NosePropertyData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public NosePropertyData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public NosePropertyData(NosePropertyData other) : this() {
      noseWidth_ = other.noseWidth_;
      noseHeight_ = other.noseHeight_;
      noseLength_ = other.noseLength_;
      noseAngle_ = other.noseAngle_;
      noseBulge_ = other.noseBulge_;
      nosePinchFlair_ = other.nosePinchFlair_;
      noseSneer_ = other.noseSneer_;
      noseTipScale_ = other.noseTipScale_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public NosePropertyData Clone() {
      return new NosePropertyData(this);
    }

    /// <summary>Field number for the "nose_width" field.</summary>
    public const int NoseWidthFieldNumber = 1;
    private float noseWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseWidth {
      get { return noseWidth_; }
      set {
        noseWidth_ = value;
      }
    }

    /// <summary>Field number for the "nose_height" field.</summary>
    public const int NoseHeightFieldNumber = 2;
    private float noseHeight_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseHeight {
      get { return noseHeight_; }
      set {
        noseHeight_ = value;
      }
    }

    /// <summary>Field number for the "nose_length" field.</summary>
    public const int NoseLengthFieldNumber = 3;
    private float noseLength_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseLength {
      get { return noseLength_; }
      set {
        noseLength_ = value;
      }
    }

    /// <summary>Field number for the "nose_angle" field.</summary>
    public const int NoseAngleFieldNumber = 4;
    private float noseAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseAngle {
      get { return noseAngle_; }
      set {
        noseAngle_ = value;
      }
    }

    /// <summary>Field number for the "nose_bulge" field.</summary>
    public const int NoseBulgeFieldNumber = 5;
    private float noseBulge_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseBulge {
      get { return noseBulge_; }
      set {
        noseBulge_ = value;
      }
    }

    /// <summary>Field number for the "nose_pinch_flair" field.</summary>
    public const int NosePinchFlairFieldNumber = 6;
    private float nosePinchFlair_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NosePinchFlair {
      get { return nosePinchFlair_; }
      set {
        nosePinchFlair_ = value;
      }
    }

    /// <summary>Field number for the "nose_sneer" field.</summary>
    public const int NoseSneerFieldNumber = 7;
    private float noseSneer_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseSneer {
      get { return noseSneer_; }
      set {
        noseSneer_ = value;
      }
    }

    /// <summary>Field number for the "nose_tip_scale" field.</summary>
    public const int NoseTipScaleFieldNumber = 8;
    private float noseTipScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float NoseTipScale {
      get { return noseTipScale_; }
      set {
        noseTipScale_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as NosePropertyData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(NosePropertyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseWidth, other.NoseWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseHeight, other.NoseHeight)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseLength, other.NoseLength)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseAngle, other.NoseAngle)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseBulge, other.NoseBulge)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NosePinchFlair, other.NosePinchFlair)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseSneer, other.NoseSneer)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(NoseTipScale, other.NoseTipScale)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (NoseWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseWidth);
      if (NoseHeight != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseHeight);
      if (NoseLength != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseLength);
      if (NoseAngle != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseAngle);
      if (NoseBulge != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseBulge);
      if (NosePinchFlair != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NosePinchFlair);
      if (NoseSneer != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseSneer);
      if (NoseTipScale != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(NoseTipScale);
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (NoseWidth != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(NoseWidth);
      }
      if (NoseHeight != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(NoseHeight);
      }
      if (NoseLength != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(NoseLength);
      }
      if (NoseAngle != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(NoseAngle);
      }
      if (NoseBulge != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(NoseBulge);
      }
      if (NosePinchFlair != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(NosePinchFlair);
      }
      if (NoseSneer != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(NoseSneer);
      }
      if (NoseTipScale != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(NoseTipScale);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (NoseWidth != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(NoseWidth);
      }
      if (NoseHeight != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(NoseHeight);
      }
      if (NoseLength != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(NoseLength);
      }
      if (NoseAngle != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(NoseAngle);
      }
      if (NoseBulge != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(NoseBulge);
      }
      if (NosePinchFlair != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(NosePinchFlair);
      }
      if (NoseSneer != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(NoseSneer);
      }
      if (NoseTipScale != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(NoseTipScale);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (NoseWidth != 0F) {
        size += 1 + 4;
      }
      if (NoseHeight != 0F) {
        size += 1 + 4;
      }
      if (NoseLength != 0F) {
        size += 1 + 4;
      }
      if (NoseAngle != 0F) {
        size += 1 + 4;
      }
      if (NoseBulge != 0F) {
        size += 1 + 4;
      }
      if (NosePinchFlair != 0F) {
        size += 1 + 4;
      }
      if (NoseSneer != 0F) {
        size += 1 + 4;
      }
      if (NoseTipScale != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(NosePropertyData other) {
      if (other == null) {
        return;
      }
      if (other.NoseWidth != 0F) {
        NoseWidth = other.NoseWidth;
      }
      if (other.NoseHeight != 0F) {
        NoseHeight = other.NoseHeight;
      }
      if (other.NoseLength != 0F) {
        NoseLength = other.NoseLength;
      }
      if (other.NoseAngle != 0F) {
        NoseAngle = other.NoseAngle;
      }
      if (other.NoseBulge != 0F) {
        NoseBulge = other.NoseBulge;
      }
      if (other.NosePinchFlair != 0F) {
        NosePinchFlair = other.NosePinchFlair;
      }
      if (other.NoseSneer != 0F) {
        NoseSneer = other.NoseSneer;
      }
      if (other.NoseTipScale != 0F) {
        NoseTipScale = other.NoseTipScale;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            NoseWidth = input.ReadFloat();
            break;
          }
          case 21: {
            NoseHeight = input.ReadFloat();
            break;
          }
          case 29: {
            NoseLength = input.ReadFloat();
            break;
          }
          case 37: {
            NoseAngle = input.ReadFloat();
            break;
          }
          case 45: {
            NoseBulge = input.ReadFloat();
            break;
          }
          case 53: {
            NosePinchFlair = input.ReadFloat();
            break;
          }
          case 61: {
            NoseSneer = input.ReadFloat();
            break;
          }
          case 69: {
            NoseTipScale = input.ReadFloat();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            NoseWidth = input.ReadFloat();
            break;
          }
          case 21: {
            NoseHeight = input.ReadFloat();
            break;
          }
          case 29: {
            NoseLength = input.ReadFloat();
            break;
          }
          case 37: {
            NoseAngle = input.ReadFloat();
            break;
          }
          case 45: {
            NoseBulge = input.ReadFloat();
            break;
          }
          case 53: {
            NosePinchFlair = input.ReadFloat();
            break;
          }
          case 61: {
            NoseSneer = input.ReadFloat();
            break;
          }
          case 69: {
            NoseTipScale = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FaceFeatureCustomizationSettingsData : pb::IMessage<FaceFeatureCustomizationSettingsData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FaceFeatureCustomizationSettingsData> _parser = new pb::MessageParser<FaceFeatureCustomizationSettingsData>(() => new FaceFeatureCustomizationSettingsData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FaceFeatureCustomizationSettingsData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FaceFeatureCustomizationSettingsData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FaceFeatureCustomizationSettingsData(FaceFeatureCustomizationSettingsData other) : this() {
      id_ = other.id_ != null ? other.id_.Clone() : null;
      positionOffset_ = other.positionOffset_ != null ? other.positionOffset_.Clone() : null;
      scaleOffset_ = other.scaleOffset_;
      rotation_ = other.rotation_;
      aspect_ = other.aspect_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FaceFeatureCustomizationSettingsData Clone() {
      return new FaceFeatureCustomizationSettingsData(this);
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private global::RecRoom.Protobuf.Core.GuidData id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.GuidData Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    /// <summary>Field number for the "position_offset" field.</summary>
    public const int PositionOffsetFieldNumber = 2;
    private global::RecRoom.Protobuf.Core.Vector2Data positionOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector2Data PositionOffset {
      get { return positionOffset_; }
      set {
        positionOffset_ = value;
      }
    }

    /// <summary>Field number for the "scale_offset" field.</summary>
    public const int ScaleOffsetFieldNumber = 3;
    private float scaleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ScaleOffset {
      get { return scaleOffset_; }
      set {
        scaleOffset_ = value;
      }
    }

    /// <summary>Field number for the "rotation" field.</summary>
    public const int RotationFieldNumber = 4;
    private float rotation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Rotation {
      get { return rotation_; }
      set {
        rotation_ = value;
      }
    }

    /// <summary>Field number for the "aspect" field.</summary>
    public const int AspectFieldNumber = 5;
    private float aspect_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Aspect {
      get { return aspect_; }
      set {
        aspect_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FaceFeatureCustomizationSettingsData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FaceFeatureCustomizationSettingsData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Id, other.Id)) return false;
      if (!object.Equals(PositionOffset, other.PositionOffset)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ScaleOffset, other.ScaleOffset)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Rotation, other.Rotation)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Aspect, other.Aspect)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (id_ != null) hash ^= Id.GetHashCode();
      if (positionOffset_ != null) hash ^= PositionOffset.GetHashCode();
      if (ScaleOffset != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ScaleOffset);
      if (Rotation != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Rotation);
      if (Aspect != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Aspect);
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (id_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Id);
      }
      if (positionOffset_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(PositionOffset);
      }
      if (ScaleOffset != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(ScaleOffset);
      }
      if (Rotation != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(Rotation);
      }
      if (Aspect != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Aspect);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (id_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Id);
      }
      if (positionOffset_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(PositionOffset);
      }
      if (ScaleOffset != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(ScaleOffset);
      }
      if (Rotation != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(Rotation);
      }
      if (Aspect != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Aspect);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (id_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Id);
      }
      if (positionOffset_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PositionOffset);
      }
      if (ScaleOffset != 0F) {
        size += 1 + 4;
      }
      if (Rotation != 0F) {
        size += 1 + 4;
      }
      if (Aspect != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FaceFeatureCustomizationSettingsData other) {
      if (other == null) {
        return;
      }
      if (other.id_ != null) {
        if (id_ == null) {
          Id = new global::RecRoom.Protobuf.Core.GuidData();
        }
        Id.MergeFrom(other.Id);
      }
      if (other.positionOffset_ != null) {
        if (positionOffset_ == null) {
          PositionOffset = new global::RecRoom.Protobuf.Core.Vector2Data();
        }
        PositionOffset.MergeFrom(other.PositionOffset);
      }
      if (other.ScaleOffset != 0F) {
        ScaleOffset = other.ScaleOffset;
      }
      if (other.Rotation != 0F) {
        Rotation = other.Rotation;
      }
      if (other.Aspect != 0F) {
        Aspect = other.Aspect;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (id_ == null) {
              Id = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(Id);
            break;
          }
          case 18: {
            if (positionOffset_ == null) {
              PositionOffset = new global::RecRoom.Protobuf.Core.Vector2Data();
            }
            input.ReadMessage(PositionOffset);
            break;
          }
          case 29: {
            ScaleOffset = input.ReadFloat();
            break;
          }
          case 37: {
            Rotation = input.ReadFloat();
            break;
          }
          case 45: {
            Aspect = input.ReadFloat();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (id_ == null) {
              Id = new global::RecRoom.Protobuf.Core.GuidData();
            }
            input.ReadMessage(Id);
            break;
          }
          case 18: {
            if (positionOffset_ == null) {
              PositionOffset = new global::RecRoom.Protobuf.Core.Vector2Data();
            }
            input.ReadMessage(PositionOffset);
            break;
          }
          case 29: {
            ScaleOffset = input.ReadFloat();
            break;
          }
          case 37: {
            Rotation = input.ReadFloat();
            break;
          }
          case 45: {
            Aspect = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AnchorParamsData : pb::IMessage<AnchorParamsData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AnchorParamsData> _parser = new pb::MessageParser<AnchorParamsData>(() => new AnchorParamsData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AnchorParamsData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AnchorParamsData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AnchorParamsData(AnchorParamsData other) : this() {
      normalizedPosition_ = other.normalizedPosition_ != null ? other.normalizedPosition_.Clone() : null;
      hemisphereOffsets_ = other.hemisphereOffsets_ != null ? other.hemisphereOffsets_.Clone() : null;
      hemisphereRotations_ = other.hemisphereRotations_ != null ? other.hemisphereRotations_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AnchorParamsData Clone() {
      return new AnchorParamsData(this);
    }

    /// <summary>Field number for the "normalized_position" field.</summary>
    public const int NormalizedPositionFieldNumber = 1;
    private global::RecRoom.Protobuf.Core.Vector2Data normalizedPosition_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector2Data NormalizedPosition {
      get { return normalizedPosition_; }
      set {
        normalizedPosition_ = value;
      }
    }

    /// <summary>Field number for the "hemisphere_offsets" field.</summary>
    public const int HemisphereOffsetsFieldNumber = 2;
    private global::RecRoom.Protobuf.Core.Vector3Data hemisphereOffsets_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector3Data HemisphereOffsets {
      get { return hemisphereOffsets_; }
      set {
        hemisphereOffsets_ = value;
      }
    }

    /// <summary>Field number for the "hemisphere_rotations" field.</summary>
    public const int HemisphereRotationsFieldNumber = 3;
    private global::RecRoom.Protobuf.Core.Vector3Data hemisphereRotations_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector3Data HemisphereRotations {
      get { return hemisphereRotations_; }
      set {
        hemisphereRotations_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AnchorParamsData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AnchorParamsData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(NormalizedPosition, other.NormalizedPosition)) return false;
      if (!object.Equals(HemisphereOffsets, other.HemisphereOffsets)) return false;
      if (!object.Equals(HemisphereRotations, other.HemisphereRotations)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (normalizedPosition_ != null) hash ^= NormalizedPosition.GetHashCode();
      if (hemisphereOffsets_ != null) hash ^= HemisphereOffsets.GetHashCode();
      if (hemisphereRotations_ != null) hash ^= HemisphereRotations.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (normalizedPosition_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(NormalizedPosition);
      }
      if (hemisphereOffsets_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(HemisphereOffsets);
      }
      if (hemisphereRotations_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(HemisphereRotations);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (normalizedPosition_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(NormalizedPosition);
      }
      if (hemisphereOffsets_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(HemisphereOffsets);
      }
      if (hemisphereRotations_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(HemisphereRotations);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (normalizedPosition_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(NormalizedPosition);
      }
      if (hemisphereOffsets_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(HemisphereOffsets);
      }
      if (hemisphereRotations_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(HemisphereRotations);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AnchorParamsData other) {
      if (other == null) {
        return;
      }
      if (other.normalizedPosition_ != null) {
        if (normalizedPosition_ == null) {
          NormalizedPosition = new global::RecRoom.Protobuf.Core.Vector2Data();
        }
        NormalizedPosition.MergeFrom(other.NormalizedPosition);
      }
      if (other.hemisphereOffsets_ != null) {
        if (hemisphereOffsets_ == null) {
          HemisphereOffsets = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        HemisphereOffsets.MergeFrom(other.HemisphereOffsets);
      }
      if (other.hemisphereRotations_ != null) {
        if (hemisphereRotations_ == null) {
          HemisphereRotations = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        HemisphereRotations.MergeFrom(other.HemisphereRotations);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (normalizedPosition_ == null) {
              NormalizedPosition = new global::RecRoom.Protobuf.Core.Vector2Data();
            }
            input.ReadMessage(NormalizedPosition);
            break;
          }
          case 18: {
            if (hemisphereOffsets_ == null) {
              HemisphereOffsets = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(HemisphereOffsets);
            break;
          }
          case 26: {
            if (hemisphereRotations_ == null) {
              HemisphereRotations = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(HemisphereRotations);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (normalizedPosition_ == null) {
              NormalizedPosition = new global::RecRoom.Protobuf.Core.Vector2Data();
            }
            input.ReadMessage(NormalizedPosition);
            break;
          }
          case 18: {
            if (hemisphereOffsets_ == null) {
              HemisphereOffsets = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(HemisphereOffsets);
            break;
          }
          case 26: {
            if (hemisphereRotations_ == null) {
              HemisphereRotations = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(HemisphereRotations);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AuraData : pb::IMessage<AuraData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AuraData> _parser = new pb::MessageParser<AuraData>(() => new AuraData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AuraData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.AvatarDataReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuraData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuraData(AuraData other) : this() {
      id_ = other.id_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuraData Clone() {
      return new AuraData(this);
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AuraData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AuraData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Id != 0) hash ^= Id.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Id != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AuraData other) {
      if (other == null) {
        return;
      }
      if (other.Id != 0) {
        Id = other.Id;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
