// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: schema.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 Cfg {

  /// <summary>Holder for reflection information generated from schema.proto</summary>
  public static partial class SchemaReflection {

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

    static SchemaReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CgxzY2hlbWEucHJvdG8SA2NmZyJEChJUZXN0VGVzdEV4Y2VsQmVhbjESCgoC",
            "eDEYASACKAUSCgoCeDIYAiACKAkSCgoCeDMYAyACKAUSCgoCeDQYBCACKAIi",
            "ZwoMQWlCbGFja2JvYXJkEgwKBG5hbWUYASACKAkSDAoEZGVzYxgCIAIoCRIT",
            "CgtwYXJlbnRfbmFtZRgDIAIoCRImCgRrZXlzGAQgAygLMhQuY2ZnLkFpQmxh",
            "Y2tib2FyZEtleUICEAAieAoPQWlCbGFja2JvYXJkS2V5EgwKBG5hbWUYASAC",
            "KAkSDAoEZGVzYxgCIAIoCRIRCglpc19zdGF0aWMYAyACKAgSHQoEdHlwZRgE",
            "IAIoDjIPLmNmZy5BaUVLZXlUeXBlEhcKD3R5cGVfY2xhc3NfbmFtZRgFIAIo",
            "CSJxCg5BaUJlaGF2aW9yVHJlZRIKCgJpZBgBIAIoBRIMCgRuYW1lGAIgAigJ",
            "EgwKBGRlc2MYAyACKAkSFQoNYmxhY2tib2FyZF9pZBgEIAIoCRIgCgRyb290",
            "GAUgAigLMhIuY2ZnLkFpQ29tcG9zZU5vZGUi1ggKBkFpTm9kZRI1ChFVZVNl",
            "dERlZmF1bHRGb2N1cxgBIAEoCzIYLmNmZy5BaVVlU2V0RGVmYXVsdEZvY3Vz",
            "SAASOwoURXhlY3V0ZVRpbWVTdGF0aXN0aWMYAiABKAsyGy5jZmcuQWlFeGVj",
            "dXRlVGltZVN0YXRpc3RpY0gAEisKDENob29zZVRhcmdldBgDIAEoCzITLmNm",
            "Zy5BaUNob29zZVRhcmdldEgAEi8KDktlZXBGYWNlVGFyZ2V0GAQgASgLMhUu",
            "Y2ZnLkFpS2VlcEZhY2VUYXJnZXRIABIvCg5HZXRPd25lclBsYXllchgFIAEo",
            "CzIVLmNmZy5BaUdldE93bmVyUGxheWVySAASQwoYVXBkYXRlRGFpbHlCZWhh",
            "dmlvclByb3BzGAYgASgLMh8uY2ZnLkFpVXBkYXRlRGFpbHlCZWhhdmlvclBy",
            "b3BzSAASHwoGVWVMb29wGAcgASgLMg0uY2ZnLkFpVWVMb29wSAASJwoKVWVD",
            "b29sZG93bhgIIAEoCzIRLmNmZy5BaVVlQ29vbGRvd25IABIpCgtVZVRpbWVM",
            "aW1pdBgJIAEoCzISLmNmZy5BaVVlVGltZUxpbWl0SAASKwoMVWVCbGFja2Jv",
            "YXJkGAogASgLMhMuY2ZnLkFpVWVCbGFja2JvYXJkSAASLwoOVWVGb3JjZVN1",
            "Y2Nlc3MYCyABKAsyFS5jZmcuQWlVZUZvcmNlU3VjY2Vzc0gAEisKDElzQXRM",
            "b2NhdGlvbhgMIAEoCzITLmNmZy5BaUlzQXRMb2NhdGlvbkgAEjMKEERpc3Rh",
            "bmNlTGVzc1RoYW4YDSABKAsyFy5jZmcuQWlEaXN0YW5jZUxlc3NUaGFuSAAS",
            "IwoIU2VxdWVuY2UYDiABKAsyDy5jZmcuQWlTZXF1ZW5jZUgAEiMKCFNlbGVj",
            "dG9yGA8gASgLMg8uY2ZnLkFpU2VsZWN0b3JIABIvCg5TaW1wbGVQYXJhbGxl",
            "bBgQIAEoCzIVLmNmZy5BaVNpbXBsZVBhcmFsbGVsSAASHwoGVWVXYWl0GBEg",
            "ASgLMg0uY2ZnLkFpVWVXYWl0SAASOwoUVWVXYWl0QmxhY2tib2FyZFRpbWUY",
            "EiABKAsyGy5jZmcuQWlVZVdhaXRCbGFja2JvYXJkVGltZUgAEisKDE1vdmVU",
            "b1RhcmdldBgTIAEoCzITLmNmZy5BaU1vdmVUb1RhcmdldEgAEikKC0Nob29z",
            "ZVNraWxsGBQgASgLMhIuY2ZnLkFpQ2hvb3NlU2tpbGxIABI7ChRNb3ZlVG9S",
            "YW5kb21Mb2NhdGlvbhgVIAEoCzIbLmNmZy5BaU1vdmVUb1JhbmRvbUxvY2F0",
            "aW9uSAASLwoOTW92ZVRvTG9jYXRpb24YFiABKAsyFS5jZmcuQWlNb3ZlVG9M",
            "b2NhdGlvbkgAEicKCkRlYnVnUHJpbnQYFyABKAsyES5jZmcuQWlEZWJ1Z1By",
            "aW50SABCBwoFdmFsdWUi3AIKCUFpU2VydmljZRI1ChFVZVNldERlZmF1bHRG",
            "b2N1cxgBIAEoCzIYLmNmZy5BaVVlU2V0RGVmYXVsdEZvY3VzSAASOwoURXhl",
            "Y3V0ZVRpbWVTdGF0aXN0aWMYAiABKAsyGy5jZmcuQWlFeGVjdXRlVGltZVN0",
            "YXRpc3RpY0gAEisKDENob29zZVRhcmdldBgDIAEoCzITLmNmZy5BaUNob29z",
            "ZVRhcmdldEgAEi8KDktlZXBGYWNlVGFyZ2V0GAQgASgLMhUuY2ZnLkFpS2Vl",
            "cEZhY2VUYXJnZXRIABIvCg5HZXRPd25lclBsYXllchgFIAEoCzIVLmNmZy5B",
            "aUdldE93bmVyUGxheWVySAASQwoYVXBkYXRlRGFpbHlCZWhhdmlvclByb3Bz",
            "GAYgASgLMh8uY2ZnLkFpVXBkYXRlRGFpbHlCZWhhdmlvclByb3BzSABCBwoF",
            "dmFsdWUiSgoTQWlVZVNldERlZmF1bHRGb2N1cxIKCgJpZBgBIAIoBRIRCglu",
            "b2RlX25hbWUYAiACKAkSFAoMa2V5Ym9hcmRfa2V5GAMgAigJIjcKFkFpRXhl",
            "Y3V0ZVRpbWVTdGF0aXN0aWMSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIg",
            "AigJIkoKDkFpQ2hvb3NlVGFyZ2V0EgoKAmlkGAEgAigFEhEKCW5vZGVfbmFt",
            "ZRgCIAIoCRIZChFyZXN1bHRfdGFyZ2V0X2tleRgDIAIoCSJLChBBaUtlZXBG",
            "YWNlVGFyZ2V0EgoKAmlkGAEgAigFEhEKCW5vZGVfbmFtZRgCIAIoCRIYChB0",
            "YXJnZXRfYWN0b3Jfa2V5GAMgAigJIksKEEFpR2V0T3duZXJQbGF5ZXISCgoC",
            "aWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEhgKEHBsYXllcl9hY3Rvcl9r",
            "ZXkYAyACKAkizAIKGkFpVXBkYXRlRGFpbHlCZWhhdmlvclByb3BzEgoKAmlk",
            "GAEgAigFEhEKCW5vZGVfbmFtZRgCIAIoCRITCgtzYXRpZXR5X2tleRgDIAIo",
            "CRISCgplbmVyZ3lfa2V5GAQgAigJEhAKCG1vb2Rfa2V5GAUgAigJEiMKG3Nh",
            "dGlldHlfbG93ZXJfdGhyZXNob2xkX2tleRgGIAIoCRIjChtzYXRpZXR5X3Vw",
            "cGVyX3RocmVzaG9sZF9rZXkYByACKAkSIgoaZW5lcmd5X2xvd2VyX3RocmVz",
            "aG9sZF9rZXkYCCACKAkSIgoaZW5lcmd5X3VwcGVyX3RocmVzaG9sZF9rZXkY",
            "CSACKAkSIAoYbW9vZF9sb3dlcl90aHJlc2hvbGRfa2V5GAogAigJEiAKGG1v",
            "b2RfdXBwZXJfdGhyZXNob2xkX2tleRgLIAIoCSLLAgoLQWlEZWNvcmF0b3IS",
            "HwoGVWVMb29wGAcgASgLMg0uY2ZnLkFpVWVMb29wSAASJwoKVWVDb29sZG93",
            "bhgIIAEoCzIRLmNmZy5BaVVlQ29vbGRvd25IABIpCgtVZVRpbWVMaW1pdBgJ",
            "IAEoCzISLmNmZy5BaVVlVGltZUxpbWl0SAASKwoMVWVCbGFja2JvYXJkGAog",
            "ASgLMhMuY2ZnLkFpVWVCbGFja2JvYXJkSAASLwoOVWVGb3JjZVN1Y2Nlc3MY",
            "CyABKAsyFS5jZmcuQWlVZUZvcmNlU3VjY2Vzc0gAEisKDElzQXRMb2NhdGlv",
            "bhgMIAEoCzITLmNmZy5BaUlzQXRMb2NhdGlvbkgAEjMKEERpc3RhbmNlTGVz",
            "c1RoYW4YDSABKAsyFy5jZmcuQWlEaXN0YW5jZUxlc3NUaGFuSABCBwoFdmFs",
            "dWUipwEKCEFpVWVMb29wEgoKAmlkGAEgAigFEhEKCW5vZGVfbmFtZRgCIAIo",
            "CRIuCg9mbG93X2Fib3J0X21vZGUYAyACKA4yFS5jZmcuQWlFRmxvd0Fib3J0",
            "TW9kZRIRCgludW1fbG9vcHMYBCACKAUSFQoNaW5maW5pdGVfbG9vcBgFIAIo",
            "CBIiChppbmZpbml0ZV9sb29wX3RpbWVvdXRfdGltZRgGIAIoAiJ0CgxBaVVl",
            "Q29vbGRvd24SCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEi4KD2Zs",
            "b3dfYWJvcnRfbW9kZRgDIAIoDjIVLmNmZy5BaUVGbG93QWJvcnRNb2RlEhUK",
            "DWNvb2xkb3duX3RpbWUYBCACKAIicgoNQWlVZVRpbWVMaW1pdBIKCgJpZBgB",
            "IAIoBRIRCglub2RlX25hbWUYAiACKAkSLgoPZmxvd19hYm9ydF9tb2RlGAMg",
            "AigOMhUuY2ZnLkFpRUZsb3dBYm9ydE1vZGUSEgoKbGltaXRfdGltZRgEIAIo",
            "AiLYAQoOQWlVZUJsYWNrYm9hcmQSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1l",
            "GAIgAigJEi4KD2Zsb3dfYWJvcnRfbW9kZRgDIAIoDjIVLmNmZy5BaUVGbG93",
            "QWJvcnRNb2RlEjMKD25vdGlmeV9vYnNlcnZlchgEIAIoDjIaLmNmZy5BaUVO",
            "b3RpZnlPYnNlcnZlck1vZGUSFgoOYmxhY2tib2FyZF9rZXkYBSACKAkSKgoJ",
            "a2V5X3F1ZXJ5GAYgAigLMhcuY2ZnLkFpS2V5UXVlcnlPcGVyYXRvciKSAQoS",
            "QWlLZXlRdWVyeU9wZXJhdG9yEh0KBUlzU2V0GAEgASgLMgwuY2ZnLkFpSXNT",
            "ZXRIABIjCghJc05vdFNldBgCIAEoCzIPLmNmZy5BaUlzTm90U2V0SAASLwoO",
            "QmluYXJ5T3BlcmF0b3IYAyABKAsyFS5jZmcuQWlCaW5hcnlPcGVyYXRvckgA",
            "QgcKBXZhbHVlIgkKB0FpSXNTZXQiDAoKQWlJc05vdFNldCJQChBBaUJpbmFy",
            "eU9wZXJhdG9yEh4KBG9wZXIYASACKA4yEC5jZmcuQWlFT3BlcmF0b3ISHAoE",
            "ZGF0YRgCIAIoCzIOLmNmZy5BaUtleURhdGEi0AEKCUFpS2V5RGF0YRIrCgxG",
            "bG9hdEtleURhdGEYASABKAsyEy5jZmcuQWlGbG9hdEtleURhdGFIABInCgpJ",
            "bnRLZXlEYXRhGAIgASgLMhEuY2ZnLkFpSW50S2V5RGF0YUgAEi0KDVN0cmlu",
            "Z0tleURhdGEYAyABKAsyFC5jZmcuQWlTdHJpbmdLZXlEYXRhSAASNQoRQmxh",
            "Y2tib2FyZEtleURhdGEYBCABKAsyGC5jZmcuQWlCbGFja2JvYXJkS2V5RGF0",
            "YUgAQgcKBXZhbHVlIh8KDkFpRmxvYXRLZXlEYXRhEg0KBXZhbHVlGAEgAigC",
            "Ih0KDEFpSW50S2V5RGF0YRINCgV2YWx1ZRgBIAIoBSIgCg9BaVN0cmluZ0tl",
            "eURhdGESDQoFdmFsdWUYASACKAkiJAoTQWlCbGFja2JvYXJkS2V5RGF0YRIN",
            "CgV2YWx1ZRgBIAIoCSJhChBBaVVlRm9yY2VTdWNjZXNzEgoKAmlkGAEgAigF",
            "EhEKCW5vZGVfbmFtZRgCIAIoCRIuCg9mbG93X2Fib3J0X21vZGUYAyACKA4y",
            "FS5jZmcuQWlFRmxvd0Fib3J0TW9kZSKrAQoOQWlJc0F0TG9jYXRpb24SCgoC",
            "aWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEi4KD2Zsb3dfYWJvcnRfbW9k",
            "ZRgDIAIoDjIVLmNmZy5BaUVGbG93QWJvcnRNb2RlEhkKEWFjY2VwdGFibGVf",
            "cmFkaXVzGAQgAigCEhQKDGtleWJvYXJkX2tleRgFIAIoCRIZChFpbnZlcnNl",
            "X2NvbmRpdGlvbhgGIAIoCCK1AQoSQWlEaXN0YW5jZUxlc3NUaGFuEgoKAmlk",
            "GAEgAigFEhEKCW5vZGVfbmFtZRgCIAIoCRIuCg9mbG93X2Fib3J0X21vZGUY",
            "AyACKA4yFS5jZmcuQWlFRmxvd0Fib3J0TW9kZRISCgphY3RvcjFfa2V5GAQg",
            "AigJEhIKCmFjdG9yMl9rZXkYBSACKAkSEAoIZGlzdGFuY2UYBiACKAISFgoO",
            "cmV2ZXJzZV9yZXN1bHQYByACKAgi3QMKCkFpRmxvd05vZGUSIwoIU2VxdWVu",
            "Y2UYDiABKAsyDy5jZmcuQWlTZXF1ZW5jZUgAEiMKCFNlbGVjdG9yGA8gASgL",
            "Mg8uY2ZnLkFpU2VsZWN0b3JIABIvCg5TaW1wbGVQYXJhbGxlbBgQIAEoCzIV",
            "LmNmZy5BaVNpbXBsZVBhcmFsbGVsSAASHwoGVWVXYWl0GBEgASgLMg0uY2Zn",
            "LkFpVWVXYWl0SAASOwoUVWVXYWl0QmxhY2tib2FyZFRpbWUYEiABKAsyGy5j",
            "ZmcuQWlVZVdhaXRCbGFja2JvYXJkVGltZUgAEisKDE1vdmVUb1RhcmdldBgT",
            "IAEoCzITLmNmZy5BaU1vdmVUb1RhcmdldEgAEikKC0Nob29zZVNraWxsGBQg",
            "ASgLMhIuY2ZnLkFpQ2hvb3NlU2tpbGxIABI7ChRNb3ZlVG9SYW5kb21Mb2Nh",
            "dGlvbhgVIAEoCzIbLmNmZy5BaU1vdmVUb1JhbmRvbUxvY2F0aW9uSAASLwoO",
            "TW92ZVRvTG9jYXRpb24YFiABKAsyFS5jZmcuQWlNb3ZlVG9Mb2NhdGlvbkgA",
            "EicKCkRlYnVnUHJpbnQYFyABKAsyES5jZmcuQWlEZWJ1Z1ByaW50SABCBwoF",
            "dmFsdWUikwEKDUFpQ29tcG9zZU5vZGUSIwoIU2VxdWVuY2UYDiABKAsyDy5j",
            "ZmcuQWlTZXF1ZW5jZUgAEiMKCFNlbGVjdG9yGA8gASgLMg8uY2ZnLkFpU2Vs",
            "ZWN0b3JIABIvCg5TaW1wbGVQYXJhbGxlbBgQIAEoCzIVLmNmZy5BaVNpbXBs",
            "ZVBhcmFsbGVsSABCBwoFdmFsdWUiogEKCkFpU2VxdWVuY2USCgoCaWQYASAC",
            "KAUSEQoJbm9kZV9uYW1lGAIgAigJEigKCmRlY29yYXRvcnMYAyADKAsyEC5j",
            "ZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNlcnZpY2VzGAQgAygLMg4uY2ZnLkFp",
            "U2VydmljZUICEAASJQoIY2hpbGRyZW4YBSADKAsyDy5jZmcuQWlGbG93Tm9k",
            "ZUICEAAiogEKCkFpU2VsZWN0b3ISCgoCaWQYASACKAUSEQoJbm9kZV9uYW1l",
            "GAIgAigJEigKCmRlY29yYXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JC",
            "AhAAEiQKCHNlcnZpY2VzGAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASJQoI",
            "Y2hpbGRyZW4YBSADKAsyDy5jZmcuQWlGbG93Tm9kZUICEAAi9AEKEEFpU2lt",
            "cGxlUGFyYWxsZWwSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEigK",
            "CmRlY29yYXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNl",
            "cnZpY2VzGAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASJwoLZmluaXNoX21v",
            "ZGUYBSACKA4yEi5jZmcuQWlFRmluaXNoTW9kZRIeCgltYWluX3Rhc2sYBiAC",
            "KAsyCy5jZmcuQWlUYXNrEigKD2JhY2tncm91bmRfbm9kZRgHIAIoCzIPLmNm",
            "Zy5BaUZsb3dOb2RlIt4CCgZBaVRhc2sSHwoGVWVXYWl0GBEgASgLMg0uY2Zn",
            "LkFpVWVXYWl0SAASOwoUVWVXYWl0QmxhY2tib2FyZFRpbWUYEiABKAsyGy5j",
            "ZmcuQWlVZVdhaXRCbGFja2JvYXJkVGltZUgAEisKDE1vdmVUb1RhcmdldBgT",
            "IAEoCzITLmNmZy5BaU1vdmVUb1RhcmdldEgAEikKC0Nob29zZVNraWxsGBQg",
            "ASgLMhIuY2ZnLkFpQ2hvb3NlU2tpbGxIABI7ChRNb3ZlVG9SYW5kb21Mb2Nh",
            "dGlvbhgVIAEoCzIbLmNmZy5BaU1vdmVUb1JhbmRvbUxvY2F0aW9uSAASLwoO",
            "TW92ZVRvTG9jYXRpb24YFiABKAsyFS5jZmcuQWlNb3ZlVG9Mb2NhdGlvbkgA",
            "EicKCkRlYnVnUHJpbnQYFyABKAsyES5jZmcuQWlEZWJ1Z1ByaW50SABCBwoF",
            "dmFsdWUiwwEKCEFpVWVXYWl0EgoKAmlkGAEgAigFEhEKCW5vZGVfbmFtZRgC",
            "IAIoCRIoCgpkZWNvcmF0b3JzGAMgAygLMhAuY2ZnLkFpRGVjb3JhdG9yQgIQ",
            "ABIkCghzZXJ2aWNlcxgEIAMoCzIOLmNmZy5BaVNlcnZpY2VCAhAAEhsKE2ln",
            "bm9yZV9yZXN0YXJ0X3NlbGYYBSACKAgSEQoJd2FpdF90aW1lGAYgAigCEhgK",
            "EHJhbmRvbV9kZXZpYXRpb24YByACKAIivAEKFkFpVWVXYWl0QmxhY2tib2Fy",
            "ZFRpbWUSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEigKCmRlY29y",
            "YXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNlcnZpY2Vz",
            "GAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASGwoTaWdub3JlX3Jlc3RhcnRf",
            "c2VsZhgFIAIoCBIWCg5ibGFja2JvYXJkX2tleRgGIAIoCSLRAQoOQWlNb3Zl",
            "VG9UYXJnZXQSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEigKCmRl",
            "Y29yYXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNlcnZp",
            "Y2VzGAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASGwoTaWdub3JlX3Jlc3Rh",
            "cnRfc2VsZhgFIAIoCBIYChB0YXJnZXRfYWN0b3Jfa2V5GAYgAigJEhkKEWFj",
            "Y2VwdGFibGVfcmFkaXVzGAcgAigCItIBCg1BaUNob29zZVNraWxsEgoKAmlk",
            "GAEgAigFEhEKCW5vZGVfbmFtZRgCIAIoCRIoCgpkZWNvcmF0b3JzGAMgAygL",
            "MhAuY2ZnLkFpRGVjb3JhdG9yQgIQABIkCghzZXJ2aWNlcxgEIAMoCzIOLmNm",
            "Zy5BaVNlcnZpY2VCAhAAEhsKE2lnbm9yZV9yZXN0YXJ0X3NlbGYYBSACKAgS",
            "GAoQdGFyZ2V0X2FjdG9yX2tleRgGIAIoCRIbChNyZXN1bHRfc2tpbGxfaWRf",
            "a2V5GAcgAigJItEBChZBaU1vdmVUb1JhbmRvbUxvY2F0aW9uEgoKAmlkGAEg",
            "AigFEhEKCW5vZGVfbmFtZRgCIAIoCRIoCgpkZWNvcmF0b3JzGAMgAygLMhAu",
            "Y2ZnLkFpRGVjb3JhdG9yQgIQABIkCghzZXJ2aWNlcxgEIAMoCzIOLmNmZy5B",
            "aVNlcnZpY2VCAhAAEhsKE2lnbm9yZV9yZXN0YXJ0X3NlbGYYBSACKAgSGwoT",
            "b3JpZ2luX3Bvc2l0aW9uX2tleRgGIAIoCRIOCgZyYWRpdXMYByACKAIiuQEK",
            "EEFpTW92ZVRvTG9jYXRpb24SCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIg",
            "AigJEigKCmRlY29yYXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JCAhAA",
            "EiQKCHNlcnZpY2VzGAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASGwoTaWdu",
            "b3JlX3Jlc3RhcnRfc2VsZhgFIAIoCBIZChFhY2NlcHRhYmxlX3JhZGl1cxgG",
            "IAIoAiKoAQoMQWlEZWJ1Z1ByaW50EgoKAmlkGAEgAigFEhEKCW5vZGVfbmFt",
            "ZRgCIAIoCRIoCgpkZWNvcmF0b3JzGAMgAygLMhAuY2ZnLkFpRGVjb3JhdG9y",
            "QgIQABIkCghzZXJ2aWNlcxgEIAMoCzIOLmNmZy5BaVNlcnZpY2VCAhAAEhsK",
            "E2lnbm9yZV9yZXN0YXJ0X3NlbGYYBSACKAgSDAoEdGV4dBgGIAIoCSLPBAoS",
            "Q29tbW9uR2xvYmFsQ29uZmlnEhQKDGJhZ19jYXBhY2l0eRgBIAIoBRIcChRi",
            "YWdfY2FwYWNpdHlfc3BlY2lhbBgCIAIoBRIkChxiYWdfdGVtcF9leHBlbmRh",
            "YmxlX2NhcGFjaXR5GAMgAigFEh4KFmJhZ190ZW1wX3Rvb2xfY2FwYWNpdHkY",
            "BCACKAUSGQoRYmFnX2luaXRfY2FwYWNpdHkYBSACKAUSGgoScXVpY2tfYmFn",
            "X2NhcGFjaXR5GAYgAigFEhoKEmNsb3RoX2JhZ19jYXBhY2l0eRgHIAIoBRIf",
            "ChdjbG90aF9iYWdfaW5pdF9jYXBhY2l0eRgIIAIoBRIiChpjbG90aF9iYWdf",
            "Y2FwYWNpdHlfc3BlY2lhbBgJIAIoBRIeChZiYWdfaW5pdF9pdGVtc19kcm9w",
            "X2lkGAogASgFEhkKEW1haWxfYm94X2NhcGFjaXR5GAsgAigFEhYKDmRhbWFn",
            "ZV9wYXJhbV9jGAwgAigCEhYKDmRhbWFnZV9wYXJhbV9lGA0gAigCEhYKDmRh",
            "bWFnZV9wYXJhbV9mGA4gAigCEhYKDmRhbWFnZV9wYXJhbV9kGA8gAigCEhIK",
            "CnJvbGVfc3BlZWQYECACKAISFQoNbW9uc3Rlcl9zcGVlZBgRIAIoAhITCgtp",
            "bml0X2VuZXJneRgSIAIoBRIUCgxpbml0X3ZpYWxpdHkYEyACKAUSEwoLbWF4",
            "X3ZpYWxpdHkYFCACKAUSIQoZcGVyX3ZpYWxpdHlfcmVjb3ZlcnlfdGltZRgV",
            "IAIoBSKPAgoISXRlbUl0ZW0SCgoCaWQYASACKAUSDAoEbmFtZRgCIAIoCRIn",
            "CgptYWpvcl90eXBlGAMgAigOMhMuY2ZnLkl0ZW1FTWFqb3JUeXBlEicKCm1p",
            "bm9yX3R5cGUYBCACKA4yEy5jZmcuSXRlbUVNaW5vclR5cGUSFAoMbWF4X3Bp",
            "bGVfbnVtGAUgAigFEiYKB3F1YWxpdHkYBiACKA4yFS5jZmcuSXRlbUVJdGVt",
            "UXVhbGl0eRIMCgRpY29uGAcgAigJEhYKDmljb25fYmFja2dyb3VkGAggAigJ",
            "EhEKCWljb25fbWFzaxgJIAIoCRIMCgRkZXNjGAogAigJEhIKCnNob3dfb3Jk",
            "ZXIYCyACKAUiKAoMTDEwbkwxME5EZW1vEgoKAmlkGAEgAigFEgwKBHRleHQY",
            "AiACKAkiKgoNTDEwblBhdGNoRGVtbxIKCgJpZBgBIAIoBRINCgV2YWx1ZRgC",
            "IAIoBSInCgpUYWdUZXN0VGFnEgoKAmlkGAEgAigFEg0KBXZhbHVlGAIgAigJ",
            "It0DCg1UZXN0RGVtb1R5cGUyEgoKAng0GAEgAigFEgoKAngxGAIgAigIEgoK",
            "AngyGAMgAigFEgoKAngzGAQgAigFEgoKAng1GAUgAigDEgoKAng2GAYgAigC",
            "EgoKAng3GAcgAigBEgwKBHg4XzAYCCACKAUSCgoCeDgYCSACKAUSCgoCeDkY",
            "CiACKAMSCwoDeDEwGAsgAigJEh8KA3gxMhgMIAIoCzISLmNmZy5UZXN0RGVt",
            "b1R5cGUxEh4KA3gxMxgNIAIoDjIRLmNmZy5UZXN0RGVtb0VudW0SIQoDeDE0",
            "GA4gAigLMhQuY2ZnLlRlc3REZW1vRHluYW1pYxIKCgJzMRgPIAIoCRIKCgJ0",
            "MRgQIAIoAxIOCgJrMRgRIAMoBUICEAESDgoCazIYEiADKAVCAhABEg4KAms1",
            "GBMgAygFQgIQARImCgJrOBgUIAMoCzIaLmNmZy5UZXN0RGVtb1R5cGUyLks4",
            "RW50cnkSHwoCazkYFSADKAsyDy5jZmcuVGVzdERlbW9FMkICEAASJQoDazE1",
            "GBYgAygLMhQuY2ZnLlRlc3REZW1vRHluYW1pY0ICEAAaKQoHSzhFbnRyeRIL",
            "CgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIhsKDVRlc3REZW1vVHlw",
            "ZTESCgoCeDEYASACKAUirwEKD1Rlc3REZW1vRHluYW1pYxIhCgZEZW1vRDIY",
            "ASABKAsyDy5jZmcuVGVzdERlbW9EMkgAEiEKBkRlbW9FMRgCIAEoCzIPLmNm",
            "Zy5UZXN0RGVtb0UxSAASKgoIUm9sZUluZm8YAyABKAsyFi5jZmcuVGVzdExv",
            "Z2luUm9sZUluZm9IABIhCgZEZW1vRDUYBCABKAsyDy5jZmcuVGVzdERlbW9E",
            "NUgAQgcKBXZhbHVlIiQKClRlc3REZW1vRDISCgoCeDEYASACKAUSCgoCeDIY",
            "AiACKAUiZAoKVGVzdERlbW9EMxIhCgZEZW1vRTEYAiABKAsyDy5jZmcuVGVz",
            "dERlbW9FMUgAEioKCFJvbGVJbmZvGAMgASgLMhYuY2ZnLlRlc3RMb2dpblJv",
            "bGVJbmZvSABCBwoFdmFsdWUiMAoKVGVzdERlbW9FMRIKCgJ4MRgBIAIoBRIK",
            "CgJ4MxgCIAIoBRIKCgJ4NBgDIAIoBSI8ChFUZXN0TG9naW5Sb2xlSW5mbxIK",
            "CgJ4MRgBIAIoBRIKCgJ4MxgCIAIoBRIPCgdyb2xlX2lkGAMgAigDIj4KClRl",
            "c3REZW1vRDUSCgoCeDEYASACKAUSJAoEdGltZRgCIAIoCzIWLmNmZy5UZXN0",
            "RGF0ZVRpbWVSYW5nZSI5ChFUZXN0RGF0ZVRpbWVSYW5nZRISCgpzdGFydF90",
            "aW1lGAEgAigDEhAKCGVuZF90aW1lGAIgAigDIiQKClRlc3REZW1vRTISCgoC",
            "eTEYASABKAUSCgoCeTIYAiACKAgiVQoVVGVzdERlbW9TaW5nbGV0b25UeXBl",
            "EgoKAmlkGAEgAigFEgwKBG5hbWUYAiACKAkSIgoEZGF0ZRgDIAIoCzIULmNm",
            "Zy5UZXN0RGVtb0R5bmFtaWMiKAoQVGVzdE5vdEluZGV4TGlzdBIJCgF4GAEg",
            "AigFEgkKAXkYAiACKAUiWwoXVGVzdE11bHRpVW5pb25JbmRleExpc3QSCwoD",
            "aWQxGAEgAigFEgsKA2lkMhgCIAIoAxILCgNpZDMYAyACKAkSCwoDbnVtGAQg",
            "AigFEgwKBGRlc2MYBSACKAkiVgoSVGVzdE11bHRpSW5kZXhMaXN0EgsKA2lk",
            "MRgBIAIoBRILCgNpZDIYAiACKAMSCwoDaWQzGAMgAigJEgsKA251bRgEIAIo",
            "BRIMCgRkZXNjGAUgAigJIvIEChJUZXN0TXVsdGlSb3dSZWNvcmQSCgoCaWQY",
            "ASACKAUSDAoEbmFtZRgCIAIoCRIsCghvbmVfcm93cxgDIAMoCzIWLmNmZy5U",
            "ZXN0TXVsdGlSb3dUeXBlMUICEAASLwoLbXVsdGlfcm93czEYBCADKAsyFi5j",
            "ZmcuVGVzdE11bHRpUm93VHlwZTFCAhAAEi8KC211bHRpX3Jvd3MyGAUgAygL",
            "MhYuY2ZnLlRlc3RNdWx0aVJvd1R5cGUxQgIQABI8CgttdWx0aV9yb3dzNBgG",
            "IAMoCzInLmNmZy5UZXN0TXVsdGlSb3dSZWNvcmQuTXVsdGlSb3dzNEVudHJ5",
            "Ei8KC211bHRpX3Jvd3M1GAcgAygLMhYuY2ZnLlRlc3RNdWx0aVJvd1R5cGUz",
            "QgIQABI8CgttdWx0aV9yb3dzNhgIIAMoCzInLmNmZy5UZXN0TXVsdGlSb3dS",
            "ZWNvcmQuTXVsdGlSb3dzNkVudHJ5EjwKC211bHRpX3Jvd3M3GAkgAygLMicu",
            "Y2ZnLlRlc3RNdWx0aVJvd1JlY29yZC5NdWx0aVJvd3M3RW50cnkaSQoPTXVs",
            "dGlSb3dzNEVudHJ5EgsKA2tleRgBIAEoBRIlCgV2YWx1ZRgCIAEoCzIWLmNm",
            "Zy5UZXN0TXVsdGlSb3dUeXBlMjoCOAEaSQoPTXVsdGlSb3dzNkVudHJ5EgsK",
            "A2tleRgBIAEoBRIlCgV2YWx1ZRgCIAEoCzIWLmNmZy5UZXN0TXVsdGlSb3dU",
            "eXBlMjoCOAEaMQoPTXVsdGlSb3dzN0VudHJ5EgsKA2tleRgBIAEoBRINCgV2",
            "YWx1ZRgCIAEoBToCOAEiKgoRVGVzdE11bHRpUm93VHlwZTESCgoCaWQYASAC",
            "KAUSCQoBeBgCIAIoBSI1ChFUZXN0TXVsdGlSb3dUeXBlMhIKCgJpZBgBIAIo",
            "BRIJCgF4GAIgAigFEgkKAXkYAyACKAIiSgoRVGVzdE11bHRpUm93VHlwZTMS",
            "CgoCaWQYASACKAUSKQoFaXRlbXMYAiADKAsyFi5jZmcuVGVzdE11bHRpUm93",
            "VHlwZTFCAhAAImwKE1Rlc3RUZXN0TXVsdGlDb2x1bW4SCgoCaWQYASACKAUS",
            "FwoBYRgCIAIoCzIMLmNmZy5UZXN0Rm9vEhcKAWIYAyACKAsyDC5jZmcuVGVz",
            "dEZvbxIXCgFjGAQgAigLMgwuY2ZnLlRlc3RGb28iLQoHVGVzdEZvbxIKCgJ5",
            "MRgBIAIoBRIKCgJ5MhgCIAIoBRIKCgJ5MxgDIAIoBSK4AQoRVGVzdE11bHRp",
            "Um93VGl0bGUSCgoCaWQYASACKAUSDAoEbmFtZRgCIAIoCRIXCgJ4MRgDIAIo",
            "CzILLmNmZy5UZXN0SDESGQoEeDJfMBgEIAEoCzILLmNmZy5UZXN0SDISGwoC",
            "eDIYBSADKAsyCy5jZmcuVGVzdEgyQgIQABIbCgJ4MxgGIAMoCzILLmNmZy5U",
            "ZXN0SDJCAhAAEhsKAng0GAcgAygLMgsuY2ZnLlRlc3RIMkICEAAiLQoGVGVz",
            "dEgxEhcKAnkyGAEgAigLMgsuY2ZnLlRlc3RIMhIKCgJ5MxgCIAIoBSIgCgZU",
            "ZXN0SDISCgoCejIYASACKAUSCgoCejMYAiACKAUinwEKDFRlc3RUZXN0TnVs",
            "bBIKCgJpZBgBIAIoBRIKCgJ4MRgCIAEoBRIdCgJ4MhgDIAEoDjIRLmNmZy5U",
            "ZXN0RGVtb0VudW0SHgoCeDMYBCABKAsyEi5jZmcuVGVzdERlbW9UeXBlMRIg",
            "CgJ4NBgFIAEoCzIULmNmZy5UZXN0RGVtb0R5bmFtaWMSCgoCczEYBiABKAkS",
            "CgoCczIYByABKAki4wEKG1Rlc3REZW1vUHJpbWl0aXZlVHlwZXNUYWJsZRIK",
            "CgJ4MRgBIAIoCBIKCgJ4MhgCIAIoBRIKCgJ4MxgDIAIoBRIKCgJ4NBgEIAIo",
            "BRIKCgJ4NRgFIAIoAxIKCgJ4NhgGIAIoAhIKCgJ4NxgHIAIoARIKCgJzMRgI",
            "IAIoCRIKCgJzMhgJIAIoCRIYCgJ2MhgKIAIoCzIMLmNmZy52ZWN0b3IyEhgK",
            "AnYzGAsgAigLMgwuY2ZnLnZlY3RvcjMSGAoCdjQYDCACKAsyDC5jZmcudmVj",
            "dG9yNBIKCgJ0MRgNIAIoAyIfCgd2ZWN0b3IyEgkKAXgYASACKAISCQoBeRgC",
            "IAIoAiIqCgd2ZWN0b3IzEgkKAXgYASACKAISCQoBeRgCIAIoAhIJCgF6GAMg",
            "AigCIjUKB3ZlY3RvcjQSCQoBeBgBIAIoAhIJCgF5GAIgAigCEgkKAXoYAyAC",
            "KAISCQoBdxgEIAIoAiJyCg5UZXN0VGVzdFN0cmluZxIKCgJpZBgBIAIoBRIK",
            "CgJzMRgCIAIoCRIjCgNjczEYAyACKAsyFi5jZmcuVGVzdENvbXBhY3RTdHJp",
            "bmcSIwoDY3MyGAQgAigLMhYuY2ZnLlRlc3RDb21wYWN0U3RyaW5nIjcKEVRl",
            "c3RDb21wYWN0U3RyaW5nEgoKAmlkGAEgAigFEgoKAnMyGAIgAigJEgoKAnMz",
            "GAMgAigJImwKDVRlc3REZW1vR3JvdXASCgoCaWQYASACKAUSCgoCeDEYAiAC",
            "KAUSCgoCeDIYAyACKAUSCgoCeDMYBCACKAUSCgoCeDQYBSACKAUSHwoCeDUY",
            "BiACKAsyEy5jZmcuVGVzdElubmVyR3JvdXAiQAoOVGVzdElubmVyR3JvdXAS",
            "CgoCeTEYASACKAUSCgoCeTIYAiACKAUSCgoCeTMYAyACKAUSCgoCeTQYBCAC",
            "KAUiOwoOVGVzdFRlc3RHbG9iYWwSFAoMdW5sb2NrX2VxdWlwGAEgAigFEhMK",
            "C3VubG9ja19oZXJvGAIgAigFIioKDVRlc3RUZXN0QmVSZWYSCgoCaWQYASAC",
            "KAUSDQoFY291bnQYAiACKAUixgMKC1Rlc3RUZXN0UmVmEgoKAmlkGAEgAigF",
            "EgoKAngxGAIgAigFEgwKBHgxXzIYAyACKAUSCgoCeDIYBCACKAUSCgoCeDMY",
            "BSACKAUSCgoCeDQYBiACKAUSDgoCYTEYByADKAVCAhABEg4KAmEyGAggAygF",
            "QgIQARIOCgJiMRgJIAMoBUICEAESDgoCYjIYCiADKAVCAhABEg4KAmMxGAsg",
            "AygFQgIQARIOCgJjMhgMIAMoBUICEAESJAoCZDEYDSADKAsyGC5jZmcuVGVz",
            "dFRlc3RSZWYuRDFFbnRyeRIkCgJkMhgOIAMoCzIYLmNmZy5UZXN0VGVzdFJl",
            "Zi5EMkVudHJ5EgoKAmUxGA8gAigFEgoKAmUyGBAgAigDEgoKAmUzGBEgAigJ",
            "EgoKAmYxGBIgAigFEgoKAmYyGBMgAigDEgoKAmYzGBQgAigJEiMKAnMxGBUg",
            "AigLMhcuY2ZnLlRlc3RSZWZEeW5hbWljQmFzZRopCgdEMUVudHJ5EgsKA2tl",
            "eRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEaKQoHRDJFbnRyeRILCgNrZXkY",
            "ASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIkIKElRlc3RSZWZEeW5hbWljQmFz",
            "ZRIjCgdSZWZCZWFuGAEgASgLMhAuY2ZnLlRlc3RSZWZCZWFuSABCBwoFdmFs",
            "dWUiKQoLVGVzdFJlZkJlYW4SCQoBeBgBIAIoBRIPCgNhcnIYAiADKAVCAhAB",
            "IpwBCgxUZXN0VGVzdFNpemUSCgoCaWQYASACKAUSDgoCeDEYAiADKAVCAhAB",
            "Eg4KAngyGAMgAygFQgIQARIOCgJ4MxgEIAMoBUICEAESJQoCeDQYBSADKAsy",
            "GS5jZmcuVGVzdFRlc3RTaXplLlg0RW50cnkaKQoHWDRFbnRyeRILCgNrZXkY",
            "ASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIngKC1Rlc3RUZXN0U2V0EgoKAmlk",
            "GAEgAigFEgoKAngwGAIgAigJEg4KAngxGAMgAygFQgIQARIOCgJ4MhgEIAMo",
            "A0ICEAESDgoCeDMYBSADKAlCAhAAEiEKAng0GAYgAygOMhEuY2ZnLlRlc3RE",
            "ZW1vRW51bUICEAAiLgoSVGVzdERldGVjdEVuY29kaW5nEgoKAmlkGAEgAigF",
            "EgwKBG5hbWUYAiACKAkiiAEKDFRlc3RJdGVtQmFzZRIdCgRJdGVtGAEgASgL",
            "Mg0uY2ZnLlRlc3RJdGVtSAASJwoJRXF1aXBtZW50GAIgASgLMhIuY2ZnLlRl",
            "c3RFcXVpcG1lbnRIABInCglEZWNvcmF0b3IYAyABKAsyEi5jZmcuVGVzdERl",
            "Y29yYXRvckgAQgcKBXZhbHVlIk4KCFRlc3RJdGVtEgoKAmlkGAEgAigFEgwK",
            "BG5hbWUYAiACKAkSDAoEZGVzYxgDIAIoCRILCgNudW0YBCACKAUSDQoFcHJp",
            "Y2UYBSACKAUiZwoNVGVzdEVxdWlwbWVudBIKCgJpZBgBIAIoBRIMCgRuYW1l",
            "GAIgAigJEgwKBGRlc2MYAyACKAkSHwoEYXR0chgEIAIoDjIRLmNmZy5UZXN0",
            "RGVtb0VudW0SDQoFdmFsdWUYBSACKAUiSQoNVGVzdERlY29yYXRvchIKCgJp",
            "ZBgBIAIoBRIMCgRuYW1lGAIgAigJEgwKBGRlc2MYAyACKAkSEAoIZHVyYXRp",
            "b24YBCACKAUiQQoNVGVzdFRlc3RJbmRleBIKCgJpZBgBIAIoBRIkCgRlbGVz",
            "GAIgAygLMhIuY2ZnLlRlc3REZW1vVHlwZTFCAhAAIt0CCgtUZXN0VGVzdE1h",
            "cBIKCgJpZBgBIAIoBRIkCgJ4MRgCIAMoCzIYLmNmZy5UZXN0VGVzdE1hcC5Y",
            "MUVudHJ5EiQKAngyGAMgAygLMhguY2ZnLlRlc3RUZXN0TWFwLlgyRW50cnkS",
            "JAoCeDMYBCADKAsyGC5jZmcuVGVzdFRlc3RNYXAuWDNFbnRyeRIkCgJ4NBgF",
            "IAMoCzIYLmNmZy5UZXN0VGVzdE1hcC5YNEVudHJ5GikKB1gxRW50cnkSCwoD",
            "a2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ARopCgdYMkVudHJ5EgsKA2tl",
            "eRgBIAEoAxINCgV2YWx1ZRgCIAEoBToCOAEaKQoHWDNFbnRyeRILCgNrZXkY",
            "ASABKAkSDQoFdmFsdWUYAiABKAU6AjgBGikKB1g0RW50cnkSCwoDa2V5GAEg",
            "ASgFEg0KBXZhbHVlGAIgASgFOgI4ASL6AgoRVGVzdEV4Y2VsRnJvbUpzb24S",
            "CgoCeDQYASACKAUSCgoCeDEYAiACKAgSCgoCeDUYAyACKAMSCgoCeDYYBCAC",
            "KAISCgoCczEYBSACKAkSCgoCczIYBiACKAkSCgoCdDEYByACKAMSHwoDeDEy",
            "GAggAigLMhIuY2ZnLlRlc3REZW1vVHlwZTESHgoDeDEzGAkgAigOMhEuY2Zn",
            "LlRlc3REZW1vRW51bRIhCgN4MTQYCiACKAsyFC5jZmcuVGVzdERlbW9EeW5h",
            "bWljEg4KAmsxGAsgAygFQgIQARIqCgJrOBgMIAMoCzIeLmNmZy5UZXN0RXhj",
            "ZWxGcm9tSnNvbi5LOEVudHJ5Eh8KAms5GA0gAygLMg8uY2ZnLlRlc3REZW1v",
            "RTJCAhAAEiUKA2sxNRgOIAMoCzIULmNmZy5UZXN0RGVtb0R5bmFtaWNCAhAA",
            "GikKB0s4RW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASIw",
            "ChdUZXN0Q29tcG9zaXRlSnNvblRhYmxlMRIKCgJpZBgBIAIoBRIJCgF4GAIg",
            "AigJIjAKF1Rlc3RDb21wb3NpdGVKc29uVGFibGUyEgoKAmlkGAEgAigFEgkK",
            "AXkYAiACKAUiLwoXVGVzdENvbXBvc2l0ZUpzb25UYWJsZTMSCQoBYRgBIAIo",
            "BRIJCgFiGAIgAigFIlcKGVRlc3RFeGNlbEZyb21Kc29uTXVsdGlSb3cSCgoC",
            "aWQYASACKAUSCQoBeBgCIAIoBRIjCgVpdGVtcxgDIAMoCzIQLmNmZy5UZXN0",
            "VGVzdFJvd0ICEAAiWAoLVGVzdFRlc3RSb3cSCQoBeBgBIAIoBRIJCgF5GAIg",
            "AigIEgkKAXoYAyACKAkSGQoBYRgEIAIoCzIOLmNmZy5UZXN0VGVzdDMSDQoB",
            "YhgFIAMoBUICEAEiIQoJVGVzdFRlc3QzEgkKAXgYASACKAUSCQoBeRgCIAIo",
            "BSKdAQoYVGVzdFRlc3RTY3JpcHRhYmxlT2JqZWN0EgoKAmlkGAEgAigFEgwK",
            "BGRlc2MYAiACKAkSDAoEcmF0ZRgDIAIoAhILCgNudW0YBCACKAUSGAoCdjIY",
            "BSACKAsyDC5jZmcudmVjdG9yMhIYCgJ2MxgGIAIoCzIMLmNmZy52ZWN0b3Iz",
            "EhgKAnY0GAcgAigLMgwuY2ZnLnZlY3RvcjQiWgoOVGVzdFRlc3RNYXBwZXIS",
            "CgoCaWQYASACKAUSIgoKYXVkaW9fdHlwZRgCIAIoDjIOLmNmZy5BdWRpb1R5",
            "cGUSGAoCdjIYAyACKAsyDC5jZmcudmVjdG9yMiLYAwoQRGVmaW5lRnJvbUV4",
            "Y2VsMhIKCgJpZBgBIAIoBRIKCgJ4MRgCIAIoCBIKCgJ4NRgDIAIoAxIKCgJ4",
            "NhgEIAIoAhIKCgJ4OBgFIAIoBRILCgN4MTAYBiACKAkSHgoDeDEzGAcgAigO",
            "MhEuY2ZnLlRlc3REZW1vRW51bRIgCgV4MTNfMhgIIAIoDjIRLmNmZy5UZXN0",
            "RGVtb0ZsYWcSIQoDeDE0GAkgAigLMhQuY2ZnLlRlc3REZW1vRHluYW1pYxIb",
            "CgN4MTUYCiACKAsyDi5jZmcuVGVzdFNoYXBlEhgKAnYyGAsgAigLMgwuY2Zn",
            "LnZlY3RvcjISCgoCdDEYDCACKAMSDgoCazEYDSADKAVCAhABEg4KAmsyGA4g",
            "AygFQgIQARIpCgJrOBgPIAMoCzIdLmNmZy5EZWZpbmVGcm9tRXhjZWwyLks4",
            "RW50cnkSHwoCazkYECADKAsyDy5jZmcuVGVzdERlbW9FMkICEAASHQoDazEw",
            "GBEgAygLMgwuY2ZnLnZlY3RvcjNCAhAAEh0KA2sxMRgSIAMoCzIMLmNmZy52",
            "ZWN0b3I0QgIQABopCgdLOEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgC",
            "IAEoBToCOAEiYQoJVGVzdFNoYXBlEiEKBkNpcmNsZRgBIAEoCzIPLmNmZy5U",
            "ZXN0Q2lyY2xlSAASKAoJUmVjdGFuZ2xlGAIgASgLMhMuY2ZnLlRlc3QyUmVj",
            "dGFuZ2xlSABCBwoFdmFsdWUiHAoKVGVzdENpcmNsZRIOCgZyYWRpdXMYASAC",
            "KAIiLwoOVGVzdDJSZWN0YW5nbGUSDQoFd2lkdGgYASACKAISDgoGaGVpZ2h0",
            "GAIgAigCIjoKDkFpVGJCbGFja2JvYXJkEigKCWRhdGFfbGlzdBgBIAMoCzIR",
            "LmNmZy5BaUJsYWNrYm9hcmRCAhAAIj4KEEFpVGJCZWhhdmlvclRyZWUSKgoJ",
            "ZGF0YV9saXN0GAEgAygLMhMuY2ZnLkFpQmVoYXZpb3JUcmVlQgIQACJGChRD",
            "b21tb25UYkdsb2JhbENvbmZpZxIuCglkYXRhX2xpc3QYASADKAsyFy5jZmcu",
            "Q29tbW9uR2xvYmFsQ29uZmlnQgIQACIyCgpJdGVtVGJJdGVtEiQKCWRhdGFf",
            "bGlzdBgBIAMoCzINLmNmZy5JdGVtSXRlbUICEAAiOgoOTDEwblRiTDEwTkRl",
            "bW8SKAoJZGF0YV9saXN0GAEgAygLMhEuY2ZnLkwxMG5MMTBORGVtb0ICEAAi",
            "PAoPTDEwblRiUGF0Y2hEZW1vEikKCWRhdGFfbGlzdBgBIAMoCzISLmNmZy5M",
            "MTBuUGF0Y2hEZW1vQgIQACI2CgxUYWdUYlRlc3RUYWcSJgoJZGF0YV9saXN0",
            "GAEgAygLMg8uY2ZnLlRhZ1Rlc3RUYWdCAhAAIjwKD1Rlc3RUYkZ1bGxUeXBl",
            "cxIpCglkYXRhX2xpc3QYASADKAsyEi5jZmcuVGVzdERlbW9UeXBlMkICEAAi",
            "RAoPVGVzdFRiU2luZ2xldG9uEjEKCWRhdGFfbGlzdBgBIAMoCzIaLmNmZy5U",
            "ZXN0RGVtb1NpbmdsZXRvblR5cGVCAhAAIkIKElRlc3RUYk5vdEluZGV4TGlz",
            "dBIsCglkYXRhX2xpc3QYASADKAsyFS5jZmcuVGVzdE5vdEluZGV4TGlzdEIC",
            "EAAiUAoZVGVzdFRiTXVsdGlVbmlvbkluZGV4TGlzdBIzCglkYXRhX2xpc3QY",
            "ASADKAsyHC5jZmcuVGVzdE11bHRpVW5pb25JbmRleExpc3RCAhAAIkYKFFRl",
            "c3RUYk11bHRpSW5kZXhMaXN0Ei4KCWRhdGFfbGlzdBgBIAMoCzIXLmNmZy5U",
            "ZXN0TXVsdGlJbmRleExpc3RCAhAAIj8KElRlc3RUYkRhdGFGcm9tTWlzYxIp",
            "CglkYXRhX2xpc3QYASADKAsyEi5jZmcuVGVzdERlbW9UeXBlMkICEAAiRgoU",
            "VGVzdFRiTXVsdGlSb3dSZWNvcmQSLgoJZGF0YV9saXN0GAEgAygLMhcuY2Zn",
            "LlRlc3RNdWx0aVJvd1JlY29yZEICEAAiSAoVVGVzdFRiVGVzdE11bHRpQ29s",
            "dW1uEi8KCWRhdGFfbGlzdBgBIAMoCzIYLmNmZy5UZXN0VGVzdE11bHRpQ29s",
            "dW1uQgIQACJEChNUZXN0VGJNdWx0aVJvd1RpdGxlEi0KCWRhdGFfbGlzdBgB",
            "IAMoCzIWLmNmZy5UZXN0TXVsdGlSb3dUaXRsZUICEAAiOgoOVGVzdFRiVGVz",
            "dE51bGwSKAoJZGF0YV9saXN0GAEgAygLMhEuY2ZnLlRlc3RUZXN0TnVsbEIC",
            "EAAiTgoTVGVzdFRiRGVtb1ByaW1pdGl2ZRI3CglkYXRhX2xpc3QYASADKAsy",
            "IC5jZmcuVGVzdERlbW9QcmltaXRpdmVUeXBlc1RhYmxlQgIQACI+ChBUZXN0",
            "VGJUZXN0U3RyaW5nEioKCWRhdGFfbGlzdBgBIAMoCzITLmNmZy5UZXN0VGVz",
            "dFN0cmluZ0ICEAAiPAoPVGVzdFRiRGVtb0dyb3VwEikKCWRhdGFfbGlzdBgB",
            "IAMoCzISLmNmZy5UZXN0RGVtb0dyb3VwQgIQACI+ChFUZXN0VGJEZW1vR3Jv",
            "dXBfQxIpCglkYXRhX2xpc3QYASADKAsyEi5jZmcuVGVzdERlbW9Hcm91cEIC",
            "EAAiPgoRVGVzdFRiRGVtb0dyb3VwX1MSKQoJZGF0YV9saXN0GAEgAygLMhIu",
            "Y2ZnLlRlc3REZW1vR3JvdXBCAhAAIj4KEVRlc3RUYkRlbW9Hcm91cF9FEikK",
            "CWRhdGFfbGlzdBgBIAMoCzISLmNmZy5UZXN0RGVtb0dyb3VwQgIQACI+ChBU",
            "ZXN0VGJUZXN0R2xvYmFsEioKCWRhdGFfbGlzdBgBIAMoCzITLmNmZy5UZXN0",
            "VGVzdEdsb2JhbEICEAAiPAoPVGVzdFRiVGVzdEJlUmVmEikKCWRhdGFfbGlz",
            "dBgBIAMoCzISLmNmZy5UZXN0VGVzdEJlUmVmQgIQACI9ChBUZXN0VGJUZXN0",
            "QmVSZWYyEikKCWRhdGFfbGlzdBgBIAMoCzISLmNmZy5UZXN0VGVzdEJlUmVm",
            "QgIQACI4Cg1UZXN0VGJUZXN0UmVmEicKCWRhdGFfbGlzdBgBIAMoCzIQLmNm",
            "Zy5UZXN0VGVzdFJlZkICEAAiOgoOVGVzdFRiVGVzdFNpemUSKAoJZGF0YV9s",
            "aXN0GAEgAygLMhEuY2ZnLlRlc3RUZXN0U2l6ZUICEAAiOAoNVGVzdFRiVGVz",
            "dFNldBInCglkYXRhX2xpc3QYASADKAsyEC5jZmcuVGVzdFRlc3RTZXRCAhAA",
            "IkkKF1Rlc3RUYkRldGVjdENzdkVuY29kaW5nEi4KCWRhdGFfbGlzdBgBIAMo",
            "CzIXLmNmZy5UZXN0RGV0ZWN0RW5jb2RpbmdCAhAAIjcKC1Rlc3RUYkl0ZW0y",
            "EigKCWRhdGFfbGlzdBgBIAMoCzIRLmNmZy5UZXN0SXRlbUJhc2VCAhAAIjwK",
            "D1Rlc3RUYlRlc3RJbmRleBIpCglkYXRhX2xpc3QYASADKAsyEi5jZmcuVGVz",
            "dFRlc3RJbmRleEICEAAiOAoNVGVzdFRiVGVzdE1hcBInCglkYXRhX2xpc3QY",
            "ASADKAsyEC5jZmcuVGVzdFRlc3RNYXBCAhAAIkQKE1Rlc3RUYkV4Y2VsRnJv",
            "bUpzb24SLQoJZGF0YV9saXN0GAEgAygLMhYuY2ZnLlRlc3RFeGNlbEZyb21K",
            "c29uQgIQACJQChlUZXN0VGJDb21wb3NpdGVKc29uVGFibGUxEjMKCWRhdGFf",
            "bGlzdBgBIAMoCzIcLmNmZy5UZXN0Q29tcG9zaXRlSnNvblRhYmxlMUICEAAi",
            "UAoZVGVzdFRiQ29tcG9zaXRlSnNvblRhYmxlMhIzCglkYXRhX2xpc3QYASAD",
            "KAsyHC5jZmcuVGVzdENvbXBvc2l0ZUpzb25UYWJsZTJCAhAAIlAKGVRlc3RU",
            "YkNvbXBvc2l0ZUpzb25UYWJsZTMSMwoJZGF0YV9saXN0GAEgAygLMhwuY2Zn",
            "LlRlc3RDb21wb3NpdGVKc29uVGFibGUzQgIQACJUChtUZXN0VGJFeGNlbEZy",
            "b21Kc29uTXVsdGlSb3cSNQoJZGF0YV9saXN0GAEgAygLMh4uY2ZnLlRlc3RF",
            "eGNlbEZyb21Kc29uTXVsdGlSb3dCAhAAIlIKGlRlc3RUYlRlc3RTY3JpcHRh",
            "YmxlT2JqZWN0EjQKCWRhdGFfbGlzdBgBIAMoCzIdLmNmZy5UZXN0VGVzdFNj",
            "cmlwdGFibGVPYmplY3RCAhAAIj4KEFRlc3RUYlRlc3RNYXBwZXISKgoJZGF0",
            "YV9saXN0GAEgAygLMhMuY2ZnLlRlc3RUZXN0TWFwcGVyQgIQACJGChZUZXN0",
            "VGJEZWZpbmVGcm9tRXhjZWwyEiwKCWRhdGFfbGlzdBgBIAMoCzIVLmNmZy5E",
            "ZWZpbmVGcm9tRXhjZWwyQgIQACo9CgtBaUVFeGVjdXRvchIWChJBaUVFeGVj",
            "dXRvcl9DTElFTlQQABIWChJBaUVFeGVjdXRvcl9TRVJWRVIQASroAQoKQWlF",
            "S2V5VHlwZRITCg9BaUVLZXlUeXBlX0JPT0wQARISCg5BaUVLZXlUeXBlX0lO",
            "VBACEhQKEEFpRUtleVR5cGVfRkxPQVQQAxIVChFBaUVLZXlUeXBlX1NUUklO",
            "RxAEEhUKEUFpRUtleVR5cGVfVkVDVE9SEAUSFgoSQWlFS2V5VHlwZV9ST1RB",
            "VE9SEAYSEwoPQWlFS2V5VHlwZV9OQU1FEAcSFAoQQWlFS2V5VHlwZV9DTEFT",
            "UxAIEhMKD0FpRUtleVR5cGVfRU5VTRAJEhUKEUFpRUtleVR5cGVfT0JKRUNU",
            "EAoqiAEKEEFpRUZsb3dBYm9ydE1vZGUSGQoVQWlFRmxvd0Fib3J0TW9kZV9O",
            "T05FEAASIwofQWlFRmxvd0Fib3J0TW9kZV9MT1dFUl9QUklPUklUWRABEhkK",
            "FUFpRUZsb3dBYm9ydE1vZGVfU0VMRhACEhkKFUFpRUZsb3dBYm9ydE1vZGVf",
            "Qk9USBADKkcKDUFpRUZpbmlzaE1vZGUSGwoXQWlFRmluaXNoTW9kZV9JTU1F",
            "RElBVEUQABIZChVBaUVGaW5pc2hNb2RlX0RFTEFZRUQQASpuChVBaUVOb3Rp",
            "ZnlPYnNlcnZlck1vZGUSKQolQWlFTm90aWZ5T2JzZXJ2ZXJNb2RlX09OX1ZB",
            "TFVFX0NIQU5HRRAAEioKJkFpRU5vdGlmeU9ic2VydmVyTW9kZV9PTl9SRVNV",
            "TFRfQ0hBTkdFEAEqlQIKC0FpRU9wZXJhdG9yEhsKF0FpRU9wZXJhdG9yX0lT",
            "X0VRVUFMX1RPEAASHwobQWlFT3BlcmF0b3JfSVNfTk9UX0VRVUFMX1RPEAES",
            "HAoYQWlFT3BlcmF0b3JfSVNfTEVTU19USEFOEAISKAokQWlFT3BlcmF0b3Jf",
            "SVNfTEVTU19USEFOX09SX0VRVUFMX1RPEAMSHQoZQWlFT3BlcmF0b3JfSVNf",
            "R1JFQVRfVEhBThAEEikKJUFpRU9wZXJhdG9yX0lTX0dSRUFUX1RIQU5fT1Jf",
            "RVFVQUxfVE8QBRIYChRBaUVPcGVyYXRvcl9DT05UQUlOUxAGEhwKGEFpRU9w",
            "ZXJhdG9yX05PVF9DT05UQUlOUxAHKkkKCUF1ZGlvVHlwZRIVChFBdWRpb1R5",
            "cGVfVU5LTk9XThAAEhEKDUF1ZGlvVHlwZV9BQ0MQARISCg5BdWRpb1R5cGVf",
            "QUlGRhACKk4KE0NvbW1vbkVCb29sT3BlcmF0b3ISGwoXQ29tbW9uRUJvb2xP",
            "cGVyYXRvcl9BTkQQABIaChZDb21tb25FQm9vbE9wZXJhdG9yX09SEAEqnwEK",
            "EEl0ZW1FSXRlbVF1YWxpdHkSGgoWSXRlbUVJdGVtUXVhbGl0eV9XSElURRAA",
            "EhoKFkl0ZW1FSXRlbVF1YWxpdHlfR1JFRU4QARIZChVJdGVtRUl0ZW1RdWFs",
            "aXR5X0JMVUUQAhIbChdJdGVtRUl0ZW1RdWFsaXR5X1BVUlBMRRADEhsKF0l0",
            "ZW1FSXRlbVF1YWxpdHlfR09MREVOEAQqqgEKEUl0ZW1FQ3VycmVuY3lUeXBl",
            "Eh0KGUl0ZW1FQ3VycmVuY3lUeXBlX0RJQU1PTkQQARIaChZJdGVtRUN1cnJl",
            "bmN5VHlwZV9HT0xEEAISHAoYSXRlbUVDdXJyZW5jeVR5cGVfU0lMVkVSEAMS",
            "GQoVSXRlbUVDdXJyZW5jeVR5cGVfRVhQEAQSIQodSXRlbUVDdXJyZW5jeVR5",
            "cGVfUE9XRVJfUE9JTlQQBSrbAgoOSXRlbUVNYWpvclR5cGUSGwoXSXRlbUVN",
            "YWpvclR5cGVfQ1VSUkVOQ1kQARIYChRJdGVtRU1ham9yVHlwZV9DTE9USBAC",
            "EhgKFEl0ZW1FTWFqb3JUeXBlX1FVRVNUEAMSHgoaSXRlbUVNYWpvclR5cGVf",
            "Q09OU1VNQUJMRVMQBBIfChtJdGVtRU1ham9yVHlwZV9UUkVBU1VSRV9CT1gQ",
            "BRIoCiRJdGVtRU1ham9yVHlwZV9BQ0hJRVZFTUVOVF9BTkRfVElUTEUQBhId",
            "ChlJdGVtRU1ham9yVHlwZV9IRUFEX0ZSQU1FEAcSGAoUSXRlbUVNYWpvclR5",
            "cGVfVk9JQ0UQCBIZChVJdGVtRU1ham9yVHlwZV9BQ1RJT04QCRIcChhJdGVt",
            "RU1ham9yVHlwZV9FWFBBTlNJT04QChIbChdJdGVtRU1ham9yVHlwZV9NQVRF",
            "UklBTBALKo8MCg5JdGVtRU1pbm9yVHlwZRIaChZJdGVtRU1pbm9yVHlwZV9E",
            "SUFNT05EEGUSFwoTSXRlbUVNaW5vclR5cGVfR09MRBBmEhkKFUl0ZW1FTWlu",
            "b3JUeXBlX1NJTFZFUhBnEhYKEkl0ZW1FTWlub3JUeXBlX0VYUBBoEh4KGkl0",
            "ZW1FTWlub3JUeXBlX1BPV0VSX1BPSU5UEGkSHgoZSXRlbUVNaW5vclR5cGVf",
            "SEFJUl9TVFlMRRDSARIYChNJdGVtRU1pbm9yVHlwZV9DT0FUENwBEiAKG0l0",
            "ZW1FTWlub3JUeXBlX1VQUEVSX0pBQ0tFVBDmARIcChdJdGVtRU1pbm9yVHlw",
            "ZV9UUk9VU0VSUxDxARIZChRJdGVtRU1pbm9yVHlwZV9TS0lSVBDyARIZChRJ",
            "dGVtRU1pbm9yVHlwZV9TT0NLUxD6ARIZChRJdGVtRU1pbm9yVHlwZV9TSE9F",
            "UxCEAhIiCh1JdGVtRU1pbm9yVHlwZV9IQUlSX0FDQ0VTU09SWRCPAhIXChJJ",
            "dGVtRU1pbm9yVHlwZV9IQVQQkAISGwoWSXRlbUVNaW5vclR5cGVfRUFSUklO",
            "RxCRAhIcChdJdGVtRU1pbm9yVHlwZV9ORUNLTEFDRRCSAhIcChdJdGVtRU1p",
            "bm9yVHlwZV9CUkFDRUxFVBCTAhIeChlJdGVtRU1pbm9yVHlwZV9IQUlSX0NM",
            "QVNQEJQCEhkKFEl0ZW1FTWlub3JUeXBlX0dMT1ZFEJUCEiMKHkl0ZW1FTWlu",
            "b3JUeXBlX0hBTkRIRUxEX09CSkVDVBCWAhIbChZJdGVtRU1pbm9yVHlwZV9T",
            "UEVDSUFMEJcCEiEKHEl0ZW1FTWlub3JUeXBlX0JBU0VfQ09TTUVUSUMQmQIS",
            "JAofSXRlbUVNaW5vclR5cGVfRVlFQlJPV19DT1NNRVRJQxCaAhIbChZJdGVt",
            "RU1pbm9yVHlwZV9FWUVMQVNIEJsCEisKJkl0ZW1FTWlub3JUeXBlX0NPU01F",
            "VElDX0NPTlRBQ1RfTEVOU0VTEJwCEiAKG0l0ZW1FTWlub3JUeXBlX0xJUF9D",
            "T1NNRVRJQxCdAhIeChlJdGVtRU1pbm9yVHlwZV9TS0lOX0NPTE9SEJ4CEiMK",
            "Hkl0ZW1FTWlub3JUeXBlX09ORV9QSUVDRV9EUkVTUxCiAhIoCiNJdGVtRU1p",
            "bm9yVHlwZV9TV0lUQ0hfQ0xPVEhFU19TQ0VORRCjAhIZChRJdGVtRU1pbm9y",
            "VHlwZV9RVUVTVBCtAhIYChNJdGVtRU1pbm9yVHlwZV9DQVNUEJEDEhkKFEl0",
            "ZW1FTWlub3JUeXBlX1NXT1JEEKUDEh0KGEl0ZW1FTWlub3JUeXBlX0JPV19B",
            "UlJPVxCmAxIZChRJdGVtRU1pbm9yVHlwZV9XQU5EUxCnAxIgChtJdGVtRU1p",
            "bm9yVHlwZV9TUEVDSUFMX1RPT0wQqAMSGAoTSXRlbUVNaW5vclR5cGVfRk9P",
            "RBCTAxIgChtJdGVtRU1pbm9yVHlwZV9UUkVBU1VSRV9CT1gQ9QMSFwoSSXRl",
            "bUVNaW5vclR5cGVfS0VZEPYDEi0KKEl0ZW1FTWlub3JUeXBlX01VTFRJX0NI",
            "T09TRV9UUkVBU1VSRV9CT1gQ9wMSHwoaSXRlbUVNaW5vclR5cGVfQUNISUVW",
            "RU1FTlQQ2QQSGQoUSXRlbUVNaW5vclR5cGVfVElUTEUQ2gQSIAobSXRlbUVN",
            "aW5vclR5cGVfQVZBVEFSX0ZSQU1FEL0FEhkKFEl0ZW1FTWlub3JUeXBlX1ZP",
            "SUNFEKEGEh0KGEl0ZW1FTWlub3JUeXBlX0lETEVfUE9TRRCFBxIeChlJdGVt",
            "RU1pbm9yVHlwZV9QSE9UT19QT1NFEIYHEhcKEkl0ZW1FTWlub3JUeXBlX0JB",
            "RxDpBxIjCh5JdGVtRU1pbm9yVHlwZV9GUklFTkRfQ0FQQUNJVFkQ6gcSKQok",
            "SXRlbUVNaW5vclR5cGVfQ09OU1RSVUNUSU9OX01BVEVSSUFMEM0IEiIKHUl0",
            "ZW1FTWlub3JUeXBlX0RFU0lHTl9EUkFXSU5HEM4IKqMDChxJdGVtRUNsb3Ro",
            "ZXJzU3RhclF1YWxpdHlUeXBlEiQKIEl0ZW1FQ2xvdGhlcnNTdGFyUXVhbGl0",
            "eVR5cGVfT05FEAESJAogSXRlbUVDbG90aGVyc1N0YXJRdWFsaXR5VHlwZV9U",
            "V08QAhImCiJJdGVtRUNsb3RoZXJzU3RhclF1YWxpdHlUeXBlX1RIUkVFEAMS",
            "JQohSXRlbUVDbG90aGVyc1N0YXJRdWFsaXR5VHlwZV9GT1VSEAQSJQohSXRl",
            "bUVDbG90aGVyc1N0YXJRdWFsaXR5VHlwZV9GSVZFEAUSJAogSXRlbUVDbG90",
            "aGVyc1N0YXJRdWFsaXR5VHlwZV9TSVgQBhImCiJJdGVtRUNsb3RoZXJzU3Rh",
            "clF1YWxpdHlUeXBlX1NFVkVOEAcSJgoiSXRlbUVDbG90aGVyc1N0YXJRdWFs",
            "aXR5VHlwZV9FSUdIVBAIEiUKIUl0ZW1FQ2xvdGhlcnNTdGFyUXVhbGl0eVR5",
            "cGVfTklORRAJEiQKIEl0ZW1FQ2xvdGhlcnNTdGFyUXVhbGl0eVR5cGVfVEVO",
            "EAoqTwoQSXRlbUVDbG90aGVyc1RhZxIeChpJdGVtRUNsb3RoZXJzVGFnX0ZB",
            "TkdfU0hBSRABEhsKF0l0ZW1FQ2xvdGhlcnNUYWdfV1VfWkhFEAIqPgoMSXRl",
            "bUVVc2VUeXBlEhcKE0l0ZW1FVXNlVHlwZV9NQU5VQUwQABIVChFJdGVtRVVz",
            "ZVR5cGVfQVVUTxABKtACChhJdGVtRUNsb3RoZXNIaWRlUGFydFR5cGUSIgoe",
            "SXRlbUVDbG90aGVzSGlkZVBhcnRUeXBlX0NIRVNUEAASIQodSXRlbUVDbG90",
            "aGVzSGlkZVBhcnRUeXBlX0hFQUQQARIoCiRJdGVtRUNsb3RoZXNIaWRlUGFy",
            "dFR5cGVfU1BJTkVfVVBQRVIQAhIoCiRJdGVtRUNsb3RoZXNIaWRlUGFydFR5",
            "cGVfU1BJTkVfTE9XRVIQAxIgChxJdGVtRUNsb3RoZXNIaWRlUGFydFR5cGVf",
            "SElQEAQSJgoiSXRlbUVDbG90aGVzSGlkZVBhcnRUeXBlX0xFR19VUFBFUhAF",
            "EicKI0l0ZW1FQ2xvdGhlc0hpZGVQYXJ0VHlwZV9MRUdfTUlERExFEAYSJgoi",
            "SXRlbUVDbG90aGVzSGlkZVBhcnRUeXBlX0xFR19MT1dFUhAHKpsDChhJdGVt",
            "RUNsb3RoZXNQcm9wZXJ0eVR5cGUSJQohSXRlbUVDbG90aGVzUHJvcGVydHlU",
            "eXBlX0pJQU5fWVVFEAESIwofSXRlbUVDbG90aGVzUHJvcGVydHlUeXBlX0hV",
            "QV9MSRACEiIKHkl0ZW1FQ2xvdGhlc1Byb3BlcnR5VHlwZV9LRV9BSRADEiYK",
            "Ikl0ZW1FQ2xvdGhlc1Byb3BlcnR5VHlwZV9DSEVOR19TSFUQBBIjCh9JdGVt",
            "RUNsb3RoZXNQcm9wZXJ0eVR5cGVfSFVPX1BPEAUSIwofSXRlbUVDbG90aGVz",
            "UHJvcGVydHlUeXBlX1lPVV9ZQRAGEiYKIkl0ZW1FQ2xvdGhlc1Byb3BlcnR5",
            "VHlwZV9RSU5HX0NIVU4QBxIlCiFJdGVtRUNsb3RoZXNQcm9wZXJ0eVR5cGVf",
            "WElOR19HQU4QCBInCiNJdGVtRUNsb3RoZXNQcm9wZXJ0eVR5cGVfUUlOR19M",
            "SUFORxAJEiUKIUl0ZW1FQ2xvdGhlc1Byb3BlcnR5VHlwZV9CQU9fTlVBThAK",
            "KnUKDFRlc3REZW1vRW51bRIVChFUZXN0RGVtb0VudW1fTk9ORRAAEhIKDlRl",
            "c3REZW1vRW51bV9BEAESEgoOVGVzdERlbW9FbnVtX0IQAhISCg5UZXN0RGVt",
            "b0VudW1fQxAEEhIKDlRlc3REZW1vRW51bV9EEAUqXgoMVGVzdERlbW9GbGFn",
            "EhIKDlRlc3REZW1vRmxhZ19BEAESEgoOVGVzdERlbW9GbGFnX0IQAhISCg5U",
            "ZXN0RGVtb0ZsYWdfQxAEEhIKDlRlc3REZW1vRmxhZ19EEAgqRwoPVGVzdEVU",
            "ZXN0VWVUeXBlEhkKFVRlc3RFVGVzdFVlVHlwZV9XSElURRAAEhkKFVRlc3RF",
            "VGVzdFVlVHlwZV9CTEFDSxABKj4KElRlc3RFVGVzdEVtcHR5RW51bRIoCiRU",
            "ZXN0RVRlc3RFbXB0eUVudW1fRU1QVFlfUExBQ0VIT0xERVIQACp+ChNUZXN0",
            "RVRlc3RFbXB0eUVudW0yEicKIlRlc3RFVGVzdEVtcHR5RW51bTJfU01BTExf",
            "VEhBTl8yNTYQ/wESHgoZVGVzdEVUZXN0RW1wdHlFbnVtMl9YXzI1NhCAAhIe",
            "ChlUZXN0RVRlc3RFbXB0eUVudW0yX1hfMjU3EIECKnIKEFRlc3RFVGVzdFF1",
            "YWxpdHkSFgoSVGVzdEVUZXN0UXVhbGl0eV9BEAESFgoSVGVzdEVUZXN0UXVh",
            "bGl0eV9CEAISFgoSVGVzdEVUZXN0UXVhbGl0eV9DEAMSFgoSVGVzdEVUZXN0",
            "UXVhbGl0eV9EEAQqlwEKDlRlc3RBY2Nlc3NGbGFnEhgKFFRlc3RBY2Nlc3NG",
            "bGFnX1dSSVRFEAESFwoTVGVzdEFjY2Vzc0ZsYWdfUkVBRBACEhsKF1Rlc3RB",
            "Y2Nlc3NGbGFnX1RSVU5DQVRFEAQSFgoSVGVzdEFjY2Vzc0ZsYWdfTkVXEAgS",
            "HQoZVGVzdEFjY2Vzc0ZsYWdfUkVBRF9XUklURRAD"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Cfg.AiEExecutor), typeof(global::Cfg.AiEKeyType), typeof(global::Cfg.AiEFlowAbortMode), typeof(global::Cfg.AiEFinishMode), typeof(global::Cfg.AiENotifyObserverMode), typeof(global::Cfg.AiEOperator), typeof(global::Cfg.AudioType), typeof(global::Cfg.CommonEBoolOperator), typeof(global::Cfg.ItemEItemQuality), typeof(global::Cfg.ItemECurrencyType), typeof(global::Cfg.ItemEMajorType), typeof(global::Cfg.ItemEMinorType), typeof(global::Cfg.ItemEClothersStarQualityType), typeof(global::Cfg.ItemEClothersTag), typeof(global::Cfg.ItemEUseType), typeof(global::Cfg.ItemEClothesHidePartType), typeof(global::Cfg.ItemEClothesPropertyType), typeof(global::Cfg.TestDemoEnum), typeof(global::Cfg.TestDemoFlag), typeof(global::Cfg.TestETestUeType), typeof(global::Cfg.TestETestEmptyEnum), typeof(global::Cfg.TestETestEmptyEnum2), typeof(global::Cfg.TestETestQuality), typeof(global::Cfg.TestAccessFlag), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestExcelBean1), global::Cfg.TestTestExcelBean1.Parser, new[]{ "X1", "X2", "X3", "X4" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiBlackboard), global::Cfg.AiBlackboard.Parser, new[]{ "Name", "Desc", "ParentName", "Keys" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiBlackboardKey), global::Cfg.AiBlackboardKey.Parser, new[]{ "Name", "Desc", "IsStatic", "Type", "TypeClassName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiBehaviorTree), global::Cfg.AiBehaviorTree.Parser, new[]{ "Id", "Name", "Desc", "BlackboardId", "Root" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiNode), global::Cfg.AiNode.Parser, new[]{ "UeSetDefaultFocus", "ExecuteTimeStatistic", "ChooseTarget", "KeepFaceTarget", "GetOwnerPlayer", "UpdateDailyBehaviorProps", "UeLoop", "UeCooldown", "UeTimeLimit", "UeBlackboard", "UeForceSuccess", "IsAtLocation", "DistanceLessThan", "Sequence", "Selector", "SimpleParallel", "UeWait", "UeWaitBlackboardTime", "MoveToTarget", "ChooseSkill", "MoveToRandomLocation", "MoveToLocation", "DebugPrint" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiService), global::Cfg.AiService.Parser, new[]{ "UeSetDefaultFocus", "ExecuteTimeStatistic", "ChooseTarget", "KeepFaceTarget", "GetOwnerPlayer", "UpdateDailyBehaviorProps" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeSetDefaultFocus), global::Cfg.AiUeSetDefaultFocus.Parser, new[]{ "Id", "NodeName", "KeyboardKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiExecuteTimeStatistic), global::Cfg.AiExecuteTimeStatistic.Parser, new[]{ "Id", "NodeName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiChooseTarget), global::Cfg.AiChooseTarget.Parser, new[]{ "Id", "NodeName", "ResultTargetKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiKeepFaceTarget), global::Cfg.AiKeepFaceTarget.Parser, new[]{ "Id", "NodeName", "TargetActorKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiGetOwnerPlayer), global::Cfg.AiGetOwnerPlayer.Parser, new[]{ "Id", "NodeName", "PlayerActorKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUpdateDailyBehaviorProps), global::Cfg.AiUpdateDailyBehaviorProps.Parser, new[]{ "Id", "NodeName", "SatietyKey", "EnergyKey", "MoodKey", "SatietyLowerThresholdKey", "SatietyUpperThresholdKey", "EnergyLowerThresholdKey", "EnergyUpperThresholdKey", "MoodLowerThresholdKey", "MoodUpperThresholdKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiDecorator), global::Cfg.AiDecorator.Parser, new[]{ "UeLoop", "UeCooldown", "UeTimeLimit", "UeBlackboard", "UeForceSuccess", "IsAtLocation", "DistanceLessThan" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeLoop), global::Cfg.AiUeLoop.Parser, new[]{ "Id", "NodeName", "FlowAbortMode", "NumLoops", "InfiniteLoop", "InfiniteLoopTimeoutTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeCooldown), global::Cfg.AiUeCooldown.Parser, new[]{ "Id", "NodeName", "FlowAbortMode", "CooldownTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeTimeLimit), global::Cfg.AiUeTimeLimit.Parser, new[]{ "Id", "NodeName", "FlowAbortMode", "LimitTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeBlackboard), global::Cfg.AiUeBlackboard.Parser, new[]{ "Id", "NodeName", "FlowAbortMode", "NotifyObserver", "BlackboardKey", "KeyQuery" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiKeyQueryOperator), global::Cfg.AiKeyQueryOperator.Parser, new[]{ "IsSet", "IsNotSet", "BinaryOperator" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiIsSet), global::Cfg.AiIsSet.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiIsNotSet), global::Cfg.AiIsNotSet.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiBinaryOperator), global::Cfg.AiBinaryOperator.Parser, new[]{ "Oper", "Data" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiKeyData), global::Cfg.AiKeyData.Parser, new[]{ "FloatKeyData", "IntKeyData", "StringKeyData", "BlackboardKeyData" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiFloatKeyData), global::Cfg.AiFloatKeyData.Parser, new[]{ "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiIntKeyData), global::Cfg.AiIntKeyData.Parser, new[]{ "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiStringKeyData), global::Cfg.AiStringKeyData.Parser, new[]{ "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiBlackboardKeyData), global::Cfg.AiBlackboardKeyData.Parser, new[]{ "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeForceSuccess), global::Cfg.AiUeForceSuccess.Parser, new[]{ "Id", "NodeName", "FlowAbortMode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiIsAtLocation), global::Cfg.AiIsAtLocation.Parser, new[]{ "Id", "NodeName", "FlowAbortMode", "AcceptableRadius", "KeyboardKey", "InverseCondition" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiDistanceLessThan), global::Cfg.AiDistanceLessThan.Parser, new[]{ "Id", "NodeName", "FlowAbortMode", "Actor1Key", "Actor2Key", "Distance", "ReverseResult" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiFlowNode), global::Cfg.AiFlowNode.Parser, new[]{ "Sequence", "Selector", "SimpleParallel", "UeWait", "UeWaitBlackboardTime", "MoveToTarget", "ChooseSkill", "MoveToRandomLocation", "MoveToLocation", "DebugPrint" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiComposeNode), global::Cfg.AiComposeNode.Parser, new[]{ "Sequence", "Selector", "SimpleParallel" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiSequence), global::Cfg.AiSequence.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "Children" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiSelector), global::Cfg.AiSelector.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "Children" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiSimpleParallel), global::Cfg.AiSimpleParallel.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "FinishMode", "MainTask", "BackgroundNode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiTask), global::Cfg.AiTask.Parser, new[]{ "UeWait", "UeWaitBlackboardTime", "MoveToTarget", "ChooseSkill", "MoveToRandomLocation", "MoveToLocation", "DebugPrint" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeWait), global::Cfg.AiUeWait.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "WaitTime", "RandomDeviation" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiUeWaitBlackboardTime), global::Cfg.AiUeWaitBlackboardTime.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "BlackboardKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiMoveToTarget), global::Cfg.AiMoveToTarget.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "TargetActorKey", "AcceptableRadius" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiChooseSkill), global::Cfg.AiChooseSkill.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "TargetActorKey", "ResultSkillIdKey" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiMoveToRandomLocation), global::Cfg.AiMoveToRandomLocation.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "OriginPositionKey", "Radius" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiMoveToLocation), global::Cfg.AiMoveToLocation.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "AcceptableRadius" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiDebugPrint), global::Cfg.AiDebugPrint.Parser, new[]{ "Id", "NodeName", "Decorators", "Services", "IgnoreRestartSelf", "Text" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CommonGlobalConfig), global::Cfg.CommonGlobalConfig.Parser, new[]{ "BagCapacity", "BagCapacitySpecial", "BagTempExpendableCapacity", "BagTempToolCapacity", "BagInitCapacity", "QuickBagCapacity", "ClothBagCapacity", "ClothBagInitCapacity", "ClothBagCapacitySpecial", "BagInitItemsDropId", "MailBoxCapacity", "DamageParamC", "DamageParamE", "DamageParamF", "DamageParamD", "RoleSpeed", "MonsterSpeed", "InitEnergy", "InitViality", "MaxViality", "PerVialityRecoveryTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemItem), global::Cfg.ItemItem.Parser, new[]{ "Id", "Name", "MajorType", "MinorType", "MaxPileNum", "Quality", "Icon", "IconBackgroud", "IconMask", "Desc", "ShowOrder" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.L10nL10NDemo), global::Cfg.L10nL10NDemo.Parser, new[]{ "Id", "Text" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.L10nPatchDemo), global::Cfg.L10nPatchDemo.Parser, new[]{ "Id", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TagTestTag), global::Cfg.TagTestTag.Parser, new[]{ "Id", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoType2), global::Cfg.TestDemoType2.Parser, new[]{ "X4", "X1", "X2", "X3", "X5", "X6", "X7", "X80", "X8", "X9", "X10", "X12", "X13", "X14", "S1", "T1", "K1", "K2", "K5", "K8", "K9", "K15" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoType1), global::Cfg.TestDemoType1.Parser, new[]{ "X1" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoDynamic), global::Cfg.TestDemoDynamic.Parser, new[]{ "DemoD2", "DemoE1", "RoleInfo", "DemoD5" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoD2), global::Cfg.TestDemoD2.Parser, new[]{ "X1", "X2" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoD3), global::Cfg.TestDemoD3.Parser, new[]{ "DemoE1", "RoleInfo" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoE1), global::Cfg.TestDemoE1.Parser, new[]{ "X1", "X3", "X4" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestLoginRoleInfo), global::Cfg.TestLoginRoleInfo.Parser, new[]{ "X1", "X3", "RoleId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoD5), global::Cfg.TestDemoD5.Parser, new[]{ "X1", "Time" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDateTimeRange), global::Cfg.TestDateTimeRange.Parser, new[]{ "StartTime", "EndTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoE2), global::Cfg.TestDemoE2.Parser, new[]{ "Y1", "Y2" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoSingletonType), global::Cfg.TestDemoSingletonType.Parser, new[]{ "Id", "Name", "Date" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestNotIndexList), global::Cfg.TestNotIndexList.Parser, new[]{ "X", "Y" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiUnionIndexList), global::Cfg.TestMultiUnionIndexList.Parser, new[]{ "Id1", "Id2", "Id3", "Num", "Desc" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiIndexList), global::Cfg.TestMultiIndexList.Parser, new[]{ "Id1", "Id2", "Id3", "Num", "Desc" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiRowRecord), global::Cfg.TestMultiRowRecord.Parser, new[]{ "Id", "Name", "OneRows", "MultiRows1", "MultiRows2", "MultiRows4", "MultiRows5", "MultiRows6", "MultiRows7" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiRowType1), global::Cfg.TestMultiRowType1.Parser, new[]{ "Id", "X" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiRowType2), global::Cfg.TestMultiRowType2.Parser, new[]{ "Id", "X", "Y" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiRowType3), global::Cfg.TestMultiRowType3.Parser, new[]{ "Id", "Items" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestMultiColumn), global::Cfg.TestTestMultiColumn.Parser, new[]{ "Id", "A", "B", "C" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestFoo), global::Cfg.TestFoo.Parser, new[]{ "Y1", "Y2", "Y3" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestMultiRowTitle), global::Cfg.TestMultiRowTitle.Parser, new[]{ "Id", "Name", "X1", "X20", "X2", "X3", "X4" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestH1), global::Cfg.TestH1.Parser, new[]{ "Y2", "Y3" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestH2), global::Cfg.TestH2.Parser, new[]{ "Z2", "Z3" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestNull), global::Cfg.TestTestNull.Parser, new[]{ "Id", "X1", "X2", "X3", "X4", "S1", "S2" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoPrimitiveTypesTable), global::Cfg.TestDemoPrimitiveTypesTable.Parser, new[]{ "X1", "X2", "X3", "X4", "X5", "X6", "X7", "S1", "S2", "V2", "V3", "V4", "T1" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.vector2), global::Cfg.vector2.Parser, new[]{ "X", "Y" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.vector3), global::Cfg.vector3.Parser, new[]{ "X", "Y", "Z" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.vector4), global::Cfg.vector4.Parser, new[]{ "X", "Y", "Z", "W" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestString), global::Cfg.TestTestString.Parser, new[]{ "Id", "S1", "Cs1", "Cs2" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestCompactString), global::Cfg.TestCompactString.Parser, new[]{ "Id", "S2", "S3" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDemoGroup), global::Cfg.TestDemoGroup.Parser, new[]{ "Id", "X1", "X2", "X3", "X4", "X5" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestInnerGroup), global::Cfg.TestInnerGroup.Parser, new[]{ "Y1", "Y2", "Y3", "Y4" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestGlobal), global::Cfg.TestTestGlobal.Parser, new[]{ "UnlockEquip", "UnlockHero" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestBeRef), global::Cfg.TestTestBeRef.Parser, new[]{ "Id", "Count" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestRef), global::Cfg.TestTestRef.Parser, new[]{ "Id", "X1", "X12", "X2", "X3", "X4", "A1", "A2", "B1", "B2", "C1", "C2", "D1", "D2", "E1", "E2", "E3", "F1", "F2", "F3", "S1" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestRefDynamicBase), global::Cfg.TestRefDynamicBase.Parser, new[]{ "RefBean" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestRefBean), global::Cfg.TestRefBean.Parser, new[]{ "X", "Arr" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestSize), global::Cfg.TestTestSize.Parser, new[]{ "Id", "X1", "X2", "X3", "X4" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestSet), global::Cfg.TestTestSet.Parser, new[]{ "Id", "X0", "X1", "X2", "X3", "X4" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDetectEncoding), global::Cfg.TestDetectEncoding.Parser, new[]{ "Id", "Name" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestItemBase), global::Cfg.TestItemBase.Parser, new[]{ "Item", "Equipment", "Decorator" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestItem), global::Cfg.TestItem.Parser, new[]{ "Id", "Name", "Desc", "Num", "Price" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestEquipment), global::Cfg.TestEquipment.Parser, new[]{ "Id", "Name", "Desc", "Attr", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDecorator), global::Cfg.TestDecorator.Parser, new[]{ "Id", "Name", "Desc", "Duration" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestIndex), global::Cfg.TestTestIndex.Parser, new[]{ "Id", "Eles" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestMap), global::Cfg.TestTestMap.Parser, new[]{ "Id", "X1", "X2", "X3", "X4" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestExcelFromJson), global::Cfg.TestExcelFromJson.Parser, new[]{ "X4", "X1", "X5", "X6", "S1", "S2", "T1", "X12", "X13", "X14", "K1", "K8", "K9", "K15" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestCompositeJsonTable1), global::Cfg.TestCompositeJsonTable1.Parser, new[]{ "Id", "X" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestCompositeJsonTable2), global::Cfg.TestCompositeJsonTable2.Parser, new[]{ "Id", "Y" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestCompositeJsonTable3), global::Cfg.TestCompositeJsonTable3.Parser, new[]{ "A", "B" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestExcelFromJsonMultiRow), global::Cfg.TestExcelFromJsonMultiRow.Parser, new[]{ "Id", "X", "Items" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestRow), global::Cfg.TestTestRow.Parser, new[]{ "X", "Y", "Z", "A", "B" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTest3), global::Cfg.TestTest3.Parser, new[]{ "X", "Y" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestScriptableObject), global::Cfg.TestTestScriptableObject.Parser, new[]{ "Id", "Desc", "Rate", "Num", "V2", "V3", "V4" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestMapper), global::Cfg.TestTestMapper.Parser, new[]{ "Id", "AudioType", "V2" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.DefineFromExcel2), global::Cfg.DefineFromExcel2.Parser, new[]{ "Id", "X1", "X5", "X6", "X8", "X10", "X13", "X132", "X14", "X15", "V2", "T1", "K1", "K2", "K8", "K9", "K10", "K11" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestShape), global::Cfg.TestShape.Parser, new[]{ "Circle", "Rectangle" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestCircle), global::Cfg.TestCircle.Parser, new[]{ "Radius" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.Test2Rectangle), global::Cfg.Test2Rectangle.Parser, new[]{ "Width", "Height" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiTbBlackboard), global::Cfg.AiTbBlackboard.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.AiTbBehaviorTree), global::Cfg.AiTbBehaviorTree.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CommonTbGlobalConfig), global::Cfg.CommonTbGlobalConfig.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemTbItem), global::Cfg.ItemTbItem.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.L10nTbL10NDemo), global::Cfg.L10nTbL10NDemo.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.L10nTbPatchDemo), global::Cfg.L10nTbPatchDemo.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TagTbTestTag), global::Cfg.TagTbTestTag.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbFullTypes), global::Cfg.TestTbFullTypes.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbSingleton), global::Cfg.TestTbSingleton.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbNotIndexList), global::Cfg.TestTbNotIndexList.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbMultiUnionIndexList), global::Cfg.TestTbMultiUnionIndexList.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbMultiIndexList), global::Cfg.TestTbMultiIndexList.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDataFromMisc), global::Cfg.TestTbDataFromMisc.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbMultiRowRecord), global::Cfg.TestTbMultiRowRecord.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestMultiColumn), global::Cfg.TestTbTestMultiColumn.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbMultiRowTitle), global::Cfg.TestTbMultiRowTitle.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestNull), global::Cfg.TestTbTestNull.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDemoPrimitive), global::Cfg.TestTbDemoPrimitive.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestString), global::Cfg.TestTbTestString.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDemoGroup), global::Cfg.TestTbDemoGroup.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDemoGroup_C), global::Cfg.TestTbDemoGroup_C.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDemoGroup_S), global::Cfg.TestTbDemoGroup_S.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDemoGroup_E), global::Cfg.TestTbDemoGroup_E.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestGlobal), global::Cfg.TestTbTestGlobal.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestBeRef), global::Cfg.TestTbTestBeRef.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestBeRef2), global::Cfg.TestTbTestBeRef2.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestRef), global::Cfg.TestTbTestRef.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestSize), global::Cfg.TestTbTestSize.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestSet), global::Cfg.TestTbTestSet.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDetectCsvEncoding), global::Cfg.TestTbDetectCsvEncoding.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbItem2), global::Cfg.TestTbItem2.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestIndex), global::Cfg.TestTbTestIndex.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestMap), global::Cfg.TestTbTestMap.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbExcelFromJson), global::Cfg.TestTbExcelFromJson.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbCompositeJsonTable1), global::Cfg.TestTbCompositeJsonTable1.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbCompositeJsonTable2), global::Cfg.TestTbCompositeJsonTable2.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbCompositeJsonTable3), global::Cfg.TestTbCompositeJsonTable3.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbExcelFromJsonMultiRow), global::Cfg.TestTbExcelFromJsonMultiRow.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestScriptableObject), global::Cfg.TestTbTestScriptableObject.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestMapper), global::Cfg.TestTbTestMapper.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDefineFromExcel2), global::Cfg.TestTbDefineFromExcel2.Parser, new[]{ "DataList" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum AiEExecutor {
    [pbr::OriginalName("AiEExecutor_CLIENT")] Client = 0,
    [pbr::OriginalName("AiEExecutor_SERVER")] Server = 1,
  }

  public enum AiEKeyType {
    [pbr::OriginalName("AiEKeyType_BOOL")] Bool = 1,
    [pbr::OriginalName("AiEKeyType_INT")] Int = 2,
    [pbr::OriginalName("AiEKeyType_FLOAT")] Float = 3,
    [pbr::OriginalName("AiEKeyType_STRING")] String = 4,
    [pbr::OriginalName("AiEKeyType_VECTOR")] Vector = 5,
    [pbr::OriginalName("AiEKeyType_ROTATOR")] Rotator = 6,
    [pbr::OriginalName("AiEKeyType_NAME")] Name = 7,
    [pbr::OriginalName("AiEKeyType_CLASS")] Class = 8,
    [pbr::OriginalName("AiEKeyType_ENUM")] Enum = 9,
    [pbr::OriginalName("AiEKeyType_OBJECT")] Object = 10,
  }

  public enum AiEFlowAbortMode {
    [pbr::OriginalName("AiEFlowAbortMode_NONE")] None = 0,
    [pbr::OriginalName("AiEFlowAbortMode_LOWER_PRIORITY")] LowerPriority = 1,
    [pbr::OriginalName("AiEFlowAbortMode_SELF")] Self = 2,
    [pbr::OriginalName("AiEFlowAbortMode_BOTH")] Both = 3,
  }

  public enum AiEFinishMode {
    [pbr::OriginalName("AiEFinishMode_IMMEDIATE")] Immediate = 0,
    [pbr::OriginalName("AiEFinishMode_DELAYED")] Delayed = 1,
  }

  public enum AiENotifyObserverMode {
    [pbr::OriginalName("AiENotifyObserverMode_ON_VALUE_CHANGE")] OnValueChange = 0,
    [pbr::OriginalName("AiENotifyObserverMode_ON_RESULT_CHANGE")] OnResultChange = 1,
  }

  public enum AiEOperator {
    [pbr::OriginalName("AiEOperator_IS_EQUAL_TO")] IsEqualTo = 0,
    [pbr::OriginalName("AiEOperator_IS_NOT_EQUAL_TO")] IsNotEqualTo = 1,
    [pbr::OriginalName("AiEOperator_IS_LESS_THAN")] IsLessThan = 2,
    [pbr::OriginalName("AiEOperator_IS_LESS_THAN_OR_EQUAL_TO")] IsLessThanOrEqualTo = 3,
    [pbr::OriginalName("AiEOperator_IS_GREAT_THAN")] IsGreatThan = 4,
    [pbr::OriginalName("AiEOperator_IS_GREAT_THAN_OR_EQUAL_TO")] IsGreatThanOrEqualTo = 5,
    [pbr::OriginalName("AiEOperator_CONTAINS")] Contains = 6,
    [pbr::OriginalName("AiEOperator_NOT_CONTAINS")] NotContains = 7,
  }

  public enum AudioType {
    [pbr::OriginalName("AudioType_UNKNOWN")] Unknown = 0,
    [pbr::OriginalName("AudioType_ACC")] Acc = 1,
    [pbr::OriginalName("AudioType_AIFF")] Aiff = 2,
  }

  public enum CommonEBoolOperator {
    [pbr::OriginalName("CommonEBoolOperator_AND")] And = 0,
    [pbr::OriginalName("CommonEBoolOperator_OR")] Or = 1,
  }

  public enum ItemEItemQuality {
    [pbr::OriginalName("ItemEItemQuality_WHITE")] White = 0,
    [pbr::OriginalName("ItemEItemQuality_GREEN")] Green = 1,
    [pbr::OriginalName("ItemEItemQuality_BLUE")] Blue = 2,
    [pbr::OriginalName("ItemEItemQuality_PURPLE")] Purple = 3,
    [pbr::OriginalName("ItemEItemQuality_GOLDEN")] Golden = 4,
  }

  public enum ItemECurrencyType {
    [pbr::OriginalName("ItemECurrencyType_DIAMOND")] Diamond = 1,
    [pbr::OriginalName("ItemECurrencyType_GOLD")] Gold = 2,
    [pbr::OriginalName("ItemECurrencyType_SILVER")] Silver = 3,
    [pbr::OriginalName("ItemECurrencyType_EXP")] Exp = 4,
    [pbr::OriginalName("ItemECurrencyType_POWER_POINT")] PowerPoint = 5,
  }

  public enum ItemEMajorType {
    [pbr::OriginalName("ItemEMajorType_CURRENCY")] Currency = 1,
    [pbr::OriginalName("ItemEMajorType_CLOTH")] Cloth = 2,
    [pbr::OriginalName("ItemEMajorType_QUEST")] Quest = 3,
    [pbr::OriginalName("ItemEMajorType_CONSUMABLES")] Consumables = 4,
    [pbr::OriginalName("ItemEMajorType_TREASURE_BOX")] TreasureBox = 5,
    [pbr::OriginalName("ItemEMajorType_ACHIEVEMENT_AND_TITLE")] AchievementAndTitle = 6,
    [pbr::OriginalName("ItemEMajorType_HEAD_FRAME")] HeadFrame = 7,
    [pbr::OriginalName("ItemEMajorType_VOICE")] Voice = 8,
    [pbr::OriginalName("ItemEMajorType_ACTION")] Action = 9,
    [pbr::OriginalName("ItemEMajorType_EXPANSION")] Expansion = 10,
    [pbr::OriginalName("ItemEMajorType_MATERIAL")] Material = 11,
  }

  public enum ItemEMinorType {
    [pbr::OriginalName("ItemEMinorType_DIAMOND")] Diamond = 101,
    [pbr::OriginalName("ItemEMinorType_GOLD")] Gold = 102,
    [pbr::OriginalName("ItemEMinorType_SILVER")] Silver = 103,
    [pbr::OriginalName("ItemEMinorType_EXP")] Exp = 104,
    [pbr::OriginalName("ItemEMinorType_POWER_POINT")] PowerPoint = 105,
    [pbr::OriginalName("ItemEMinorType_HAIR_STYLE")] HairStyle = 210,
    [pbr::OriginalName("ItemEMinorType_COAT")] Coat = 220,
    [pbr::OriginalName("ItemEMinorType_UPPER_JACKET")] UpperJacket = 230,
    [pbr::OriginalName("ItemEMinorType_TROUSERS")] Trousers = 241,
    [pbr::OriginalName("ItemEMinorType_SKIRT")] Skirt = 242,
    [pbr::OriginalName("ItemEMinorType_SOCKS")] Socks = 250,
    [pbr::OriginalName("ItemEMinorType_SHOES")] Shoes = 260,
    [pbr::OriginalName("ItemEMinorType_HAIR_ACCESSORY")] HairAccessory = 271,
    [pbr::OriginalName("ItemEMinorType_HAT")] Hat = 272,
    [pbr::OriginalName("ItemEMinorType_EARRING")] Earring = 273,
    [pbr::OriginalName("ItemEMinorType_NECKLACE")] Necklace = 274,
    [pbr::OriginalName("ItemEMinorType_BRACELET")] Bracelet = 275,
    [pbr::OriginalName("ItemEMinorType_HAIR_CLASP")] HairClasp = 276,
    [pbr::OriginalName("ItemEMinorType_GLOVE")] Glove = 277,
    [pbr::OriginalName("ItemEMinorType_HANDHELD_OBJECT")] HandheldObject = 278,
    [pbr::OriginalName("ItemEMinorType_SPECIAL")] Special = 279,
    [pbr::OriginalName("ItemEMinorType_BASE_COSMETIC")] BaseCosmetic = 281,
    [pbr::OriginalName("ItemEMinorType_EYEBROW_COSMETIC")] EyebrowCosmetic = 282,
    [pbr::OriginalName("ItemEMinorType_EYELASH")] Eyelash = 283,
    [pbr::OriginalName("ItemEMinorType_COSMETIC_CONTACT_LENSES")] CosmeticContactLenses = 284,
    [pbr::OriginalName("ItemEMinorType_LIP_COSMETIC")] LipCosmetic = 285,
    [pbr::OriginalName("ItemEMinorType_SKIN_COLOR")] SkinColor = 286,
    [pbr::OriginalName("ItemEMinorType_ONE_PIECE_DRESS")] OnePieceDress = 290,
    [pbr::OriginalName("ItemEMinorType_SWITCH_CLOTHES_SCENE")] SwitchClothesScene = 291,
    [pbr::OriginalName("ItemEMinorType_QUEST")] Quest = 301,
    [pbr::OriginalName("ItemEMinorType_CAST")] Cast = 401,
    [pbr::OriginalName("ItemEMinorType_SWORD")] Sword = 421,
    [pbr::OriginalName("ItemEMinorType_BOW_ARROW")] BowArrow = 422,
    [pbr::OriginalName("ItemEMinorType_WANDS")] Wands = 423,
    [pbr::OriginalName("ItemEMinorType_SPECIAL_TOOL")] SpecialTool = 424,
    [pbr::OriginalName("ItemEMinorType_FOOD")] Food = 403,
    [pbr::OriginalName("ItemEMinorType_TREASURE_BOX")] TreasureBox = 501,
    [pbr::OriginalName("ItemEMinorType_KEY")] Key = 502,
    [pbr::OriginalName("ItemEMinorType_MULTI_CHOOSE_TREASURE_BOX")] MultiChooseTreasureBox = 503,
    [pbr::OriginalName("ItemEMinorType_ACHIEVEMENT")] Achievement = 601,
    [pbr::OriginalName("ItemEMinorType_TITLE")] Title = 602,
    [pbr::OriginalName("ItemEMinorType_AVATAR_FRAME")] AvatarFrame = 701,
    [pbr::OriginalName("ItemEMinorType_VOICE")] Voice = 801,
    [pbr::OriginalName("ItemEMinorType_IDLE_POSE")] IdlePose = 901,
    [pbr::OriginalName("ItemEMinorType_PHOTO_POSE")] PhotoPose = 902,
    [pbr::OriginalName("ItemEMinorType_BAG")] Bag = 1001,
    [pbr::OriginalName("ItemEMinorType_FRIEND_CAPACITY")] FriendCapacity = 1002,
    [pbr::OriginalName("ItemEMinorType_CONSTRUCTION_MATERIAL")] ConstructionMaterial = 1101,
    [pbr::OriginalName("ItemEMinorType_DESIGN_DRAWING")] DesignDrawing = 1102,
  }

  public enum ItemEClothersStarQualityType {
    [pbr::OriginalName("ItemEClothersStarQualityType_ONE")] One = 1,
    [pbr::OriginalName("ItemEClothersStarQualityType_TWO")] Two = 2,
    [pbr::OriginalName("ItemEClothersStarQualityType_THREE")] Three = 3,
    [pbr::OriginalName("ItemEClothersStarQualityType_FOUR")] Four = 4,
    [pbr::OriginalName("ItemEClothersStarQualityType_FIVE")] Five = 5,
    [pbr::OriginalName("ItemEClothersStarQualityType_SIX")] Six = 6,
    [pbr::OriginalName("ItemEClothersStarQualityType_SEVEN")] Seven = 7,
    [pbr::OriginalName("ItemEClothersStarQualityType_EIGHT")] Eight = 8,
    [pbr::OriginalName("ItemEClothersStarQualityType_NINE")] Nine = 9,
    [pbr::OriginalName("ItemEClothersStarQualityType_TEN")] Ten = 10,
  }

  public enum ItemEClothersTag {
    [pbr::OriginalName("ItemEClothersTag_FANG_SHAI")] FangShai = 1,
    [pbr::OriginalName("ItemEClothersTag_WU_ZHE")] WuZhe = 2,
  }

  public enum ItemEUseType {
    [pbr::OriginalName("ItemEUseType_MANUAL")] Manual = 0,
    [pbr::OriginalName("ItemEUseType_AUTO")] Auto = 1,
  }

  public enum ItemEClothesHidePartType {
    [pbr::OriginalName("ItemEClothesHidePartType_CHEST")] Chest = 0,
    [pbr::OriginalName("ItemEClothesHidePartType_HEAD")] Head = 1,
    [pbr::OriginalName("ItemEClothesHidePartType_SPINE_UPPER")] SpineUpper = 2,
    [pbr::OriginalName("ItemEClothesHidePartType_SPINE_LOWER")] SpineLower = 3,
    [pbr::OriginalName("ItemEClothesHidePartType_HIP")] Hip = 4,
    [pbr::OriginalName("ItemEClothesHidePartType_LEG_UPPER")] LegUpper = 5,
    [pbr::OriginalName("ItemEClothesHidePartType_LEG_MIDDLE")] LegMiddle = 6,
    [pbr::OriginalName("ItemEClothesHidePartType_LEG_LOWER")] LegLower = 7,
  }

  public enum ItemEClothesPropertyType {
    [pbr::OriginalName("ItemEClothesPropertyType_JIAN_YUE")] JianYue = 1,
    [pbr::OriginalName("ItemEClothesPropertyType_HUA_LI")] HuaLi = 2,
    [pbr::OriginalName("ItemEClothesPropertyType_KE_AI")] KeAi = 3,
    [pbr::OriginalName("ItemEClothesPropertyType_CHENG_SHU")] ChengShu = 4,
    [pbr::OriginalName("ItemEClothesPropertyType_HUO_PO")] HuoPo = 5,
    [pbr::OriginalName("ItemEClothesPropertyType_YOU_YA")] YouYa = 6,
    [pbr::OriginalName("ItemEClothesPropertyType_QING_CHUN")] QingChun = 7,
    [pbr::OriginalName("ItemEClothesPropertyType_XING_GAN")] XingGan = 8,
    [pbr::OriginalName("ItemEClothesPropertyType_QING_LIANG")] QingLiang = 9,
    [pbr::OriginalName("ItemEClothesPropertyType_BAO_NUAN")] BaoNuan = 10,
  }

  public enum TestDemoEnum {
    [pbr::OriginalName("TestDemoEnum_NONE")] None = 0,
    [pbr::OriginalName("TestDemoEnum_A")] A = 1,
    [pbr::OriginalName("TestDemoEnum_B")] B = 2,
    [pbr::OriginalName("TestDemoEnum_C")] C = 4,
    [pbr::OriginalName("TestDemoEnum_D")] D = 5,
  }

  public enum TestDemoFlag {
    [pbr::OriginalName("TestDemoFlag_A")] A = 1,
    [pbr::OriginalName("TestDemoFlag_B")] B = 2,
    [pbr::OriginalName("TestDemoFlag_C")] C = 4,
    [pbr::OriginalName("TestDemoFlag_D")] D = 8,
  }

  public enum TestETestUeType {
    [pbr::OriginalName("TestETestUeType_WHITE")] White = 0,
    [pbr::OriginalName("TestETestUeType_BLACK")] Black = 1,
  }

  public enum TestETestEmptyEnum {
    [pbr::OriginalName("TestETestEmptyEnum_EMPTY_PLACEHOLDER")] EmptyPlaceholder = 0,
  }

  public enum TestETestEmptyEnum2 {
    [pbr::OriginalName("TestETestEmptyEnum2_SMALL_THAN_256")] SmallThan256 = 255,
    [pbr::OriginalName("TestETestEmptyEnum2_X_256")] X256 = 256,
    [pbr::OriginalName("TestETestEmptyEnum2_X_257")] X257 = 257,
  }

  public enum TestETestQuality {
    [pbr::OriginalName("TestETestQuality_A")] A = 1,
    [pbr::OriginalName("TestETestQuality_B")] B = 2,
    [pbr::OriginalName("TestETestQuality_C")] C = 3,
    [pbr::OriginalName("TestETestQuality_D")] D = 4,
  }

  public enum TestAccessFlag {
    [pbr::OriginalName("TestAccessFlag_WRITE")] Write = 1,
    [pbr::OriginalName("TestAccessFlag_READ")] Read = 2,
    [pbr::OriginalName("TestAccessFlag_TRUNCATE")] Truncate = 4,
    [pbr::OriginalName("TestAccessFlag_NEW")] New = 8,
    [pbr::OriginalName("TestAccessFlag_READ_WRITE")] ReadWrite = 3,
  }

  #endregion

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 TestTestExcelBean1() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestExcelBean1(TestTestExcelBean1 other) : this() {
      _hasBits0 = other._hasBits0;
      x1_ = other.x1_;
      x2_ = other.x2_;
      x3_ = other.x3_;
      x4_ = other.x4_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 2;
    private readonly static string X2DefaultValue = "";

    private string x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string X2 {
      get { return x2_ ?? X2DefaultValue; }
      set {
        x2_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return x2_ != null; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      x2_ = null;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 3;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 2) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 4;
    private readonly static float X4DefaultValue = 0F;

    private float x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X4 {
      get { if ((_hasBits0 & 4) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestExcelBean1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) return false;
      if (X2 != other.X2) return false;
      if (X3 != other.X3) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X4, other.X4)) 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 (HasX1) hash ^= X1.GetHashCode();
      if (HasX2) hash ^= X2.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasX4) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X4);
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(18);
        output.WriteString(X2);
      }
      if (HasX3) {
        output.WriteRawTag(24);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(37);
        output.WriteFloat(X4);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(18);
        output.WriteString(X2);
      }
      if (HasX3) {
        output.WriteRawTag(24);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(37);
        output.WriteFloat(X4);
      }
      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 (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(X2);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasX4) {
        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(TestTestExcelBean1 other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 18: {
            X2 = input.ReadString();
            break;
          }
          case 24: {
            X3 = input.ReadInt32();
            break;
          }
          case 37: {
            X4 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 18: {
            X2 = input.ReadString();
            break;
          }
          case 24: {
            X3 = input.ReadInt32();
            break;
          }
          case 37: {
            X4 = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiBlackboard() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 2;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "parent_name" field.</summary>
    public const int ParentNameFieldNumber = 3;
    private readonly static string ParentNameDefaultValue = "";

    private string parentName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ParentName {
      get { return parentName_ ?? ParentNameDefaultValue; }
      set {
        parentName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "parent_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParentName {
      get { return parentName_ != null; }
    }
    /// <summary>Clears the value of the "parent_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParentName() {
      parentName_ = null;
    }

    /// <summary>Field number for the "keys" field.</summary>
    public const int KeysFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiBlackboardKey> _repeated_keys_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiBlackboardKey.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiBlackboardKey> keys_ = new pbc::RepeatedField<global::Cfg.AiBlackboardKey>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiBlackboardKey> Keys {
      get { return keys_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiBlackboard other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if (ParentName != other.ParentName) return false;
      if(!keys_.Equals(other.keys_)) 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 (HasName) hash ^= Name.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasParentName) hash ^= ParentName.GetHashCode();
      hash ^= keys_.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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (HasParentName) {
        output.WriteRawTag(26);
        output.WriteString(ParentName);
      }
      keys_.WriteTo(output, _repeated_keys_codec);
      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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (HasParentName) {
        output.WriteRawTag(26);
        output.WriteString(ParentName);
      }
      keys_.WriteTo(ref output, _repeated_keys_codec);
      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 (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasParentName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ParentName);
      }
      size += keys_.CalculateSize(_repeated_keys_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiBlackboard other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasParentName) {
        ParentName = other.ParentName;
      }
      keys_.Add(other.keys_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 26: {
            ParentName = input.ReadString();
            break;
          }
          case 34: {
            keys_.AddEntriesFrom(input, _repeated_keys_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 26: {
            ParentName = input.ReadString();
            break;
          }
          case 34: {
            keys_.AddEntriesFrom(ref input, _repeated_keys_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiBlackboardKey() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiBlackboardKey(AiBlackboardKey other) : this() {
      _hasBits0 = other._hasBits0;
      name_ = other.name_;
      desc_ = other.desc_;
      isStatic_ = other.isStatic_;
      type_ = other.type_;
      typeClassName_ = other.typeClassName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 2;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "is_static" field.</summary>
    public const int IsStaticFieldNumber = 3;
    private readonly static bool IsStaticDefaultValue = false;

    private bool isStatic_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsStatic {
      get { if ((_hasBits0 & 1) != 0) { return isStatic_; } else { return IsStaticDefaultValue; } }
      set {
        _hasBits0 |= 1;
        isStatic_ = value;
      }
    }
    /// <summary>Gets whether the "is_static" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIsStatic {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "is_static" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIsStatic() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "type" field.</summary>
    public const int TypeFieldNumber = 4;
    private readonly static global::Cfg.AiEKeyType TypeDefaultValue = global::Cfg.AiEKeyType.Bool;

    private global::Cfg.AiEKeyType type_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEKeyType Type {
      get { if ((_hasBits0 & 2) != 0) { return type_; } else { return TypeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        type_ = value;
      }
    }
    /// <summary>Gets whether the "type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasType {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearType() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "type_class_name" field.</summary>
    public const int TypeClassNameFieldNumber = 5;
    private readonly static string TypeClassNameDefaultValue = "";

    private string typeClassName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TypeClassName {
      get { return typeClassName_ ?? TypeClassNameDefaultValue; }
      set {
        typeClassName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "type_class_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTypeClassName {
      get { return typeClassName_ != null; }
    }
    /// <summary>Clears the value of the "type_class_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTypeClassName() {
      typeClassName_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiBlackboardKey other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if (IsStatic != other.IsStatic) return false;
      if (Type != other.Type) return false;
      if (TypeClassName != other.TypeClassName) 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 (HasName) hash ^= Name.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasIsStatic) hash ^= IsStatic.GetHashCode();
      if (HasType) hash ^= Type.GetHashCode();
      if (HasTypeClassName) hash ^= TypeClassName.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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (HasIsStatic) {
        output.WriteRawTag(24);
        output.WriteBool(IsStatic);
      }
      if (HasType) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Type);
      }
      if (HasTypeClassName) {
        output.WriteRawTag(42);
        output.WriteString(TypeClassName);
      }
      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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (HasIsStatic) {
        output.WriteRawTag(24);
        output.WriteBool(IsStatic);
      }
      if (HasType) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Type);
      }
      if (HasTypeClassName) {
        output.WriteRawTag(42);
        output.WriteString(TypeClassName);
      }
      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 (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasIsStatic) {
        size += 1 + 1;
      }
      if (HasType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
      }
      if (HasTypeClassName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeClassName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiBlackboardKey other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasIsStatic) {
        IsStatic = other.IsStatic;
      }
      if (other.HasType) {
        Type = other.Type;
      }
      if (other.HasTypeClassName) {
        TypeClassName = other.TypeClassName;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 24: {
            IsStatic = input.ReadBool();
            break;
          }
          case 32: {
            Type = (global::Cfg.AiEKeyType) input.ReadEnum();
            break;
          }
          case 42: {
            TypeClassName = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 24: {
            IsStatic = input.ReadBool();
            break;
          }
          case 32: {
            Type = (global::Cfg.AiEKeyType) input.ReadEnum();
            break;
          }
          case 42: {
            TypeClassName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiBehaviorTree() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiBehaviorTree(AiBehaviorTree other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      name_ = other.name_;
      desc_ = other.desc_;
      blackboardId_ = other.blackboardId_;
      root_ = other.root_ != null ? other.root_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 3;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "blackboard_id" field.</summary>
    public const int BlackboardIdFieldNumber = 4;
    private readonly static string BlackboardIdDefaultValue = "";

    private string blackboardId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string BlackboardId {
      get { return blackboardId_ ?? BlackboardIdDefaultValue; }
      set {
        blackboardId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "blackboard_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBlackboardId {
      get { return blackboardId_ != null; }
    }
    /// <summary>Clears the value of the "blackboard_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBlackboardId() {
      blackboardId_ = null;
    }

    /// <summary>Field number for the "root" field.</summary>
    public const int RootFieldNumber = 5;
    private global::Cfg.AiComposeNode root_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiComposeNode Root {
      get { return root_; }
      set {
        root_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiBehaviorTree other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if (BlackboardId != other.BlackboardId) return false;
      if (!object.Equals(Root, other.Root)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasBlackboardId) hash ^= BlackboardId.GetHashCode();
      if (root_ != null) hash ^= Root.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasBlackboardId) {
        output.WriteRawTag(34);
        output.WriteString(BlackboardId);
      }
      if (root_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Root);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasBlackboardId) {
        output.WriteRawTag(34);
        output.WriteString(BlackboardId);
      }
      if (root_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Root);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasBlackboardId) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(BlackboardId);
      }
      if (root_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Root);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiBehaviorTree other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasBlackboardId) {
        BlackboardId = other.BlackboardId;
      }
      if (other.root_ != null) {
        if (root_ == null) {
          Root = new global::Cfg.AiComposeNode();
        }
        Root.MergeFrom(other.Root);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 34: {
            BlackboardId = input.ReadString();
            break;
          }
          case 42: {
            if (root_ == null) {
              Root = new global::Cfg.AiComposeNode();
            }
            input.ReadMessage(Root);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 34: {
            BlackboardId = input.ReadString();
            break;
          }
          case 42: {
            if (root_ == null) {
              Root = new global::Cfg.AiComposeNode();
            }
            input.ReadMessage(Root);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiNode() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiNode(AiNode other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.UeSetDefaultFocus:
          UeSetDefaultFocus = other.UeSetDefaultFocus.Clone();
          break;
        case ValueOneofCase.ExecuteTimeStatistic:
          ExecuteTimeStatistic = other.ExecuteTimeStatistic.Clone();
          break;
        case ValueOneofCase.ChooseTarget:
          ChooseTarget = other.ChooseTarget.Clone();
          break;
        case ValueOneofCase.KeepFaceTarget:
          KeepFaceTarget = other.KeepFaceTarget.Clone();
          break;
        case ValueOneofCase.GetOwnerPlayer:
          GetOwnerPlayer = other.GetOwnerPlayer.Clone();
          break;
        case ValueOneofCase.UpdateDailyBehaviorProps:
          UpdateDailyBehaviorProps = other.UpdateDailyBehaviorProps.Clone();
          break;
        case ValueOneofCase.UeLoop:
          UeLoop = other.UeLoop.Clone();
          break;
        case ValueOneofCase.UeCooldown:
          UeCooldown = other.UeCooldown.Clone();
          break;
        case ValueOneofCase.UeTimeLimit:
          UeTimeLimit = other.UeTimeLimit.Clone();
          break;
        case ValueOneofCase.UeBlackboard:
          UeBlackboard = other.UeBlackboard.Clone();
          break;
        case ValueOneofCase.UeForceSuccess:
          UeForceSuccess = other.UeForceSuccess.Clone();
          break;
        case ValueOneofCase.IsAtLocation:
          IsAtLocation = other.IsAtLocation.Clone();
          break;
        case ValueOneofCase.DistanceLessThan:
          DistanceLessThan = other.DistanceLessThan.Clone();
          break;
        case ValueOneofCase.Sequence:
          Sequence = other.Sequence.Clone();
          break;
        case ValueOneofCase.Selector:
          Selector = other.Selector.Clone();
          break;
        case ValueOneofCase.SimpleParallel:
          SimpleParallel = other.SimpleParallel.Clone();
          break;
        case ValueOneofCase.UeWait:
          UeWait = other.UeWait.Clone();
          break;
        case ValueOneofCase.UeWaitBlackboardTime:
          UeWaitBlackboardTime = other.UeWaitBlackboardTime.Clone();
          break;
        case ValueOneofCase.MoveToTarget:
          MoveToTarget = other.MoveToTarget.Clone();
          break;
        case ValueOneofCase.ChooseSkill:
          ChooseSkill = other.ChooseSkill.Clone();
          break;
        case ValueOneofCase.MoveToRandomLocation:
          MoveToRandomLocation = other.MoveToRandomLocation.Clone();
          break;
        case ValueOneofCase.MoveToLocation:
          MoveToLocation = other.MoveToLocation.Clone();
          break;
        case ValueOneofCase.DebugPrint:
          DebugPrint = other.DebugPrint.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "UeSetDefaultFocus" field.</summary>
    public const int UeSetDefaultFocusFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeSetDefaultFocus UeSetDefaultFocus {
      get { return valueCase_ == ValueOneofCase.UeSetDefaultFocus ? (global::Cfg.AiUeSetDefaultFocus) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeSetDefaultFocus;
      }
    }

    /// <summary>Field number for the "ExecuteTimeStatistic" field.</summary>
    public const int ExecuteTimeStatisticFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiExecuteTimeStatistic ExecuteTimeStatistic {
      get { return valueCase_ == ValueOneofCase.ExecuteTimeStatistic ? (global::Cfg.AiExecuteTimeStatistic) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ExecuteTimeStatistic;
      }
    }

    /// <summary>Field number for the "ChooseTarget" field.</summary>
    public const int ChooseTargetFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiChooseTarget ChooseTarget {
      get { return valueCase_ == ValueOneofCase.ChooseTarget ? (global::Cfg.AiChooseTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ChooseTarget;
      }
    }

    /// <summary>Field number for the "KeepFaceTarget" field.</summary>
    public const int KeepFaceTargetFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiKeepFaceTarget KeepFaceTarget {
      get { return valueCase_ == ValueOneofCase.KeepFaceTarget ? (global::Cfg.AiKeepFaceTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.KeepFaceTarget;
      }
    }

    /// <summary>Field number for the "GetOwnerPlayer" field.</summary>
    public const int GetOwnerPlayerFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiGetOwnerPlayer GetOwnerPlayer {
      get { return valueCase_ == ValueOneofCase.GetOwnerPlayer ? (global::Cfg.AiGetOwnerPlayer) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.GetOwnerPlayer;
      }
    }

    /// <summary>Field number for the "UpdateDailyBehaviorProps" field.</summary>
    public const int UpdateDailyBehaviorPropsFieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUpdateDailyBehaviorProps UpdateDailyBehaviorProps {
      get { return valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps ? (global::Cfg.AiUpdateDailyBehaviorProps) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UpdateDailyBehaviorProps;
      }
    }

    /// <summary>Field number for the "UeLoop" field.</summary>
    public const int UeLoopFieldNumber = 7;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeLoop UeLoop {
      get { return valueCase_ == ValueOneofCase.UeLoop ? (global::Cfg.AiUeLoop) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeLoop;
      }
    }

    /// <summary>Field number for the "UeCooldown" field.</summary>
    public const int UeCooldownFieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeCooldown UeCooldown {
      get { return valueCase_ == ValueOneofCase.UeCooldown ? (global::Cfg.AiUeCooldown) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeCooldown;
      }
    }

    /// <summary>Field number for the "UeTimeLimit" field.</summary>
    public const int UeTimeLimitFieldNumber = 9;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeTimeLimit UeTimeLimit {
      get { return valueCase_ == ValueOneofCase.UeTimeLimit ? (global::Cfg.AiUeTimeLimit) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeTimeLimit;
      }
    }

    /// <summary>Field number for the "UeBlackboard" field.</summary>
    public const int UeBlackboardFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeBlackboard UeBlackboard {
      get { return valueCase_ == ValueOneofCase.UeBlackboard ? (global::Cfg.AiUeBlackboard) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeBlackboard;
      }
    }

    /// <summary>Field number for the "UeForceSuccess" field.</summary>
    public const int UeForceSuccessFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeForceSuccess UeForceSuccess {
      get { return valueCase_ == ValueOneofCase.UeForceSuccess ? (global::Cfg.AiUeForceSuccess) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeForceSuccess;
      }
    }

    /// <summary>Field number for the "IsAtLocation" field.</summary>
    public const int IsAtLocationFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiIsAtLocation IsAtLocation {
      get { return valueCase_ == ValueOneofCase.IsAtLocation ? (global::Cfg.AiIsAtLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.IsAtLocation;
      }
    }

    /// <summary>Field number for the "DistanceLessThan" field.</summary>
    public const int DistanceLessThanFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiDistanceLessThan DistanceLessThan {
      get { return valueCase_ == ValueOneofCase.DistanceLessThan ? (global::Cfg.AiDistanceLessThan) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DistanceLessThan;
      }
    }

    /// <summary>Field number for the "Sequence" field.</summary>
    public const int SequenceFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSequence Sequence {
      get { return valueCase_ == ValueOneofCase.Sequence ? (global::Cfg.AiSequence) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Sequence;
      }
    }

    /// <summary>Field number for the "Selector" field.</summary>
    public const int SelectorFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSelector Selector {
      get { return valueCase_ == ValueOneofCase.Selector ? (global::Cfg.AiSelector) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Selector;
      }
    }

    /// <summary>Field number for the "SimpleParallel" field.</summary>
    public const int SimpleParallelFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSimpleParallel SimpleParallel {
      get { return valueCase_ == ValueOneofCase.SimpleParallel ? (global::Cfg.AiSimpleParallel) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.SimpleParallel;
      }
    }

    /// <summary>Field number for the "UeWait" field.</summary>
    public const int UeWaitFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeWait UeWait {
      get { return valueCase_ == ValueOneofCase.UeWait ? (global::Cfg.AiUeWait) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeWait;
      }
    }

    /// <summary>Field number for the "UeWaitBlackboardTime" field.</summary>
    public const int UeWaitBlackboardTimeFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeWaitBlackboardTime UeWaitBlackboardTime {
      get { return valueCase_ == ValueOneofCase.UeWaitBlackboardTime ? (global::Cfg.AiUeWaitBlackboardTime) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeWaitBlackboardTime;
      }
    }

    /// <summary>Field number for the "MoveToTarget" field.</summary>
    public const int MoveToTargetFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToTarget MoveToTarget {
      get { return valueCase_ == ValueOneofCase.MoveToTarget ? (global::Cfg.AiMoveToTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToTarget;
      }
    }

    /// <summary>Field number for the "ChooseSkill" field.</summary>
    public const int ChooseSkillFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiChooseSkill ChooseSkill {
      get { return valueCase_ == ValueOneofCase.ChooseSkill ? (global::Cfg.AiChooseSkill) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ChooseSkill;
      }
    }

    /// <summary>Field number for the "MoveToRandomLocation" field.</summary>
    public const int MoveToRandomLocationFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToRandomLocation MoveToRandomLocation {
      get { return valueCase_ == ValueOneofCase.MoveToRandomLocation ? (global::Cfg.AiMoveToRandomLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToRandomLocation;
      }
    }

    /// <summary>Field number for the "MoveToLocation" field.</summary>
    public const int MoveToLocationFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToLocation MoveToLocation {
      get { return valueCase_ == ValueOneofCase.MoveToLocation ? (global::Cfg.AiMoveToLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToLocation;
      }
    }

    /// <summary>Field number for the "DebugPrint" field.</summary>
    public const int DebugPrintFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiDebugPrint DebugPrint {
      get { return valueCase_ == ValueOneofCase.DebugPrint ? (global::Cfg.AiDebugPrint) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DebugPrint;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      UeSetDefaultFocus = 1,
      ExecuteTimeStatistic = 2,
      ChooseTarget = 3,
      KeepFaceTarget = 4,
      GetOwnerPlayer = 5,
      UpdateDailyBehaviorProps = 6,
      UeLoop = 7,
      UeCooldown = 8,
      UeTimeLimit = 9,
      UeBlackboard = 10,
      UeForceSuccess = 11,
      IsAtLocation = 12,
      DistanceLessThan = 13,
      Sequence = 14,
      Selector = 15,
      SimpleParallel = 16,
      UeWait = 17,
      UeWaitBlackboardTime = 18,
      MoveToTarget = 19,
      ChooseSkill = 20,
      MoveToRandomLocation = 21,
      MoveToLocation = 22,
      DebugPrint = 23,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiNode other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(UeSetDefaultFocus, other.UeSetDefaultFocus)) return false;
      if (!object.Equals(ExecuteTimeStatistic, other.ExecuteTimeStatistic)) return false;
      if (!object.Equals(ChooseTarget, other.ChooseTarget)) return false;
      if (!object.Equals(KeepFaceTarget, other.KeepFaceTarget)) return false;
      if (!object.Equals(GetOwnerPlayer, other.GetOwnerPlayer)) return false;
      if (!object.Equals(UpdateDailyBehaviorProps, other.UpdateDailyBehaviorProps)) return false;
      if (!object.Equals(UeLoop, other.UeLoop)) return false;
      if (!object.Equals(UeCooldown, other.UeCooldown)) return false;
      if (!object.Equals(UeTimeLimit, other.UeTimeLimit)) return false;
      if (!object.Equals(UeBlackboard, other.UeBlackboard)) return false;
      if (!object.Equals(UeForceSuccess, other.UeForceSuccess)) return false;
      if (!object.Equals(IsAtLocation, other.IsAtLocation)) return false;
      if (!object.Equals(DistanceLessThan, other.DistanceLessThan)) return false;
      if (!object.Equals(Sequence, other.Sequence)) return false;
      if (!object.Equals(Selector, other.Selector)) return false;
      if (!object.Equals(SimpleParallel, other.SimpleParallel)) return false;
      if (!object.Equals(UeWait, other.UeWait)) return false;
      if (!object.Equals(UeWaitBlackboardTime, other.UeWaitBlackboardTime)) return false;
      if (!object.Equals(MoveToTarget, other.MoveToTarget)) return false;
      if (!object.Equals(ChooseSkill, other.ChooseSkill)) return false;
      if (!object.Equals(MoveToRandomLocation, other.MoveToRandomLocation)) return false;
      if (!object.Equals(MoveToLocation, other.MoveToLocation)) return false;
      if (!object.Equals(DebugPrint, other.DebugPrint)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) hash ^= UeSetDefaultFocus.GetHashCode();
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) hash ^= ExecuteTimeStatistic.GetHashCode();
      if (valueCase_ == ValueOneofCase.ChooseTarget) hash ^= ChooseTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) hash ^= KeepFaceTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) hash ^= GetOwnerPlayer.GetHashCode();
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) hash ^= UpdateDailyBehaviorProps.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeLoop) hash ^= UeLoop.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeCooldown) hash ^= UeCooldown.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeTimeLimit) hash ^= UeTimeLimit.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeBlackboard) hash ^= UeBlackboard.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeForceSuccess) hash ^= UeForceSuccess.GetHashCode();
      if (valueCase_ == ValueOneofCase.IsAtLocation) hash ^= IsAtLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.DistanceLessThan) hash ^= DistanceLessThan.GetHashCode();
      if (valueCase_ == ValueOneofCase.Sequence) hash ^= Sequence.GetHashCode();
      if (valueCase_ == ValueOneofCase.Selector) hash ^= Selector.GetHashCode();
      if (valueCase_ == ValueOneofCase.SimpleParallel) hash ^= SimpleParallel.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeWait) hash ^= UeWait.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) hash ^= UeWaitBlackboardTime.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToTarget) hash ^= MoveToTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.ChooseSkill) hash ^= ChooseSkill.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) hash ^= MoveToRandomLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToLocation) hash ^= MoveToLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.DebugPrint) hash ^= DebugPrint.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
        output.WriteRawTag(10);
        output.WriteMessage(UeSetDefaultFocus);
      }
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
        output.WriteRawTag(18);
        output.WriteMessage(ExecuteTimeStatistic);
      }
      if (valueCase_ == ValueOneofCase.ChooseTarget) {
        output.WriteRawTag(26);
        output.WriteMessage(ChooseTarget);
      }
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
        output.WriteRawTag(34);
        output.WriteMessage(KeepFaceTarget);
      }
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
        output.WriteRawTag(42);
        output.WriteMessage(GetOwnerPlayer);
      }
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
        output.WriteRawTag(50);
        output.WriteMessage(UpdateDailyBehaviorProps);
      }
      if (valueCase_ == ValueOneofCase.UeLoop) {
        output.WriteRawTag(58);
        output.WriteMessage(UeLoop);
      }
      if (valueCase_ == ValueOneofCase.UeCooldown) {
        output.WriteRawTag(66);
        output.WriteMessage(UeCooldown);
      }
      if (valueCase_ == ValueOneofCase.UeTimeLimit) {
        output.WriteRawTag(74);
        output.WriteMessage(UeTimeLimit);
      }
      if (valueCase_ == ValueOneofCase.UeBlackboard) {
        output.WriteRawTag(82);
        output.WriteMessage(UeBlackboard);
      }
      if (valueCase_ == ValueOneofCase.UeForceSuccess) {
        output.WriteRawTag(90);
        output.WriteMessage(UeForceSuccess);
      }
      if (valueCase_ == ValueOneofCase.IsAtLocation) {
        output.WriteRawTag(98);
        output.WriteMessage(IsAtLocation);
      }
      if (valueCase_ == ValueOneofCase.DistanceLessThan) {
        output.WriteRawTag(106);
        output.WriteMessage(DistanceLessThan);
      }
      if (valueCase_ == ValueOneofCase.Sequence) {
        output.WriteRawTag(114);
        output.WriteMessage(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        output.WriteRawTag(122);
        output.WriteMessage(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(SimpleParallel);
      }
      if (valueCase_ == ValueOneofCase.UeWait) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(DebugPrint);
      }
      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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
        output.WriteRawTag(10);
        output.WriteMessage(UeSetDefaultFocus);
      }
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
        output.WriteRawTag(18);
        output.WriteMessage(ExecuteTimeStatistic);
      }
      if (valueCase_ == ValueOneofCase.ChooseTarget) {
        output.WriteRawTag(26);
        output.WriteMessage(ChooseTarget);
      }
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
        output.WriteRawTag(34);
        output.WriteMessage(KeepFaceTarget);
      }
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
        output.WriteRawTag(42);
        output.WriteMessage(GetOwnerPlayer);
      }
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
        output.WriteRawTag(50);
        output.WriteMessage(UpdateDailyBehaviorProps);
      }
      if (valueCase_ == ValueOneofCase.UeLoop) {
        output.WriteRawTag(58);
        output.WriteMessage(UeLoop);
      }
      if (valueCase_ == ValueOneofCase.UeCooldown) {
        output.WriteRawTag(66);
        output.WriteMessage(UeCooldown);
      }
      if (valueCase_ == ValueOneofCase.UeTimeLimit) {
        output.WriteRawTag(74);
        output.WriteMessage(UeTimeLimit);
      }
      if (valueCase_ == ValueOneofCase.UeBlackboard) {
        output.WriteRawTag(82);
        output.WriteMessage(UeBlackboard);
      }
      if (valueCase_ == ValueOneofCase.UeForceSuccess) {
        output.WriteRawTag(90);
        output.WriteMessage(UeForceSuccess);
      }
      if (valueCase_ == ValueOneofCase.IsAtLocation) {
        output.WriteRawTag(98);
        output.WriteMessage(IsAtLocation);
      }
      if (valueCase_ == ValueOneofCase.DistanceLessThan) {
        output.WriteRawTag(106);
        output.WriteMessage(DistanceLessThan);
      }
      if (valueCase_ == ValueOneofCase.Sequence) {
        output.WriteRawTag(114);
        output.WriteMessage(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        output.WriteRawTag(122);
        output.WriteMessage(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(SimpleParallel);
      }
      if (valueCase_ == ValueOneofCase.UeWait) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(DebugPrint);
      }
      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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeSetDefaultFocus);
      }
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ExecuteTimeStatistic);
      }
      if (valueCase_ == ValueOneofCase.ChooseTarget) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ChooseTarget);
      }
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(KeepFaceTarget);
      }
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetOwnerPlayer);
      }
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UpdateDailyBehaviorProps);
      }
      if (valueCase_ == ValueOneofCase.UeLoop) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeLoop);
      }
      if (valueCase_ == ValueOneofCase.UeCooldown) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeCooldown);
      }
      if (valueCase_ == ValueOneofCase.UeTimeLimit) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeTimeLimit);
      }
      if (valueCase_ == ValueOneofCase.UeBlackboard) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeBlackboard);
      }
      if (valueCase_ == ValueOneofCase.UeForceSuccess) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeForceSuccess);
      }
      if (valueCase_ == ValueOneofCase.IsAtLocation) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IsAtLocation);
      }
      if (valueCase_ == ValueOneofCase.DistanceLessThan) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DistanceLessThan);
      }
      if (valueCase_ == ValueOneofCase.Sequence) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SimpleParallel);
      }
      if (valueCase_ == ValueOneofCase.UeWait) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(DebugPrint);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiNode other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.UeSetDefaultFocus:
          if (UeSetDefaultFocus == null) {
            UeSetDefaultFocus = new global::Cfg.AiUeSetDefaultFocus();
          }
          UeSetDefaultFocus.MergeFrom(other.UeSetDefaultFocus);
          break;
        case ValueOneofCase.ExecuteTimeStatistic:
          if (ExecuteTimeStatistic == null) {
            ExecuteTimeStatistic = new global::Cfg.AiExecuteTimeStatistic();
          }
          ExecuteTimeStatistic.MergeFrom(other.ExecuteTimeStatistic);
          break;
        case ValueOneofCase.ChooseTarget:
          if (ChooseTarget == null) {
            ChooseTarget = new global::Cfg.AiChooseTarget();
          }
          ChooseTarget.MergeFrom(other.ChooseTarget);
          break;
        case ValueOneofCase.KeepFaceTarget:
          if (KeepFaceTarget == null) {
            KeepFaceTarget = new global::Cfg.AiKeepFaceTarget();
          }
          KeepFaceTarget.MergeFrom(other.KeepFaceTarget);
          break;
        case ValueOneofCase.GetOwnerPlayer:
          if (GetOwnerPlayer == null) {
            GetOwnerPlayer = new global::Cfg.AiGetOwnerPlayer();
          }
          GetOwnerPlayer.MergeFrom(other.GetOwnerPlayer);
          break;
        case ValueOneofCase.UpdateDailyBehaviorProps:
          if (UpdateDailyBehaviorProps == null) {
            UpdateDailyBehaviorProps = new global::Cfg.AiUpdateDailyBehaviorProps();
          }
          UpdateDailyBehaviorProps.MergeFrom(other.UpdateDailyBehaviorProps);
          break;
        case ValueOneofCase.UeLoop:
          if (UeLoop == null) {
            UeLoop = new global::Cfg.AiUeLoop();
          }
          UeLoop.MergeFrom(other.UeLoop);
          break;
        case ValueOneofCase.UeCooldown:
          if (UeCooldown == null) {
            UeCooldown = new global::Cfg.AiUeCooldown();
          }
          UeCooldown.MergeFrom(other.UeCooldown);
          break;
        case ValueOneofCase.UeTimeLimit:
          if (UeTimeLimit == null) {
            UeTimeLimit = new global::Cfg.AiUeTimeLimit();
          }
          UeTimeLimit.MergeFrom(other.UeTimeLimit);
          break;
        case ValueOneofCase.UeBlackboard:
          if (UeBlackboard == null) {
            UeBlackboard = new global::Cfg.AiUeBlackboard();
          }
          UeBlackboard.MergeFrom(other.UeBlackboard);
          break;
        case ValueOneofCase.UeForceSuccess:
          if (UeForceSuccess == null) {
            UeForceSuccess = new global::Cfg.AiUeForceSuccess();
          }
          UeForceSuccess.MergeFrom(other.UeForceSuccess);
          break;
        case ValueOneofCase.IsAtLocation:
          if (IsAtLocation == null) {
            IsAtLocation = new global::Cfg.AiIsAtLocation();
          }
          IsAtLocation.MergeFrom(other.IsAtLocation);
          break;
        case ValueOneofCase.DistanceLessThan:
          if (DistanceLessThan == null) {
            DistanceLessThan = new global::Cfg.AiDistanceLessThan();
          }
          DistanceLessThan.MergeFrom(other.DistanceLessThan);
          break;
        case ValueOneofCase.Sequence:
          if (Sequence == null) {
            Sequence = new global::Cfg.AiSequence();
          }
          Sequence.MergeFrom(other.Sequence);
          break;
        case ValueOneofCase.Selector:
          if (Selector == null) {
            Selector = new global::Cfg.AiSelector();
          }
          Selector.MergeFrom(other.Selector);
          break;
        case ValueOneofCase.SimpleParallel:
          if (SimpleParallel == null) {
            SimpleParallel = new global::Cfg.AiSimpleParallel();
          }
          SimpleParallel.MergeFrom(other.SimpleParallel);
          break;
        case ValueOneofCase.UeWait:
          if (UeWait == null) {
            UeWait = new global::Cfg.AiUeWait();
          }
          UeWait.MergeFrom(other.UeWait);
          break;
        case ValueOneofCase.UeWaitBlackboardTime:
          if (UeWaitBlackboardTime == null) {
            UeWaitBlackboardTime = new global::Cfg.AiUeWaitBlackboardTime();
          }
          UeWaitBlackboardTime.MergeFrom(other.UeWaitBlackboardTime);
          break;
        case ValueOneofCase.MoveToTarget:
          if (MoveToTarget == null) {
            MoveToTarget = new global::Cfg.AiMoveToTarget();
          }
          MoveToTarget.MergeFrom(other.MoveToTarget);
          break;
        case ValueOneofCase.ChooseSkill:
          if (ChooseSkill == null) {
            ChooseSkill = new global::Cfg.AiChooseSkill();
          }
          ChooseSkill.MergeFrom(other.ChooseSkill);
          break;
        case ValueOneofCase.MoveToRandomLocation:
          if (MoveToRandomLocation == null) {
            MoveToRandomLocation = new global::Cfg.AiMoveToRandomLocation();
          }
          MoveToRandomLocation.MergeFrom(other.MoveToRandomLocation);
          break;
        case ValueOneofCase.MoveToLocation:
          if (MoveToLocation == null) {
            MoveToLocation = new global::Cfg.AiMoveToLocation();
          }
          MoveToLocation.MergeFrom(other.MoveToLocation);
          break;
        case ValueOneofCase.DebugPrint:
          if (DebugPrint == null) {
            DebugPrint = new global::Cfg.AiDebugPrint();
          }
          DebugPrint.MergeFrom(other.DebugPrint);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.AiUeSetDefaultFocus subBuilder = new global::Cfg.AiUeSetDefaultFocus();
            if (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
              subBuilder.MergeFrom(UeSetDefaultFocus);
            }
            input.ReadMessage(subBuilder);
            UeSetDefaultFocus = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiExecuteTimeStatistic subBuilder = new global::Cfg.AiExecuteTimeStatistic();
            if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
              subBuilder.MergeFrom(ExecuteTimeStatistic);
            }
            input.ReadMessage(subBuilder);
            ExecuteTimeStatistic = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiChooseTarget subBuilder = new global::Cfg.AiChooseTarget();
            if (valueCase_ == ValueOneofCase.ChooseTarget) {
              subBuilder.MergeFrom(ChooseTarget);
            }
            input.ReadMessage(subBuilder);
            ChooseTarget = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.AiKeepFaceTarget subBuilder = new global::Cfg.AiKeepFaceTarget();
            if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
              subBuilder.MergeFrom(KeepFaceTarget);
            }
            input.ReadMessage(subBuilder);
            KeepFaceTarget = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.AiGetOwnerPlayer subBuilder = new global::Cfg.AiGetOwnerPlayer();
            if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
              subBuilder.MergeFrom(GetOwnerPlayer);
            }
            input.ReadMessage(subBuilder);
            GetOwnerPlayer = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.AiUpdateDailyBehaviorProps subBuilder = new global::Cfg.AiUpdateDailyBehaviorProps();
            if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
              subBuilder.MergeFrom(UpdateDailyBehaviorProps);
            }
            input.ReadMessage(subBuilder);
            UpdateDailyBehaviorProps = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.AiUeLoop subBuilder = new global::Cfg.AiUeLoop();
            if (valueCase_ == ValueOneofCase.UeLoop) {
              subBuilder.MergeFrom(UeLoop);
            }
            input.ReadMessage(subBuilder);
            UeLoop = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.AiUeCooldown subBuilder = new global::Cfg.AiUeCooldown();
            if (valueCase_ == ValueOneofCase.UeCooldown) {
              subBuilder.MergeFrom(UeCooldown);
            }
            input.ReadMessage(subBuilder);
            UeCooldown = subBuilder;
            break;
          }
          case 74: {
            global::Cfg.AiUeTimeLimit subBuilder = new global::Cfg.AiUeTimeLimit();
            if (valueCase_ == ValueOneofCase.UeTimeLimit) {
              subBuilder.MergeFrom(UeTimeLimit);
            }
            input.ReadMessage(subBuilder);
            UeTimeLimit = subBuilder;
            break;
          }
          case 82: {
            global::Cfg.AiUeBlackboard subBuilder = new global::Cfg.AiUeBlackboard();
            if (valueCase_ == ValueOneofCase.UeBlackboard) {
              subBuilder.MergeFrom(UeBlackboard);
            }
            input.ReadMessage(subBuilder);
            UeBlackboard = subBuilder;
            break;
          }
          case 90: {
            global::Cfg.AiUeForceSuccess subBuilder = new global::Cfg.AiUeForceSuccess();
            if (valueCase_ == ValueOneofCase.UeForceSuccess) {
              subBuilder.MergeFrom(UeForceSuccess);
            }
            input.ReadMessage(subBuilder);
            UeForceSuccess = subBuilder;
            break;
          }
          case 98: {
            global::Cfg.AiIsAtLocation subBuilder = new global::Cfg.AiIsAtLocation();
            if (valueCase_ == ValueOneofCase.IsAtLocation) {
              subBuilder.MergeFrom(IsAtLocation);
            }
            input.ReadMessage(subBuilder);
            IsAtLocation = subBuilder;
            break;
          }
          case 106: {
            global::Cfg.AiDistanceLessThan subBuilder = new global::Cfg.AiDistanceLessThan();
            if (valueCase_ == ValueOneofCase.DistanceLessThan) {
              subBuilder.MergeFrom(DistanceLessThan);
            }
            input.ReadMessage(subBuilder);
            DistanceLessThan = subBuilder;
            break;
          }
          case 114: {
            global::Cfg.AiSequence subBuilder = new global::Cfg.AiSequence();
            if (valueCase_ == ValueOneofCase.Sequence) {
              subBuilder.MergeFrom(Sequence);
            }
            input.ReadMessage(subBuilder);
            Sequence = subBuilder;
            break;
          }
          case 122: {
            global::Cfg.AiSelector subBuilder = new global::Cfg.AiSelector();
            if (valueCase_ == ValueOneofCase.Selector) {
              subBuilder.MergeFrom(Selector);
            }
            input.ReadMessage(subBuilder);
            Selector = subBuilder;
            break;
          }
          case 130: {
            global::Cfg.AiSimpleParallel subBuilder = new global::Cfg.AiSimpleParallel();
            if (valueCase_ == ValueOneofCase.SimpleParallel) {
              subBuilder.MergeFrom(SimpleParallel);
            }
            input.ReadMessage(subBuilder);
            SimpleParallel = subBuilder;
            break;
          }
          case 138: {
            global::Cfg.AiUeWait subBuilder = new global::Cfg.AiUeWait();
            if (valueCase_ == ValueOneofCase.UeWait) {
              subBuilder.MergeFrom(UeWait);
            }
            input.ReadMessage(subBuilder);
            UeWait = subBuilder;
            break;
          }
          case 146: {
            global::Cfg.AiUeWaitBlackboardTime subBuilder = new global::Cfg.AiUeWaitBlackboardTime();
            if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
              subBuilder.MergeFrom(UeWaitBlackboardTime);
            }
            input.ReadMessage(subBuilder);
            UeWaitBlackboardTime = subBuilder;
            break;
          }
          case 154: {
            global::Cfg.AiMoveToTarget subBuilder = new global::Cfg.AiMoveToTarget();
            if (valueCase_ == ValueOneofCase.MoveToTarget) {
              subBuilder.MergeFrom(MoveToTarget);
            }
            input.ReadMessage(subBuilder);
            MoveToTarget = subBuilder;
            break;
          }
          case 162: {
            global::Cfg.AiChooseSkill subBuilder = new global::Cfg.AiChooseSkill();
            if (valueCase_ == ValueOneofCase.ChooseSkill) {
              subBuilder.MergeFrom(ChooseSkill);
            }
            input.ReadMessage(subBuilder);
            ChooseSkill = subBuilder;
            break;
          }
          case 170: {
            global::Cfg.AiMoveToRandomLocation subBuilder = new global::Cfg.AiMoveToRandomLocation();
            if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
              subBuilder.MergeFrom(MoveToRandomLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToRandomLocation = subBuilder;
            break;
          }
          case 178: {
            global::Cfg.AiMoveToLocation subBuilder = new global::Cfg.AiMoveToLocation();
            if (valueCase_ == ValueOneofCase.MoveToLocation) {
              subBuilder.MergeFrom(MoveToLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToLocation = subBuilder;
            break;
          }
          case 186: {
            global::Cfg.AiDebugPrint subBuilder = new global::Cfg.AiDebugPrint();
            if (valueCase_ == ValueOneofCase.DebugPrint) {
              subBuilder.MergeFrom(DebugPrint);
            }
            input.ReadMessage(subBuilder);
            DebugPrint = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.AiUeSetDefaultFocus subBuilder = new global::Cfg.AiUeSetDefaultFocus();
            if (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
              subBuilder.MergeFrom(UeSetDefaultFocus);
            }
            input.ReadMessage(subBuilder);
            UeSetDefaultFocus = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiExecuteTimeStatistic subBuilder = new global::Cfg.AiExecuteTimeStatistic();
            if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
              subBuilder.MergeFrom(ExecuteTimeStatistic);
            }
            input.ReadMessage(subBuilder);
            ExecuteTimeStatistic = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiChooseTarget subBuilder = new global::Cfg.AiChooseTarget();
            if (valueCase_ == ValueOneofCase.ChooseTarget) {
              subBuilder.MergeFrom(ChooseTarget);
            }
            input.ReadMessage(subBuilder);
            ChooseTarget = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.AiKeepFaceTarget subBuilder = new global::Cfg.AiKeepFaceTarget();
            if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
              subBuilder.MergeFrom(KeepFaceTarget);
            }
            input.ReadMessage(subBuilder);
            KeepFaceTarget = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.AiGetOwnerPlayer subBuilder = new global::Cfg.AiGetOwnerPlayer();
            if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
              subBuilder.MergeFrom(GetOwnerPlayer);
            }
            input.ReadMessage(subBuilder);
            GetOwnerPlayer = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.AiUpdateDailyBehaviorProps subBuilder = new global::Cfg.AiUpdateDailyBehaviorProps();
            if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
              subBuilder.MergeFrom(UpdateDailyBehaviorProps);
            }
            input.ReadMessage(subBuilder);
            UpdateDailyBehaviorProps = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.AiUeLoop subBuilder = new global::Cfg.AiUeLoop();
            if (valueCase_ == ValueOneofCase.UeLoop) {
              subBuilder.MergeFrom(UeLoop);
            }
            input.ReadMessage(subBuilder);
            UeLoop = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.AiUeCooldown subBuilder = new global::Cfg.AiUeCooldown();
            if (valueCase_ == ValueOneofCase.UeCooldown) {
              subBuilder.MergeFrom(UeCooldown);
            }
            input.ReadMessage(subBuilder);
            UeCooldown = subBuilder;
            break;
          }
          case 74: {
            global::Cfg.AiUeTimeLimit subBuilder = new global::Cfg.AiUeTimeLimit();
            if (valueCase_ == ValueOneofCase.UeTimeLimit) {
              subBuilder.MergeFrom(UeTimeLimit);
            }
            input.ReadMessage(subBuilder);
            UeTimeLimit = subBuilder;
            break;
          }
          case 82: {
            global::Cfg.AiUeBlackboard subBuilder = new global::Cfg.AiUeBlackboard();
            if (valueCase_ == ValueOneofCase.UeBlackboard) {
              subBuilder.MergeFrom(UeBlackboard);
            }
            input.ReadMessage(subBuilder);
            UeBlackboard = subBuilder;
            break;
          }
          case 90: {
            global::Cfg.AiUeForceSuccess subBuilder = new global::Cfg.AiUeForceSuccess();
            if (valueCase_ == ValueOneofCase.UeForceSuccess) {
              subBuilder.MergeFrom(UeForceSuccess);
            }
            input.ReadMessage(subBuilder);
            UeForceSuccess = subBuilder;
            break;
          }
          case 98: {
            global::Cfg.AiIsAtLocation subBuilder = new global::Cfg.AiIsAtLocation();
            if (valueCase_ == ValueOneofCase.IsAtLocation) {
              subBuilder.MergeFrom(IsAtLocation);
            }
            input.ReadMessage(subBuilder);
            IsAtLocation = subBuilder;
            break;
          }
          case 106: {
            global::Cfg.AiDistanceLessThan subBuilder = new global::Cfg.AiDistanceLessThan();
            if (valueCase_ == ValueOneofCase.DistanceLessThan) {
              subBuilder.MergeFrom(DistanceLessThan);
            }
            input.ReadMessage(subBuilder);
            DistanceLessThan = subBuilder;
            break;
          }
          case 114: {
            global::Cfg.AiSequence subBuilder = new global::Cfg.AiSequence();
            if (valueCase_ == ValueOneofCase.Sequence) {
              subBuilder.MergeFrom(Sequence);
            }
            input.ReadMessage(subBuilder);
            Sequence = subBuilder;
            break;
          }
          case 122: {
            global::Cfg.AiSelector subBuilder = new global::Cfg.AiSelector();
            if (valueCase_ == ValueOneofCase.Selector) {
              subBuilder.MergeFrom(Selector);
            }
            input.ReadMessage(subBuilder);
            Selector = subBuilder;
            break;
          }
          case 130: {
            global::Cfg.AiSimpleParallel subBuilder = new global::Cfg.AiSimpleParallel();
            if (valueCase_ == ValueOneofCase.SimpleParallel) {
              subBuilder.MergeFrom(SimpleParallel);
            }
            input.ReadMessage(subBuilder);
            SimpleParallel = subBuilder;
            break;
          }
          case 138: {
            global::Cfg.AiUeWait subBuilder = new global::Cfg.AiUeWait();
            if (valueCase_ == ValueOneofCase.UeWait) {
              subBuilder.MergeFrom(UeWait);
            }
            input.ReadMessage(subBuilder);
            UeWait = subBuilder;
            break;
          }
          case 146: {
            global::Cfg.AiUeWaitBlackboardTime subBuilder = new global::Cfg.AiUeWaitBlackboardTime();
            if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
              subBuilder.MergeFrom(UeWaitBlackboardTime);
            }
            input.ReadMessage(subBuilder);
            UeWaitBlackboardTime = subBuilder;
            break;
          }
          case 154: {
            global::Cfg.AiMoveToTarget subBuilder = new global::Cfg.AiMoveToTarget();
            if (valueCase_ == ValueOneofCase.MoveToTarget) {
              subBuilder.MergeFrom(MoveToTarget);
            }
            input.ReadMessage(subBuilder);
            MoveToTarget = subBuilder;
            break;
          }
          case 162: {
            global::Cfg.AiChooseSkill subBuilder = new global::Cfg.AiChooseSkill();
            if (valueCase_ == ValueOneofCase.ChooseSkill) {
              subBuilder.MergeFrom(ChooseSkill);
            }
            input.ReadMessage(subBuilder);
            ChooseSkill = subBuilder;
            break;
          }
          case 170: {
            global::Cfg.AiMoveToRandomLocation subBuilder = new global::Cfg.AiMoveToRandomLocation();
            if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
              subBuilder.MergeFrom(MoveToRandomLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToRandomLocation = subBuilder;
            break;
          }
          case 178: {
            global::Cfg.AiMoveToLocation subBuilder = new global::Cfg.AiMoveToLocation();
            if (valueCase_ == ValueOneofCase.MoveToLocation) {
              subBuilder.MergeFrom(MoveToLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToLocation = subBuilder;
            break;
          }
          case 186: {
            global::Cfg.AiDebugPrint subBuilder = new global::Cfg.AiDebugPrint();
            if (valueCase_ == ValueOneofCase.DebugPrint) {
              subBuilder.MergeFrom(DebugPrint);
            }
            input.ReadMessage(subBuilder);
            DebugPrint = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiService() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiService(AiService other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.UeSetDefaultFocus:
          UeSetDefaultFocus = other.UeSetDefaultFocus.Clone();
          break;
        case ValueOneofCase.ExecuteTimeStatistic:
          ExecuteTimeStatistic = other.ExecuteTimeStatistic.Clone();
          break;
        case ValueOneofCase.ChooseTarget:
          ChooseTarget = other.ChooseTarget.Clone();
          break;
        case ValueOneofCase.KeepFaceTarget:
          KeepFaceTarget = other.KeepFaceTarget.Clone();
          break;
        case ValueOneofCase.GetOwnerPlayer:
          GetOwnerPlayer = other.GetOwnerPlayer.Clone();
          break;
        case ValueOneofCase.UpdateDailyBehaviorProps:
          UpdateDailyBehaviorProps = other.UpdateDailyBehaviorProps.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "UeSetDefaultFocus" field.</summary>
    public const int UeSetDefaultFocusFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeSetDefaultFocus UeSetDefaultFocus {
      get { return valueCase_ == ValueOneofCase.UeSetDefaultFocus ? (global::Cfg.AiUeSetDefaultFocus) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeSetDefaultFocus;
      }
    }

    /// <summary>Field number for the "ExecuteTimeStatistic" field.</summary>
    public const int ExecuteTimeStatisticFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiExecuteTimeStatistic ExecuteTimeStatistic {
      get { return valueCase_ == ValueOneofCase.ExecuteTimeStatistic ? (global::Cfg.AiExecuteTimeStatistic) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ExecuteTimeStatistic;
      }
    }

    /// <summary>Field number for the "ChooseTarget" field.</summary>
    public const int ChooseTargetFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiChooseTarget ChooseTarget {
      get { return valueCase_ == ValueOneofCase.ChooseTarget ? (global::Cfg.AiChooseTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ChooseTarget;
      }
    }

    /// <summary>Field number for the "KeepFaceTarget" field.</summary>
    public const int KeepFaceTargetFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiKeepFaceTarget KeepFaceTarget {
      get { return valueCase_ == ValueOneofCase.KeepFaceTarget ? (global::Cfg.AiKeepFaceTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.KeepFaceTarget;
      }
    }

    /// <summary>Field number for the "GetOwnerPlayer" field.</summary>
    public const int GetOwnerPlayerFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiGetOwnerPlayer GetOwnerPlayer {
      get { return valueCase_ == ValueOneofCase.GetOwnerPlayer ? (global::Cfg.AiGetOwnerPlayer) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.GetOwnerPlayer;
      }
    }

    /// <summary>Field number for the "UpdateDailyBehaviorProps" field.</summary>
    public const int UpdateDailyBehaviorPropsFieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUpdateDailyBehaviorProps UpdateDailyBehaviorProps {
      get { return valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps ? (global::Cfg.AiUpdateDailyBehaviorProps) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UpdateDailyBehaviorProps;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      UeSetDefaultFocus = 1,
      ExecuteTimeStatistic = 2,
      ChooseTarget = 3,
      KeepFaceTarget = 4,
      GetOwnerPlayer = 5,
      UpdateDailyBehaviorProps = 6,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiService other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(UeSetDefaultFocus, other.UeSetDefaultFocus)) return false;
      if (!object.Equals(ExecuteTimeStatistic, other.ExecuteTimeStatistic)) return false;
      if (!object.Equals(ChooseTarget, other.ChooseTarget)) return false;
      if (!object.Equals(KeepFaceTarget, other.KeepFaceTarget)) return false;
      if (!object.Equals(GetOwnerPlayer, other.GetOwnerPlayer)) return false;
      if (!object.Equals(UpdateDailyBehaviorProps, other.UpdateDailyBehaviorProps)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) hash ^= UeSetDefaultFocus.GetHashCode();
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) hash ^= ExecuteTimeStatistic.GetHashCode();
      if (valueCase_ == ValueOneofCase.ChooseTarget) hash ^= ChooseTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) hash ^= KeepFaceTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) hash ^= GetOwnerPlayer.GetHashCode();
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) hash ^= UpdateDailyBehaviorProps.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
        output.WriteRawTag(10);
        output.WriteMessage(UeSetDefaultFocus);
      }
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
        output.WriteRawTag(18);
        output.WriteMessage(ExecuteTimeStatistic);
      }
      if (valueCase_ == ValueOneofCase.ChooseTarget) {
        output.WriteRawTag(26);
        output.WriteMessage(ChooseTarget);
      }
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
        output.WriteRawTag(34);
        output.WriteMessage(KeepFaceTarget);
      }
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
        output.WriteRawTag(42);
        output.WriteMessage(GetOwnerPlayer);
      }
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
        output.WriteRawTag(50);
        output.WriteMessage(UpdateDailyBehaviorProps);
      }
      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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
        output.WriteRawTag(10);
        output.WriteMessage(UeSetDefaultFocus);
      }
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
        output.WriteRawTag(18);
        output.WriteMessage(ExecuteTimeStatistic);
      }
      if (valueCase_ == ValueOneofCase.ChooseTarget) {
        output.WriteRawTag(26);
        output.WriteMessage(ChooseTarget);
      }
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
        output.WriteRawTag(34);
        output.WriteMessage(KeepFaceTarget);
      }
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
        output.WriteRawTag(42);
        output.WriteMessage(GetOwnerPlayer);
      }
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
        output.WriteRawTag(50);
        output.WriteMessage(UpdateDailyBehaviorProps);
      }
      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 (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeSetDefaultFocus);
      }
      if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ExecuteTimeStatistic);
      }
      if (valueCase_ == ValueOneofCase.ChooseTarget) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ChooseTarget);
      }
      if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(KeepFaceTarget);
      }
      if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetOwnerPlayer);
      }
      if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UpdateDailyBehaviorProps);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiService other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.UeSetDefaultFocus:
          if (UeSetDefaultFocus == null) {
            UeSetDefaultFocus = new global::Cfg.AiUeSetDefaultFocus();
          }
          UeSetDefaultFocus.MergeFrom(other.UeSetDefaultFocus);
          break;
        case ValueOneofCase.ExecuteTimeStatistic:
          if (ExecuteTimeStatistic == null) {
            ExecuteTimeStatistic = new global::Cfg.AiExecuteTimeStatistic();
          }
          ExecuteTimeStatistic.MergeFrom(other.ExecuteTimeStatistic);
          break;
        case ValueOneofCase.ChooseTarget:
          if (ChooseTarget == null) {
            ChooseTarget = new global::Cfg.AiChooseTarget();
          }
          ChooseTarget.MergeFrom(other.ChooseTarget);
          break;
        case ValueOneofCase.KeepFaceTarget:
          if (KeepFaceTarget == null) {
            KeepFaceTarget = new global::Cfg.AiKeepFaceTarget();
          }
          KeepFaceTarget.MergeFrom(other.KeepFaceTarget);
          break;
        case ValueOneofCase.GetOwnerPlayer:
          if (GetOwnerPlayer == null) {
            GetOwnerPlayer = new global::Cfg.AiGetOwnerPlayer();
          }
          GetOwnerPlayer.MergeFrom(other.GetOwnerPlayer);
          break;
        case ValueOneofCase.UpdateDailyBehaviorProps:
          if (UpdateDailyBehaviorProps == null) {
            UpdateDailyBehaviorProps = new global::Cfg.AiUpdateDailyBehaviorProps();
          }
          UpdateDailyBehaviorProps.MergeFrom(other.UpdateDailyBehaviorProps);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.AiUeSetDefaultFocus subBuilder = new global::Cfg.AiUeSetDefaultFocus();
            if (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
              subBuilder.MergeFrom(UeSetDefaultFocus);
            }
            input.ReadMessage(subBuilder);
            UeSetDefaultFocus = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiExecuteTimeStatistic subBuilder = new global::Cfg.AiExecuteTimeStatistic();
            if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
              subBuilder.MergeFrom(ExecuteTimeStatistic);
            }
            input.ReadMessage(subBuilder);
            ExecuteTimeStatistic = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiChooseTarget subBuilder = new global::Cfg.AiChooseTarget();
            if (valueCase_ == ValueOneofCase.ChooseTarget) {
              subBuilder.MergeFrom(ChooseTarget);
            }
            input.ReadMessage(subBuilder);
            ChooseTarget = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.AiKeepFaceTarget subBuilder = new global::Cfg.AiKeepFaceTarget();
            if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
              subBuilder.MergeFrom(KeepFaceTarget);
            }
            input.ReadMessage(subBuilder);
            KeepFaceTarget = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.AiGetOwnerPlayer subBuilder = new global::Cfg.AiGetOwnerPlayer();
            if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
              subBuilder.MergeFrom(GetOwnerPlayer);
            }
            input.ReadMessage(subBuilder);
            GetOwnerPlayer = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.AiUpdateDailyBehaviorProps subBuilder = new global::Cfg.AiUpdateDailyBehaviorProps();
            if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
              subBuilder.MergeFrom(UpdateDailyBehaviorProps);
            }
            input.ReadMessage(subBuilder);
            UpdateDailyBehaviorProps = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.AiUeSetDefaultFocus subBuilder = new global::Cfg.AiUeSetDefaultFocus();
            if (valueCase_ == ValueOneofCase.UeSetDefaultFocus) {
              subBuilder.MergeFrom(UeSetDefaultFocus);
            }
            input.ReadMessage(subBuilder);
            UeSetDefaultFocus = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiExecuteTimeStatistic subBuilder = new global::Cfg.AiExecuteTimeStatistic();
            if (valueCase_ == ValueOneofCase.ExecuteTimeStatistic) {
              subBuilder.MergeFrom(ExecuteTimeStatistic);
            }
            input.ReadMessage(subBuilder);
            ExecuteTimeStatistic = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiChooseTarget subBuilder = new global::Cfg.AiChooseTarget();
            if (valueCase_ == ValueOneofCase.ChooseTarget) {
              subBuilder.MergeFrom(ChooseTarget);
            }
            input.ReadMessage(subBuilder);
            ChooseTarget = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.AiKeepFaceTarget subBuilder = new global::Cfg.AiKeepFaceTarget();
            if (valueCase_ == ValueOneofCase.KeepFaceTarget) {
              subBuilder.MergeFrom(KeepFaceTarget);
            }
            input.ReadMessage(subBuilder);
            KeepFaceTarget = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.AiGetOwnerPlayer subBuilder = new global::Cfg.AiGetOwnerPlayer();
            if (valueCase_ == ValueOneofCase.GetOwnerPlayer) {
              subBuilder.MergeFrom(GetOwnerPlayer);
            }
            input.ReadMessage(subBuilder);
            GetOwnerPlayer = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.AiUpdateDailyBehaviorProps subBuilder = new global::Cfg.AiUpdateDailyBehaviorProps();
            if (valueCase_ == ValueOneofCase.UpdateDailyBehaviorProps) {
              subBuilder.MergeFrom(UpdateDailyBehaviorProps);
            }
            input.ReadMessage(subBuilder);
            UpdateDailyBehaviorProps = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiUeSetDefaultFocus() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "keyboard_key" field.</summary>
    public const int KeyboardKeyFieldNumber = 3;
    private readonly static string KeyboardKeyDefaultValue = "";

    private string keyboardKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string KeyboardKey {
      get { return keyboardKey_ ?? KeyboardKeyDefaultValue; }
      set {
        keyboardKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "keyboard_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasKeyboardKey {
      get { return keyboardKey_ != null; }
    }
    /// <summary>Clears the value of the "keyboard_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearKeyboardKey() {
      keyboardKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeSetDefaultFocus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (KeyboardKey != other.KeyboardKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasKeyboardKey) hash ^= KeyboardKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasKeyboardKey) {
        output.WriteRawTag(26);
        output.WriteString(KeyboardKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasKeyboardKey) {
        output.WriteRawTag(26);
        output.WriteString(KeyboardKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasKeyboardKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(KeyboardKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiUeSetDefaultFocus other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasKeyboardKey) {
        KeyboardKey = other.KeyboardKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            KeyboardKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            KeyboardKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiExecuteTimeStatistic() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiExecuteTimeStatistic other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiExecuteTimeStatistic other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiChooseTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "result_target_key" field.</summary>
    public const int ResultTargetKeyFieldNumber = 3;
    private readonly static string ResultTargetKeyDefaultValue = "";

    private string resultTargetKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ResultTargetKey {
      get { return resultTargetKey_ ?? ResultTargetKeyDefaultValue; }
      set {
        resultTargetKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "result_target_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasResultTargetKey {
      get { return resultTargetKey_ != null; }
    }
    /// <summary>Clears the value of the "result_target_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearResultTargetKey() {
      resultTargetKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiChooseTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (ResultTargetKey != other.ResultTargetKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasResultTargetKey) hash ^= ResultTargetKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasResultTargetKey) {
        output.WriteRawTag(26);
        output.WriteString(ResultTargetKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasResultTargetKey) {
        output.WriteRawTag(26);
        output.WriteString(ResultTargetKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasResultTargetKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ResultTargetKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiChooseTarget other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasResultTargetKey) {
        ResultTargetKey = other.ResultTargetKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            ResultTargetKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            ResultTargetKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiKeepFaceTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "target_actor_key" field.</summary>
    public const int TargetActorKeyFieldNumber = 3;
    private readonly static string TargetActorKeyDefaultValue = "";

    private string targetActorKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetActorKey {
      get { return targetActorKey_ ?? TargetActorKeyDefaultValue; }
      set {
        targetActorKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "target_actor_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTargetActorKey {
      get { return targetActorKey_ != null; }
    }
    /// <summary>Clears the value of the "target_actor_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTargetActorKey() {
      targetActorKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiKeepFaceTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (TargetActorKey != other.TargetActorKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasTargetActorKey) hash ^= TargetActorKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasTargetActorKey) {
        output.WriteRawTag(26);
        output.WriteString(TargetActorKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasTargetActorKey) {
        output.WriteRawTag(26);
        output.WriteString(TargetActorKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasTargetActorKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetActorKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiKeepFaceTarget other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasTargetActorKey) {
        TargetActorKey = other.TargetActorKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            TargetActorKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            TargetActorKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiGetOwnerPlayer() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "player_actor_key" field.</summary>
    public const int PlayerActorKeyFieldNumber = 3;
    private readonly static string PlayerActorKeyDefaultValue = "";

    private string playerActorKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string PlayerActorKey {
      get { return playerActorKey_ ?? PlayerActorKeyDefaultValue; }
      set {
        playerActorKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "player_actor_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasPlayerActorKey {
      get { return playerActorKey_ != null; }
    }
    /// <summary>Clears the value of the "player_actor_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPlayerActorKey() {
      playerActorKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiGetOwnerPlayer other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (PlayerActorKey != other.PlayerActorKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasPlayerActorKey) hash ^= PlayerActorKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasPlayerActorKey) {
        output.WriteRawTag(26);
        output.WriteString(PlayerActorKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasPlayerActorKey) {
        output.WriteRawTag(26);
        output.WriteString(PlayerActorKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasPlayerActorKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(PlayerActorKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiGetOwnerPlayer other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasPlayerActorKey) {
        PlayerActorKey = other.PlayerActorKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            PlayerActorKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            PlayerActorKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Cfg.SchemaReflection.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 AiUpdateDailyBehaviorProps() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiUpdateDailyBehaviorProps(AiUpdateDailyBehaviorProps other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      satietyKey_ = other.satietyKey_;
      energyKey_ = other.energyKey_;
      moodKey_ = other.moodKey_;
      satietyLowerThresholdKey_ = other.satietyLowerThresholdKey_;
      satietyUpperThresholdKey_ = other.satietyUpperThresholdKey_;
      energyLowerThresholdKey_ = other.energyLowerThresholdKey_;
      energyUpperThresholdKey_ = other.energyUpperThresholdKey_;
      moodLowerThresholdKey_ = other.moodLowerThresholdKey_;
      moodUpperThresholdKey_ = other.moodUpperThresholdKey_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "satiety_key" field.</summary>
    public const int SatietyKeyFieldNumber = 3;
    private readonly static string SatietyKeyDefaultValue = "";

    private string satietyKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SatietyKey {
      get { return satietyKey_ ?? SatietyKeyDefaultValue; }
      set {
        satietyKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "satiety_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSatietyKey {
      get { return satietyKey_ != null; }
    }
    /// <summary>Clears the value of the "satiety_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSatietyKey() {
      satietyKey_ = null;
    }

    /// <summary>Field number for the "energy_key" field.</summary>
    public const int EnergyKeyFieldNumber = 4;
    private readonly static string EnergyKeyDefaultValue = "";

    private string energyKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string EnergyKey {
      get { return energyKey_ ?? EnergyKeyDefaultValue; }
      set {
        energyKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "energy_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasEnergyKey {
      get { return energyKey_ != null; }
    }
    /// <summary>Clears the value of the "energy_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEnergyKey() {
      energyKey_ = null;
    }

    /// <summary>Field number for the "mood_key" field.</summary>
    public const int MoodKeyFieldNumber = 5;
    private readonly static string MoodKeyDefaultValue = "";

    private string moodKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MoodKey {
      get { return moodKey_ ?? MoodKeyDefaultValue; }
      set {
        moodKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "mood_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMoodKey {
      get { return moodKey_ != null; }
    }
    /// <summary>Clears the value of the "mood_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMoodKey() {
      moodKey_ = null;
    }

    /// <summary>Field number for the "satiety_lower_threshold_key" field.</summary>
    public const int SatietyLowerThresholdKeyFieldNumber = 6;
    private readonly static string SatietyLowerThresholdKeyDefaultValue = "";

    private string satietyLowerThresholdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SatietyLowerThresholdKey {
      get { return satietyLowerThresholdKey_ ?? SatietyLowerThresholdKeyDefaultValue; }
      set {
        satietyLowerThresholdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "satiety_lower_threshold_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSatietyLowerThresholdKey {
      get { return satietyLowerThresholdKey_ != null; }
    }
    /// <summary>Clears the value of the "satiety_lower_threshold_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSatietyLowerThresholdKey() {
      satietyLowerThresholdKey_ = null;
    }

    /// <summary>Field number for the "satiety_upper_threshold_key" field.</summary>
    public const int SatietyUpperThresholdKeyFieldNumber = 7;
    private readonly static string SatietyUpperThresholdKeyDefaultValue = "";

    private string satietyUpperThresholdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SatietyUpperThresholdKey {
      get { return satietyUpperThresholdKey_ ?? SatietyUpperThresholdKeyDefaultValue; }
      set {
        satietyUpperThresholdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "satiety_upper_threshold_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSatietyUpperThresholdKey {
      get { return satietyUpperThresholdKey_ != null; }
    }
    /// <summary>Clears the value of the "satiety_upper_threshold_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSatietyUpperThresholdKey() {
      satietyUpperThresholdKey_ = null;
    }

    /// <summary>Field number for the "energy_lower_threshold_key" field.</summary>
    public const int EnergyLowerThresholdKeyFieldNumber = 8;
    private readonly static string EnergyLowerThresholdKeyDefaultValue = "";

    private string energyLowerThresholdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string EnergyLowerThresholdKey {
      get { return energyLowerThresholdKey_ ?? EnergyLowerThresholdKeyDefaultValue; }
      set {
        energyLowerThresholdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "energy_lower_threshold_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasEnergyLowerThresholdKey {
      get { return energyLowerThresholdKey_ != null; }
    }
    /// <summary>Clears the value of the "energy_lower_threshold_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEnergyLowerThresholdKey() {
      energyLowerThresholdKey_ = null;
    }

    /// <summary>Field number for the "energy_upper_threshold_key" field.</summary>
    public const int EnergyUpperThresholdKeyFieldNumber = 9;
    private readonly static string EnergyUpperThresholdKeyDefaultValue = "";

    private string energyUpperThresholdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string EnergyUpperThresholdKey {
      get { return energyUpperThresholdKey_ ?? EnergyUpperThresholdKeyDefaultValue; }
      set {
        energyUpperThresholdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "energy_upper_threshold_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasEnergyUpperThresholdKey {
      get { return energyUpperThresholdKey_ != null; }
    }
    /// <summary>Clears the value of the "energy_upper_threshold_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEnergyUpperThresholdKey() {
      energyUpperThresholdKey_ = null;
    }

    /// <summary>Field number for the "mood_lower_threshold_key" field.</summary>
    public const int MoodLowerThresholdKeyFieldNumber = 10;
    private readonly static string MoodLowerThresholdKeyDefaultValue = "";

    private string moodLowerThresholdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MoodLowerThresholdKey {
      get { return moodLowerThresholdKey_ ?? MoodLowerThresholdKeyDefaultValue; }
      set {
        moodLowerThresholdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "mood_lower_threshold_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMoodLowerThresholdKey {
      get { return moodLowerThresholdKey_ != null; }
    }
    /// <summary>Clears the value of the "mood_lower_threshold_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMoodLowerThresholdKey() {
      moodLowerThresholdKey_ = null;
    }

    /// <summary>Field number for the "mood_upper_threshold_key" field.</summary>
    public const int MoodUpperThresholdKeyFieldNumber = 11;
    private readonly static string MoodUpperThresholdKeyDefaultValue = "";

    private string moodUpperThresholdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MoodUpperThresholdKey {
      get { return moodUpperThresholdKey_ ?? MoodUpperThresholdKeyDefaultValue; }
      set {
        moodUpperThresholdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "mood_upper_threshold_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMoodUpperThresholdKey {
      get { return moodUpperThresholdKey_ != null; }
    }
    /// <summary>Clears the value of the "mood_upper_threshold_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMoodUpperThresholdKey() {
      moodUpperThresholdKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUpdateDailyBehaviorProps other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (SatietyKey != other.SatietyKey) return false;
      if (EnergyKey != other.EnergyKey) return false;
      if (MoodKey != other.MoodKey) return false;
      if (SatietyLowerThresholdKey != other.SatietyLowerThresholdKey) return false;
      if (SatietyUpperThresholdKey != other.SatietyUpperThresholdKey) return false;
      if (EnergyLowerThresholdKey != other.EnergyLowerThresholdKey) return false;
      if (EnergyUpperThresholdKey != other.EnergyUpperThresholdKey) return false;
      if (MoodLowerThresholdKey != other.MoodLowerThresholdKey) return false;
      if (MoodUpperThresholdKey != other.MoodUpperThresholdKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasSatietyKey) hash ^= SatietyKey.GetHashCode();
      if (HasEnergyKey) hash ^= EnergyKey.GetHashCode();
      if (HasMoodKey) hash ^= MoodKey.GetHashCode();
      if (HasSatietyLowerThresholdKey) hash ^= SatietyLowerThresholdKey.GetHashCode();
      if (HasSatietyUpperThresholdKey) hash ^= SatietyUpperThresholdKey.GetHashCode();
      if (HasEnergyLowerThresholdKey) hash ^= EnergyLowerThresholdKey.GetHashCode();
      if (HasEnergyUpperThresholdKey) hash ^= EnergyUpperThresholdKey.GetHashCode();
      if (HasMoodLowerThresholdKey) hash ^= MoodLowerThresholdKey.GetHashCode();
      if (HasMoodUpperThresholdKey) hash ^= MoodUpperThresholdKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasSatietyKey) {
        output.WriteRawTag(26);
        output.WriteString(SatietyKey);
      }
      if (HasEnergyKey) {
        output.WriteRawTag(34);
        output.WriteString(EnergyKey);
      }
      if (HasMoodKey) {
        output.WriteRawTag(42);
        output.WriteString(MoodKey);
      }
      if (HasSatietyLowerThresholdKey) {
        output.WriteRawTag(50);
        output.WriteString(SatietyLowerThresholdKey);
      }
      if (HasSatietyUpperThresholdKey) {
        output.WriteRawTag(58);
        output.WriteString(SatietyUpperThresholdKey);
      }
      if (HasEnergyLowerThresholdKey) {
        output.WriteRawTag(66);
        output.WriteString(EnergyLowerThresholdKey);
      }
      if (HasEnergyUpperThresholdKey) {
        output.WriteRawTag(74);
        output.WriteString(EnergyUpperThresholdKey);
      }
      if (HasMoodLowerThresholdKey) {
        output.WriteRawTag(82);
        output.WriteString(MoodLowerThresholdKey);
      }
      if (HasMoodUpperThresholdKey) {
        output.WriteRawTag(90);
        output.WriteString(MoodUpperThresholdKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasSatietyKey) {
        output.WriteRawTag(26);
        output.WriteString(SatietyKey);
      }
      if (HasEnergyKey) {
        output.WriteRawTag(34);
        output.WriteString(EnergyKey);
      }
      if (HasMoodKey) {
        output.WriteRawTag(42);
        output.WriteString(MoodKey);
      }
      if (HasSatietyLowerThresholdKey) {
        output.WriteRawTag(50);
        output.WriteString(SatietyLowerThresholdKey);
      }
      if (HasSatietyUpperThresholdKey) {
        output.WriteRawTag(58);
        output.WriteString(SatietyUpperThresholdKey);
      }
      if (HasEnergyLowerThresholdKey) {
        output.WriteRawTag(66);
        output.WriteString(EnergyLowerThresholdKey);
      }
      if (HasEnergyUpperThresholdKey) {
        output.WriteRawTag(74);
        output.WriteString(EnergyUpperThresholdKey);
      }
      if (HasMoodLowerThresholdKey) {
        output.WriteRawTag(82);
        output.WriteString(MoodLowerThresholdKey);
      }
      if (HasMoodUpperThresholdKey) {
        output.WriteRawTag(90);
        output.WriteString(MoodUpperThresholdKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasSatietyKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SatietyKey);
      }
      if (HasEnergyKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(EnergyKey);
      }
      if (HasMoodKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MoodKey);
      }
      if (HasSatietyLowerThresholdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SatietyLowerThresholdKey);
      }
      if (HasSatietyUpperThresholdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SatietyUpperThresholdKey);
      }
      if (HasEnergyLowerThresholdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(EnergyLowerThresholdKey);
      }
      if (HasEnergyUpperThresholdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(EnergyUpperThresholdKey);
      }
      if (HasMoodLowerThresholdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MoodLowerThresholdKey);
      }
      if (HasMoodUpperThresholdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MoodUpperThresholdKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiUpdateDailyBehaviorProps other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasSatietyKey) {
        SatietyKey = other.SatietyKey;
      }
      if (other.HasEnergyKey) {
        EnergyKey = other.EnergyKey;
      }
      if (other.HasMoodKey) {
        MoodKey = other.MoodKey;
      }
      if (other.HasSatietyLowerThresholdKey) {
        SatietyLowerThresholdKey = other.SatietyLowerThresholdKey;
      }
      if (other.HasSatietyUpperThresholdKey) {
        SatietyUpperThresholdKey = other.SatietyUpperThresholdKey;
      }
      if (other.HasEnergyLowerThresholdKey) {
        EnergyLowerThresholdKey = other.EnergyLowerThresholdKey;
      }
      if (other.HasEnergyUpperThresholdKey) {
        EnergyUpperThresholdKey = other.EnergyUpperThresholdKey;
      }
      if (other.HasMoodLowerThresholdKey) {
        MoodLowerThresholdKey = other.MoodLowerThresholdKey;
      }
      if (other.HasMoodUpperThresholdKey) {
        MoodUpperThresholdKey = other.MoodUpperThresholdKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            SatietyKey = input.ReadString();
            break;
          }
          case 34: {
            EnergyKey = input.ReadString();
            break;
          }
          case 42: {
            MoodKey = input.ReadString();
            break;
          }
          case 50: {
            SatietyLowerThresholdKey = input.ReadString();
            break;
          }
          case 58: {
            SatietyUpperThresholdKey = input.ReadString();
            break;
          }
          case 66: {
            EnergyLowerThresholdKey = input.ReadString();
            break;
          }
          case 74: {
            EnergyUpperThresholdKey = input.ReadString();
            break;
          }
          case 82: {
            MoodLowerThresholdKey = input.ReadString();
            break;
          }
          case 90: {
            MoodUpperThresholdKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            SatietyKey = input.ReadString();
            break;
          }
          case 34: {
            EnergyKey = input.ReadString();
            break;
          }
          case 42: {
            MoodKey = input.ReadString();
            break;
          }
          case 50: {
            SatietyLowerThresholdKey = input.ReadString();
            break;
          }
          case 58: {
            SatietyUpperThresholdKey = input.ReadString();
            break;
          }
          case 66: {
            EnergyLowerThresholdKey = input.ReadString();
            break;
          }
          case 74: {
            EnergyUpperThresholdKey = input.ReadString();
            break;
          }
          case 82: {
            MoodLowerThresholdKey = input.ReadString();
            break;
          }
          case 90: {
            MoodUpperThresholdKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiDecorator() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiDecorator(AiDecorator other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.UeLoop:
          UeLoop = other.UeLoop.Clone();
          break;
        case ValueOneofCase.UeCooldown:
          UeCooldown = other.UeCooldown.Clone();
          break;
        case ValueOneofCase.UeTimeLimit:
          UeTimeLimit = other.UeTimeLimit.Clone();
          break;
        case ValueOneofCase.UeBlackboard:
          UeBlackboard = other.UeBlackboard.Clone();
          break;
        case ValueOneofCase.UeForceSuccess:
          UeForceSuccess = other.UeForceSuccess.Clone();
          break;
        case ValueOneofCase.IsAtLocation:
          IsAtLocation = other.IsAtLocation.Clone();
          break;
        case ValueOneofCase.DistanceLessThan:
          DistanceLessThan = other.DistanceLessThan.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "UeLoop" field.</summary>
    public const int UeLoopFieldNumber = 7;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeLoop UeLoop {
      get { return valueCase_ == ValueOneofCase.UeLoop ? (global::Cfg.AiUeLoop) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeLoop;
      }
    }

    /// <summary>Field number for the "UeCooldown" field.</summary>
    public const int UeCooldownFieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeCooldown UeCooldown {
      get { return valueCase_ == ValueOneofCase.UeCooldown ? (global::Cfg.AiUeCooldown) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeCooldown;
      }
    }

    /// <summary>Field number for the "UeTimeLimit" field.</summary>
    public const int UeTimeLimitFieldNumber = 9;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeTimeLimit UeTimeLimit {
      get { return valueCase_ == ValueOneofCase.UeTimeLimit ? (global::Cfg.AiUeTimeLimit) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeTimeLimit;
      }
    }

    /// <summary>Field number for the "UeBlackboard" field.</summary>
    public const int UeBlackboardFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeBlackboard UeBlackboard {
      get { return valueCase_ == ValueOneofCase.UeBlackboard ? (global::Cfg.AiUeBlackboard) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeBlackboard;
      }
    }

    /// <summary>Field number for the "UeForceSuccess" field.</summary>
    public const int UeForceSuccessFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeForceSuccess UeForceSuccess {
      get { return valueCase_ == ValueOneofCase.UeForceSuccess ? (global::Cfg.AiUeForceSuccess) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeForceSuccess;
      }
    }

    /// <summary>Field number for the "IsAtLocation" field.</summary>
    public const int IsAtLocationFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiIsAtLocation IsAtLocation {
      get { return valueCase_ == ValueOneofCase.IsAtLocation ? (global::Cfg.AiIsAtLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.IsAtLocation;
      }
    }

    /// <summary>Field number for the "DistanceLessThan" field.</summary>
    public const int DistanceLessThanFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiDistanceLessThan DistanceLessThan {
      get { return valueCase_ == ValueOneofCase.DistanceLessThan ? (global::Cfg.AiDistanceLessThan) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DistanceLessThan;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      UeLoop = 7,
      UeCooldown = 8,
      UeTimeLimit = 9,
      UeBlackboard = 10,
      UeForceSuccess = 11,
      IsAtLocation = 12,
      DistanceLessThan = 13,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiDecorator other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(UeLoop, other.UeLoop)) return false;
      if (!object.Equals(UeCooldown, other.UeCooldown)) return false;
      if (!object.Equals(UeTimeLimit, other.UeTimeLimit)) return false;
      if (!object.Equals(UeBlackboard, other.UeBlackboard)) return false;
      if (!object.Equals(UeForceSuccess, other.UeForceSuccess)) return false;
      if (!object.Equals(IsAtLocation, other.IsAtLocation)) return false;
      if (!object.Equals(DistanceLessThan, other.DistanceLessThan)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.UeLoop) hash ^= UeLoop.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeCooldown) hash ^= UeCooldown.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeTimeLimit) hash ^= UeTimeLimit.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeBlackboard) hash ^= UeBlackboard.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeForceSuccess) hash ^= UeForceSuccess.GetHashCode();
      if (valueCase_ == ValueOneofCase.IsAtLocation) hash ^= IsAtLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.DistanceLessThan) hash ^= DistanceLessThan.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.UeLoop) {
        output.WriteRawTag(58);
        output.WriteMessage(UeLoop);
      }
      if (valueCase_ == ValueOneofCase.UeCooldown) {
        output.WriteRawTag(66);
        output.WriteMessage(UeCooldown);
      }
      if (valueCase_ == ValueOneofCase.UeTimeLimit) {
        output.WriteRawTag(74);
        output.WriteMessage(UeTimeLimit);
      }
      if (valueCase_ == ValueOneofCase.UeBlackboard) {
        output.WriteRawTag(82);
        output.WriteMessage(UeBlackboard);
      }
      if (valueCase_ == ValueOneofCase.UeForceSuccess) {
        output.WriteRawTag(90);
        output.WriteMessage(UeForceSuccess);
      }
      if (valueCase_ == ValueOneofCase.IsAtLocation) {
        output.WriteRawTag(98);
        output.WriteMessage(IsAtLocation);
      }
      if (valueCase_ == ValueOneofCase.DistanceLessThan) {
        output.WriteRawTag(106);
        output.WriteMessage(DistanceLessThan);
      }
      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 (valueCase_ == ValueOneofCase.UeLoop) {
        output.WriteRawTag(58);
        output.WriteMessage(UeLoop);
      }
      if (valueCase_ == ValueOneofCase.UeCooldown) {
        output.WriteRawTag(66);
        output.WriteMessage(UeCooldown);
      }
      if (valueCase_ == ValueOneofCase.UeTimeLimit) {
        output.WriteRawTag(74);
        output.WriteMessage(UeTimeLimit);
      }
      if (valueCase_ == ValueOneofCase.UeBlackboard) {
        output.WriteRawTag(82);
        output.WriteMessage(UeBlackboard);
      }
      if (valueCase_ == ValueOneofCase.UeForceSuccess) {
        output.WriteRawTag(90);
        output.WriteMessage(UeForceSuccess);
      }
      if (valueCase_ == ValueOneofCase.IsAtLocation) {
        output.WriteRawTag(98);
        output.WriteMessage(IsAtLocation);
      }
      if (valueCase_ == ValueOneofCase.DistanceLessThan) {
        output.WriteRawTag(106);
        output.WriteMessage(DistanceLessThan);
      }
      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 (valueCase_ == ValueOneofCase.UeLoop) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeLoop);
      }
      if (valueCase_ == ValueOneofCase.UeCooldown) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeCooldown);
      }
      if (valueCase_ == ValueOneofCase.UeTimeLimit) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeTimeLimit);
      }
      if (valueCase_ == ValueOneofCase.UeBlackboard) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeBlackboard);
      }
      if (valueCase_ == ValueOneofCase.UeForceSuccess) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UeForceSuccess);
      }
      if (valueCase_ == ValueOneofCase.IsAtLocation) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IsAtLocation);
      }
      if (valueCase_ == ValueOneofCase.DistanceLessThan) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DistanceLessThan);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiDecorator other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.UeLoop:
          if (UeLoop == null) {
            UeLoop = new global::Cfg.AiUeLoop();
          }
          UeLoop.MergeFrom(other.UeLoop);
          break;
        case ValueOneofCase.UeCooldown:
          if (UeCooldown == null) {
            UeCooldown = new global::Cfg.AiUeCooldown();
          }
          UeCooldown.MergeFrom(other.UeCooldown);
          break;
        case ValueOneofCase.UeTimeLimit:
          if (UeTimeLimit == null) {
            UeTimeLimit = new global::Cfg.AiUeTimeLimit();
          }
          UeTimeLimit.MergeFrom(other.UeTimeLimit);
          break;
        case ValueOneofCase.UeBlackboard:
          if (UeBlackboard == null) {
            UeBlackboard = new global::Cfg.AiUeBlackboard();
          }
          UeBlackboard.MergeFrom(other.UeBlackboard);
          break;
        case ValueOneofCase.UeForceSuccess:
          if (UeForceSuccess == null) {
            UeForceSuccess = new global::Cfg.AiUeForceSuccess();
          }
          UeForceSuccess.MergeFrom(other.UeForceSuccess);
          break;
        case ValueOneofCase.IsAtLocation:
          if (IsAtLocation == null) {
            IsAtLocation = new global::Cfg.AiIsAtLocation();
          }
          IsAtLocation.MergeFrom(other.IsAtLocation);
          break;
        case ValueOneofCase.DistanceLessThan:
          if (DistanceLessThan == null) {
            DistanceLessThan = new global::Cfg.AiDistanceLessThan();
          }
          DistanceLessThan.MergeFrom(other.DistanceLessThan);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 58: {
            global::Cfg.AiUeLoop subBuilder = new global::Cfg.AiUeLoop();
            if (valueCase_ == ValueOneofCase.UeLoop) {
              subBuilder.MergeFrom(UeLoop);
            }
            input.ReadMessage(subBuilder);
            UeLoop = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.AiUeCooldown subBuilder = new global::Cfg.AiUeCooldown();
            if (valueCase_ == ValueOneofCase.UeCooldown) {
              subBuilder.MergeFrom(UeCooldown);
            }
            input.ReadMessage(subBuilder);
            UeCooldown = subBuilder;
            break;
          }
          case 74: {
            global::Cfg.AiUeTimeLimit subBuilder = new global::Cfg.AiUeTimeLimit();
            if (valueCase_ == ValueOneofCase.UeTimeLimit) {
              subBuilder.MergeFrom(UeTimeLimit);
            }
            input.ReadMessage(subBuilder);
            UeTimeLimit = subBuilder;
            break;
          }
          case 82: {
            global::Cfg.AiUeBlackboard subBuilder = new global::Cfg.AiUeBlackboard();
            if (valueCase_ == ValueOneofCase.UeBlackboard) {
              subBuilder.MergeFrom(UeBlackboard);
            }
            input.ReadMessage(subBuilder);
            UeBlackboard = subBuilder;
            break;
          }
          case 90: {
            global::Cfg.AiUeForceSuccess subBuilder = new global::Cfg.AiUeForceSuccess();
            if (valueCase_ == ValueOneofCase.UeForceSuccess) {
              subBuilder.MergeFrom(UeForceSuccess);
            }
            input.ReadMessage(subBuilder);
            UeForceSuccess = subBuilder;
            break;
          }
          case 98: {
            global::Cfg.AiIsAtLocation subBuilder = new global::Cfg.AiIsAtLocation();
            if (valueCase_ == ValueOneofCase.IsAtLocation) {
              subBuilder.MergeFrom(IsAtLocation);
            }
            input.ReadMessage(subBuilder);
            IsAtLocation = subBuilder;
            break;
          }
          case 106: {
            global::Cfg.AiDistanceLessThan subBuilder = new global::Cfg.AiDistanceLessThan();
            if (valueCase_ == ValueOneofCase.DistanceLessThan) {
              subBuilder.MergeFrom(DistanceLessThan);
            }
            input.ReadMessage(subBuilder);
            DistanceLessThan = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 58: {
            global::Cfg.AiUeLoop subBuilder = new global::Cfg.AiUeLoop();
            if (valueCase_ == ValueOneofCase.UeLoop) {
              subBuilder.MergeFrom(UeLoop);
            }
            input.ReadMessage(subBuilder);
            UeLoop = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.AiUeCooldown subBuilder = new global::Cfg.AiUeCooldown();
            if (valueCase_ == ValueOneofCase.UeCooldown) {
              subBuilder.MergeFrom(UeCooldown);
            }
            input.ReadMessage(subBuilder);
            UeCooldown = subBuilder;
            break;
          }
          case 74: {
            global::Cfg.AiUeTimeLimit subBuilder = new global::Cfg.AiUeTimeLimit();
            if (valueCase_ == ValueOneofCase.UeTimeLimit) {
              subBuilder.MergeFrom(UeTimeLimit);
            }
            input.ReadMessage(subBuilder);
            UeTimeLimit = subBuilder;
            break;
          }
          case 82: {
            global::Cfg.AiUeBlackboard subBuilder = new global::Cfg.AiUeBlackboard();
            if (valueCase_ == ValueOneofCase.UeBlackboard) {
              subBuilder.MergeFrom(UeBlackboard);
            }
            input.ReadMessage(subBuilder);
            UeBlackboard = subBuilder;
            break;
          }
          case 90: {
            global::Cfg.AiUeForceSuccess subBuilder = new global::Cfg.AiUeForceSuccess();
            if (valueCase_ == ValueOneofCase.UeForceSuccess) {
              subBuilder.MergeFrom(UeForceSuccess);
            }
            input.ReadMessage(subBuilder);
            UeForceSuccess = subBuilder;
            break;
          }
          case 98: {
            global::Cfg.AiIsAtLocation subBuilder = new global::Cfg.AiIsAtLocation();
            if (valueCase_ == ValueOneofCase.IsAtLocation) {
              subBuilder.MergeFrom(IsAtLocation);
            }
            input.ReadMessage(subBuilder);
            IsAtLocation = subBuilder;
            break;
          }
          case 106: {
            global::Cfg.AiDistanceLessThan subBuilder = new global::Cfg.AiDistanceLessThan();
            if (valueCase_ == ValueOneofCase.DistanceLessThan) {
              subBuilder.MergeFrom(DistanceLessThan);
            }
            input.ReadMessage(subBuilder);
            DistanceLessThan = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeLoop() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiUeLoop(AiUeLoop other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      flowAbortMode_ = other.flowAbortMode_;
      numLoops_ = other.numLoops_;
      infiniteLoop_ = other.infiniteLoop_;
      infiniteLoopTimeoutTime_ = other.infiniteLoopTimeoutTime_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "num_loops" field.</summary>
    public const int NumLoopsFieldNumber = 4;
    private readonly static int NumLoopsDefaultValue = 0;

    private int numLoops_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int NumLoops {
      get { if ((_hasBits0 & 4) != 0) { return numLoops_; } else { return NumLoopsDefaultValue; } }
      set {
        _hasBits0 |= 4;
        numLoops_ = value;
      }
    }
    /// <summary>Gets whether the "num_loops" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNumLoops {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "num_loops" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNumLoops() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "infinite_loop" field.</summary>
    public const int InfiniteLoopFieldNumber = 5;
    private readonly static bool InfiniteLoopDefaultValue = false;

    private bool infiniteLoop_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool InfiniteLoop {
      get { if ((_hasBits0 & 8) != 0) { return infiniteLoop_; } else { return InfiniteLoopDefaultValue; } }
      set {
        _hasBits0 |= 8;
        infiniteLoop_ = value;
      }
    }
    /// <summary>Gets whether the "infinite_loop" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInfiniteLoop {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "infinite_loop" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInfiniteLoop() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "infinite_loop_timeout_time" field.</summary>
    public const int InfiniteLoopTimeoutTimeFieldNumber = 6;
    private readonly static float InfiniteLoopTimeoutTimeDefaultValue = 0F;

    private float infiniteLoopTimeoutTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float InfiniteLoopTimeoutTime {
      get { if ((_hasBits0 & 16) != 0) { return infiniteLoopTimeoutTime_; } else { return InfiniteLoopTimeoutTimeDefaultValue; } }
      set {
        _hasBits0 |= 16;
        infiniteLoopTimeoutTime_ = value;
      }
    }
    /// <summary>Gets whether the "infinite_loop_timeout_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInfiniteLoopTimeoutTime {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "infinite_loop_timeout_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInfiniteLoopTimeoutTime() {
      _hasBits0 &= ~16;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeLoop other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) return false;
      if (NumLoops != other.NumLoops) return false;
      if (InfiniteLoop != other.InfiniteLoop) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(InfiniteLoopTimeoutTime, other.InfiniteLoopTimeoutTime)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.GetHashCode();
      if (HasNumLoops) hash ^= NumLoops.GetHashCode();
      if (HasInfiniteLoop) hash ^= InfiniteLoop.GetHashCode();
      if (HasInfiniteLoopTimeoutTime) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(InfiniteLoopTimeoutTime);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasNumLoops) {
        output.WriteRawTag(32);
        output.WriteInt32(NumLoops);
      }
      if (HasInfiniteLoop) {
        output.WriteRawTag(40);
        output.WriteBool(InfiniteLoop);
      }
      if (HasInfiniteLoopTimeoutTime) {
        output.WriteRawTag(53);
        output.WriteFloat(InfiniteLoopTimeoutTime);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasNumLoops) {
        output.WriteRawTag(32);
        output.WriteInt32(NumLoops);
      }
      if (HasInfiniteLoop) {
        output.WriteRawTag(40);
        output.WriteBool(InfiniteLoop);
      }
      if (HasInfiniteLoopTimeoutTime) {
        output.WriteRawTag(53);
        output.WriteFloat(InfiniteLoopTimeoutTime);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (HasNumLoops) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumLoops);
      }
      if (HasInfiniteLoop) {
        size += 1 + 1;
      }
      if (HasInfiniteLoopTimeoutTime) {
        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(AiUeLoop other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      if (other.HasNumLoops) {
        NumLoops = other.NumLoops;
      }
      if (other.HasInfiniteLoop) {
        InfiniteLoop = other.InfiniteLoop;
      }
      if (other.HasInfiniteLoopTimeoutTime) {
        InfiniteLoopTimeoutTime = other.InfiniteLoopTimeoutTime;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 32: {
            NumLoops = input.ReadInt32();
            break;
          }
          case 40: {
            InfiniteLoop = input.ReadBool();
            break;
          }
          case 53: {
            InfiniteLoopTimeoutTime = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 32: {
            NumLoops = input.ReadInt32();
            break;
          }
          case 40: {
            InfiniteLoop = input.ReadBool();
            break;
          }
          case 53: {
            InfiniteLoopTimeoutTime = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeCooldown() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "cooldown_time" field.</summary>
    public const int CooldownTimeFieldNumber = 4;
    private readonly static float CooldownTimeDefaultValue = 0F;

    private float cooldownTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float CooldownTime {
      get { if ((_hasBits0 & 4) != 0) { return cooldownTime_; } else { return CooldownTimeDefaultValue; } }
      set {
        _hasBits0 |= 4;
        cooldownTime_ = value;
      }
    }
    /// <summary>Gets whether the "cooldown_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCooldownTime {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "cooldown_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCooldownTime() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeCooldown other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CooldownTime, other.CooldownTime)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.GetHashCode();
      if (HasCooldownTime) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CooldownTime);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasCooldownTime) {
        output.WriteRawTag(37);
        output.WriteFloat(CooldownTime);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasCooldownTime) {
        output.WriteRawTag(37);
        output.WriteFloat(CooldownTime);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (HasCooldownTime) {
        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(AiUeCooldown other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      if (other.HasCooldownTime) {
        CooldownTime = other.CooldownTime;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 37: {
            CooldownTime = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 37: {
            CooldownTime = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeTimeLimit() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "limit_time" field.</summary>
    public const int LimitTimeFieldNumber = 4;
    private readonly static float LimitTimeDefaultValue = 0F;

    private float limitTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float LimitTime {
      get { if ((_hasBits0 & 4) != 0) { return limitTime_; } else { return LimitTimeDefaultValue; } }
      set {
        _hasBits0 |= 4;
        limitTime_ = value;
      }
    }
    /// <summary>Gets whether the "limit_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLimitTime {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "limit_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearLimitTime() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeTimeLimit other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LimitTime, other.LimitTime)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.GetHashCode();
      if (HasLimitTime) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LimitTime);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasLimitTime) {
        output.WriteRawTag(37);
        output.WriteFloat(LimitTime);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasLimitTime) {
        output.WriteRawTag(37);
        output.WriteFloat(LimitTime);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (HasLimitTime) {
        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(AiUeTimeLimit other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      if (other.HasLimitTime) {
        LimitTime = other.LimitTime;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 37: {
            LimitTime = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 37: {
            LimitTime = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeBlackboard() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiUeBlackboard(AiUeBlackboard other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      flowAbortMode_ = other.flowAbortMode_;
      notifyObserver_ = other.notifyObserver_;
      blackboardKey_ = other.blackboardKey_;
      keyQuery_ = other.keyQuery_ != null ? other.keyQuery_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "notify_observer" field.</summary>
    public const int NotifyObserverFieldNumber = 4;
    private readonly static global::Cfg.AiENotifyObserverMode NotifyObserverDefaultValue = global::Cfg.AiENotifyObserverMode.OnValueChange;

    private global::Cfg.AiENotifyObserverMode notifyObserver_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiENotifyObserverMode NotifyObserver {
      get { if ((_hasBits0 & 4) != 0) { return notifyObserver_; } else { return NotifyObserverDefaultValue; } }
      set {
        _hasBits0 |= 4;
        notifyObserver_ = value;
      }
    }
    /// <summary>Gets whether the "notify_observer" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNotifyObserver {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "notify_observer" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNotifyObserver() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "blackboard_key" field.</summary>
    public const int BlackboardKeyFieldNumber = 5;
    private readonly static string BlackboardKeyDefaultValue = "";

    private string blackboardKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string BlackboardKey {
      get { return blackboardKey_ ?? BlackboardKeyDefaultValue; }
      set {
        blackboardKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "blackboard_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBlackboardKey {
      get { return blackboardKey_ != null; }
    }
    /// <summary>Clears the value of the "blackboard_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBlackboardKey() {
      blackboardKey_ = null;
    }

    /// <summary>Field number for the "key_query" field.</summary>
    public const int KeyQueryFieldNumber = 6;
    private global::Cfg.AiKeyQueryOperator keyQuery_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiKeyQueryOperator KeyQuery {
      get { return keyQuery_; }
      set {
        keyQuery_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeBlackboard other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) return false;
      if (NotifyObserver != other.NotifyObserver) return false;
      if (BlackboardKey != other.BlackboardKey) return false;
      if (!object.Equals(KeyQuery, other.KeyQuery)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.GetHashCode();
      if (HasNotifyObserver) hash ^= NotifyObserver.GetHashCode();
      if (HasBlackboardKey) hash ^= BlackboardKey.GetHashCode();
      if (keyQuery_ != null) hash ^= KeyQuery.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasNotifyObserver) {
        output.WriteRawTag(32);
        output.WriteEnum((int) NotifyObserver);
      }
      if (HasBlackboardKey) {
        output.WriteRawTag(42);
        output.WriteString(BlackboardKey);
      }
      if (keyQuery_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(KeyQuery);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasNotifyObserver) {
        output.WriteRawTag(32);
        output.WriteEnum((int) NotifyObserver);
      }
      if (HasBlackboardKey) {
        output.WriteRawTag(42);
        output.WriteString(BlackboardKey);
      }
      if (keyQuery_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(KeyQuery);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (HasNotifyObserver) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) NotifyObserver);
      }
      if (HasBlackboardKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(BlackboardKey);
      }
      if (keyQuery_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(KeyQuery);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiUeBlackboard other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      if (other.HasNotifyObserver) {
        NotifyObserver = other.NotifyObserver;
      }
      if (other.HasBlackboardKey) {
        BlackboardKey = other.BlackboardKey;
      }
      if (other.keyQuery_ != null) {
        if (keyQuery_ == null) {
          KeyQuery = new global::Cfg.AiKeyQueryOperator();
        }
        KeyQuery.MergeFrom(other.KeyQuery);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 32: {
            NotifyObserver = (global::Cfg.AiENotifyObserverMode) input.ReadEnum();
            break;
          }
          case 42: {
            BlackboardKey = input.ReadString();
            break;
          }
          case 50: {
            if (keyQuery_ == null) {
              KeyQuery = new global::Cfg.AiKeyQueryOperator();
            }
            input.ReadMessage(KeyQuery);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 32: {
            NotifyObserver = (global::Cfg.AiENotifyObserverMode) input.ReadEnum();
            break;
          }
          case 42: {
            BlackboardKey = input.ReadString();
            break;
          }
          case 50: {
            if (keyQuery_ == null) {
              KeyQuery = new global::Cfg.AiKeyQueryOperator();
            }
            input.ReadMessage(KeyQuery);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiKeyQueryOperator() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiKeyQueryOperator(AiKeyQueryOperator other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.IsSet:
          IsSet = other.IsSet.Clone();
          break;
        case ValueOneofCase.IsNotSet:
          IsNotSet = other.IsNotSet.Clone();
          break;
        case ValueOneofCase.BinaryOperator:
          BinaryOperator = other.BinaryOperator.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "IsSet" field.</summary>
    public const int IsSetFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiIsSet IsSet {
      get { return valueCase_ == ValueOneofCase.IsSet ? (global::Cfg.AiIsSet) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.IsSet;
      }
    }

    /// <summary>Field number for the "IsNotSet" field.</summary>
    public const int IsNotSetFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiIsNotSet IsNotSet {
      get { return valueCase_ == ValueOneofCase.IsNotSet ? (global::Cfg.AiIsNotSet) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.IsNotSet;
      }
    }

    /// <summary>Field number for the "BinaryOperator" field.</summary>
    public const int BinaryOperatorFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiBinaryOperator BinaryOperator {
      get { return valueCase_ == ValueOneofCase.BinaryOperator ? (global::Cfg.AiBinaryOperator) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.BinaryOperator;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      IsSet = 1,
      IsNotSet = 2,
      BinaryOperator = 3,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiKeyQueryOperator other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(IsSet, other.IsSet)) return false;
      if (!object.Equals(IsNotSet, other.IsNotSet)) return false;
      if (!object.Equals(BinaryOperator, other.BinaryOperator)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.IsSet) hash ^= IsSet.GetHashCode();
      if (valueCase_ == ValueOneofCase.IsNotSet) hash ^= IsNotSet.GetHashCode();
      if (valueCase_ == ValueOneofCase.BinaryOperator) hash ^= BinaryOperator.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.IsSet) {
        output.WriteRawTag(10);
        output.WriteMessage(IsSet);
      }
      if (valueCase_ == ValueOneofCase.IsNotSet) {
        output.WriteRawTag(18);
        output.WriteMessage(IsNotSet);
      }
      if (valueCase_ == ValueOneofCase.BinaryOperator) {
        output.WriteRawTag(26);
        output.WriteMessage(BinaryOperator);
      }
      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 (valueCase_ == ValueOneofCase.IsSet) {
        output.WriteRawTag(10);
        output.WriteMessage(IsSet);
      }
      if (valueCase_ == ValueOneofCase.IsNotSet) {
        output.WriteRawTag(18);
        output.WriteMessage(IsNotSet);
      }
      if (valueCase_ == ValueOneofCase.BinaryOperator) {
        output.WriteRawTag(26);
        output.WriteMessage(BinaryOperator);
      }
      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 (valueCase_ == ValueOneofCase.IsSet) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IsSet);
      }
      if (valueCase_ == ValueOneofCase.IsNotSet) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IsNotSet);
      }
      if (valueCase_ == ValueOneofCase.BinaryOperator) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BinaryOperator);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiKeyQueryOperator other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.IsSet:
          if (IsSet == null) {
            IsSet = new global::Cfg.AiIsSet();
          }
          IsSet.MergeFrom(other.IsSet);
          break;
        case ValueOneofCase.IsNotSet:
          if (IsNotSet == null) {
            IsNotSet = new global::Cfg.AiIsNotSet();
          }
          IsNotSet.MergeFrom(other.IsNotSet);
          break;
        case ValueOneofCase.BinaryOperator:
          if (BinaryOperator == null) {
            BinaryOperator = new global::Cfg.AiBinaryOperator();
          }
          BinaryOperator.MergeFrom(other.BinaryOperator);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.AiIsSet subBuilder = new global::Cfg.AiIsSet();
            if (valueCase_ == ValueOneofCase.IsSet) {
              subBuilder.MergeFrom(IsSet);
            }
            input.ReadMessage(subBuilder);
            IsSet = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiIsNotSet subBuilder = new global::Cfg.AiIsNotSet();
            if (valueCase_ == ValueOneofCase.IsNotSet) {
              subBuilder.MergeFrom(IsNotSet);
            }
            input.ReadMessage(subBuilder);
            IsNotSet = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiBinaryOperator subBuilder = new global::Cfg.AiBinaryOperator();
            if (valueCase_ == ValueOneofCase.BinaryOperator) {
              subBuilder.MergeFrom(BinaryOperator);
            }
            input.ReadMessage(subBuilder);
            BinaryOperator = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.AiIsSet subBuilder = new global::Cfg.AiIsSet();
            if (valueCase_ == ValueOneofCase.IsSet) {
              subBuilder.MergeFrom(IsSet);
            }
            input.ReadMessage(subBuilder);
            IsSet = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiIsNotSet subBuilder = new global::Cfg.AiIsNotSet();
            if (valueCase_ == ValueOneofCase.IsNotSet) {
              subBuilder.MergeFrom(IsNotSet);
            }
            input.ReadMessage(subBuilder);
            IsNotSet = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiBinaryOperator subBuilder = new global::Cfg.AiBinaryOperator();
            if (valueCase_ == ValueOneofCase.BinaryOperator) {
              subBuilder.MergeFrom(BinaryOperator);
            }
            input.ReadMessage(subBuilder);
            BinaryOperator = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiIsSet() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      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 (_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 (_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 (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiIsSet other) {
      if (other == null) {
        return;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

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

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

    [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 AiIsNotSet() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      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 (_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 (_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 (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiIsNotSet other) {
      if (other == null) {
        return;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

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

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

    [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 AiBinaryOperator() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "oper" field.</summary>
    public const int OperFieldNumber = 1;
    private readonly static global::Cfg.AiEOperator OperDefaultValue = global::Cfg.AiEOperator.IsEqualTo;

    private global::Cfg.AiEOperator oper_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEOperator Oper {
      get { if ((_hasBits0 & 1) != 0) { return oper_; } else { return OperDefaultValue; } }
      set {
        _hasBits0 |= 1;
        oper_ = value;
      }
    }
    /// <summary>Gets whether the "oper" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOper {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "oper" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOper() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "data" field.</summary>
    public const int DataFieldNumber = 2;
    private global::Cfg.AiKeyData data_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiKeyData Data {
      get { return data_; }
      set {
        data_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiBinaryOperator other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Oper != other.Oper) return false;
      if (!object.Equals(Data, other.Data)) 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 (HasOper) hash ^= Oper.GetHashCode();
      if (data_ != null) hash ^= Data.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 (HasOper) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Oper);
      }
      if (data_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Data);
      }
      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 (HasOper) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Oper);
      }
      if (data_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Data);
      }
      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 (HasOper) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Oper);
      }
      if (data_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Data);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiBinaryOperator other) {
      if (other == null) {
        return;
      }
      if (other.HasOper) {
        Oper = other.Oper;
      }
      if (other.data_ != null) {
        if (data_ == null) {
          Data = new global::Cfg.AiKeyData();
        }
        Data.MergeFrom(other.Data);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Oper = (global::Cfg.AiEOperator) input.ReadEnum();
            break;
          }
          case 18: {
            if (data_ == null) {
              Data = new global::Cfg.AiKeyData();
            }
            input.ReadMessage(Data);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Oper = (global::Cfg.AiEOperator) input.ReadEnum();
            break;
          }
          case 18: {
            if (data_ == null) {
              Data = new global::Cfg.AiKeyData();
            }
            input.ReadMessage(Data);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiKeyData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiKeyData(AiKeyData other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.FloatKeyData:
          FloatKeyData = other.FloatKeyData.Clone();
          break;
        case ValueOneofCase.IntKeyData:
          IntKeyData = other.IntKeyData.Clone();
          break;
        case ValueOneofCase.StringKeyData:
          StringKeyData = other.StringKeyData.Clone();
          break;
        case ValueOneofCase.BlackboardKeyData:
          BlackboardKeyData = other.BlackboardKeyData.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "FloatKeyData" field.</summary>
    public const int FloatKeyDataFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiFloatKeyData FloatKeyData {
      get { return valueCase_ == ValueOneofCase.FloatKeyData ? (global::Cfg.AiFloatKeyData) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.FloatKeyData;
      }
    }

    /// <summary>Field number for the "IntKeyData" field.</summary>
    public const int IntKeyDataFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiIntKeyData IntKeyData {
      get { return valueCase_ == ValueOneofCase.IntKeyData ? (global::Cfg.AiIntKeyData) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.IntKeyData;
      }
    }

    /// <summary>Field number for the "StringKeyData" field.</summary>
    public const int StringKeyDataFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiStringKeyData StringKeyData {
      get { return valueCase_ == ValueOneofCase.StringKeyData ? (global::Cfg.AiStringKeyData) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.StringKeyData;
      }
    }

    /// <summary>Field number for the "BlackboardKeyData" field.</summary>
    public const int BlackboardKeyDataFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiBlackboardKeyData BlackboardKeyData {
      get { return valueCase_ == ValueOneofCase.BlackboardKeyData ? (global::Cfg.AiBlackboardKeyData) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.BlackboardKeyData;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      FloatKeyData = 1,
      IntKeyData = 2,
      StringKeyData = 3,
      BlackboardKeyData = 4,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiKeyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(FloatKeyData, other.FloatKeyData)) return false;
      if (!object.Equals(IntKeyData, other.IntKeyData)) return false;
      if (!object.Equals(StringKeyData, other.StringKeyData)) return false;
      if (!object.Equals(BlackboardKeyData, other.BlackboardKeyData)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.FloatKeyData) hash ^= FloatKeyData.GetHashCode();
      if (valueCase_ == ValueOneofCase.IntKeyData) hash ^= IntKeyData.GetHashCode();
      if (valueCase_ == ValueOneofCase.StringKeyData) hash ^= StringKeyData.GetHashCode();
      if (valueCase_ == ValueOneofCase.BlackboardKeyData) hash ^= BlackboardKeyData.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.FloatKeyData) {
        output.WriteRawTag(10);
        output.WriteMessage(FloatKeyData);
      }
      if (valueCase_ == ValueOneofCase.IntKeyData) {
        output.WriteRawTag(18);
        output.WriteMessage(IntKeyData);
      }
      if (valueCase_ == ValueOneofCase.StringKeyData) {
        output.WriteRawTag(26);
        output.WriteMessage(StringKeyData);
      }
      if (valueCase_ == ValueOneofCase.BlackboardKeyData) {
        output.WriteRawTag(34);
        output.WriteMessage(BlackboardKeyData);
      }
      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 (valueCase_ == ValueOneofCase.FloatKeyData) {
        output.WriteRawTag(10);
        output.WriteMessage(FloatKeyData);
      }
      if (valueCase_ == ValueOneofCase.IntKeyData) {
        output.WriteRawTag(18);
        output.WriteMessage(IntKeyData);
      }
      if (valueCase_ == ValueOneofCase.StringKeyData) {
        output.WriteRawTag(26);
        output.WriteMessage(StringKeyData);
      }
      if (valueCase_ == ValueOneofCase.BlackboardKeyData) {
        output.WriteRawTag(34);
        output.WriteMessage(BlackboardKeyData);
      }
      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 (valueCase_ == ValueOneofCase.FloatKeyData) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FloatKeyData);
      }
      if (valueCase_ == ValueOneofCase.IntKeyData) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IntKeyData);
      }
      if (valueCase_ == ValueOneofCase.StringKeyData) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StringKeyData);
      }
      if (valueCase_ == ValueOneofCase.BlackboardKeyData) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BlackboardKeyData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiKeyData other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.FloatKeyData:
          if (FloatKeyData == null) {
            FloatKeyData = new global::Cfg.AiFloatKeyData();
          }
          FloatKeyData.MergeFrom(other.FloatKeyData);
          break;
        case ValueOneofCase.IntKeyData:
          if (IntKeyData == null) {
            IntKeyData = new global::Cfg.AiIntKeyData();
          }
          IntKeyData.MergeFrom(other.IntKeyData);
          break;
        case ValueOneofCase.StringKeyData:
          if (StringKeyData == null) {
            StringKeyData = new global::Cfg.AiStringKeyData();
          }
          StringKeyData.MergeFrom(other.StringKeyData);
          break;
        case ValueOneofCase.BlackboardKeyData:
          if (BlackboardKeyData == null) {
            BlackboardKeyData = new global::Cfg.AiBlackboardKeyData();
          }
          BlackboardKeyData.MergeFrom(other.BlackboardKeyData);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.AiFloatKeyData subBuilder = new global::Cfg.AiFloatKeyData();
            if (valueCase_ == ValueOneofCase.FloatKeyData) {
              subBuilder.MergeFrom(FloatKeyData);
            }
            input.ReadMessage(subBuilder);
            FloatKeyData = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiIntKeyData subBuilder = new global::Cfg.AiIntKeyData();
            if (valueCase_ == ValueOneofCase.IntKeyData) {
              subBuilder.MergeFrom(IntKeyData);
            }
            input.ReadMessage(subBuilder);
            IntKeyData = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiStringKeyData subBuilder = new global::Cfg.AiStringKeyData();
            if (valueCase_ == ValueOneofCase.StringKeyData) {
              subBuilder.MergeFrom(StringKeyData);
            }
            input.ReadMessage(subBuilder);
            StringKeyData = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.AiBlackboardKeyData subBuilder = new global::Cfg.AiBlackboardKeyData();
            if (valueCase_ == ValueOneofCase.BlackboardKeyData) {
              subBuilder.MergeFrom(BlackboardKeyData);
            }
            input.ReadMessage(subBuilder);
            BlackboardKeyData = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.AiFloatKeyData subBuilder = new global::Cfg.AiFloatKeyData();
            if (valueCase_ == ValueOneofCase.FloatKeyData) {
              subBuilder.MergeFrom(FloatKeyData);
            }
            input.ReadMessage(subBuilder);
            FloatKeyData = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.AiIntKeyData subBuilder = new global::Cfg.AiIntKeyData();
            if (valueCase_ == ValueOneofCase.IntKeyData) {
              subBuilder.MergeFrom(IntKeyData);
            }
            input.ReadMessage(subBuilder);
            IntKeyData = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.AiStringKeyData subBuilder = new global::Cfg.AiStringKeyData();
            if (valueCase_ == ValueOneofCase.StringKeyData) {
              subBuilder.MergeFrom(StringKeyData);
            }
            input.ReadMessage(subBuilder);
            StringKeyData = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.AiBlackboardKeyData subBuilder = new global::Cfg.AiBlackboardKeyData();
            if (valueCase_ == ValueOneofCase.BlackboardKeyData) {
              subBuilder.MergeFrom(BlackboardKeyData);
            }
            input.ReadMessage(subBuilder);
            BlackboardKeyData = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiFloatKeyData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 1;
    private readonly static float ValueDefaultValue = 0F;

    private float value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Value {
      get { if ((_hasBits0 & 1) != 0) { return value_; } else { return ValueDefaultValue; } }
      set {
        _hasBits0 |= 1;
        value_ = value;
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      _hasBits0 &= ~1;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiFloatKeyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Value, other.Value)) 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 (HasValue) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Value);
      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 (HasValue) {
        output.WriteRawTag(13);
        output.WriteFloat(Value);
      }
      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 (HasValue) {
        output.WriteRawTag(13);
        output.WriteFloat(Value);
      }
      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 (HasValue) {
        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(AiFloatKeyData other) {
      if (other == null) {
        return;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            Value = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            Value = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiIntKeyData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 1;
    private readonly static int ValueDefaultValue = 0;

    private int value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Value {
      get { if ((_hasBits0 & 1) != 0) { return value_; } else { return ValueDefaultValue; } }
      set {
        _hasBits0 |= 1;
        value_ = value;
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      _hasBits0 &= ~1;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiIntKeyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Value != other.Value) 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 (HasValue) hash ^= Value.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 (HasValue) {
        output.WriteRawTag(8);
        output.WriteInt32(Value);
      }
      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 (HasValue) {
        output.WriteRawTag(8);
        output.WriteInt32(Value);
      }
      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 (HasValue) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiIntKeyData other) {
      if (other == null) {
        return;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Value = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Value = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiStringKeyData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 1;
    private readonly static string ValueDefaultValue = "";

    private string value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Value {
      get { return value_ ?? ValueDefaultValue; }
      set {
        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return value_ != null; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiStringKeyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Value != other.Value) 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 (HasValue) hash ^= Value.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 (HasValue) {
        output.WriteRawTag(10);
        output.WriteString(Value);
      }
      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 (HasValue) {
        output.WriteRawTag(10);
        output.WriteString(Value);
      }
      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 (HasValue) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiStringKeyData other) {
      if (other == null) {
        return;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Value = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Value = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiBlackboardKeyData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 1;
    private readonly static string ValueDefaultValue = "";

    private string value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Value {
      get { return value_ ?? ValueDefaultValue; }
      set {
        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return value_ != null; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiBlackboardKeyData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Value != other.Value) 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 (HasValue) hash ^= Value.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 (HasValue) {
        output.WriteRawTag(10);
        output.WriteString(Value);
      }
      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 (HasValue) {
        output.WriteRawTag(10);
        output.WriteString(Value);
      }
      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 (HasValue) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiBlackboardKeyData other) {
      if (other == null) {
        return;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Value = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Value = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeForceSuccess() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeForceSuccess other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiUeForceSuccess other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiIsAtLocation() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiIsAtLocation(AiIsAtLocation other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      flowAbortMode_ = other.flowAbortMode_;
      acceptableRadius_ = other.acceptableRadius_;
      keyboardKey_ = other.keyboardKey_;
      inverseCondition_ = other.inverseCondition_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "acceptable_radius" field.</summary>
    public const int AcceptableRadiusFieldNumber = 4;
    private readonly static float AcceptableRadiusDefaultValue = 0F;

    private float acceptableRadius_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float AcceptableRadius {
      get { if ((_hasBits0 & 4) != 0) { return acceptableRadius_; } else { return AcceptableRadiusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        acceptableRadius_ = value;
      }
    }
    /// <summary>Gets whether the "acceptable_radius" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasAcceptableRadius {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "acceptable_radius" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearAcceptableRadius() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "keyboard_key" field.</summary>
    public const int KeyboardKeyFieldNumber = 5;
    private readonly static string KeyboardKeyDefaultValue = "";

    private string keyboardKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string KeyboardKey {
      get { return keyboardKey_ ?? KeyboardKeyDefaultValue; }
      set {
        keyboardKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "keyboard_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasKeyboardKey {
      get { return keyboardKey_ != null; }
    }
    /// <summary>Clears the value of the "keyboard_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearKeyboardKey() {
      keyboardKey_ = null;
    }

    /// <summary>Field number for the "inverse_condition" field.</summary>
    public const int InverseConditionFieldNumber = 6;
    private readonly static bool InverseConditionDefaultValue = false;

    private bool inverseCondition_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool InverseCondition {
      get { if ((_hasBits0 & 8) != 0) { return inverseCondition_; } else { return InverseConditionDefaultValue; } }
      set {
        _hasBits0 |= 8;
        inverseCondition_ = value;
      }
    }
    /// <summary>Gets whether the "inverse_condition" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInverseCondition {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "inverse_condition" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInverseCondition() {
      _hasBits0 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiIsAtLocation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(AcceptableRadius, other.AcceptableRadius)) return false;
      if (KeyboardKey != other.KeyboardKey) return false;
      if (InverseCondition != other.InverseCondition) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.GetHashCode();
      if (HasAcceptableRadius) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(AcceptableRadius);
      if (HasKeyboardKey) hash ^= KeyboardKey.GetHashCode();
      if (HasInverseCondition) hash ^= InverseCondition.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasAcceptableRadius) {
        output.WriteRawTag(37);
        output.WriteFloat(AcceptableRadius);
      }
      if (HasKeyboardKey) {
        output.WriteRawTag(42);
        output.WriteString(KeyboardKey);
      }
      if (HasInverseCondition) {
        output.WriteRawTag(48);
        output.WriteBool(InverseCondition);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasAcceptableRadius) {
        output.WriteRawTag(37);
        output.WriteFloat(AcceptableRadius);
      }
      if (HasKeyboardKey) {
        output.WriteRawTag(42);
        output.WriteString(KeyboardKey);
      }
      if (HasInverseCondition) {
        output.WriteRawTag(48);
        output.WriteBool(InverseCondition);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (HasAcceptableRadius) {
        size += 1 + 4;
      }
      if (HasKeyboardKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(KeyboardKey);
      }
      if (HasInverseCondition) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiIsAtLocation other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      if (other.HasAcceptableRadius) {
        AcceptableRadius = other.AcceptableRadius;
      }
      if (other.HasKeyboardKey) {
        KeyboardKey = other.KeyboardKey;
      }
      if (other.HasInverseCondition) {
        InverseCondition = other.InverseCondition;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 37: {
            AcceptableRadius = input.ReadFloat();
            break;
          }
          case 42: {
            KeyboardKey = input.ReadString();
            break;
          }
          case 48: {
            InverseCondition = input.ReadBool();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 37: {
            AcceptableRadius = input.ReadFloat();
            break;
          }
          case 42: {
            KeyboardKey = input.ReadString();
            break;
          }
          case 48: {
            InverseCondition = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiDistanceLessThan() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiDistanceLessThan(AiDistanceLessThan other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      flowAbortMode_ = other.flowAbortMode_;
      actor1Key_ = other.actor1Key_;
      actor2Key_ = other.actor2Key_;
      distance_ = other.distance_;
      reverseResult_ = other.reverseResult_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "flow_abort_mode" field.</summary>
    public const int FlowAbortModeFieldNumber = 3;
    private readonly static global::Cfg.AiEFlowAbortMode FlowAbortModeDefaultValue = global::Cfg.AiEFlowAbortMode.None;

    private global::Cfg.AiEFlowAbortMode flowAbortMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFlowAbortMode FlowAbortMode {
      get { if ((_hasBits0 & 2) != 0) { return flowAbortMode_; } else { return FlowAbortModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        flowAbortMode_ = value;
      }
    }
    /// <summary>Gets whether the "flow_abort_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFlowAbortMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "flow_abort_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFlowAbortMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "actor1_key" field.</summary>
    public const int Actor1KeyFieldNumber = 4;
    private readonly static string Actor1KeyDefaultValue = "";

    private string actor1Key_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Actor1Key {
      get { return actor1Key_ ?? Actor1KeyDefaultValue; }
      set {
        actor1Key_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "actor1_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasActor1Key {
      get { return actor1Key_ != null; }
    }
    /// <summary>Clears the value of the "actor1_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearActor1Key() {
      actor1Key_ = null;
    }

    /// <summary>Field number for the "actor2_key" field.</summary>
    public const int Actor2KeyFieldNumber = 5;
    private readonly static string Actor2KeyDefaultValue = "";

    private string actor2Key_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Actor2Key {
      get { return actor2Key_ ?? Actor2KeyDefaultValue; }
      set {
        actor2Key_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "actor2_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasActor2Key {
      get { return actor2Key_ != null; }
    }
    /// <summary>Clears the value of the "actor2_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearActor2Key() {
      actor2Key_ = null;
    }

    /// <summary>Field number for the "distance" field.</summary>
    public const int DistanceFieldNumber = 6;
    private readonly static float DistanceDefaultValue = 0F;

    private float distance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Distance {
      get { if ((_hasBits0 & 4) != 0) { return distance_; } else { return DistanceDefaultValue; } }
      set {
        _hasBits0 |= 4;
        distance_ = value;
      }
    }
    /// <summary>Gets whether the "distance" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDistance {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "distance" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDistance() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "reverse_result" field.</summary>
    public const int ReverseResultFieldNumber = 7;
    private readonly static bool ReverseResultDefaultValue = false;

    private bool reverseResult_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool ReverseResult {
      get { if ((_hasBits0 & 8) != 0) { return reverseResult_; } else { return ReverseResultDefaultValue; } }
      set {
        _hasBits0 |= 8;
        reverseResult_ = value;
      }
    }
    /// <summary>Gets whether the "reverse_result" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasReverseResult {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "reverse_result" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearReverseResult() {
      _hasBits0 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiDistanceLessThan other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if (FlowAbortMode != other.FlowAbortMode) return false;
      if (Actor1Key != other.Actor1Key) return false;
      if (Actor2Key != other.Actor2Key) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Distance, other.Distance)) return false;
      if (ReverseResult != other.ReverseResult) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      if (HasFlowAbortMode) hash ^= FlowAbortMode.GetHashCode();
      if (HasActor1Key) hash ^= Actor1Key.GetHashCode();
      if (HasActor2Key) hash ^= Actor2Key.GetHashCode();
      if (HasDistance) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Distance);
      if (HasReverseResult) hash ^= ReverseResult.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasActor1Key) {
        output.WriteRawTag(34);
        output.WriteString(Actor1Key);
      }
      if (HasActor2Key) {
        output.WriteRawTag(42);
        output.WriteString(Actor2Key);
      }
      if (HasDistance) {
        output.WriteRawTag(53);
        output.WriteFloat(Distance);
      }
      if (HasReverseResult) {
        output.WriteRawTag(56);
        output.WriteBool(ReverseResult);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      if (HasFlowAbortMode) {
        output.WriteRawTag(24);
        output.WriteEnum((int) FlowAbortMode);
      }
      if (HasActor1Key) {
        output.WriteRawTag(34);
        output.WriteString(Actor1Key);
      }
      if (HasActor2Key) {
        output.WriteRawTag(42);
        output.WriteString(Actor2Key);
      }
      if (HasDistance) {
        output.WriteRawTag(53);
        output.WriteFloat(Distance);
      }
      if (HasReverseResult) {
        output.WriteRawTag(56);
        output.WriteBool(ReverseResult);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (HasFlowAbortMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FlowAbortMode);
      }
      if (HasActor1Key) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Actor1Key);
      }
      if (HasActor2Key) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Actor2Key);
      }
      if (HasDistance) {
        size += 1 + 4;
      }
      if (HasReverseResult) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiDistanceLessThan other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      if (other.HasFlowAbortMode) {
        FlowAbortMode = other.FlowAbortMode;
      }
      if (other.HasActor1Key) {
        Actor1Key = other.Actor1Key;
      }
      if (other.HasActor2Key) {
        Actor2Key = other.Actor2Key;
      }
      if (other.HasDistance) {
        Distance = other.Distance;
      }
      if (other.HasReverseResult) {
        ReverseResult = other.ReverseResult;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 34: {
            Actor1Key = input.ReadString();
            break;
          }
          case 42: {
            Actor2Key = input.ReadString();
            break;
          }
          case 53: {
            Distance = input.ReadFloat();
            break;
          }
          case 56: {
            ReverseResult = input.ReadBool();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 24: {
            FlowAbortMode = (global::Cfg.AiEFlowAbortMode) input.ReadEnum();
            break;
          }
          case 34: {
            Actor1Key = input.ReadString();
            break;
          }
          case 42: {
            Actor2Key = input.ReadString();
            break;
          }
          case 53: {
            Distance = input.ReadFloat();
            break;
          }
          case 56: {
            ReverseResult = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiFlowNode() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiFlowNode(AiFlowNode other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.Sequence:
          Sequence = other.Sequence.Clone();
          break;
        case ValueOneofCase.Selector:
          Selector = other.Selector.Clone();
          break;
        case ValueOneofCase.SimpleParallel:
          SimpleParallel = other.SimpleParallel.Clone();
          break;
        case ValueOneofCase.UeWait:
          UeWait = other.UeWait.Clone();
          break;
        case ValueOneofCase.UeWaitBlackboardTime:
          UeWaitBlackboardTime = other.UeWaitBlackboardTime.Clone();
          break;
        case ValueOneofCase.MoveToTarget:
          MoveToTarget = other.MoveToTarget.Clone();
          break;
        case ValueOneofCase.ChooseSkill:
          ChooseSkill = other.ChooseSkill.Clone();
          break;
        case ValueOneofCase.MoveToRandomLocation:
          MoveToRandomLocation = other.MoveToRandomLocation.Clone();
          break;
        case ValueOneofCase.MoveToLocation:
          MoveToLocation = other.MoveToLocation.Clone();
          break;
        case ValueOneofCase.DebugPrint:
          DebugPrint = other.DebugPrint.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "Sequence" field.</summary>
    public const int SequenceFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSequence Sequence {
      get { return valueCase_ == ValueOneofCase.Sequence ? (global::Cfg.AiSequence) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Sequence;
      }
    }

    /// <summary>Field number for the "Selector" field.</summary>
    public const int SelectorFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSelector Selector {
      get { return valueCase_ == ValueOneofCase.Selector ? (global::Cfg.AiSelector) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Selector;
      }
    }

    /// <summary>Field number for the "SimpleParallel" field.</summary>
    public const int SimpleParallelFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSimpleParallel SimpleParallel {
      get { return valueCase_ == ValueOneofCase.SimpleParallel ? (global::Cfg.AiSimpleParallel) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.SimpleParallel;
      }
    }

    /// <summary>Field number for the "UeWait" field.</summary>
    public const int UeWaitFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeWait UeWait {
      get { return valueCase_ == ValueOneofCase.UeWait ? (global::Cfg.AiUeWait) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeWait;
      }
    }

    /// <summary>Field number for the "UeWaitBlackboardTime" field.</summary>
    public const int UeWaitBlackboardTimeFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeWaitBlackboardTime UeWaitBlackboardTime {
      get { return valueCase_ == ValueOneofCase.UeWaitBlackboardTime ? (global::Cfg.AiUeWaitBlackboardTime) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeWaitBlackboardTime;
      }
    }

    /// <summary>Field number for the "MoveToTarget" field.</summary>
    public const int MoveToTargetFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToTarget MoveToTarget {
      get { return valueCase_ == ValueOneofCase.MoveToTarget ? (global::Cfg.AiMoveToTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToTarget;
      }
    }

    /// <summary>Field number for the "ChooseSkill" field.</summary>
    public const int ChooseSkillFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiChooseSkill ChooseSkill {
      get { return valueCase_ == ValueOneofCase.ChooseSkill ? (global::Cfg.AiChooseSkill) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ChooseSkill;
      }
    }

    /// <summary>Field number for the "MoveToRandomLocation" field.</summary>
    public const int MoveToRandomLocationFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToRandomLocation MoveToRandomLocation {
      get { return valueCase_ == ValueOneofCase.MoveToRandomLocation ? (global::Cfg.AiMoveToRandomLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToRandomLocation;
      }
    }

    /// <summary>Field number for the "MoveToLocation" field.</summary>
    public const int MoveToLocationFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToLocation MoveToLocation {
      get { return valueCase_ == ValueOneofCase.MoveToLocation ? (global::Cfg.AiMoveToLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToLocation;
      }
    }

    /// <summary>Field number for the "DebugPrint" field.</summary>
    public const int DebugPrintFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiDebugPrint DebugPrint {
      get { return valueCase_ == ValueOneofCase.DebugPrint ? (global::Cfg.AiDebugPrint) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DebugPrint;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      Sequence = 14,
      Selector = 15,
      SimpleParallel = 16,
      UeWait = 17,
      UeWaitBlackboardTime = 18,
      MoveToTarget = 19,
      ChooseSkill = 20,
      MoveToRandomLocation = 21,
      MoveToLocation = 22,
      DebugPrint = 23,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiFlowNode other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Sequence, other.Sequence)) return false;
      if (!object.Equals(Selector, other.Selector)) return false;
      if (!object.Equals(SimpleParallel, other.SimpleParallel)) return false;
      if (!object.Equals(UeWait, other.UeWait)) return false;
      if (!object.Equals(UeWaitBlackboardTime, other.UeWaitBlackboardTime)) return false;
      if (!object.Equals(MoveToTarget, other.MoveToTarget)) return false;
      if (!object.Equals(ChooseSkill, other.ChooseSkill)) return false;
      if (!object.Equals(MoveToRandomLocation, other.MoveToRandomLocation)) return false;
      if (!object.Equals(MoveToLocation, other.MoveToLocation)) return false;
      if (!object.Equals(DebugPrint, other.DebugPrint)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.Sequence) hash ^= Sequence.GetHashCode();
      if (valueCase_ == ValueOneofCase.Selector) hash ^= Selector.GetHashCode();
      if (valueCase_ == ValueOneofCase.SimpleParallel) hash ^= SimpleParallel.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeWait) hash ^= UeWait.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) hash ^= UeWaitBlackboardTime.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToTarget) hash ^= MoveToTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.ChooseSkill) hash ^= ChooseSkill.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) hash ^= MoveToRandomLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToLocation) hash ^= MoveToLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.DebugPrint) hash ^= DebugPrint.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.Sequence) {
        output.WriteRawTag(114);
        output.WriteMessage(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        output.WriteRawTag(122);
        output.WriteMessage(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(SimpleParallel);
      }
      if (valueCase_ == ValueOneofCase.UeWait) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(DebugPrint);
      }
      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 (valueCase_ == ValueOneofCase.Sequence) {
        output.WriteRawTag(114);
        output.WriteMessage(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        output.WriteRawTag(122);
        output.WriteMessage(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(SimpleParallel);
      }
      if (valueCase_ == ValueOneofCase.UeWait) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(DebugPrint);
      }
      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 (valueCase_ == ValueOneofCase.Sequence) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SimpleParallel);
      }
      if (valueCase_ == ValueOneofCase.UeWait) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(DebugPrint);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiFlowNode other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.Sequence:
          if (Sequence == null) {
            Sequence = new global::Cfg.AiSequence();
          }
          Sequence.MergeFrom(other.Sequence);
          break;
        case ValueOneofCase.Selector:
          if (Selector == null) {
            Selector = new global::Cfg.AiSelector();
          }
          Selector.MergeFrom(other.Selector);
          break;
        case ValueOneofCase.SimpleParallel:
          if (SimpleParallel == null) {
            SimpleParallel = new global::Cfg.AiSimpleParallel();
          }
          SimpleParallel.MergeFrom(other.SimpleParallel);
          break;
        case ValueOneofCase.UeWait:
          if (UeWait == null) {
            UeWait = new global::Cfg.AiUeWait();
          }
          UeWait.MergeFrom(other.UeWait);
          break;
        case ValueOneofCase.UeWaitBlackboardTime:
          if (UeWaitBlackboardTime == null) {
            UeWaitBlackboardTime = new global::Cfg.AiUeWaitBlackboardTime();
          }
          UeWaitBlackboardTime.MergeFrom(other.UeWaitBlackboardTime);
          break;
        case ValueOneofCase.MoveToTarget:
          if (MoveToTarget == null) {
            MoveToTarget = new global::Cfg.AiMoveToTarget();
          }
          MoveToTarget.MergeFrom(other.MoveToTarget);
          break;
        case ValueOneofCase.ChooseSkill:
          if (ChooseSkill == null) {
            ChooseSkill = new global::Cfg.AiChooseSkill();
          }
          ChooseSkill.MergeFrom(other.ChooseSkill);
          break;
        case ValueOneofCase.MoveToRandomLocation:
          if (MoveToRandomLocation == null) {
            MoveToRandomLocation = new global::Cfg.AiMoveToRandomLocation();
          }
          MoveToRandomLocation.MergeFrom(other.MoveToRandomLocation);
          break;
        case ValueOneofCase.MoveToLocation:
          if (MoveToLocation == null) {
            MoveToLocation = new global::Cfg.AiMoveToLocation();
          }
          MoveToLocation.MergeFrom(other.MoveToLocation);
          break;
        case ValueOneofCase.DebugPrint:
          if (DebugPrint == null) {
            DebugPrint = new global::Cfg.AiDebugPrint();
          }
          DebugPrint.MergeFrom(other.DebugPrint);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 114: {
            global::Cfg.AiSequence subBuilder = new global::Cfg.AiSequence();
            if (valueCase_ == ValueOneofCase.Sequence) {
              subBuilder.MergeFrom(Sequence);
            }
            input.ReadMessage(subBuilder);
            Sequence = subBuilder;
            break;
          }
          case 122: {
            global::Cfg.AiSelector subBuilder = new global::Cfg.AiSelector();
            if (valueCase_ == ValueOneofCase.Selector) {
              subBuilder.MergeFrom(Selector);
            }
            input.ReadMessage(subBuilder);
            Selector = subBuilder;
            break;
          }
          case 130: {
            global::Cfg.AiSimpleParallel subBuilder = new global::Cfg.AiSimpleParallel();
            if (valueCase_ == ValueOneofCase.SimpleParallel) {
              subBuilder.MergeFrom(SimpleParallel);
            }
            input.ReadMessage(subBuilder);
            SimpleParallel = subBuilder;
            break;
          }
          case 138: {
            global::Cfg.AiUeWait subBuilder = new global::Cfg.AiUeWait();
            if (valueCase_ == ValueOneofCase.UeWait) {
              subBuilder.MergeFrom(UeWait);
            }
            input.ReadMessage(subBuilder);
            UeWait = subBuilder;
            break;
          }
          case 146: {
            global::Cfg.AiUeWaitBlackboardTime subBuilder = new global::Cfg.AiUeWaitBlackboardTime();
            if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
              subBuilder.MergeFrom(UeWaitBlackboardTime);
            }
            input.ReadMessage(subBuilder);
            UeWaitBlackboardTime = subBuilder;
            break;
          }
          case 154: {
            global::Cfg.AiMoveToTarget subBuilder = new global::Cfg.AiMoveToTarget();
            if (valueCase_ == ValueOneofCase.MoveToTarget) {
              subBuilder.MergeFrom(MoveToTarget);
            }
            input.ReadMessage(subBuilder);
            MoveToTarget = subBuilder;
            break;
          }
          case 162: {
            global::Cfg.AiChooseSkill subBuilder = new global::Cfg.AiChooseSkill();
            if (valueCase_ == ValueOneofCase.ChooseSkill) {
              subBuilder.MergeFrom(ChooseSkill);
            }
            input.ReadMessage(subBuilder);
            ChooseSkill = subBuilder;
            break;
          }
          case 170: {
            global::Cfg.AiMoveToRandomLocation subBuilder = new global::Cfg.AiMoveToRandomLocation();
            if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
              subBuilder.MergeFrom(MoveToRandomLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToRandomLocation = subBuilder;
            break;
          }
          case 178: {
            global::Cfg.AiMoveToLocation subBuilder = new global::Cfg.AiMoveToLocation();
            if (valueCase_ == ValueOneofCase.MoveToLocation) {
              subBuilder.MergeFrom(MoveToLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToLocation = subBuilder;
            break;
          }
          case 186: {
            global::Cfg.AiDebugPrint subBuilder = new global::Cfg.AiDebugPrint();
            if (valueCase_ == ValueOneofCase.DebugPrint) {
              subBuilder.MergeFrom(DebugPrint);
            }
            input.ReadMessage(subBuilder);
            DebugPrint = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 114: {
            global::Cfg.AiSequence subBuilder = new global::Cfg.AiSequence();
            if (valueCase_ == ValueOneofCase.Sequence) {
              subBuilder.MergeFrom(Sequence);
            }
            input.ReadMessage(subBuilder);
            Sequence = subBuilder;
            break;
          }
          case 122: {
            global::Cfg.AiSelector subBuilder = new global::Cfg.AiSelector();
            if (valueCase_ == ValueOneofCase.Selector) {
              subBuilder.MergeFrom(Selector);
            }
            input.ReadMessage(subBuilder);
            Selector = subBuilder;
            break;
          }
          case 130: {
            global::Cfg.AiSimpleParallel subBuilder = new global::Cfg.AiSimpleParallel();
            if (valueCase_ == ValueOneofCase.SimpleParallel) {
              subBuilder.MergeFrom(SimpleParallel);
            }
            input.ReadMessage(subBuilder);
            SimpleParallel = subBuilder;
            break;
          }
          case 138: {
            global::Cfg.AiUeWait subBuilder = new global::Cfg.AiUeWait();
            if (valueCase_ == ValueOneofCase.UeWait) {
              subBuilder.MergeFrom(UeWait);
            }
            input.ReadMessage(subBuilder);
            UeWait = subBuilder;
            break;
          }
          case 146: {
            global::Cfg.AiUeWaitBlackboardTime subBuilder = new global::Cfg.AiUeWaitBlackboardTime();
            if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
              subBuilder.MergeFrom(UeWaitBlackboardTime);
            }
            input.ReadMessage(subBuilder);
            UeWaitBlackboardTime = subBuilder;
            break;
          }
          case 154: {
            global::Cfg.AiMoveToTarget subBuilder = new global::Cfg.AiMoveToTarget();
            if (valueCase_ == ValueOneofCase.MoveToTarget) {
              subBuilder.MergeFrom(MoveToTarget);
            }
            input.ReadMessage(subBuilder);
            MoveToTarget = subBuilder;
            break;
          }
          case 162: {
            global::Cfg.AiChooseSkill subBuilder = new global::Cfg.AiChooseSkill();
            if (valueCase_ == ValueOneofCase.ChooseSkill) {
              subBuilder.MergeFrom(ChooseSkill);
            }
            input.ReadMessage(subBuilder);
            ChooseSkill = subBuilder;
            break;
          }
          case 170: {
            global::Cfg.AiMoveToRandomLocation subBuilder = new global::Cfg.AiMoveToRandomLocation();
            if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
              subBuilder.MergeFrom(MoveToRandomLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToRandomLocation = subBuilder;
            break;
          }
          case 178: {
            global::Cfg.AiMoveToLocation subBuilder = new global::Cfg.AiMoveToLocation();
            if (valueCase_ == ValueOneofCase.MoveToLocation) {
              subBuilder.MergeFrom(MoveToLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToLocation = subBuilder;
            break;
          }
          case 186: {
            global::Cfg.AiDebugPrint subBuilder = new global::Cfg.AiDebugPrint();
            if (valueCase_ == ValueOneofCase.DebugPrint) {
              subBuilder.MergeFrom(DebugPrint);
            }
            input.ReadMessage(subBuilder);
            DebugPrint = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiComposeNode() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiComposeNode(AiComposeNode other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.Sequence:
          Sequence = other.Sequence.Clone();
          break;
        case ValueOneofCase.Selector:
          Selector = other.Selector.Clone();
          break;
        case ValueOneofCase.SimpleParallel:
          SimpleParallel = other.SimpleParallel.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "Sequence" field.</summary>
    public const int SequenceFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSequence Sequence {
      get { return valueCase_ == ValueOneofCase.Sequence ? (global::Cfg.AiSequence) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Sequence;
      }
    }

    /// <summary>Field number for the "Selector" field.</summary>
    public const int SelectorFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSelector Selector {
      get { return valueCase_ == ValueOneofCase.Selector ? (global::Cfg.AiSelector) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Selector;
      }
    }

    /// <summary>Field number for the "SimpleParallel" field.</summary>
    public const int SimpleParallelFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiSimpleParallel SimpleParallel {
      get { return valueCase_ == ValueOneofCase.SimpleParallel ? (global::Cfg.AiSimpleParallel) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.SimpleParallel;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      Sequence = 14,
      Selector = 15,
      SimpleParallel = 16,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiComposeNode other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Sequence, other.Sequence)) return false;
      if (!object.Equals(Selector, other.Selector)) return false;
      if (!object.Equals(SimpleParallel, other.SimpleParallel)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.Sequence) hash ^= Sequence.GetHashCode();
      if (valueCase_ == ValueOneofCase.Selector) hash ^= Selector.GetHashCode();
      if (valueCase_ == ValueOneofCase.SimpleParallel) hash ^= SimpleParallel.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.Sequence) {
        output.WriteRawTag(114);
        output.WriteMessage(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        output.WriteRawTag(122);
        output.WriteMessage(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(SimpleParallel);
      }
      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 (valueCase_ == ValueOneofCase.Sequence) {
        output.WriteRawTag(114);
        output.WriteMessage(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        output.WriteRawTag(122);
        output.WriteMessage(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(SimpleParallel);
      }
      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 (valueCase_ == ValueOneofCase.Sequence) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sequence);
      }
      if (valueCase_ == ValueOneofCase.Selector) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Selector);
      }
      if (valueCase_ == ValueOneofCase.SimpleParallel) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SimpleParallel);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiComposeNode other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.Sequence:
          if (Sequence == null) {
            Sequence = new global::Cfg.AiSequence();
          }
          Sequence.MergeFrom(other.Sequence);
          break;
        case ValueOneofCase.Selector:
          if (Selector == null) {
            Selector = new global::Cfg.AiSelector();
          }
          Selector.MergeFrom(other.Selector);
          break;
        case ValueOneofCase.SimpleParallel:
          if (SimpleParallel == null) {
            SimpleParallel = new global::Cfg.AiSimpleParallel();
          }
          SimpleParallel.MergeFrom(other.SimpleParallel);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 114: {
            global::Cfg.AiSequence subBuilder = new global::Cfg.AiSequence();
            if (valueCase_ == ValueOneofCase.Sequence) {
              subBuilder.MergeFrom(Sequence);
            }
            input.ReadMessage(subBuilder);
            Sequence = subBuilder;
            break;
          }
          case 122: {
            global::Cfg.AiSelector subBuilder = new global::Cfg.AiSelector();
            if (valueCase_ == ValueOneofCase.Selector) {
              subBuilder.MergeFrom(Selector);
            }
            input.ReadMessage(subBuilder);
            Selector = subBuilder;
            break;
          }
          case 130: {
            global::Cfg.AiSimpleParallel subBuilder = new global::Cfg.AiSimpleParallel();
            if (valueCase_ == ValueOneofCase.SimpleParallel) {
              subBuilder.MergeFrom(SimpleParallel);
            }
            input.ReadMessage(subBuilder);
            SimpleParallel = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 114: {
            global::Cfg.AiSequence subBuilder = new global::Cfg.AiSequence();
            if (valueCase_ == ValueOneofCase.Sequence) {
              subBuilder.MergeFrom(Sequence);
            }
            input.ReadMessage(subBuilder);
            Sequence = subBuilder;
            break;
          }
          case 122: {
            global::Cfg.AiSelector subBuilder = new global::Cfg.AiSelector();
            if (valueCase_ == ValueOneofCase.Selector) {
              subBuilder.MergeFrom(Selector);
            }
            input.ReadMessage(subBuilder);
            Selector = subBuilder;
            break;
          }
          case 130: {
            global::Cfg.AiSimpleParallel subBuilder = new global::Cfg.AiSimpleParallel();
            if (valueCase_ == ValueOneofCase.SimpleParallel) {
              subBuilder.MergeFrom(SimpleParallel);
            }
            input.ReadMessage(subBuilder);
            SimpleParallel = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiSequence() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "children" field.</summary>
    public const int ChildrenFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Cfg.AiFlowNode> _repeated_children_codec
        = pb::FieldCodec.ForMessage(42, global::Cfg.AiFlowNode.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiFlowNode> children_ = new pbc::RepeatedField<global::Cfg.AiFlowNode>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiFlowNode> Children {
      get { return children_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiSequence other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if(!children_.Equals(other.children_)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      hash ^= children_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      children_.WriteTo(output, _repeated_children_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      children_.WriteTo(ref output, _repeated_children_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      size += children_.CalculateSize(_repeated_children_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiSequence other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      children_.Add(other.children_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 42: {
            children_.AddEntriesFrom(input, _repeated_children_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 42: {
            children_.AddEntriesFrom(ref input, _repeated_children_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiSelector() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "children" field.</summary>
    public const int ChildrenFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Cfg.AiFlowNode> _repeated_children_codec
        = pb::FieldCodec.ForMessage(42, global::Cfg.AiFlowNode.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiFlowNode> children_ = new pbc::RepeatedField<global::Cfg.AiFlowNode>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiFlowNode> Children {
      get { return children_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiSelector other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if(!children_.Equals(other.children_)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      hash ^= children_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      children_.WriteTo(output, _repeated_children_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      children_.WriteTo(ref output, _repeated_children_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      size += children_.CalculateSize(_repeated_children_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiSelector other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      children_.Add(other.children_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 42: {
            children_.AddEntriesFrom(input, _repeated_children_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 42: {
            children_.AddEntriesFrom(ref input, _repeated_children_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiSimpleParallel() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiSimpleParallel(AiSimpleParallel other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      finishMode_ = other.finishMode_;
      mainTask_ = other.mainTask_ != null ? other.mainTask_.Clone() : null;
      backgroundNode_ = other.backgroundNode_ != null ? other.backgroundNode_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "finish_mode" field.</summary>
    public const int FinishModeFieldNumber = 5;
    private readonly static global::Cfg.AiEFinishMode FinishModeDefaultValue = global::Cfg.AiEFinishMode.Immediate;

    private global::Cfg.AiEFinishMode finishMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiEFinishMode FinishMode {
      get { if ((_hasBits0 & 2) != 0) { return finishMode_; } else { return FinishModeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        finishMode_ = value;
      }
    }
    /// <summary>Gets whether the "finish_mode" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFinishMode {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "finish_mode" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFinishMode() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "main_task" field.</summary>
    public const int MainTaskFieldNumber = 6;
    private global::Cfg.AiTask mainTask_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiTask MainTask {
      get { return mainTask_; }
      set {
        mainTask_ = value;
      }
    }

    /// <summary>Field number for the "background_node" field.</summary>
    public const int BackgroundNodeFieldNumber = 7;
    private global::Cfg.AiFlowNode backgroundNode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiFlowNode BackgroundNode {
      get { return backgroundNode_; }
      set {
        backgroundNode_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiSimpleParallel other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (FinishMode != other.FinishMode) return false;
      if (!object.Equals(MainTask, other.MainTask)) return false;
      if (!object.Equals(BackgroundNode, other.BackgroundNode)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasFinishMode) hash ^= FinishMode.GetHashCode();
      if (mainTask_ != null) hash ^= MainTask.GetHashCode();
      if (backgroundNode_ != null) hash ^= BackgroundNode.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasFinishMode) {
        output.WriteRawTag(40);
        output.WriteEnum((int) FinishMode);
      }
      if (mainTask_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(MainTask);
      }
      if (backgroundNode_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(BackgroundNode);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasFinishMode) {
        output.WriteRawTag(40);
        output.WriteEnum((int) FinishMode);
      }
      if (mainTask_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(MainTask);
      }
      if (backgroundNode_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(BackgroundNode);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasFinishMode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FinishMode);
      }
      if (mainTask_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MainTask);
      }
      if (backgroundNode_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BackgroundNode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiSimpleParallel other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasFinishMode) {
        FinishMode = other.FinishMode;
      }
      if (other.mainTask_ != null) {
        if (mainTask_ == null) {
          MainTask = new global::Cfg.AiTask();
        }
        MainTask.MergeFrom(other.MainTask);
      }
      if (other.backgroundNode_ != null) {
        if (backgroundNode_ == null) {
          BackgroundNode = new global::Cfg.AiFlowNode();
        }
        BackgroundNode.MergeFrom(other.BackgroundNode);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            FinishMode = (global::Cfg.AiEFinishMode) input.ReadEnum();
            break;
          }
          case 50: {
            if (mainTask_ == null) {
              MainTask = new global::Cfg.AiTask();
            }
            input.ReadMessage(MainTask);
            break;
          }
          case 58: {
            if (backgroundNode_ == null) {
              BackgroundNode = new global::Cfg.AiFlowNode();
            }
            input.ReadMessage(BackgroundNode);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            FinishMode = (global::Cfg.AiEFinishMode) input.ReadEnum();
            break;
          }
          case 50: {
            if (mainTask_ == null) {
              MainTask = new global::Cfg.AiTask();
            }
            input.ReadMessage(MainTask);
            break;
          }
          case 58: {
            if (backgroundNode_ == null) {
              BackgroundNode = new global::Cfg.AiFlowNode();
            }
            input.ReadMessage(BackgroundNode);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiTask() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiTask(AiTask other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.UeWait:
          UeWait = other.UeWait.Clone();
          break;
        case ValueOneofCase.UeWaitBlackboardTime:
          UeWaitBlackboardTime = other.UeWaitBlackboardTime.Clone();
          break;
        case ValueOneofCase.MoveToTarget:
          MoveToTarget = other.MoveToTarget.Clone();
          break;
        case ValueOneofCase.ChooseSkill:
          ChooseSkill = other.ChooseSkill.Clone();
          break;
        case ValueOneofCase.MoveToRandomLocation:
          MoveToRandomLocation = other.MoveToRandomLocation.Clone();
          break;
        case ValueOneofCase.MoveToLocation:
          MoveToLocation = other.MoveToLocation.Clone();
          break;
        case ValueOneofCase.DebugPrint:
          DebugPrint = other.DebugPrint.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "UeWait" field.</summary>
    public const int UeWaitFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeWait UeWait {
      get { return valueCase_ == ValueOneofCase.UeWait ? (global::Cfg.AiUeWait) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeWait;
      }
    }

    /// <summary>Field number for the "UeWaitBlackboardTime" field.</summary>
    public const int UeWaitBlackboardTimeFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiUeWaitBlackboardTime UeWaitBlackboardTime {
      get { return valueCase_ == ValueOneofCase.UeWaitBlackboardTime ? (global::Cfg.AiUeWaitBlackboardTime) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.UeWaitBlackboardTime;
      }
    }

    /// <summary>Field number for the "MoveToTarget" field.</summary>
    public const int MoveToTargetFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToTarget MoveToTarget {
      get { return valueCase_ == ValueOneofCase.MoveToTarget ? (global::Cfg.AiMoveToTarget) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToTarget;
      }
    }

    /// <summary>Field number for the "ChooseSkill" field.</summary>
    public const int ChooseSkillFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiChooseSkill ChooseSkill {
      get { return valueCase_ == ValueOneofCase.ChooseSkill ? (global::Cfg.AiChooseSkill) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.ChooseSkill;
      }
    }

    /// <summary>Field number for the "MoveToRandomLocation" field.</summary>
    public const int MoveToRandomLocationFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToRandomLocation MoveToRandomLocation {
      get { return valueCase_ == ValueOneofCase.MoveToRandomLocation ? (global::Cfg.AiMoveToRandomLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToRandomLocation;
      }
    }

    /// <summary>Field number for the "MoveToLocation" field.</summary>
    public const int MoveToLocationFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiMoveToLocation MoveToLocation {
      get { return valueCase_ == ValueOneofCase.MoveToLocation ? (global::Cfg.AiMoveToLocation) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.MoveToLocation;
      }
    }

    /// <summary>Field number for the "DebugPrint" field.</summary>
    public const int DebugPrintFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AiDebugPrint DebugPrint {
      get { return valueCase_ == ValueOneofCase.DebugPrint ? (global::Cfg.AiDebugPrint) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DebugPrint;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      UeWait = 17,
      UeWaitBlackboardTime = 18,
      MoveToTarget = 19,
      ChooseSkill = 20,
      MoveToRandomLocation = 21,
      MoveToLocation = 22,
      DebugPrint = 23,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiTask other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(UeWait, other.UeWait)) return false;
      if (!object.Equals(UeWaitBlackboardTime, other.UeWaitBlackboardTime)) return false;
      if (!object.Equals(MoveToTarget, other.MoveToTarget)) return false;
      if (!object.Equals(ChooseSkill, other.ChooseSkill)) return false;
      if (!object.Equals(MoveToRandomLocation, other.MoveToRandomLocation)) return false;
      if (!object.Equals(MoveToLocation, other.MoveToLocation)) return false;
      if (!object.Equals(DebugPrint, other.DebugPrint)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.UeWait) hash ^= UeWait.GetHashCode();
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) hash ^= UeWaitBlackboardTime.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToTarget) hash ^= MoveToTarget.GetHashCode();
      if (valueCase_ == ValueOneofCase.ChooseSkill) hash ^= ChooseSkill.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) hash ^= MoveToRandomLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.MoveToLocation) hash ^= MoveToLocation.GetHashCode();
      if (valueCase_ == ValueOneofCase.DebugPrint) hash ^= DebugPrint.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.UeWait) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(DebugPrint);
      }
      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 (valueCase_ == ValueOneofCase.UeWait) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(DebugPrint);
      }
      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 (valueCase_ == ValueOneofCase.UeWait) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UeWait);
      }
      if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UeWaitBlackboardTime);
      }
      if (valueCase_ == ValueOneofCase.MoveToTarget) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToTarget);
      }
      if (valueCase_ == ValueOneofCase.ChooseSkill) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ChooseSkill);
      }
      if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToRandomLocation);
      }
      if (valueCase_ == ValueOneofCase.MoveToLocation) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MoveToLocation);
      }
      if (valueCase_ == ValueOneofCase.DebugPrint) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(DebugPrint);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiTask other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.UeWait:
          if (UeWait == null) {
            UeWait = new global::Cfg.AiUeWait();
          }
          UeWait.MergeFrom(other.UeWait);
          break;
        case ValueOneofCase.UeWaitBlackboardTime:
          if (UeWaitBlackboardTime == null) {
            UeWaitBlackboardTime = new global::Cfg.AiUeWaitBlackboardTime();
          }
          UeWaitBlackboardTime.MergeFrom(other.UeWaitBlackboardTime);
          break;
        case ValueOneofCase.MoveToTarget:
          if (MoveToTarget == null) {
            MoveToTarget = new global::Cfg.AiMoveToTarget();
          }
          MoveToTarget.MergeFrom(other.MoveToTarget);
          break;
        case ValueOneofCase.ChooseSkill:
          if (ChooseSkill == null) {
            ChooseSkill = new global::Cfg.AiChooseSkill();
          }
          ChooseSkill.MergeFrom(other.ChooseSkill);
          break;
        case ValueOneofCase.MoveToRandomLocation:
          if (MoveToRandomLocation == null) {
            MoveToRandomLocation = new global::Cfg.AiMoveToRandomLocation();
          }
          MoveToRandomLocation.MergeFrom(other.MoveToRandomLocation);
          break;
        case ValueOneofCase.MoveToLocation:
          if (MoveToLocation == null) {
            MoveToLocation = new global::Cfg.AiMoveToLocation();
          }
          MoveToLocation.MergeFrom(other.MoveToLocation);
          break;
        case ValueOneofCase.DebugPrint:
          if (DebugPrint == null) {
            DebugPrint = new global::Cfg.AiDebugPrint();
          }
          DebugPrint.MergeFrom(other.DebugPrint);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 138: {
            global::Cfg.AiUeWait subBuilder = new global::Cfg.AiUeWait();
            if (valueCase_ == ValueOneofCase.UeWait) {
              subBuilder.MergeFrom(UeWait);
            }
            input.ReadMessage(subBuilder);
            UeWait = subBuilder;
            break;
          }
          case 146: {
            global::Cfg.AiUeWaitBlackboardTime subBuilder = new global::Cfg.AiUeWaitBlackboardTime();
            if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
              subBuilder.MergeFrom(UeWaitBlackboardTime);
            }
            input.ReadMessage(subBuilder);
            UeWaitBlackboardTime = subBuilder;
            break;
          }
          case 154: {
            global::Cfg.AiMoveToTarget subBuilder = new global::Cfg.AiMoveToTarget();
            if (valueCase_ == ValueOneofCase.MoveToTarget) {
              subBuilder.MergeFrom(MoveToTarget);
            }
            input.ReadMessage(subBuilder);
            MoveToTarget = subBuilder;
            break;
          }
          case 162: {
            global::Cfg.AiChooseSkill subBuilder = new global::Cfg.AiChooseSkill();
            if (valueCase_ == ValueOneofCase.ChooseSkill) {
              subBuilder.MergeFrom(ChooseSkill);
            }
            input.ReadMessage(subBuilder);
            ChooseSkill = subBuilder;
            break;
          }
          case 170: {
            global::Cfg.AiMoveToRandomLocation subBuilder = new global::Cfg.AiMoveToRandomLocation();
            if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
              subBuilder.MergeFrom(MoveToRandomLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToRandomLocation = subBuilder;
            break;
          }
          case 178: {
            global::Cfg.AiMoveToLocation subBuilder = new global::Cfg.AiMoveToLocation();
            if (valueCase_ == ValueOneofCase.MoveToLocation) {
              subBuilder.MergeFrom(MoveToLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToLocation = subBuilder;
            break;
          }
          case 186: {
            global::Cfg.AiDebugPrint subBuilder = new global::Cfg.AiDebugPrint();
            if (valueCase_ == ValueOneofCase.DebugPrint) {
              subBuilder.MergeFrom(DebugPrint);
            }
            input.ReadMessage(subBuilder);
            DebugPrint = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 138: {
            global::Cfg.AiUeWait subBuilder = new global::Cfg.AiUeWait();
            if (valueCase_ == ValueOneofCase.UeWait) {
              subBuilder.MergeFrom(UeWait);
            }
            input.ReadMessage(subBuilder);
            UeWait = subBuilder;
            break;
          }
          case 146: {
            global::Cfg.AiUeWaitBlackboardTime subBuilder = new global::Cfg.AiUeWaitBlackboardTime();
            if (valueCase_ == ValueOneofCase.UeWaitBlackboardTime) {
              subBuilder.MergeFrom(UeWaitBlackboardTime);
            }
            input.ReadMessage(subBuilder);
            UeWaitBlackboardTime = subBuilder;
            break;
          }
          case 154: {
            global::Cfg.AiMoveToTarget subBuilder = new global::Cfg.AiMoveToTarget();
            if (valueCase_ == ValueOneofCase.MoveToTarget) {
              subBuilder.MergeFrom(MoveToTarget);
            }
            input.ReadMessage(subBuilder);
            MoveToTarget = subBuilder;
            break;
          }
          case 162: {
            global::Cfg.AiChooseSkill subBuilder = new global::Cfg.AiChooseSkill();
            if (valueCase_ == ValueOneofCase.ChooseSkill) {
              subBuilder.MergeFrom(ChooseSkill);
            }
            input.ReadMessage(subBuilder);
            ChooseSkill = subBuilder;
            break;
          }
          case 170: {
            global::Cfg.AiMoveToRandomLocation subBuilder = new global::Cfg.AiMoveToRandomLocation();
            if (valueCase_ == ValueOneofCase.MoveToRandomLocation) {
              subBuilder.MergeFrom(MoveToRandomLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToRandomLocation = subBuilder;
            break;
          }
          case 178: {
            global::Cfg.AiMoveToLocation subBuilder = new global::Cfg.AiMoveToLocation();
            if (valueCase_ == ValueOneofCase.MoveToLocation) {
              subBuilder.MergeFrom(MoveToLocation);
            }
            input.ReadMessage(subBuilder);
            MoveToLocation = subBuilder;
            break;
          }
          case 186: {
            global::Cfg.AiDebugPrint subBuilder = new global::Cfg.AiDebugPrint();
            if (valueCase_ == ValueOneofCase.DebugPrint) {
              subBuilder.MergeFrom(DebugPrint);
            }
            input.ReadMessage(subBuilder);
            DebugPrint = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeWait() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiUeWait(AiUeWait other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      waitTime_ = other.waitTime_;
      randomDeviation_ = other.randomDeviation_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "wait_time" field.</summary>
    public const int WaitTimeFieldNumber = 6;
    private readonly static float WaitTimeDefaultValue = 0F;

    private float waitTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float WaitTime {
      get { if ((_hasBits0 & 4) != 0) { return waitTime_; } else { return WaitTimeDefaultValue; } }
      set {
        _hasBits0 |= 4;
        waitTime_ = value;
      }
    }
    /// <summary>Gets whether the "wait_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasWaitTime {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "wait_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearWaitTime() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "random_deviation" field.</summary>
    public const int RandomDeviationFieldNumber = 7;
    private readonly static float RandomDeviationDefaultValue = 0F;

    private float randomDeviation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float RandomDeviation {
      get { if ((_hasBits0 & 8) != 0) { return randomDeviation_; } else { return RandomDeviationDefaultValue; } }
      set {
        _hasBits0 |= 8;
        randomDeviation_ = value;
      }
    }
    /// <summary>Gets whether the "random_deviation" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRandomDeviation {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "random_deviation" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRandomDeviation() {
      _hasBits0 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeWait other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(WaitTime, other.WaitTime)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(RandomDeviation, other.RandomDeviation)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasWaitTime) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(WaitTime);
      if (HasRandomDeviation) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(RandomDeviation);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasWaitTime) {
        output.WriteRawTag(53);
        output.WriteFloat(WaitTime);
      }
      if (HasRandomDeviation) {
        output.WriteRawTag(61);
        output.WriteFloat(RandomDeviation);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasWaitTime) {
        output.WriteRawTag(53);
        output.WriteFloat(WaitTime);
      }
      if (HasRandomDeviation) {
        output.WriteRawTag(61);
        output.WriteFloat(RandomDeviation);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasWaitTime) {
        size += 1 + 4;
      }
      if (HasRandomDeviation) {
        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(AiUeWait other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasWaitTime) {
        WaitTime = other.WaitTime;
      }
      if (other.HasRandomDeviation) {
        RandomDeviation = other.RandomDeviation;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 53: {
            WaitTime = input.ReadFloat();
            break;
          }
          case 61: {
            RandomDeviation = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 53: {
            WaitTime = input.ReadFloat();
            break;
          }
          case 61: {
            RandomDeviation = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiUeWaitBlackboardTime() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiUeWaitBlackboardTime(AiUeWaitBlackboardTime other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      blackboardKey_ = other.blackboardKey_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "blackboard_key" field.</summary>
    public const int BlackboardKeyFieldNumber = 6;
    private readonly static string BlackboardKeyDefaultValue = "";

    private string blackboardKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string BlackboardKey {
      get { return blackboardKey_ ?? BlackboardKeyDefaultValue; }
      set {
        blackboardKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "blackboard_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBlackboardKey {
      get { return blackboardKey_ != null; }
    }
    /// <summary>Clears the value of the "blackboard_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBlackboardKey() {
      blackboardKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiUeWaitBlackboardTime other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (BlackboardKey != other.BlackboardKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasBlackboardKey) hash ^= BlackboardKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasBlackboardKey) {
        output.WriteRawTag(50);
        output.WriteString(BlackboardKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasBlackboardKey) {
        output.WriteRawTag(50);
        output.WriteString(BlackboardKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasBlackboardKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(BlackboardKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiUeWaitBlackboardTime other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasBlackboardKey) {
        BlackboardKey = other.BlackboardKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            BlackboardKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            BlackboardKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiMoveToTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiMoveToTarget(AiMoveToTarget other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      targetActorKey_ = other.targetActorKey_;
      acceptableRadius_ = other.acceptableRadius_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "target_actor_key" field.</summary>
    public const int TargetActorKeyFieldNumber = 6;
    private readonly static string TargetActorKeyDefaultValue = "";

    private string targetActorKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetActorKey {
      get { return targetActorKey_ ?? TargetActorKeyDefaultValue; }
      set {
        targetActorKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "target_actor_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTargetActorKey {
      get { return targetActorKey_ != null; }
    }
    /// <summary>Clears the value of the "target_actor_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTargetActorKey() {
      targetActorKey_ = null;
    }

    /// <summary>Field number for the "acceptable_radius" field.</summary>
    public const int AcceptableRadiusFieldNumber = 7;
    private readonly static float AcceptableRadiusDefaultValue = 0F;

    private float acceptableRadius_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float AcceptableRadius {
      get { if ((_hasBits0 & 4) != 0) { return acceptableRadius_; } else { return AcceptableRadiusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        acceptableRadius_ = value;
      }
    }
    /// <summary>Gets whether the "acceptable_radius" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasAcceptableRadius {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "acceptable_radius" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearAcceptableRadius() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiMoveToTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (TargetActorKey != other.TargetActorKey) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(AcceptableRadius, other.AcceptableRadius)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasTargetActorKey) hash ^= TargetActorKey.GetHashCode();
      if (HasAcceptableRadius) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(AcceptableRadius);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasTargetActorKey) {
        output.WriteRawTag(50);
        output.WriteString(TargetActorKey);
      }
      if (HasAcceptableRadius) {
        output.WriteRawTag(61);
        output.WriteFloat(AcceptableRadius);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasTargetActorKey) {
        output.WriteRawTag(50);
        output.WriteString(TargetActorKey);
      }
      if (HasAcceptableRadius) {
        output.WriteRawTag(61);
        output.WriteFloat(AcceptableRadius);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasTargetActorKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetActorKey);
      }
      if (HasAcceptableRadius) {
        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(AiMoveToTarget other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasTargetActorKey) {
        TargetActorKey = other.TargetActorKey;
      }
      if (other.HasAcceptableRadius) {
        AcceptableRadius = other.AcceptableRadius;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            TargetActorKey = input.ReadString();
            break;
          }
          case 61: {
            AcceptableRadius = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            TargetActorKey = input.ReadString();
            break;
          }
          case 61: {
            AcceptableRadius = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiChooseSkill() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiChooseSkill(AiChooseSkill other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      targetActorKey_ = other.targetActorKey_;
      resultSkillIdKey_ = other.resultSkillIdKey_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "target_actor_key" field.</summary>
    public const int TargetActorKeyFieldNumber = 6;
    private readonly static string TargetActorKeyDefaultValue = "";

    private string targetActorKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetActorKey {
      get { return targetActorKey_ ?? TargetActorKeyDefaultValue; }
      set {
        targetActorKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "target_actor_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTargetActorKey {
      get { return targetActorKey_ != null; }
    }
    /// <summary>Clears the value of the "target_actor_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTargetActorKey() {
      targetActorKey_ = null;
    }

    /// <summary>Field number for the "result_skill_id_key" field.</summary>
    public const int ResultSkillIdKeyFieldNumber = 7;
    private readonly static string ResultSkillIdKeyDefaultValue = "";

    private string resultSkillIdKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ResultSkillIdKey {
      get { return resultSkillIdKey_ ?? ResultSkillIdKeyDefaultValue; }
      set {
        resultSkillIdKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "result_skill_id_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasResultSkillIdKey {
      get { return resultSkillIdKey_ != null; }
    }
    /// <summary>Clears the value of the "result_skill_id_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearResultSkillIdKey() {
      resultSkillIdKey_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiChooseSkill other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (TargetActorKey != other.TargetActorKey) return false;
      if (ResultSkillIdKey != other.ResultSkillIdKey) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasTargetActorKey) hash ^= TargetActorKey.GetHashCode();
      if (HasResultSkillIdKey) hash ^= ResultSkillIdKey.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasTargetActorKey) {
        output.WriteRawTag(50);
        output.WriteString(TargetActorKey);
      }
      if (HasResultSkillIdKey) {
        output.WriteRawTag(58);
        output.WriteString(ResultSkillIdKey);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasTargetActorKey) {
        output.WriteRawTag(50);
        output.WriteString(TargetActorKey);
      }
      if (HasResultSkillIdKey) {
        output.WriteRawTag(58);
        output.WriteString(ResultSkillIdKey);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasTargetActorKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetActorKey);
      }
      if (HasResultSkillIdKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ResultSkillIdKey);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiChooseSkill other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasTargetActorKey) {
        TargetActorKey = other.TargetActorKey;
      }
      if (other.HasResultSkillIdKey) {
        ResultSkillIdKey = other.ResultSkillIdKey;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            TargetActorKey = input.ReadString();
            break;
          }
          case 58: {
            ResultSkillIdKey = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            TargetActorKey = input.ReadString();
            break;
          }
          case 58: {
            ResultSkillIdKey = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiMoveToRandomLocation() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiMoveToRandomLocation(AiMoveToRandomLocation other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      originPositionKey_ = other.originPositionKey_;
      radius_ = other.radius_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "origin_position_key" field.</summary>
    public const int OriginPositionKeyFieldNumber = 6;
    private readonly static string OriginPositionKeyDefaultValue = "";

    private string originPositionKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OriginPositionKey {
      get { return originPositionKey_ ?? OriginPositionKeyDefaultValue; }
      set {
        originPositionKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "origin_position_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOriginPositionKey {
      get { return originPositionKey_ != null; }
    }
    /// <summary>Clears the value of the "origin_position_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOriginPositionKey() {
      originPositionKey_ = null;
    }

    /// <summary>Field number for the "radius" field.</summary>
    public const int RadiusFieldNumber = 7;
    private readonly static float RadiusDefaultValue = 0F;

    private float radius_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Radius {
      get { if ((_hasBits0 & 4) != 0) { return radius_; } else { return RadiusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        radius_ = value;
      }
    }
    /// <summary>Gets whether the "radius" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRadius {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "radius" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRadius() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiMoveToRandomLocation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (OriginPositionKey != other.OriginPositionKey) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Radius, other.Radius)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasOriginPositionKey) hash ^= OriginPositionKey.GetHashCode();
      if (HasRadius) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Radius);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasOriginPositionKey) {
        output.WriteRawTag(50);
        output.WriteString(OriginPositionKey);
      }
      if (HasRadius) {
        output.WriteRawTag(61);
        output.WriteFloat(Radius);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasOriginPositionKey) {
        output.WriteRawTag(50);
        output.WriteString(OriginPositionKey);
      }
      if (HasRadius) {
        output.WriteRawTag(61);
        output.WriteFloat(Radius);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasOriginPositionKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OriginPositionKey);
      }
      if (HasRadius) {
        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(AiMoveToRandomLocation other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasOriginPositionKey) {
        OriginPositionKey = other.OriginPositionKey;
      }
      if (other.HasRadius) {
        Radius = other.Radius;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            OriginPositionKey = input.ReadString();
            break;
          }
          case 61: {
            Radius = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            OriginPositionKey = input.ReadString();
            break;
          }
          case 61: {
            Radius = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiMoveToLocation() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiMoveToLocation(AiMoveToLocation other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      acceptableRadius_ = other.acceptableRadius_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "acceptable_radius" field.</summary>
    public const int AcceptableRadiusFieldNumber = 6;
    private readonly static float AcceptableRadiusDefaultValue = 0F;

    private float acceptableRadius_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float AcceptableRadius {
      get { if ((_hasBits0 & 4) != 0) { return acceptableRadius_; } else { return AcceptableRadiusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        acceptableRadius_ = value;
      }
    }
    /// <summary>Gets whether the "acceptable_radius" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasAcceptableRadius {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "acceptable_radius" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearAcceptableRadius() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiMoveToLocation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(AcceptableRadius, other.AcceptableRadius)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasAcceptableRadius) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(AcceptableRadius);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasAcceptableRadius) {
        output.WriteRawTag(53);
        output.WriteFloat(AcceptableRadius);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasAcceptableRadius) {
        output.WriteRawTag(53);
        output.WriteFloat(AcceptableRadius);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasAcceptableRadius) {
        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(AiMoveToLocation other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasAcceptableRadius) {
        AcceptableRadius = other.AcceptableRadius;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 53: {
            AcceptableRadius = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 53: {
            AcceptableRadius = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiDebugPrint() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AiDebugPrint(AiDebugPrint other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      nodeName_ = other.nodeName_;
      decorators_ = other.decorators_.Clone();
      services_ = other.services_.Clone();
      ignoreRestartSelf_ = other.ignoreRestartSelf_;
      text_ = other.text_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "node_name" field.</summary>
    public const int NodeNameFieldNumber = 2;
    private readonly static string NodeNameDefaultValue = "";

    private string nodeName_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NodeName {
      get { return nodeName_ ?? NodeNameDefaultValue; }
      set {
        nodeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "node_name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNodeName {
      get { return nodeName_ != null; }
    }
    /// <summary>Clears the value of the "node_name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNodeName() {
      nodeName_ = null;
    }

    /// <summary>Field number for the "decorators" field.</summary>
    public const int DecoratorsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.AiDecorator> _repeated_decorators_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.AiDecorator.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiDecorator> decorators_ = new pbc::RepeatedField<global::Cfg.AiDecorator>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiDecorator> Decorators {
      get { return decorators_; }
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.AiService> _repeated_services_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.AiService.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiService> services_ = new pbc::RepeatedField<global::Cfg.AiService>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiService> Services {
      get { return services_; }
    }

    /// <summary>Field number for the "ignore_restart_self" field.</summary>
    public const int IgnoreRestartSelfFieldNumber = 5;
    private readonly static bool IgnoreRestartSelfDefaultValue = false;

    private bool ignoreRestartSelf_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IgnoreRestartSelf {
      get { if ((_hasBits0 & 2) != 0) { return ignoreRestartSelf_; } else { return IgnoreRestartSelfDefaultValue; } }
      set {
        _hasBits0 |= 2;
        ignoreRestartSelf_ = value;
      }
    }
    /// <summary>Gets whether the "ignore_restart_self" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIgnoreRestartSelf {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "ignore_restart_self" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIgnoreRestartSelf() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "text" field.</summary>
    public const int TextFieldNumber = 6;
    private readonly static string TextDefaultValue = "";

    private string text_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Text {
      get { return text_ ?? TextDefaultValue; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "text" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasText {
      get { return text_ != null; }
    }
    /// <summary>Clears the value of the "text" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearText() {
      text_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiDebugPrint other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (NodeName != other.NodeName) return false;
      if(!decorators_.Equals(other.decorators_)) return false;
      if(!services_.Equals(other.services_)) return false;
      if (IgnoreRestartSelf != other.IgnoreRestartSelf) return false;
      if (Text != other.Text) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasNodeName) hash ^= NodeName.GetHashCode();
      hash ^= decorators_.GetHashCode();
      hash ^= services_.GetHashCode();
      if (HasIgnoreRestartSelf) hash ^= IgnoreRestartSelf.GetHashCode();
      if (HasText) hash ^= Text.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(output, _repeated_decorators_codec);
      services_.WriteTo(output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasText) {
        output.WriteRawTag(50);
        output.WriteString(Text);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasNodeName) {
        output.WriteRawTag(18);
        output.WriteString(NodeName);
      }
      decorators_.WriteTo(ref output, _repeated_decorators_codec);
      services_.WriteTo(ref output, _repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        output.WriteRawTag(40);
        output.WriteBool(IgnoreRestartSelf);
      }
      if (HasText) {
        output.WriteRawTag(50);
        output.WriteString(Text);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasNodeName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      size += decorators_.CalculateSize(_repeated_decorators_codec);
      size += services_.CalculateSize(_repeated_services_codec);
      if (HasIgnoreRestartSelf) {
        size += 1 + 1;
      }
      if (HasText) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiDebugPrint other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasNodeName) {
        NodeName = other.NodeName;
      }
      decorators_.Add(other.decorators_);
      services_.Add(other.services_);
      if (other.HasIgnoreRestartSelf) {
        IgnoreRestartSelf = other.IgnoreRestartSelf;
      }
      if (other.HasText) {
        Text = other.Text;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            Text = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            NodeName = input.ReadString();
            break;
          }
          case 26: {
            decorators_.AddEntriesFrom(ref input, _repeated_decorators_codec);
            break;
          }
          case 34: {
            services_.AddEntriesFrom(ref input, _repeated_services_codec);
            break;
          }
          case 40: {
            IgnoreRestartSelf = input.ReadBool();
            break;
          }
          case 50: {
            Text = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 CommonGlobalConfig() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CommonGlobalConfig(CommonGlobalConfig other) : this() {
      _hasBits0 = other._hasBits0;
      bagCapacity_ = other.bagCapacity_;
      bagCapacitySpecial_ = other.bagCapacitySpecial_;
      bagTempExpendableCapacity_ = other.bagTempExpendableCapacity_;
      bagTempToolCapacity_ = other.bagTempToolCapacity_;
      bagInitCapacity_ = other.bagInitCapacity_;
      quickBagCapacity_ = other.quickBagCapacity_;
      clothBagCapacity_ = other.clothBagCapacity_;
      clothBagInitCapacity_ = other.clothBagInitCapacity_;
      clothBagCapacitySpecial_ = other.clothBagCapacitySpecial_;
      bagInitItemsDropId_ = other.bagInitItemsDropId_;
      mailBoxCapacity_ = other.mailBoxCapacity_;
      damageParamC_ = other.damageParamC_;
      damageParamE_ = other.damageParamE_;
      damageParamF_ = other.damageParamF_;
      damageParamD_ = other.damageParamD_;
      roleSpeed_ = other.roleSpeed_;
      monsterSpeed_ = other.monsterSpeed_;
      initEnergy_ = other.initEnergy_;
      initViality_ = other.initViality_;
      maxViality_ = other.maxViality_;
      perVialityRecoveryTime_ = other.perVialityRecoveryTime_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "bag_capacity" field.</summary>
    public const int BagCapacityFieldNumber = 1;
    private readonly static int BagCapacityDefaultValue = 0;

    private int bagCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BagCapacity {
      get { if ((_hasBits0 & 1) != 0) { return bagCapacity_; } else { return BagCapacityDefaultValue; } }
      set {
        _hasBits0 |= 1;
        bagCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "bag_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBagCapacity {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "bag_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBagCapacity() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "bag_capacity_special" field.</summary>
    public const int BagCapacitySpecialFieldNumber = 2;
    private readonly static int BagCapacitySpecialDefaultValue = 0;

    private int bagCapacitySpecial_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BagCapacitySpecial {
      get { if ((_hasBits0 & 2) != 0) { return bagCapacitySpecial_; } else { return BagCapacitySpecialDefaultValue; } }
      set {
        _hasBits0 |= 2;
        bagCapacitySpecial_ = value;
      }
    }
    /// <summary>Gets whether the "bag_capacity_special" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBagCapacitySpecial {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "bag_capacity_special" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBagCapacitySpecial() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "bag_temp_expendable_capacity" field.</summary>
    public const int BagTempExpendableCapacityFieldNumber = 3;
    private readonly static int BagTempExpendableCapacityDefaultValue = 0;

    private int bagTempExpendableCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BagTempExpendableCapacity {
      get { if ((_hasBits0 & 4) != 0) { return bagTempExpendableCapacity_; } else { return BagTempExpendableCapacityDefaultValue; } }
      set {
        _hasBits0 |= 4;
        bagTempExpendableCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "bag_temp_expendable_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBagTempExpendableCapacity {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "bag_temp_expendable_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBagTempExpendableCapacity() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "bag_temp_tool_capacity" field.</summary>
    public const int BagTempToolCapacityFieldNumber = 4;
    private readonly static int BagTempToolCapacityDefaultValue = 0;

    private int bagTempToolCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BagTempToolCapacity {
      get { if ((_hasBits0 & 8) != 0) { return bagTempToolCapacity_; } else { return BagTempToolCapacityDefaultValue; } }
      set {
        _hasBits0 |= 8;
        bagTempToolCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "bag_temp_tool_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBagTempToolCapacity {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "bag_temp_tool_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBagTempToolCapacity() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "bag_init_capacity" field.</summary>
    public const int BagInitCapacityFieldNumber = 5;
    private readonly static int BagInitCapacityDefaultValue = 0;

    private int bagInitCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BagInitCapacity {
      get { if ((_hasBits0 & 16) != 0) { return bagInitCapacity_; } else { return BagInitCapacityDefaultValue; } }
      set {
        _hasBits0 |= 16;
        bagInitCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "bag_init_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBagInitCapacity {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "bag_init_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBagInitCapacity() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "quick_bag_capacity" field.</summary>
    public const int QuickBagCapacityFieldNumber = 6;
    private readonly static int QuickBagCapacityDefaultValue = 0;

    private int quickBagCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int QuickBagCapacity {
      get { if ((_hasBits0 & 32) != 0) { return quickBagCapacity_; } else { return QuickBagCapacityDefaultValue; } }
      set {
        _hasBits0 |= 32;
        quickBagCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "quick_bag_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasQuickBagCapacity {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "quick_bag_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearQuickBagCapacity() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "cloth_bag_capacity" field.</summary>
    public const int ClothBagCapacityFieldNumber = 7;
    private readonly static int ClothBagCapacityDefaultValue = 0;

    private int clothBagCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ClothBagCapacity {
      get { if ((_hasBits0 & 64) != 0) { return clothBagCapacity_; } else { return ClothBagCapacityDefaultValue; } }
      set {
        _hasBits0 |= 64;
        clothBagCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "cloth_bag_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasClothBagCapacity {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "cloth_bag_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearClothBagCapacity() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "cloth_bag_init_capacity" field.</summary>
    public const int ClothBagInitCapacityFieldNumber = 8;
    private readonly static int ClothBagInitCapacityDefaultValue = 0;

    private int clothBagInitCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ClothBagInitCapacity {
      get { if ((_hasBits0 & 128) != 0) { return clothBagInitCapacity_; } else { return ClothBagInitCapacityDefaultValue; } }
      set {
        _hasBits0 |= 128;
        clothBagInitCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "cloth_bag_init_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasClothBagInitCapacity {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "cloth_bag_init_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearClothBagInitCapacity() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "cloth_bag_capacity_special" field.</summary>
    public const int ClothBagCapacitySpecialFieldNumber = 9;
    private readonly static int ClothBagCapacitySpecialDefaultValue = 0;

    private int clothBagCapacitySpecial_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ClothBagCapacitySpecial {
      get { if ((_hasBits0 & 256) != 0) { return clothBagCapacitySpecial_; } else { return ClothBagCapacitySpecialDefaultValue; } }
      set {
        _hasBits0 |= 256;
        clothBagCapacitySpecial_ = value;
      }
    }
    /// <summary>Gets whether the "cloth_bag_capacity_special" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasClothBagCapacitySpecial {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "cloth_bag_capacity_special" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearClothBagCapacitySpecial() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "bag_init_items_drop_id" field.</summary>
    public const int BagInitItemsDropIdFieldNumber = 10;
    private readonly static int BagInitItemsDropIdDefaultValue = 0;

    private int bagInitItemsDropId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BagInitItemsDropId {
      get { if ((_hasBits0 & 512) != 0) { return bagInitItemsDropId_; } else { return BagInitItemsDropIdDefaultValue; } }
      set {
        _hasBits0 |= 512;
        bagInitItemsDropId_ = value;
      }
    }
    /// <summary>Gets whether the "bag_init_items_drop_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBagInitItemsDropId {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "bag_init_items_drop_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBagInitItemsDropId() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "mail_box_capacity" field.</summary>
    public const int MailBoxCapacityFieldNumber = 11;
    private readonly static int MailBoxCapacityDefaultValue = 0;

    private int mailBoxCapacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int MailBoxCapacity {
      get { if ((_hasBits0 & 1024) != 0) { return mailBoxCapacity_; } else { return MailBoxCapacityDefaultValue; } }
      set {
        _hasBits0 |= 1024;
        mailBoxCapacity_ = value;
      }
    }
    /// <summary>Gets whether the "mail_box_capacity" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMailBoxCapacity {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "mail_box_capacity" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMailBoxCapacity() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "damage_param_c" field.</summary>
    public const int DamageParamCFieldNumber = 12;
    private readonly static float DamageParamCDefaultValue = 0F;

    private float damageParamC_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float DamageParamC {
      get { if ((_hasBits0 & 2048) != 0) { return damageParamC_; } else { return DamageParamCDefaultValue; } }
      set {
        _hasBits0 |= 2048;
        damageParamC_ = value;
      }
    }
    /// <summary>Gets whether the "damage_param_c" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDamageParamC {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "damage_param_c" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDamageParamC() {
      _hasBits0 &= ~2048;
    }

    /// <summary>Field number for the "damage_param_e" field.</summary>
    public const int DamageParamEFieldNumber = 13;
    private readonly static float DamageParamEDefaultValue = 0F;

    private float damageParamE_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float DamageParamE {
      get { if ((_hasBits0 & 4096) != 0) { return damageParamE_; } else { return DamageParamEDefaultValue; } }
      set {
        _hasBits0 |= 4096;
        damageParamE_ = value;
      }
    }
    /// <summary>Gets whether the "damage_param_e" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDamageParamE {
      get { return (_hasBits0 & 4096) != 0; }
    }
    /// <summary>Clears the value of the "damage_param_e" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDamageParamE() {
      _hasBits0 &= ~4096;
    }

    /// <summary>Field number for the "damage_param_f" field.</summary>
    public const int DamageParamFFieldNumber = 14;
    private readonly static float DamageParamFDefaultValue = 0F;

    private float damageParamF_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float DamageParamF {
      get { if ((_hasBits0 & 8192) != 0) { return damageParamF_; } else { return DamageParamFDefaultValue; } }
      set {
        _hasBits0 |= 8192;
        damageParamF_ = value;
      }
    }
    /// <summary>Gets whether the "damage_param_f" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDamageParamF {
      get { return (_hasBits0 & 8192) != 0; }
    }
    /// <summary>Clears the value of the "damage_param_f" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDamageParamF() {
      _hasBits0 &= ~8192;
    }

    /// <summary>Field number for the "damage_param_d" field.</summary>
    public const int DamageParamDFieldNumber = 15;
    private readonly static float DamageParamDDefaultValue = 0F;

    private float damageParamD_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float DamageParamD {
      get { if ((_hasBits0 & 16384) != 0) { return damageParamD_; } else { return DamageParamDDefaultValue; } }
      set {
        _hasBits0 |= 16384;
        damageParamD_ = value;
      }
    }
    /// <summary>Gets whether the "damage_param_d" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDamageParamD {
      get { return (_hasBits0 & 16384) != 0; }
    }
    /// <summary>Clears the value of the "damage_param_d" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDamageParamD() {
      _hasBits0 &= ~16384;
    }

    /// <summary>Field number for the "role_speed" field.</summary>
    public const int RoleSpeedFieldNumber = 16;
    private readonly static float RoleSpeedDefaultValue = 0F;

    private float roleSpeed_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float RoleSpeed {
      get { if ((_hasBits0 & 32768) != 0) { return roleSpeed_; } else { return RoleSpeedDefaultValue; } }
      set {
        _hasBits0 |= 32768;
        roleSpeed_ = value;
      }
    }
    /// <summary>Gets whether the "role_speed" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRoleSpeed {
      get { return (_hasBits0 & 32768) != 0; }
    }
    /// <summary>Clears the value of the "role_speed" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRoleSpeed() {
      _hasBits0 &= ~32768;
    }

    /// <summary>Field number for the "monster_speed" field.</summary>
    public const int MonsterSpeedFieldNumber = 17;
    private readonly static float MonsterSpeedDefaultValue = 0F;

    private float monsterSpeed_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float MonsterSpeed {
      get { if ((_hasBits0 & 65536) != 0) { return monsterSpeed_; } else { return MonsterSpeedDefaultValue; } }
      set {
        _hasBits0 |= 65536;
        monsterSpeed_ = value;
      }
    }
    /// <summary>Gets whether the "monster_speed" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMonsterSpeed {
      get { return (_hasBits0 & 65536) != 0; }
    }
    /// <summary>Clears the value of the "monster_speed" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMonsterSpeed() {
      _hasBits0 &= ~65536;
    }

    /// <summary>Field number for the "init_energy" field.</summary>
    public const int InitEnergyFieldNumber = 18;
    private readonly static int InitEnergyDefaultValue = 0;

    private int initEnergy_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int InitEnergy {
      get { if ((_hasBits0 & 131072) != 0) { return initEnergy_; } else { return InitEnergyDefaultValue; } }
      set {
        _hasBits0 |= 131072;
        initEnergy_ = value;
      }
    }
    /// <summary>Gets whether the "init_energy" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInitEnergy {
      get { return (_hasBits0 & 131072) != 0; }
    }
    /// <summary>Clears the value of the "init_energy" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInitEnergy() {
      _hasBits0 &= ~131072;
    }

    /// <summary>Field number for the "init_viality" field.</summary>
    public const int InitVialityFieldNumber = 19;
    private readonly static int InitVialityDefaultValue = 0;

    private int initViality_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int InitViality {
      get { if ((_hasBits0 & 262144) != 0) { return initViality_; } else { return InitVialityDefaultValue; } }
      set {
        _hasBits0 |= 262144;
        initViality_ = value;
      }
    }
    /// <summary>Gets whether the "init_viality" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInitViality {
      get { return (_hasBits0 & 262144) != 0; }
    }
    /// <summary>Clears the value of the "init_viality" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInitViality() {
      _hasBits0 &= ~262144;
    }

    /// <summary>Field number for the "max_viality" field.</summary>
    public const int MaxVialityFieldNumber = 20;
    private readonly static int MaxVialityDefaultValue = 0;

    private int maxViality_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int MaxViality {
      get { if ((_hasBits0 & 524288) != 0) { return maxViality_; } else { return MaxVialityDefaultValue; } }
      set {
        _hasBits0 |= 524288;
        maxViality_ = value;
      }
    }
    /// <summary>Gets whether the "max_viality" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMaxViality {
      get { return (_hasBits0 & 524288) != 0; }
    }
    /// <summary>Clears the value of the "max_viality" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMaxViality() {
      _hasBits0 &= ~524288;
    }

    /// <summary>Field number for the "per_viality_recovery_time" field.</summary>
    public const int PerVialityRecoveryTimeFieldNumber = 21;
    private readonly static int PerVialityRecoveryTimeDefaultValue = 0;

    private int perVialityRecoveryTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int PerVialityRecoveryTime {
      get { if ((_hasBits0 & 1048576) != 0) { return perVialityRecoveryTime_; } else { return PerVialityRecoveryTimeDefaultValue; } }
      set {
        _hasBits0 |= 1048576;
        perVialityRecoveryTime_ = value;
      }
    }
    /// <summary>Gets whether the "per_viality_recovery_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasPerVialityRecoveryTime {
      get { return (_hasBits0 & 1048576) != 0; }
    }
    /// <summary>Clears the value of the "per_viality_recovery_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPerVialityRecoveryTime() {
      _hasBits0 &= ~1048576;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CommonGlobalConfig other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (BagCapacity != other.BagCapacity) return false;
      if (BagCapacitySpecial != other.BagCapacitySpecial) return false;
      if (BagTempExpendableCapacity != other.BagTempExpendableCapacity) return false;
      if (BagTempToolCapacity != other.BagTempToolCapacity) return false;
      if (BagInitCapacity != other.BagInitCapacity) return false;
      if (QuickBagCapacity != other.QuickBagCapacity) return false;
      if (ClothBagCapacity != other.ClothBagCapacity) return false;
      if (ClothBagInitCapacity != other.ClothBagInitCapacity) return false;
      if (ClothBagCapacitySpecial != other.ClothBagCapacitySpecial) return false;
      if (BagInitItemsDropId != other.BagInitItemsDropId) return false;
      if (MailBoxCapacity != other.MailBoxCapacity) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(DamageParamC, other.DamageParamC)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(DamageParamE, other.DamageParamE)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(DamageParamF, other.DamageParamF)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(DamageParamD, other.DamageParamD)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(RoleSpeed, other.RoleSpeed)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(MonsterSpeed, other.MonsterSpeed)) return false;
      if (InitEnergy != other.InitEnergy) return false;
      if (InitViality != other.InitViality) return false;
      if (MaxViality != other.MaxViality) return false;
      if (PerVialityRecoveryTime != other.PerVialityRecoveryTime) 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 (HasBagCapacity) hash ^= BagCapacity.GetHashCode();
      if (HasBagCapacitySpecial) hash ^= BagCapacitySpecial.GetHashCode();
      if (HasBagTempExpendableCapacity) hash ^= BagTempExpendableCapacity.GetHashCode();
      if (HasBagTempToolCapacity) hash ^= BagTempToolCapacity.GetHashCode();
      if (HasBagInitCapacity) hash ^= BagInitCapacity.GetHashCode();
      if (HasQuickBagCapacity) hash ^= QuickBagCapacity.GetHashCode();
      if (HasClothBagCapacity) hash ^= ClothBagCapacity.GetHashCode();
      if (HasClothBagInitCapacity) hash ^= ClothBagInitCapacity.GetHashCode();
      if (HasClothBagCapacitySpecial) hash ^= ClothBagCapacitySpecial.GetHashCode();
      if (HasBagInitItemsDropId) hash ^= BagInitItemsDropId.GetHashCode();
      if (HasMailBoxCapacity) hash ^= MailBoxCapacity.GetHashCode();
      if (HasDamageParamC) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(DamageParamC);
      if (HasDamageParamE) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(DamageParamE);
      if (HasDamageParamF) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(DamageParamF);
      if (HasDamageParamD) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(DamageParamD);
      if (HasRoleSpeed) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(RoleSpeed);
      if (HasMonsterSpeed) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(MonsterSpeed);
      if (HasInitEnergy) hash ^= InitEnergy.GetHashCode();
      if (HasInitViality) hash ^= InitViality.GetHashCode();
      if (HasMaxViality) hash ^= MaxViality.GetHashCode();
      if (HasPerVialityRecoveryTime) hash ^= PerVialityRecoveryTime.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 (HasBagCapacity) {
        output.WriteRawTag(8);
        output.WriteInt32(BagCapacity);
      }
      if (HasBagCapacitySpecial) {
        output.WriteRawTag(16);
        output.WriteInt32(BagCapacitySpecial);
      }
      if (HasBagTempExpendableCapacity) {
        output.WriteRawTag(24);
        output.WriteInt32(BagTempExpendableCapacity);
      }
      if (HasBagTempToolCapacity) {
        output.WriteRawTag(32);
        output.WriteInt32(BagTempToolCapacity);
      }
      if (HasBagInitCapacity) {
        output.WriteRawTag(40);
        output.WriteInt32(BagInitCapacity);
      }
      if (HasQuickBagCapacity) {
        output.WriteRawTag(48);
        output.WriteInt32(QuickBagCapacity);
      }
      if (HasClothBagCapacity) {
        output.WriteRawTag(56);
        output.WriteInt32(ClothBagCapacity);
      }
      if (HasClothBagInitCapacity) {
        output.WriteRawTag(64);
        output.WriteInt32(ClothBagInitCapacity);
      }
      if (HasClothBagCapacitySpecial) {
        output.WriteRawTag(72);
        output.WriteInt32(ClothBagCapacitySpecial);
      }
      if (HasBagInitItemsDropId) {
        output.WriteRawTag(80);
        output.WriteInt32(BagInitItemsDropId);
      }
      if (HasMailBoxCapacity) {
        output.WriteRawTag(88);
        output.WriteInt32(MailBoxCapacity);
      }
      if (HasDamageParamC) {
        output.WriteRawTag(101);
        output.WriteFloat(DamageParamC);
      }
      if (HasDamageParamE) {
        output.WriteRawTag(109);
        output.WriteFloat(DamageParamE);
      }
      if (HasDamageParamF) {
        output.WriteRawTag(117);
        output.WriteFloat(DamageParamF);
      }
      if (HasDamageParamD) {
        output.WriteRawTag(125);
        output.WriteFloat(DamageParamD);
      }
      if (HasRoleSpeed) {
        output.WriteRawTag(133, 1);
        output.WriteFloat(RoleSpeed);
      }
      if (HasMonsterSpeed) {
        output.WriteRawTag(141, 1);
        output.WriteFloat(MonsterSpeed);
      }
      if (HasInitEnergy) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(InitEnergy);
      }
      if (HasInitViality) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(InitViality);
      }
      if (HasMaxViality) {
        output.WriteRawTag(160, 1);
        output.WriteInt32(MaxViality);
      }
      if (HasPerVialityRecoveryTime) {
        output.WriteRawTag(168, 1);
        output.WriteInt32(PerVialityRecoveryTime);
      }
      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 (HasBagCapacity) {
        output.WriteRawTag(8);
        output.WriteInt32(BagCapacity);
      }
      if (HasBagCapacitySpecial) {
        output.WriteRawTag(16);
        output.WriteInt32(BagCapacitySpecial);
      }
      if (HasBagTempExpendableCapacity) {
        output.WriteRawTag(24);
        output.WriteInt32(BagTempExpendableCapacity);
      }
      if (HasBagTempToolCapacity) {
        output.WriteRawTag(32);
        output.WriteInt32(BagTempToolCapacity);
      }
      if (HasBagInitCapacity) {
        output.WriteRawTag(40);
        output.WriteInt32(BagInitCapacity);
      }
      if (HasQuickBagCapacity) {
        output.WriteRawTag(48);
        output.WriteInt32(QuickBagCapacity);
      }
      if (HasClothBagCapacity) {
        output.WriteRawTag(56);
        output.WriteInt32(ClothBagCapacity);
      }
      if (HasClothBagInitCapacity) {
        output.WriteRawTag(64);
        output.WriteInt32(ClothBagInitCapacity);
      }
      if (HasClothBagCapacitySpecial) {
        output.WriteRawTag(72);
        output.WriteInt32(ClothBagCapacitySpecial);
      }
      if (HasBagInitItemsDropId) {
        output.WriteRawTag(80);
        output.WriteInt32(BagInitItemsDropId);
      }
      if (HasMailBoxCapacity) {
        output.WriteRawTag(88);
        output.WriteInt32(MailBoxCapacity);
      }
      if (HasDamageParamC) {
        output.WriteRawTag(101);
        output.WriteFloat(DamageParamC);
      }
      if (HasDamageParamE) {
        output.WriteRawTag(109);
        output.WriteFloat(DamageParamE);
      }
      if (HasDamageParamF) {
        output.WriteRawTag(117);
        output.WriteFloat(DamageParamF);
      }
      if (HasDamageParamD) {
        output.WriteRawTag(125);
        output.WriteFloat(DamageParamD);
      }
      if (HasRoleSpeed) {
        output.WriteRawTag(133, 1);
        output.WriteFloat(RoleSpeed);
      }
      if (HasMonsterSpeed) {
        output.WriteRawTag(141, 1);
        output.WriteFloat(MonsterSpeed);
      }
      if (HasInitEnergy) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(InitEnergy);
      }
      if (HasInitViality) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(InitViality);
      }
      if (HasMaxViality) {
        output.WriteRawTag(160, 1);
        output.WriteInt32(MaxViality);
      }
      if (HasPerVialityRecoveryTime) {
        output.WriteRawTag(168, 1);
        output.WriteInt32(PerVialityRecoveryTime);
      }
      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 (HasBagCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BagCapacity);
      }
      if (HasBagCapacitySpecial) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BagCapacitySpecial);
      }
      if (HasBagTempExpendableCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BagTempExpendableCapacity);
      }
      if (HasBagTempToolCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BagTempToolCapacity);
      }
      if (HasBagInitCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BagInitCapacity);
      }
      if (HasQuickBagCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(QuickBagCapacity);
      }
      if (HasClothBagCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ClothBagCapacity);
      }
      if (HasClothBagInitCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ClothBagInitCapacity);
      }
      if (HasClothBagCapacitySpecial) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ClothBagCapacitySpecial);
      }
      if (HasBagInitItemsDropId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BagInitItemsDropId);
      }
      if (HasMailBoxCapacity) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MailBoxCapacity);
      }
      if (HasDamageParamC) {
        size += 1 + 4;
      }
      if (HasDamageParamE) {
        size += 1 + 4;
      }
      if (HasDamageParamF) {
        size += 1 + 4;
      }
      if (HasDamageParamD) {
        size += 1 + 4;
      }
      if (HasRoleSpeed) {
        size += 2 + 4;
      }
      if (HasMonsterSpeed) {
        size += 2 + 4;
      }
      if (HasInitEnergy) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(InitEnergy);
      }
      if (HasInitViality) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(InitViality);
      }
      if (HasMaxViality) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(MaxViality);
      }
      if (HasPerVialityRecoveryTime) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(PerVialityRecoveryTime);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CommonGlobalConfig other) {
      if (other == null) {
        return;
      }
      if (other.HasBagCapacity) {
        BagCapacity = other.BagCapacity;
      }
      if (other.HasBagCapacitySpecial) {
        BagCapacitySpecial = other.BagCapacitySpecial;
      }
      if (other.HasBagTempExpendableCapacity) {
        BagTempExpendableCapacity = other.BagTempExpendableCapacity;
      }
      if (other.HasBagTempToolCapacity) {
        BagTempToolCapacity = other.BagTempToolCapacity;
      }
      if (other.HasBagInitCapacity) {
        BagInitCapacity = other.BagInitCapacity;
      }
      if (other.HasQuickBagCapacity) {
        QuickBagCapacity = other.QuickBagCapacity;
      }
      if (other.HasClothBagCapacity) {
        ClothBagCapacity = other.ClothBagCapacity;
      }
      if (other.HasClothBagInitCapacity) {
        ClothBagInitCapacity = other.ClothBagInitCapacity;
      }
      if (other.HasClothBagCapacitySpecial) {
        ClothBagCapacitySpecial = other.ClothBagCapacitySpecial;
      }
      if (other.HasBagInitItemsDropId) {
        BagInitItemsDropId = other.BagInitItemsDropId;
      }
      if (other.HasMailBoxCapacity) {
        MailBoxCapacity = other.MailBoxCapacity;
      }
      if (other.HasDamageParamC) {
        DamageParamC = other.DamageParamC;
      }
      if (other.HasDamageParamE) {
        DamageParamE = other.DamageParamE;
      }
      if (other.HasDamageParamF) {
        DamageParamF = other.DamageParamF;
      }
      if (other.HasDamageParamD) {
        DamageParamD = other.DamageParamD;
      }
      if (other.HasRoleSpeed) {
        RoleSpeed = other.RoleSpeed;
      }
      if (other.HasMonsterSpeed) {
        MonsterSpeed = other.MonsterSpeed;
      }
      if (other.HasInitEnergy) {
        InitEnergy = other.InitEnergy;
      }
      if (other.HasInitViality) {
        InitViality = other.InitViality;
      }
      if (other.HasMaxViality) {
        MaxViality = other.MaxViality;
      }
      if (other.HasPerVialityRecoveryTime) {
        PerVialityRecoveryTime = other.PerVialityRecoveryTime;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            BagCapacity = input.ReadInt32();
            break;
          }
          case 16: {
            BagCapacitySpecial = input.ReadInt32();
            break;
          }
          case 24: {
            BagTempExpendableCapacity = input.ReadInt32();
            break;
          }
          case 32: {
            BagTempToolCapacity = input.ReadInt32();
            break;
          }
          case 40: {
            BagInitCapacity = input.ReadInt32();
            break;
          }
          case 48: {
            QuickBagCapacity = input.ReadInt32();
            break;
          }
          case 56: {
            ClothBagCapacity = input.ReadInt32();
            break;
          }
          case 64: {
            ClothBagInitCapacity = input.ReadInt32();
            break;
          }
          case 72: {
            ClothBagCapacitySpecial = input.ReadInt32();
            break;
          }
          case 80: {
            BagInitItemsDropId = input.ReadInt32();
            break;
          }
          case 88: {
            MailBoxCapacity = input.ReadInt32();
            break;
          }
          case 101: {
            DamageParamC = input.ReadFloat();
            break;
          }
          case 109: {
            DamageParamE = input.ReadFloat();
            break;
          }
          case 117: {
            DamageParamF = input.ReadFloat();
            break;
          }
          case 125: {
            DamageParamD = input.ReadFloat();
            break;
          }
          case 133: {
            RoleSpeed = input.ReadFloat();
            break;
          }
          case 141: {
            MonsterSpeed = input.ReadFloat();
            break;
          }
          case 144: {
            InitEnergy = input.ReadInt32();
            break;
          }
          case 152: {
            InitViality = input.ReadInt32();
            break;
          }
          case 160: {
            MaxViality = input.ReadInt32();
            break;
          }
          case 168: {
            PerVialityRecoveryTime = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            BagCapacity = input.ReadInt32();
            break;
          }
          case 16: {
            BagCapacitySpecial = input.ReadInt32();
            break;
          }
          case 24: {
            BagTempExpendableCapacity = input.ReadInt32();
            break;
          }
          case 32: {
            BagTempToolCapacity = input.ReadInt32();
            break;
          }
          case 40: {
            BagInitCapacity = input.ReadInt32();
            break;
          }
          case 48: {
            QuickBagCapacity = input.ReadInt32();
            break;
          }
          case 56: {
            ClothBagCapacity = input.ReadInt32();
            break;
          }
          case 64: {
            ClothBagInitCapacity = input.ReadInt32();
            break;
          }
          case 72: {
            ClothBagCapacitySpecial = input.ReadInt32();
            break;
          }
          case 80: {
            BagInitItemsDropId = input.ReadInt32();
            break;
          }
          case 88: {
            MailBoxCapacity = input.ReadInt32();
            break;
          }
          case 101: {
            DamageParamC = input.ReadFloat();
            break;
          }
          case 109: {
            DamageParamE = input.ReadFloat();
            break;
          }
          case 117: {
            DamageParamF = input.ReadFloat();
            break;
          }
          case 125: {
            DamageParamD = input.ReadFloat();
            break;
          }
          case 133: {
            RoleSpeed = input.ReadFloat();
            break;
          }
          case 141: {
            MonsterSpeed = input.ReadFloat();
            break;
          }
          case 144: {
            InitEnergy = input.ReadInt32();
            break;
          }
          case 152: {
            InitViality = input.ReadInt32();
            break;
          }
          case 160: {
            MaxViality = input.ReadInt32();
            break;
          }
          case 168: {
            PerVialityRecoveryTime = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 ItemItem() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemItem(ItemItem other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      name_ = other.name_;
      majorType_ = other.majorType_;
      minorType_ = other.minorType_;
      maxPileNum_ = other.maxPileNum_;
      quality_ = other.quality_;
      icon_ = other.icon_;
      iconBackgroud_ = other.iconBackgroud_;
      iconMask_ = other.iconMask_;
      desc_ = other.desc_;
      showOrder_ = other.showOrder_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "major_type" field.</summary>
    public const int MajorTypeFieldNumber = 3;
    private readonly static global::Cfg.ItemEMajorType MajorTypeDefaultValue = global::Cfg.ItemEMajorType.Currency;

    private global::Cfg.ItemEMajorType majorType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemEMajorType MajorType {
      get { if ((_hasBits0 & 2) != 0) { return majorType_; } else { return MajorTypeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        majorType_ = value;
      }
    }
    /// <summary>Gets whether the "major_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMajorType {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "major_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMajorType() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "minor_type" field.</summary>
    public const int MinorTypeFieldNumber = 4;
    private readonly static global::Cfg.ItemEMinorType MinorTypeDefaultValue = global::Cfg.ItemEMinorType.Diamond;

    private global::Cfg.ItemEMinorType minorType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemEMinorType MinorType {
      get { if ((_hasBits0 & 4) != 0) { return minorType_; } else { return MinorTypeDefaultValue; } }
      set {
        _hasBits0 |= 4;
        minorType_ = value;
      }
    }
    /// <summary>Gets whether the "minor_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMinorType {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "minor_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMinorType() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "max_pile_num" field.</summary>
    public const int MaxPileNumFieldNumber = 5;
    private readonly static int MaxPileNumDefaultValue = 0;

    private int maxPileNum_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int MaxPileNum {
      get { if ((_hasBits0 & 8) != 0) { return maxPileNum_; } else { return MaxPileNumDefaultValue; } }
      set {
        _hasBits0 |= 8;
        maxPileNum_ = value;
      }
    }
    /// <summary>Gets whether the "max_pile_num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMaxPileNum {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "max_pile_num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMaxPileNum() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "quality" field.</summary>
    public const int QualityFieldNumber = 6;
    private readonly static global::Cfg.ItemEItemQuality QualityDefaultValue = global::Cfg.ItemEItemQuality.White;

    private global::Cfg.ItemEItemQuality quality_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemEItemQuality Quality {
      get { if ((_hasBits0 & 16) != 0) { return quality_; } else { return QualityDefaultValue; } }
      set {
        _hasBits0 |= 16;
        quality_ = value;
      }
    }
    /// <summary>Gets whether the "quality" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasQuality {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "quality" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearQuality() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "icon" field.</summary>
    public const int IconFieldNumber = 7;
    private readonly static string IconDefaultValue = "";

    private string icon_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Icon {
      get { return icon_ ?? IconDefaultValue; }
      set {
        icon_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "icon" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIcon {
      get { return icon_ != null; }
    }
    /// <summary>Clears the value of the "icon" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIcon() {
      icon_ = null;
    }

    /// <summary>Field number for the "icon_backgroud" field.</summary>
    public const int IconBackgroudFieldNumber = 8;
    private readonly static string IconBackgroudDefaultValue = "";

    private string iconBackgroud_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string IconBackgroud {
      get { return iconBackgroud_ ?? IconBackgroudDefaultValue; }
      set {
        iconBackgroud_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "icon_backgroud" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIconBackgroud {
      get { return iconBackgroud_ != null; }
    }
    /// <summary>Clears the value of the "icon_backgroud" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIconBackgroud() {
      iconBackgroud_ = null;
    }

    /// <summary>Field number for the "icon_mask" field.</summary>
    public const int IconMaskFieldNumber = 9;
    private readonly static string IconMaskDefaultValue = "";

    private string iconMask_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string IconMask {
      get { return iconMask_ ?? IconMaskDefaultValue; }
      set {
        iconMask_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "icon_mask" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasIconMask {
      get { return iconMask_ != null; }
    }
    /// <summary>Clears the value of the "icon_mask" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearIconMask() {
      iconMask_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 10;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "show_order" field.</summary>
    public const int ShowOrderFieldNumber = 11;
    private readonly static int ShowOrderDefaultValue = 0;

    private int showOrder_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ShowOrder {
      get { if ((_hasBits0 & 32) != 0) { return showOrder_; } else { return ShowOrderDefaultValue; } }
      set {
        _hasBits0 |= 32;
        showOrder_ = value;
      }
    }
    /// <summary>Gets whether the "show_order" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasShowOrder {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "show_order" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearShowOrder() {
      _hasBits0 &= ~32;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemItem other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (MajorType != other.MajorType) return false;
      if (MinorType != other.MinorType) return false;
      if (MaxPileNum != other.MaxPileNum) return false;
      if (Quality != other.Quality) return false;
      if (Icon != other.Icon) return false;
      if (IconBackgroud != other.IconBackgroud) return false;
      if (IconMask != other.IconMask) return false;
      if (Desc != other.Desc) return false;
      if (ShowOrder != other.ShowOrder) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (HasMajorType) hash ^= MajorType.GetHashCode();
      if (HasMinorType) hash ^= MinorType.GetHashCode();
      if (HasMaxPileNum) hash ^= MaxPileNum.GetHashCode();
      if (HasQuality) hash ^= Quality.GetHashCode();
      if (HasIcon) hash ^= Icon.GetHashCode();
      if (HasIconBackgroud) hash ^= IconBackgroud.GetHashCode();
      if (HasIconMask) hash ^= IconMask.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasShowOrder) hash ^= ShowOrder.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasMajorType) {
        output.WriteRawTag(24);
        output.WriteEnum((int) MajorType);
      }
      if (HasMinorType) {
        output.WriteRawTag(32);
        output.WriteEnum((int) MinorType);
      }
      if (HasMaxPileNum) {
        output.WriteRawTag(40);
        output.WriteInt32(MaxPileNum);
      }
      if (HasQuality) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Quality);
      }
      if (HasIcon) {
        output.WriteRawTag(58);
        output.WriteString(Icon);
      }
      if (HasIconBackgroud) {
        output.WriteRawTag(66);
        output.WriteString(IconBackgroud);
      }
      if (HasIconMask) {
        output.WriteRawTag(74);
        output.WriteString(IconMask);
      }
      if (HasDesc) {
        output.WriteRawTag(82);
        output.WriteString(Desc);
      }
      if (HasShowOrder) {
        output.WriteRawTag(88);
        output.WriteInt32(ShowOrder);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasMajorType) {
        output.WriteRawTag(24);
        output.WriteEnum((int) MajorType);
      }
      if (HasMinorType) {
        output.WriteRawTag(32);
        output.WriteEnum((int) MinorType);
      }
      if (HasMaxPileNum) {
        output.WriteRawTag(40);
        output.WriteInt32(MaxPileNum);
      }
      if (HasQuality) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Quality);
      }
      if (HasIcon) {
        output.WriteRawTag(58);
        output.WriteString(Icon);
      }
      if (HasIconBackgroud) {
        output.WriteRawTag(66);
        output.WriteString(IconBackgroud);
      }
      if (HasIconMask) {
        output.WriteRawTag(74);
        output.WriteString(IconMask);
      }
      if (HasDesc) {
        output.WriteRawTag(82);
        output.WriteString(Desc);
      }
      if (HasShowOrder) {
        output.WriteRawTag(88);
        output.WriteInt32(ShowOrder);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasMajorType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MajorType);
      }
      if (HasMinorType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MinorType);
      }
      if (HasMaxPileNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPileNum);
      }
      if (HasQuality) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Quality);
      }
      if (HasIcon) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Icon);
      }
      if (HasIconBackgroud) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(IconBackgroud);
      }
      if (HasIconMask) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(IconMask);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasShowOrder) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ShowOrder);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemItem other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasMajorType) {
        MajorType = other.MajorType;
      }
      if (other.HasMinorType) {
        MinorType = other.MinorType;
      }
      if (other.HasMaxPileNum) {
        MaxPileNum = other.MaxPileNum;
      }
      if (other.HasQuality) {
        Quality = other.Quality;
      }
      if (other.HasIcon) {
        Icon = other.Icon;
      }
      if (other.HasIconBackgroud) {
        IconBackgroud = other.IconBackgroud;
      }
      if (other.HasIconMask) {
        IconMask = other.IconMask;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasShowOrder) {
        ShowOrder = other.ShowOrder;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 24: {
            MajorType = (global::Cfg.ItemEMajorType) input.ReadEnum();
            break;
          }
          case 32: {
            MinorType = (global::Cfg.ItemEMinorType) input.ReadEnum();
            break;
          }
          case 40: {
            MaxPileNum = input.ReadInt32();
            break;
          }
          case 48: {
            Quality = (global::Cfg.ItemEItemQuality) input.ReadEnum();
            break;
          }
          case 58: {
            Icon = input.ReadString();
            break;
          }
          case 66: {
            IconBackgroud = input.ReadString();
            break;
          }
          case 74: {
            IconMask = input.ReadString();
            break;
          }
          case 82: {
            Desc = input.ReadString();
            break;
          }
          case 88: {
            ShowOrder = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 24: {
            MajorType = (global::Cfg.ItemEMajorType) input.ReadEnum();
            break;
          }
          case 32: {
            MinorType = (global::Cfg.ItemEMinorType) input.ReadEnum();
            break;
          }
          case 40: {
            MaxPileNum = input.ReadInt32();
            break;
          }
          case 48: {
            Quality = (global::Cfg.ItemEItemQuality) input.ReadEnum();
            break;
          }
          case 58: {
            Icon = input.ReadString();
            break;
          }
          case 66: {
            IconBackgroud = input.ReadString();
            break;
          }
          case 74: {
            IconMask = input.ReadString();
            break;
          }
          case 82: {
            Desc = input.ReadString();
            break;
          }
          case 88: {
            ShowOrder = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 L10nL10NDemo() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "text" field.</summary>
    public const int TextFieldNumber = 2;
    private readonly static string TextDefaultValue = "";

    private string text_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Text {
      get { return text_ ?? TextDefaultValue; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "text" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasText {
      get { return text_ != null; }
    }
    /// <summary>Clears the value of the "text" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearText() {
      text_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(L10nL10NDemo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Text != other.Text) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasText) hash ^= Text.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasText) {
        output.WriteRawTag(18);
        output.WriteString(Text);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasText) {
        output.WriteRawTag(18);
        output.WriteString(Text);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasText) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(L10nL10NDemo other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasText) {
        Text = other.Text;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Text = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Text = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 L10nPatchDemo() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 2;
    private readonly static int ValueDefaultValue = 0;

    private int value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Value {
      get { if ((_hasBits0 & 2) != 0) { return value_; } else { return ValueDefaultValue; } }
      set {
        _hasBits0 |= 2;
        value_ = value;
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(L10nPatchDemo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Value != other.Value) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasValue) hash ^= Value.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasValue) {
        output.WriteRawTag(16);
        output.WriteInt32(Value);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasValue) {
        output.WriteRawTag(16);
        output.WriteInt32(Value);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasValue) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(L10nPatchDemo other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            Value = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            Value = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TagTestTag() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 2;
    private readonly static string ValueDefaultValue = "";

    private string value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Value {
      get { return value_ ?? ValueDefaultValue; }
      set {
        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return value_ != null; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TagTestTag other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Value != other.Value) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasValue) hash ^= Value.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasValue) {
        output.WriteRawTag(18);
        output.WriteString(Value);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasValue) {
        output.WriteRawTag(18);
        output.WriteString(Value);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasValue) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TagTestTag other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Value = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Value = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoType2() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDemoType2(TestDemoType2 other) : this() {
      _hasBits0 = other._hasBits0;
      x4_ = other.x4_;
      x1_ = other.x1_;
      x2_ = other.x2_;
      x3_ = other.x3_;
      x5_ = other.x5_;
      x6_ = other.x6_;
      x7_ = other.x7_;
      x80_ = other.x80_;
      x8_ = other.x8_;
      x9_ = other.x9_;
      x10_ = other.x10_;
      x12_ = other.x12_ != null ? other.x12_.Clone() : null;
      x13_ = other.x13_;
      x14_ = other.x14_ != null ? other.x14_.Clone() : null;
      s1_ = other.s1_;
      t1_ = other.t1_;
      k1_ = other.k1_.Clone();
      k2_ = other.k2_.Clone();
      k5_ = other.k5_.Clone();
      k8_ = other.k8_.Clone();
      k9_ = other.k9_.Clone();
      k15_ = other.k15_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 1;
    private readonly static int X4DefaultValue = 0;

    private int x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X4 {
      get { if ((_hasBits0 & 1) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private readonly static bool X1DefaultValue = false;

    private bool x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool X1 {
      get { if ((_hasBits0 & 2) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 3;
    private readonly static int X2DefaultValue = 0;

    private int x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X2 {
      get { if ((_hasBits0 & 4) != 0) { return x2_; } else { return X2DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x2_ = value;
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 4;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 8) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 8;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "x5" field.</summary>
    public const int X5FieldNumber = 5;
    private readonly static long X5DefaultValue = 0L;

    private long x5_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long X5 {
      get { if ((_hasBits0 & 16) != 0) { return x5_; } else { return X5DefaultValue; } }
      set {
        _hasBits0 |= 16;
        x5_ = value;
      }
    }
    /// <summary>Gets whether the "x5" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX5 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "x5" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX5() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "x6" field.</summary>
    public const int X6FieldNumber = 6;
    private readonly static float X6DefaultValue = 0F;

    private float x6_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X6 {
      get { if ((_hasBits0 & 32) != 0) { return x6_; } else { return X6DefaultValue; } }
      set {
        _hasBits0 |= 32;
        x6_ = value;
      }
    }
    /// <summary>Gets whether the "x6" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX6 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "x6" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX6() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "x7" field.</summary>
    public const int X7FieldNumber = 7;
    private readonly static double X7DefaultValue = 0D;

    private double x7_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public double X7 {
      get { if ((_hasBits0 & 64) != 0) { return x7_; } else { return X7DefaultValue; } }
      set {
        _hasBits0 |= 64;
        x7_ = value;
      }
    }
    /// <summary>Gets whether the "x7" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX7 {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "x7" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX7() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "x8_0" field.</summary>
    public const int X80FieldNumber = 8;
    private readonly static int X80DefaultValue = 0;

    private int x80_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X80 {
      get { if ((_hasBits0 & 128) != 0) { return x80_; } else { return X80DefaultValue; } }
      set {
        _hasBits0 |= 128;
        x80_ = value;
      }
    }
    /// <summary>Gets whether the "x8_0" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX80 {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "x8_0" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX80() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "x8" field.</summary>
    public const int X8FieldNumber = 9;
    private readonly static int X8DefaultValue = 0;

    private int x8_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X8 {
      get { if ((_hasBits0 & 256) != 0) { return x8_; } else { return X8DefaultValue; } }
      set {
        _hasBits0 |= 256;
        x8_ = value;
      }
    }
    /// <summary>Gets whether the "x8" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX8 {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "x8" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX8() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "x9" field.</summary>
    public const int X9FieldNumber = 10;
    private readonly static long X9DefaultValue = 0L;

    private long x9_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long X9 {
      get { if ((_hasBits0 & 512) != 0) { return x9_; } else { return X9DefaultValue; } }
      set {
        _hasBits0 |= 512;
        x9_ = value;
      }
    }
    /// <summary>Gets whether the "x9" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX9 {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "x9" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX9() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "x10" field.</summary>
    public const int X10FieldNumber = 11;
    private readonly static string X10DefaultValue = "";

    private string x10_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string X10 {
      get { return x10_ ?? X10DefaultValue; }
      set {
        x10_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "x10" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX10 {
      get { return x10_ != null; }
    }
    /// <summary>Clears the value of the "x10" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX10() {
      x10_ = null;
    }

    /// <summary>Field number for the "x12" field.</summary>
    public const int X12FieldNumber = 12;
    private global::Cfg.TestDemoType1 x12_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoType1 X12 {
      get { return x12_; }
      set {
        x12_ = value;
      }
    }

    /// <summary>Field number for the "x13" field.</summary>
    public const int X13FieldNumber = 13;
    private readonly static global::Cfg.TestDemoEnum X13DefaultValue = global::Cfg.TestDemoEnum.None;

    private global::Cfg.TestDemoEnum x13_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoEnum X13 {
      get { if ((_hasBits0 & 1024) != 0) { return x13_; } else { return X13DefaultValue; } }
      set {
        _hasBits0 |= 1024;
        x13_ = value;
      }
    }
    /// <summary>Gets whether the "x13" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX13 {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "x13" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX13() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "x14" field.</summary>
    public const int X14FieldNumber = 14;
    private global::Cfg.TestDemoDynamic x14_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoDynamic X14 {
      get { return x14_; }
      set {
        x14_ = value;
      }
    }

    /// <summary>Field number for the "s1" field.</summary>
    public const int S1FieldNumber = 15;
    private readonly static string S1DefaultValue = "";

    private string s1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S1 {
      get { return s1_ ?? S1DefaultValue; }
      set {
        s1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS1 {
      get { return s1_ != null; }
    }
    /// <summary>Clears the value of the "s1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS1() {
      s1_ = null;
    }

    /// <summary>Field number for the "t1" field.</summary>
    public const int T1FieldNumber = 16;
    private readonly static long T1DefaultValue = 0L;

    private long t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long T1 {
      get { if ((_hasBits0 & 2048) != 0) { return t1_; } else { return T1DefaultValue; } }
      set {
        _hasBits0 |= 2048;
        t1_ = value;
      }
    }
    /// <summary>Gets whether the "t1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasT1 {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "t1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearT1() {
      _hasBits0 &= ~2048;
    }

    /// <summary>Field number for the "k1" field.</summary>
    public const int K1FieldNumber = 17;
    private static readonly pb::FieldCodec<int> _repeated_k1_codec
        = pb::FieldCodec.ForInt32(138);
    private readonly pbc::RepeatedField<int> k1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> K1 {
      get { return k1_; }
    }

    /// <summary>Field number for the "k2" field.</summary>
    public const int K2FieldNumber = 18;
    private static readonly pb::FieldCodec<int> _repeated_k2_codec
        = pb::FieldCodec.ForInt32(146);
    private readonly pbc::RepeatedField<int> k2_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> K2 {
      get { return k2_; }
    }

    /// <summary>Field number for the "k5" field.</summary>
    public const int K5FieldNumber = 19;
    private static readonly pb::FieldCodec<int> _repeated_k5_codec
        = pb::FieldCodec.ForInt32(154);
    private readonly pbc::RepeatedField<int> k5_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> K5 {
      get { return k5_; }
    }

    /// <summary>Field number for the "k8" field.</summary>
    public const int K8FieldNumber = 20;
    private static readonly pbc::MapField<int, int>.Codec _map_k8_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 162);
    private readonly pbc::MapField<int, int> k8_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> K8 {
      get { return k8_; }
    }

    /// <summary>Field number for the "k9" field.</summary>
    public const int K9FieldNumber = 21;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoE2> _repeated_k9_codec
        = pb::FieldCodec.ForMessage(170, global::Cfg.TestDemoE2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoE2> k9_ = new pbc::RepeatedField<global::Cfg.TestDemoE2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoE2> K9 {
      get { return k9_; }
    }

    /// <summary>Field number for the "k15" field.</summary>
    public const int K15FieldNumber = 22;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoDynamic> _repeated_k15_codec
        = pb::FieldCodec.ForMessage(178, global::Cfg.TestDemoDynamic.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoDynamic> k15_ = new pbc::RepeatedField<global::Cfg.TestDemoDynamic>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoDynamic> K15 {
      get { return k15_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoType2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X4 != other.X4) return false;
      if (X1 != other.X1) return false;
      if (X2 != other.X2) return false;
      if (X3 != other.X3) return false;
      if (X5 != other.X5) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X6, other.X6)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(X7, other.X7)) return false;
      if (X80 != other.X80) return false;
      if (X8 != other.X8) return false;
      if (X9 != other.X9) return false;
      if (X10 != other.X10) return false;
      if (!object.Equals(X12, other.X12)) return false;
      if (X13 != other.X13) return false;
      if (!object.Equals(X14, other.X14)) return false;
      if (S1 != other.S1) return false;
      if (T1 != other.T1) return false;
      if(!k1_.Equals(other.k1_)) return false;
      if(!k2_.Equals(other.k2_)) return false;
      if(!k5_.Equals(other.k5_)) return false;
      if (!K8.Equals(other.K8)) return false;
      if(!k9_.Equals(other.k9_)) return false;
      if(!k15_.Equals(other.k15_)) 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 (HasX4) hash ^= X4.GetHashCode();
      if (HasX1) hash ^= X1.GetHashCode();
      if (HasX2) hash ^= X2.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasX5) hash ^= X5.GetHashCode();
      if (HasX6) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X6);
      if (HasX7) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(X7);
      if (HasX80) hash ^= X80.GetHashCode();
      if (HasX8) hash ^= X8.GetHashCode();
      if (HasX9) hash ^= X9.GetHashCode();
      if (HasX10) hash ^= X10.GetHashCode();
      if (x12_ != null) hash ^= X12.GetHashCode();
      if (HasX13) hash ^= X13.GetHashCode();
      if (x14_ != null) hash ^= X14.GetHashCode();
      if (HasS1) hash ^= S1.GetHashCode();
      if (HasT1) hash ^= T1.GetHashCode();
      hash ^= k1_.GetHashCode();
      hash ^= k2_.GetHashCode();
      hash ^= k5_.GetHashCode();
      hash ^= K8.GetHashCode();
      hash ^= k9_.GetHashCode();
      hash ^= k15_.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 (HasX4) {
        output.WriteRawTag(8);
        output.WriteInt32(X4);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteBool(X1);
      }
      if (HasX2) {
        output.WriteRawTag(24);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(32);
        output.WriteInt32(X3);
      }
      if (HasX5) {
        output.WriteRawTag(40);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(53);
        output.WriteFloat(X6);
      }
      if (HasX7) {
        output.WriteRawTag(57);
        output.WriteDouble(X7);
      }
      if (HasX80) {
        output.WriteRawTag(64);
        output.WriteInt32(X80);
      }
      if (HasX8) {
        output.WriteRawTag(72);
        output.WriteInt32(X8);
      }
      if (HasX9) {
        output.WriteRawTag(80);
        output.WriteInt64(X9);
      }
      if (HasX10) {
        output.WriteRawTag(90);
        output.WriteString(X10);
      }
      if (x12_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(X12);
      }
      if (HasX13) {
        output.WriteRawTag(104);
        output.WriteEnum((int) X13);
      }
      if (x14_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(X14);
      }
      if (HasS1) {
        output.WriteRawTag(122);
        output.WriteString(S1);
      }
      if (HasT1) {
        output.WriteRawTag(128, 1);
        output.WriteInt64(T1);
      }
      k1_.WriteTo(output, _repeated_k1_codec);
      k2_.WriteTo(output, _repeated_k2_codec);
      k5_.WriteTo(output, _repeated_k5_codec);
      k8_.WriteTo(output, _map_k8_codec);
      k9_.WriteTo(output, _repeated_k9_codec);
      k15_.WriteTo(output, _repeated_k15_codec);
      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 (HasX4) {
        output.WriteRawTag(8);
        output.WriteInt32(X4);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteBool(X1);
      }
      if (HasX2) {
        output.WriteRawTag(24);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(32);
        output.WriteInt32(X3);
      }
      if (HasX5) {
        output.WriteRawTag(40);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(53);
        output.WriteFloat(X6);
      }
      if (HasX7) {
        output.WriteRawTag(57);
        output.WriteDouble(X7);
      }
      if (HasX80) {
        output.WriteRawTag(64);
        output.WriteInt32(X80);
      }
      if (HasX8) {
        output.WriteRawTag(72);
        output.WriteInt32(X8);
      }
      if (HasX9) {
        output.WriteRawTag(80);
        output.WriteInt64(X9);
      }
      if (HasX10) {
        output.WriteRawTag(90);
        output.WriteString(X10);
      }
      if (x12_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(X12);
      }
      if (HasX13) {
        output.WriteRawTag(104);
        output.WriteEnum((int) X13);
      }
      if (x14_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(X14);
      }
      if (HasS1) {
        output.WriteRawTag(122);
        output.WriteString(S1);
      }
      if (HasT1) {
        output.WriteRawTag(128, 1);
        output.WriteInt64(T1);
      }
      k1_.WriteTo(ref output, _repeated_k1_codec);
      k2_.WriteTo(ref output, _repeated_k2_codec);
      k5_.WriteTo(ref output, _repeated_k5_codec);
      k8_.WriteTo(ref output, _map_k8_codec);
      k9_.WriteTo(ref output, _repeated_k9_codec);
      k15_.WriteTo(ref output, _repeated_k15_codec);
      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 (HasX4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X4);
      }
      if (HasX1) {
        size += 1 + 1;
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X2);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasX5) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(X5);
      }
      if (HasX6) {
        size += 1 + 4;
      }
      if (HasX7) {
        size += 1 + 8;
      }
      if (HasX80) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X80);
      }
      if (HasX8) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X8);
      }
      if (HasX9) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(X9);
      }
      if (HasX10) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(X10);
      }
      if (x12_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X12);
      }
      if (HasX13) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) X13);
      }
      if (x14_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X14);
      }
      if (HasS1) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S1);
      }
      if (HasT1) {
        size += 2 + pb::CodedOutputStream.ComputeInt64Size(T1);
      }
      size += k1_.CalculateSize(_repeated_k1_codec);
      size += k2_.CalculateSize(_repeated_k2_codec);
      size += k5_.CalculateSize(_repeated_k5_codec);
      size += k8_.CalculateSize(_map_k8_codec);
      size += k9_.CalculateSize(_repeated_k9_codec);
      size += k15_.CalculateSize(_repeated_k15_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoType2 other) {
      if (other == null) {
        return;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasX5) {
        X5 = other.X5;
      }
      if (other.HasX6) {
        X6 = other.X6;
      }
      if (other.HasX7) {
        X7 = other.X7;
      }
      if (other.HasX80) {
        X80 = other.X80;
      }
      if (other.HasX8) {
        X8 = other.X8;
      }
      if (other.HasX9) {
        X9 = other.X9;
      }
      if (other.HasX10) {
        X10 = other.X10;
      }
      if (other.x12_ != null) {
        if (x12_ == null) {
          X12 = new global::Cfg.TestDemoType1();
        }
        X12.MergeFrom(other.X12);
      }
      if (other.HasX13) {
        X13 = other.X13;
      }
      if (other.x14_ != null) {
        if (x14_ == null) {
          X14 = new global::Cfg.TestDemoDynamic();
        }
        X14.MergeFrom(other.X14);
      }
      if (other.HasS1) {
        S1 = other.S1;
      }
      if (other.HasT1) {
        T1 = other.T1;
      }
      k1_.Add(other.k1_);
      k2_.Add(other.k2_);
      k5_.Add(other.k5_);
      k8_.MergeFrom(other.k8_);
      k9_.Add(other.k9_);
      k15_.Add(other.k15_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X4 = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadBool();
            break;
          }
          case 24: {
            X2 = input.ReadInt32();
            break;
          }
          case 32: {
            X3 = input.ReadInt32();
            break;
          }
          case 40: {
            X5 = input.ReadInt64();
            break;
          }
          case 53: {
            X6 = input.ReadFloat();
            break;
          }
          case 57: {
            X7 = input.ReadDouble();
            break;
          }
          case 64: {
            X80 = input.ReadInt32();
            break;
          }
          case 72: {
            X8 = input.ReadInt32();
            break;
          }
          case 80: {
            X9 = input.ReadInt64();
            break;
          }
          case 90: {
            X10 = input.ReadString();
            break;
          }
          case 98: {
            if (x12_ == null) {
              X12 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X12);
            break;
          }
          case 104: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 114: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 122: {
            S1 = input.ReadString();
            break;
          }
          case 128: {
            T1 = input.ReadInt64();
            break;
          }
          case 138:
          case 136: {
            k1_.AddEntriesFrom(input, _repeated_k1_codec);
            break;
          }
          case 146:
          case 144: {
            k2_.AddEntriesFrom(input, _repeated_k2_codec);
            break;
          }
          case 154:
          case 152: {
            k5_.AddEntriesFrom(input, _repeated_k5_codec);
            break;
          }
          case 162: {
            k8_.AddEntriesFrom(input, _map_k8_codec);
            break;
          }
          case 170: {
            k9_.AddEntriesFrom(input, _repeated_k9_codec);
            break;
          }
          case 178: {
            k15_.AddEntriesFrom(input, _repeated_k15_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X4 = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadBool();
            break;
          }
          case 24: {
            X2 = input.ReadInt32();
            break;
          }
          case 32: {
            X3 = input.ReadInt32();
            break;
          }
          case 40: {
            X5 = input.ReadInt64();
            break;
          }
          case 53: {
            X6 = input.ReadFloat();
            break;
          }
          case 57: {
            X7 = input.ReadDouble();
            break;
          }
          case 64: {
            X80 = input.ReadInt32();
            break;
          }
          case 72: {
            X8 = input.ReadInt32();
            break;
          }
          case 80: {
            X9 = input.ReadInt64();
            break;
          }
          case 90: {
            X10 = input.ReadString();
            break;
          }
          case 98: {
            if (x12_ == null) {
              X12 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X12);
            break;
          }
          case 104: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 114: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 122: {
            S1 = input.ReadString();
            break;
          }
          case 128: {
            T1 = input.ReadInt64();
            break;
          }
          case 138:
          case 136: {
            k1_.AddEntriesFrom(ref input, _repeated_k1_codec);
            break;
          }
          case 146:
          case 144: {
            k2_.AddEntriesFrom(ref input, _repeated_k2_codec);
            break;
          }
          case 154:
          case 152: {
            k5_.AddEntriesFrom(ref input, _repeated_k5_codec);
            break;
          }
          case 162: {
            k8_.AddEntriesFrom(ref input, _map_k8_codec);
            break;
          }
          case 170: {
            k9_.AddEntriesFrom(ref input, _repeated_k9_codec);
            break;
          }
          case 178: {
            k15_.AddEntriesFrom(ref input, _repeated_k15_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoType1() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoType1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) 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 (HasX1) hash ^= X1.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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      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 (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoType1 other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoDynamic() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDemoDynamic(TestDemoDynamic other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.DemoD2:
          DemoD2 = other.DemoD2.Clone();
          break;
        case ValueOneofCase.DemoE1:
          DemoE1 = other.DemoE1.Clone();
          break;
        case ValueOneofCase.RoleInfo:
          RoleInfo = other.RoleInfo.Clone();
          break;
        case ValueOneofCase.DemoD5:
          DemoD5 = other.DemoD5.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "DemoD2" field.</summary>
    public const int DemoD2FieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoD2 DemoD2 {
      get { return valueCase_ == ValueOneofCase.DemoD2 ? (global::Cfg.TestDemoD2) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DemoD2;
      }
    }

    /// <summary>Field number for the "DemoE1" field.</summary>
    public const int DemoE1FieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoE1 DemoE1 {
      get { return valueCase_ == ValueOneofCase.DemoE1 ? (global::Cfg.TestDemoE1) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DemoE1;
      }
    }

    /// <summary>Field number for the "RoleInfo" field.</summary>
    public const int RoleInfoFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestLoginRoleInfo RoleInfo {
      get { return valueCase_ == ValueOneofCase.RoleInfo ? (global::Cfg.TestLoginRoleInfo) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.RoleInfo;
      }
    }

    /// <summary>Field number for the "DemoD5" field.</summary>
    public const int DemoD5FieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoD5 DemoD5 {
      get { return valueCase_ == ValueOneofCase.DemoD5 ? (global::Cfg.TestDemoD5) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DemoD5;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      DemoD2 = 1,
      DemoE1 = 2,
      RoleInfo = 3,
      DemoD5 = 4,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoDynamic other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(DemoD2, other.DemoD2)) return false;
      if (!object.Equals(DemoE1, other.DemoE1)) return false;
      if (!object.Equals(RoleInfo, other.RoleInfo)) return false;
      if (!object.Equals(DemoD5, other.DemoD5)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.DemoD2) hash ^= DemoD2.GetHashCode();
      if (valueCase_ == ValueOneofCase.DemoE1) hash ^= DemoE1.GetHashCode();
      if (valueCase_ == ValueOneofCase.RoleInfo) hash ^= RoleInfo.GetHashCode();
      if (valueCase_ == ValueOneofCase.DemoD5) hash ^= DemoD5.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.DemoD2) {
        output.WriteRawTag(10);
        output.WriteMessage(DemoD2);
      }
      if (valueCase_ == ValueOneofCase.DemoE1) {
        output.WriteRawTag(18);
        output.WriteMessage(DemoE1);
      }
      if (valueCase_ == ValueOneofCase.RoleInfo) {
        output.WriteRawTag(26);
        output.WriteMessage(RoleInfo);
      }
      if (valueCase_ == ValueOneofCase.DemoD5) {
        output.WriteRawTag(34);
        output.WriteMessage(DemoD5);
      }
      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 (valueCase_ == ValueOneofCase.DemoD2) {
        output.WriteRawTag(10);
        output.WriteMessage(DemoD2);
      }
      if (valueCase_ == ValueOneofCase.DemoE1) {
        output.WriteRawTag(18);
        output.WriteMessage(DemoE1);
      }
      if (valueCase_ == ValueOneofCase.RoleInfo) {
        output.WriteRawTag(26);
        output.WriteMessage(RoleInfo);
      }
      if (valueCase_ == ValueOneofCase.DemoD5) {
        output.WriteRawTag(34);
        output.WriteMessage(DemoD5);
      }
      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 (valueCase_ == ValueOneofCase.DemoD2) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DemoD2);
      }
      if (valueCase_ == ValueOneofCase.DemoE1) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DemoE1);
      }
      if (valueCase_ == ValueOneofCase.RoleInfo) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RoleInfo);
      }
      if (valueCase_ == ValueOneofCase.DemoD5) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DemoD5);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoDynamic other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.DemoD2:
          if (DemoD2 == null) {
            DemoD2 = new global::Cfg.TestDemoD2();
          }
          DemoD2.MergeFrom(other.DemoD2);
          break;
        case ValueOneofCase.DemoE1:
          if (DemoE1 == null) {
            DemoE1 = new global::Cfg.TestDemoE1();
          }
          DemoE1.MergeFrom(other.DemoE1);
          break;
        case ValueOneofCase.RoleInfo:
          if (RoleInfo == null) {
            RoleInfo = new global::Cfg.TestLoginRoleInfo();
          }
          RoleInfo.MergeFrom(other.RoleInfo);
          break;
        case ValueOneofCase.DemoD5:
          if (DemoD5 == null) {
            DemoD5 = new global::Cfg.TestDemoD5();
          }
          DemoD5.MergeFrom(other.DemoD5);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.TestDemoD2 subBuilder = new global::Cfg.TestDemoD2();
            if (valueCase_ == ValueOneofCase.DemoD2) {
              subBuilder.MergeFrom(DemoD2);
            }
            input.ReadMessage(subBuilder);
            DemoD2 = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.TestDemoE1 subBuilder = new global::Cfg.TestDemoE1();
            if (valueCase_ == ValueOneofCase.DemoE1) {
              subBuilder.MergeFrom(DemoE1);
            }
            input.ReadMessage(subBuilder);
            DemoE1 = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.TestLoginRoleInfo subBuilder = new global::Cfg.TestLoginRoleInfo();
            if (valueCase_ == ValueOneofCase.RoleInfo) {
              subBuilder.MergeFrom(RoleInfo);
            }
            input.ReadMessage(subBuilder);
            RoleInfo = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.TestDemoD5 subBuilder = new global::Cfg.TestDemoD5();
            if (valueCase_ == ValueOneofCase.DemoD5) {
              subBuilder.MergeFrom(DemoD5);
            }
            input.ReadMessage(subBuilder);
            DemoD5 = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.TestDemoD2 subBuilder = new global::Cfg.TestDemoD2();
            if (valueCase_ == ValueOneofCase.DemoD2) {
              subBuilder.MergeFrom(DemoD2);
            }
            input.ReadMessage(subBuilder);
            DemoD2 = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.TestDemoE1 subBuilder = new global::Cfg.TestDemoE1();
            if (valueCase_ == ValueOneofCase.DemoE1) {
              subBuilder.MergeFrom(DemoE1);
            }
            input.ReadMessage(subBuilder);
            DemoE1 = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.TestLoginRoleInfo subBuilder = new global::Cfg.TestLoginRoleInfo();
            if (valueCase_ == ValueOneofCase.RoleInfo) {
              subBuilder.MergeFrom(RoleInfo);
            }
            input.ReadMessage(subBuilder);
            RoleInfo = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.TestDemoD5 subBuilder = new global::Cfg.TestDemoD5();
            if (valueCase_ == ValueOneofCase.DemoD5) {
              subBuilder.MergeFrom(DemoD5);
            }
            input.ReadMessage(subBuilder);
            DemoD5 = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoD2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 2;
    private readonly static int X2DefaultValue = 0;

    private int x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X2 {
      get { if ((_hasBits0 & 2) != 0) { return x2_; } else { return X2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x2_ = value;
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoD2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) return false;
      if (X2 != other.X2) 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 (HasX1) hash ^= X1.GetHashCode();
      if (HasX2) hash ^= X2.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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(16);
        output.WriteInt32(X2);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(16);
        output.WriteInt32(X2);
      }
      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 (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X2);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoD2 other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 16: {
            X2 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 16: {
            X2 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoD3() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDemoD3(TestDemoD3 other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.DemoE1:
          DemoE1 = other.DemoE1.Clone();
          break;
        case ValueOneofCase.RoleInfo:
          RoleInfo = other.RoleInfo.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "DemoE1" field.</summary>
    public const int DemoE1FieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoE1 DemoE1 {
      get { return valueCase_ == ValueOneofCase.DemoE1 ? (global::Cfg.TestDemoE1) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.DemoE1;
      }
    }

    /// <summary>Field number for the "RoleInfo" field.</summary>
    public const int RoleInfoFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestLoginRoleInfo RoleInfo {
      get { return valueCase_ == ValueOneofCase.RoleInfo ? (global::Cfg.TestLoginRoleInfo) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.RoleInfo;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      DemoE1 = 2,
      RoleInfo = 3,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoD3 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(DemoE1, other.DemoE1)) return false;
      if (!object.Equals(RoleInfo, other.RoleInfo)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.DemoE1) hash ^= DemoE1.GetHashCode();
      if (valueCase_ == ValueOneofCase.RoleInfo) hash ^= RoleInfo.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.DemoE1) {
        output.WriteRawTag(18);
        output.WriteMessage(DemoE1);
      }
      if (valueCase_ == ValueOneofCase.RoleInfo) {
        output.WriteRawTag(26);
        output.WriteMessage(RoleInfo);
      }
      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 (valueCase_ == ValueOneofCase.DemoE1) {
        output.WriteRawTag(18);
        output.WriteMessage(DemoE1);
      }
      if (valueCase_ == ValueOneofCase.RoleInfo) {
        output.WriteRawTag(26);
        output.WriteMessage(RoleInfo);
      }
      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 (valueCase_ == ValueOneofCase.DemoE1) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DemoE1);
      }
      if (valueCase_ == ValueOneofCase.RoleInfo) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RoleInfo);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoD3 other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.DemoE1:
          if (DemoE1 == null) {
            DemoE1 = new global::Cfg.TestDemoE1();
          }
          DemoE1.MergeFrom(other.DemoE1);
          break;
        case ValueOneofCase.RoleInfo:
          if (RoleInfo == null) {
            RoleInfo = new global::Cfg.TestLoginRoleInfo();
          }
          RoleInfo.MergeFrom(other.RoleInfo);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            global::Cfg.TestDemoE1 subBuilder = new global::Cfg.TestDemoE1();
            if (valueCase_ == ValueOneofCase.DemoE1) {
              subBuilder.MergeFrom(DemoE1);
            }
            input.ReadMessage(subBuilder);
            DemoE1 = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.TestLoginRoleInfo subBuilder = new global::Cfg.TestLoginRoleInfo();
            if (valueCase_ == ValueOneofCase.RoleInfo) {
              subBuilder.MergeFrom(RoleInfo);
            }
            input.ReadMessage(subBuilder);
            RoleInfo = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            global::Cfg.TestDemoE1 subBuilder = new global::Cfg.TestDemoE1();
            if (valueCase_ == ValueOneofCase.DemoE1) {
              subBuilder.MergeFrom(DemoE1);
            }
            input.ReadMessage(subBuilder);
            DemoE1 = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.TestLoginRoleInfo subBuilder = new global::Cfg.TestLoginRoleInfo();
            if (valueCase_ == ValueOneofCase.RoleInfo) {
              subBuilder.MergeFrom(RoleInfo);
            }
            input.ReadMessage(subBuilder);
            RoleInfo = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoE1() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 2;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 2) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 3;
    private readonly static int X4DefaultValue = 0;

    private int x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X4 {
      get { if ((_hasBits0 & 4) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoE1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) return false;
      if (X3 != other.X3) return false;
      if (X4 != other.X4) 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 (HasX1) hash ^= X1.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasX4) hash ^= X4.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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX3) {
        output.WriteRawTag(16);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(24);
        output.WriteInt32(X4);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX3) {
        output.WriteRawTag(16);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(24);
        output.WriteInt32(X4);
      }
      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 (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasX4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X4);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoE1 other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 16: {
            X3 = input.ReadInt32();
            break;
          }
          case 24: {
            X4 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 16: {
            X3 = input.ReadInt32();
            break;
          }
          case 24: {
            X4 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestLoginRoleInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 2;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 2) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "role_id" field.</summary>
    public const int RoleIdFieldNumber = 3;
    private readonly static long RoleIdDefaultValue = 0L;

    private long roleId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long RoleId {
      get { if ((_hasBits0 & 4) != 0) { return roleId_; } else { return RoleIdDefaultValue; } }
      set {
        _hasBits0 |= 4;
        roleId_ = value;
      }
    }
    /// <summary>Gets whether the "role_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRoleId {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "role_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRoleId() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestLoginRoleInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) return false;
      if (X3 != other.X3) return false;
      if (RoleId != other.RoleId) 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 (HasX1) hash ^= X1.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasRoleId) hash ^= RoleId.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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX3) {
        output.WriteRawTag(16);
        output.WriteInt32(X3);
      }
      if (HasRoleId) {
        output.WriteRawTag(24);
        output.WriteInt64(RoleId);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (HasX3) {
        output.WriteRawTag(16);
        output.WriteInt32(X3);
      }
      if (HasRoleId) {
        output.WriteRawTag(24);
        output.WriteInt64(RoleId);
      }
      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 (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasRoleId) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(RoleId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestLoginRoleInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasRoleId) {
        RoleId = other.RoleId;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 16: {
            X3 = input.ReadInt32();
            break;
          }
          case 24: {
            RoleId = input.ReadInt64();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 16: {
            X3 = input.ReadInt32();
            break;
          }
          case 24: {
            RoleId = input.ReadInt64();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoD5() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "time" field.</summary>
    public const int TimeFieldNumber = 2;
    private global::Cfg.TestDateTimeRange time_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDateTimeRange Time {
      get { return time_; }
      set {
        time_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoD5 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) return false;
      if (!object.Equals(Time, other.Time)) 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 (HasX1) hash ^= X1.GetHashCode();
      if (time_ != null) hash ^= Time.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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (time_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Time);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteInt32(X1);
      }
      if (time_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Time);
      }
      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 (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (time_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Time);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoD5 other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.time_ != null) {
        if (time_ == null) {
          Time = new global::Cfg.TestDateTimeRange();
        }
        Time.MergeFrom(other.Time);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 18: {
            if (time_ == null) {
              Time = new global::Cfg.TestDateTimeRange();
            }
            input.ReadMessage(Time);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadInt32();
            break;
          }
          case 18: {
            if (time_ == null) {
              Time = new global::Cfg.TestDateTimeRange();
            }
            input.ReadMessage(Time);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDateTimeRange() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "start_time" field.</summary>
    public const int StartTimeFieldNumber = 1;
    private readonly static long StartTimeDefaultValue = 0L;

    private long startTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long StartTime {
      get { if ((_hasBits0 & 1) != 0) { return startTime_; } else { return StartTimeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        startTime_ = value;
      }
    }
    /// <summary>Gets whether the "start_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasStartTime {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "start_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearStartTime() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "end_time" field.</summary>
    public const int EndTimeFieldNumber = 2;
    private readonly static long EndTimeDefaultValue = 0L;

    private long endTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long EndTime {
      get { if ((_hasBits0 & 2) != 0) { return endTime_; } else { return EndTimeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        endTime_ = value;
      }
    }
    /// <summary>Gets whether the "end_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasEndTime {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "end_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEndTime() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDateTimeRange other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (StartTime != other.StartTime) return false;
      if (EndTime != other.EndTime) 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 (HasStartTime) hash ^= StartTime.GetHashCode();
      if (HasEndTime) hash ^= EndTime.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 (HasStartTime) {
        output.WriteRawTag(8);
        output.WriteInt64(StartTime);
      }
      if (HasEndTime) {
        output.WriteRawTag(16);
        output.WriteInt64(EndTime);
      }
      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 (HasStartTime) {
        output.WriteRawTag(8);
        output.WriteInt64(StartTime);
      }
      if (HasEndTime) {
        output.WriteRawTag(16);
        output.WriteInt64(EndTime);
      }
      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 (HasStartTime) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(StartTime);
      }
      if (HasEndTime) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(EndTime);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDateTimeRange other) {
      if (other == null) {
        return;
      }
      if (other.HasStartTime) {
        StartTime = other.StartTime;
      }
      if (other.HasEndTime) {
        EndTime = other.EndTime;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            StartTime = input.ReadInt64();
            break;
          }
          case 16: {
            EndTime = input.ReadInt64();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            StartTime = input.ReadInt64();
            break;
          }
          case 16: {
            EndTime = input.ReadInt64();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoE2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "y1" field.</summary>
    public const int Y1FieldNumber = 1;
    private readonly static int Y1DefaultValue = 0;

    private int y1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y1 {
      get { if ((_hasBits0 & 1) != 0) { return y1_; } else { return Y1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        y1_ = value;
      }
    }
    /// <summary>Gets whether the "y1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "y1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y2" field.</summary>
    public const int Y2FieldNumber = 2;
    private readonly static bool Y2DefaultValue = false;

    private bool y2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Y2 {
      get { if ((_hasBits0 & 2) != 0) { return y2_; } else { return Y2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        y2_ = value;
      }
    }
    /// <summary>Gets whether the "y2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY2() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoE2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Y1 != other.Y1) return false;
      if (Y2 != other.Y2) 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 (HasY1) hash ^= Y1.GetHashCode();
      if (HasY2) hash ^= Y2.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 (HasY1) {
        output.WriteRawTag(8);
        output.WriteInt32(Y1);
      }
      if (HasY2) {
        output.WriteRawTag(16);
        output.WriteBool(Y2);
      }
      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 (HasY1) {
        output.WriteRawTag(8);
        output.WriteInt32(Y1);
      }
      if (HasY2) {
        output.WriteRawTag(16);
        output.WriteBool(Y2);
      }
      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 (HasY1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y1);
      }
      if (HasY2) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoE2 other) {
      if (other == null) {
        return;
      }
      if (other.HasY1) {
        Y1 = other.Y1;
      }
      if (other.HasY2) {
        Y2 = other.Y2;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Y1 = input.ReadInt32();
            break;
          }
          case 16: {
            Y2 = input.ReadBool();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Y1 = input.ReadInt32();
            break;
          }
          case 16: {
            Y2 = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoSingletonType() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "date" field.</summary>
    public const int DateFieldNumber = 3;
    private global::Cfg.TestDemoDynamic date_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoDynamic Date {
      get { return date_; }
      set {
        date_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoSingletonType other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (!object.Equals(Date, other.Date)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (date_ != null) hash ^= Date.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (date_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Date);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (date_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Date);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (date_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Date);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoSingletonType other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.date_ != null) {
        if (date_ == null) {
          Date = new global::Cfg.TestDemoDynamic();
        }
        Date.MergeFrom(other.Date);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            if (date_ == null) {
              Date = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(Date);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            if (date_ == null) {
              Date = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(Date);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestNotIndexList() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static int YDefaultValue = 0;

    private int y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestNotIndexList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X != other.X) return false;
      if (Y != other.Y) 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 (HasX) hash ^= X.GetHashCode();
      if (HasY) hash ^= Y.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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      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 (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (HasY) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestNotIndexList other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiUnionIndexList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestMultiUnionIndexList(TestMultiUnionIndexList other) : this() {
      _hasBits0 = other._hasBits0;
      id1_ = other.id1_;
      id2_ = other.id2_;
      id3_ = other.id3_;
      num_ = other.num_;
      desc_ = other.desc_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id1" field.</summary>
    public const int Id1FieldNumber = 1;
    private readonly static int Id1DefaultValue = 0;

    private int id1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id1 {
      get { if ((_hasBits0 & 1) != 0) { return id1_; } else { return Id1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        id1_ = value;
      }
    }
    /// <summary>Gets whether the "id1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "id2" field.</summary>
    public const int Id2FieldNumber = 2;
    private readonly static long Id2DefaultValue = 0L;

    private long id2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Id2 {
      get { if ((_hasBits0 & 2) != 0) { return id2_; } else { return Id2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        id2_ = value;
      }
    }
    /// <summary>Gets whether the "id2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "id2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId2() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "id3" field.</summary>
    public const int Id3FieldNumber = 3;
    private readonly static string Id3DefaultValue = "";

    private string id3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Id3 {
      get { return id3_ ?? Id3DefaultValue; }
      set {
        id3_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "id3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId3 {
      get { return id3_ != null; }
    }
    /// <summary>Clears the value of the "id3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId3() {
      id3_ = null;
    }

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 4;
    private readonly static int NumDefaultValue = 0;

    private int num_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Num {
      get { if ((_hasBits0 & 4) != 0) { return num_; } else { return NumDefaultValue; } }
      set {
        _hasBits0 |= 4;
        num_ = value;
      }
    }
    /// <summary>Gets whether the "num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNum {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNum() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 5;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiUnionIndexList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id1 != other.Id1) return false;
      if (Id2 != other.Id2) return false;
      if (Id3 != other.Id3) return false;
      if (Num != other.Num) return false;
      if (Desc != other.Desc) 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 (HasId1) hash ^= Id1.GetHashCode();
      if (HasId2) hash ^= Id2.GetHashCode();
      if (HasId3) hash ^= Id3.GetHashCode();
      if (HasNum) hash ^= Num.GetHashCode();
      if (HasDesc) hash ^= Desc.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 (HasId1) {
        output.WriteRawTag(8);
        output.WriteInt32(Id1);
      }
      if (HasId2) {
        output.WriteRawTag(16);
        output.WriteInt64(Id2);
      }
      if (HasId3) {
        output.WriteRawTag(26);
        output.WriteString(Id3);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (HasDesc) {
        output.WriteRawTag(42);
        output.WriteString(Desc);
      }
      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 (HasId1) {
        output.WriteRawTag(8);
        output.WriteInt32(Id1);
      }
      if (HasId2) {
        output.WriteRawTag(16);
        output.WriteInt64(Id2);
      }
      if (HasId3) {
        output.WriteRawTag(26);
        output.WriteString(Id3);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (HasDesc) {
        output.WriteRawTag(42);
        output.WriteString(Desc);
      }
      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 (HasId1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id1);
      }
      if (HasId2) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Id2);
      }
      if (HasId3) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id3);
      }
      if (HasNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Num);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestMultiUnionIndexList other) {
      if (other == null) {
        return;
      }
      if (other.HasId1) {
        Id1 = other.Id1;
      }
      if (other.HasId2) {
        Id2 = other.Id2;
      }
      if (other.HasId3) {
        Id3 = other.Id3;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id1 = input.ReadInt32();
            break;
          }
          case 16: {
            Id2 = input.ReadInt64();
            break;
          }
          case 26: {
            Id3 = input.ReadString();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 42: {
            Desc = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id1 = input.ReadInt32();
            break;
          }
          case 16: {
            Id2 = input.ReadInt64();
            break;
          }
          case 26: {
            Id3 = input.ReadString();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 42: {
            Desc = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiIndexList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestMultiIndexList(TestMultiIndexList other) : this() {
      _hasBits0 = other._hasBits0;
      id1_ = other.id1_;
      id2_ = other.id2_;
      id3_ = other.id3_;
      num_ = other.num_;
      desc_ = other.desc_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id1" field.</summary>
    public const int Id1FieldNumber = 1;
    private readonly static int Id1DefaultValue = 0;

    private int id1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id1 {
      get { if ((_hasBits0 & 1) != 0) { return id1_; } else { return Id1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        id1_ = value;
      }
    }
    /// <summary>Gets whether the "id1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "id2" field.</summary>
    public const int Id2FieldNumber = 2;
    private readonly static long Id2DefaultValue = 0L;

    private long id2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Id2 {
      get { if ((_hasBits0 & 2) != 0) { return id2_; } else { return Id2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        id2_ = value;
      }
    }
    /// <summary>Gets whether the "id2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "id2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId2() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "id3" field.</summary>
    public const int Id3FieldNumber = 3;
    private readonly static string Id3DefaultValue = "";

    private string id3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Id3 {
      get { return id3_ ?? Id3DefaultValue; }
      set {
        id3_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "id3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId3 {
      get { return id3_ != null; }
    }
    /// <summary>Clears the value of the "id3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId3() {
      id3_ = null;
    }

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 4;
    private readonly static int NumDefaultValue = 0;

    private int num_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Num {
      get { if ((_hasBits0 & 4) != 0) { return num_; } else { return NumDefaultValue; } }
      set {
        _hasBits0 |= 4;
        num_ = value;
      }
    }
    /// <summary>Gets whether the "num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNum {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNum() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 5;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiIndexList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id1 != other.Id1) return false;
      if (Id2 != other.Id2) return false;
      if (Id3 != other.Id3) return false;
      if (Num != other.Num) return false;
      if (Desc != other.Desc) 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 (HasId1) hash ^= Id1.GetHashCode();
      if (HasId2) hash ^= Id2.GetHashCode();
      if (HasId3) hash ^= Id3.GetHashCode();
      if (HasNum) hash ^= Num.GetHashCode();
      if (HasDesc) hash ^= Desc.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 (HasId1) {
        output.WriteRawTag(8);
        output.WriteInt32(Id1);
      }
      if (HasId2) {
        output.WriteRawTag(16);
        output.WriteInt64(Id2);
      }
      if (HasId3) {
        output.WriteRawTag(26);
        output.WriteString(Id3);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (HasDesc) {
        output.WriteRawTag(42);
        output.WriteString(Desc);
      }
      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 (HasId1) {
        output.WriteRawTag(8);
        output.WriteInt32(Id1);
      }
      if (HasId2) {
        output.WriteRawTag(16);
        output.WriteInt64(Id2);
      }
      if (HasId3) {
        output.WriteRawTag(26);
        output.WriteString(Id3);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (HasDesc) {
        output.WriteRawTag(42);
        output.WriteString(Desc);
      }
      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 (HasId1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id1);
      }
      if (HasId2) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Id2);
      }
      if (HasId3) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id3);
      }
      if (HasNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Num);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestMultiIndexList other) {
      if (other == null) {
        return;
      }
      if (other.HasId1) {
        Id1 = other.Id1;
      }
      if (other.HasId2) {
        Id2 = other.Id2;
      }
      if (other.HasId3) {
        Id3 = other.Id3;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id1 = input.ReadInt32();
            break;
          }
          case 16: {
            Id2 = input.ReadInt64();
            break;
          }
          case 26: {
            Id3 = input.ReadString();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 42: {
            Desc = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id1 = input.ReadInt32();
            break;
          }
          case 16: {
            Id2 = input.ReadInt64();
            break;
          }
          case 26: {
            Id3 = input.ReadString();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 42: {
            Desc = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiRowRecord() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestMultiRowRecord(TestMultiRowRecord other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      name_ = other.name_;
      oneRows_ = other.oneRows_.Clone();
      multiRows1_ = other.multiRows1_.Clone();
      multiRows2_ = other.multiRows2_.Clone();
      multiRows4_ = other.multiRows4_.Clone();
      multiRows5_ = other.multiRows5_.Clone();
      multiRows6_ = other.multiRows6_.Clone();
      multiRows7_ = other.multiRows7_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "one_rows" field.</summary>
    public const int OneRowsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowType1> _repeated_oneRows_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.TestMultiRowType1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowType1> oneRows_ = new pbc::RepeatedField<global::Cfg.TestMultiRowType1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowType1> OneRows {
      get { return oneRows_; }
    }

    /// <summary>Field number for the "multi_rows1" field.</summary>
    public const int MultiRows1FieldNumber = 4;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowType1> _repeated_multiRows1_codec
        = pb::FieldCodec.ForMessage(34, global::Cfg.TestMultiRowType1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowType1> multiRows1_ = new pbc::RepeatedField<global::Cfg.TestMultiRowType1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowType1> MultiRows1 {
      get { return multiRows1_; }
    }

    /// <summary>Field number for the "multi_rows2" field.</summary>
    public const int MultiRows2FieldNumber = 5;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowType1> _repeated_multiRows2_codec
        = pb::FieldCodec.ForMessage(42, global::Cfg.TestMultiRowType1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowType1> multiRows2_ = new pbc::RepeatedField<global::Cfg.TestMultiRowType1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowType1> MultiRows2 {
      get { return multiRows2_; }
    }

    /// <summary>Field number for the "multi_rows4" field.</summary>
    public const int MultiRows4FieldNumber = 6;
    private static readonly pbc::MapField<int, global::Cfg.TestMultiRowType2>.Codec _map_multiRows4_codec
        = new pbc::MapField<int, global::Cfg.TestMultiRowType2>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Cfg.TestMultiRowType2.Parser), 50);
    private readonly pbc::MapField<int, global::Cfg.TestMultiRowType2> multiRows4_ = new pbc::MapField<int, global::Cfg.TestMultiRowType2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Cfg.TestMultiRowType2> MultiRows4 {
      get { return multiRows4_; }
    }

    /// <summary>Field number for the "multi_rows5" field.</summary>
    public const int MultiRows5FieldNumber = 7;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowType3> _repeated_multiRows5_codec
        = pb::FieldCodec.ForMessage(58, global::Cfg.TestMultiRowType3.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowType3> multiRows5_ = new pbc::RepeatedField<global::Cfg.TestMultiRowType3>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowType3> MultiRows5 {
      get { return multiRows5_; }
    }

    /// <summary>Field number for the "multi_rows6" field.</summary>
    public const int MultiRows6FieldNumber = 8;
    private static readonly pbc::MapField<int, global::Cfg.TestMultiRowType2>.Codec _map_multiRows6_codec
        = new pbc::MapField<int, global::Cfg.TestMultiRowType2>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Cfg.TestMultiRowType2.Parser), 66);
    private readonly pbc::MapField<int, global::Cfg.TestMultiRowType2> multiRows6_ = new pbc::MapField<int, global::Cfg.TestMultiRowType2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, global::Cfg.TestMultiRowType2> MultiRows6 {
      get { return multiRows6_; }
    }

    /// <summary>Field number for the "multi_rows7" field.</summary>
    public const int MultiRows7FieldNumber = 9;
    private static readonly pbc::MapField<int, int>.Codec _map_multiRows7_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 74);
    private readonly pbc::MapField<int, int> multiRows7_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> MultiRows7 {
      get { return multiRows7_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiRowRecord other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if(!oneRows_.Equals(other.oneRows_)) return false;
      if(!multiRows1_.Equals(other.multiRows1_)) return false;
      if(!multiRows2_.Equals(other.multiRows2_)) return false;
      if (!MultiRows4.Equals(other.MultiRows4)) return false;
      if(!multiRows5_.Equals(other.multiRows5_)) return false;
      if (!MultiRows6.Equals(other.MultiRows6)) return false;
      if (!MultiRows7.Equals(other.MultiRows7)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      hash ^= oneRows_.GetHashCode();
      hash ^= multiRows1_.GetHashCode();
      hash ^= multiRows2_.GetHashCode();
      hash ^= MultiRows4.GetHashCode();
      hash ^= multiRows5_.GetHashCode();
      hash ^= MultiRows6.GetHashCode();
      hash ^= MultiRows7.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      oneRows_.WriteTo(output, _repeated_oneRows_codec);
      multiRows1_.WriteTo(output, _repeated_multiRows1_codec);
      multiRows2_.WriteTo(output, _repeated_multiRows2_codec);
      multiRows4_.WriteTo(output, _map_multiRows4_codec);
      multiRows5_.WriteTo(output, _repeated_multiRows5_codec);
      multiRows6_.WriteTo(output, _map_multiRows6_codec);
      multiRows7_.WriteTo(output, _map_multiRows7_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      oneRows_.WriteTo(ref output, _repeated_oneRows_codec);
      multiRows1_.WriteTo(ref output, _repeated_multiRows1_codec);
      multiRows2_.WriteTo(ref output, _repeated_multiRows2_codec);
      multiRows4_.WriteTo(ref output, _map_multiRows4_codec);
      multiRows5_.WriteTo(ref output, _repeated_multiRows5_codec);
      multiRows6_.WriteTo(ref output, _map_multiRows6_codec);
      multiRows7_.WriteTo(ref output, _map_multiRows7_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += oneRows_.CalculateSize(_repeated_oneRows_codec);
      size += multiRows1_.CalculateSize(_repeated_multiRows1_codec);
      size += multiRows2_.CalculateSize(_repeated_multiRows2_codec);
      size += multiRows4_.CalculateSize(_map_multiRows4_codec);
      size += multiRows5_.CalculateSize(_repeated_multiRows5_codec);
      size += multiRows6_.CalculateSize(_map_multiRows6_codec);
      size += multiRows7_.CalculateSize(_map_multiRows7_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestMultiRowRecord other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      oneRows_.Add(other.oneRows_);
      multiRows1_.Add(other.multiRows1_);
      multiRows2_.Add(other.multiRows2_);
      multiRows4_.MergeFrom(other.multiRows4_);
      multiRows5_.Add(other.multiRows5_);
      multiRows6_.MergeFrom(other.multiRows6_);
      multiRows7_.MergeFrom(other.multiRows7_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            oneRows_.AddEntriesFrom(input, _repeated_oneRows_codec);
            break;
          }
          case 34: {
            multiRows1_.AddEntriesFrom(input, _repeated_multiRows1_codec);
            break;
          }
          case 42: {
            multiRows2_.AddEntriesFrom(input, _repeated_multiRows2_codec);
            break;
          }
          case 50: {
            multiRows4_.AddEntriesFrom(input, _map_multiRows4_codec);
            break;
          }
          case 58: {
            multiRows5_.AddEntriesFrom(input, _repeated_multiRows5_codec);
            break;
          }
          case 66: {
            multiRows6_.AddEntriesFrom(input, _map_multiRows6_codec);
            break;
          }
          case 74: {
            multiRows7_.AddEntriesFrom(input, _map_multiRows7_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            oneRows_.AddEntriesFrom(ref input, _repeated_oneRows_codec);
            break;
          }
          case 34: {
            multiRows1_.AddEntriesFrom(ref input, _repeated_multiRows1_codec);
            break;
          }
          case 42: {
            multiRows2_.AddEntriesFrom(ref input, _repeated_multiRows2_codec);
            break;
          }
          case 50: {
            multiRows4_.AddEntriesFrom(ref input, _map_multiRows4_codec);
            break;
          }
          case 58: {
            multiRows5_.AddEntriesFrom(ref input, _repeated_multiRows5_codec);
            break;
          }
          case 66: {
            multiRows6_.AddEntriesFrom(ref input, _map_multiRows6_codec);
            break;
          }
          case 74: {
            multiRows7_.AddEntriesFrom(ref input, _map_multiRows7_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiRowType1() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 2;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 2) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 2;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiRowType1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X != other.X) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX) hash ^= X.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(16);
        output.WriteInt32(X);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(16);
        output.WriteInt32(X);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestMultiRowType1 other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX) {
        X = other.X;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiRowType2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 2;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 2) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 2;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 3;
    private readonly static float YDefaultValue = 0F;

    private float y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Y {
      get { if ((_hasBits0 & 4) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 4;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiRowType2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X != other.X) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Y, other.Y)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX) hash ^= X.GetHashCode();
      if (HasY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Y);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(16);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(29);
        output.WriteFloat(Y);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(16);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(29);
        output.WriteFloat(Y);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (HasY) {
        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(TestMultiRowType2 other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X = input.ReadInt32();
            break;
          }
          case 29: {
            Y = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X = input.ReadInt32();
            break;
          }
          case 29: {
            Y = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiRowType3() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "items" field.</summary>
    public const int ItemsFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowType1> _repeated_items_codec
        = pb::FieldCodec.ForMessage(18, global::Cfg.TestMultiRowType1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowType1> items_ = new pbc::RepeatedField<global::Cfg.TestMultiRowType1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowType1> Items {
      get { return items_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiRowType3 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if(!items_.Equals(other.items_)) 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 (HasId) hash ^= Id.GetHashCode();
      hash ^= items_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      items_.WriteTo(output, _repeated_items_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      items_.WriteTo(ref output, _repeated_items_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      size += items_.CalculateSize(_repeated_items_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestMultiRowType3 other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      items_.Add(other.items_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            items_.AddEntriesFrom(input, _repeated_items_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            items_.AddEntriesFrom(ref input, _repeated_items_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestMultiColumn() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestMultiColumn(TestTestMultiColumn other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      a_ = other.a_ != null ? other.a_.Clone() : null;
      b_ = other.b_ != null ? other.b_.Clone() : null;
      c_ = other.c_ != null ? other.c_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "a" field.</summary>
    public const int AFieldNumber = 2;
    private global::Cfg.TestFoo a_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestFoo A {
      get { return a_; }
      set {
        a_ = value;
      }
    }

    /// <summary>Field number for the "b" field.</summary>
    public const int BFieldNumber = 3;
    private global::Cfg.TestFoo b_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestFoo B {
      get { return b_; }
      set {
        b_ = value;
      }
    }

    /// <summary>Field number for the "c" field.</summary>
    public const int CFieldNumber = 4;
    private global::Cfg.TestFoo c_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestFoo C {
      get { return c_; }
      set {
        c_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestMultiColumn other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (!object.Equals(A, other.A)) return false;
      if (!object.Equals(B, other.B)) return false;
      if (!object.Equals(C, other.C)) 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 (HasId) hash ^= Id.GetHashCode();
      if (a_ != null) hash ^= A.GetHashCode();
      if (b_ != null) hash ^= B.GetHashCode();
      if (c_ != null) hash ^= C.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (a_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(A);
      }
      if (b_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(B);
      }
      if (c_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(C);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (a_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(A);
      }
      if (b_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(B);
      }
      if (c_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(C);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (a_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(A);
      }
      if (b_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(B);
      }
      if (c_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(C);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestMultiColumn other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.a_ != null) {
        if (a_ == null) {
          A = new global::Cfg.TestFoo();
        }
        A.MergeFrom(other.A);
      }
      if (other.b_ != null) {
        if (b_ == null) {
          B = new global::Cfg.TestFoo();
        }
        B.MergeFrom(other.B);
      }
      if (other.c_ != null) {
        if (c_ == null) {
          C = new global::Cfg.TestFoo();
        }
        C.MergeFrom(other.C);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            if (a_ == null) {
              A = new global::Cfg.TestFoo();
            }
            input.ReadMessage(A);
            break;
          }
          case 26: {
            if (b_ == null) {
              B = new global::Cfg.TestFoo();
            }
            input.ReadMessage(B);
            break;
          }
          case 34: {
            if (c_ == null) {
              C = new global::Cfg.TestFoo();
            }
            input.ReadMessage(C);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            if (a_ == null) {
              A = new global::Cfg.TestFoo();
            }
            input.ReadMessage(A);
            break;
          }
          case 26: {
            if (b_ == null) {
              B = new global::Cfg.TestFoo();
            }
            input.ReadMessage(B);
            break;
          }
          case 34: {
            if (c_ == null) {
              C = new global::Cfg.TestFoo();
            }
            input.ReadMessage(C);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestFoo() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "y1" field.</summary>
    public const int Y1FieldNumber = 1;
    private readonly static int Y1DefaultValue = 0;

    private int y1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y1 {
      get { if ((_hasBits0 & 1) != 0) { return y1_; } else { return Y1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        y1_ = value;
      }
    }
    /// <summary>Gets whether the "y1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "y1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y2" field.</summary>
    public const int Y2FieldNumber = 2;
    private readonly static int Y2DefaultValue = 0;

    private int y2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y2 {
      get { if ((_hasBits0 & 2) != 0) { return y2_; } else { return Y2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        y2_ = value;
      }
    }
    /// <summary>Gets whether the "y2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY2() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "y3" field.</summary>
    public const int Y3FieldNumber = 3;
    private readonly static int Y3DefaultValue = 0;

    private int y3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y3 {
      get { if ((_hasBits0 & 4) != 0) { return y3_; } else { return Y3DefaultValue; } }
      set {
        _hasBits0 |= 4;
        y3_ = value;
      }
    }
    /// <summary>Gets whether the "y3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY3 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "y3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY3() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestFoo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Y1 != other.Y1) return false;
      if (Y2 != other.Y2) return false;
      if (Y3 != other.Y3) 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 (HasY1) hash ^= Y1.GetHashCode();
      if (HasY2) hash ^= Y2.GetHashCode();
      if (HasY3) hash ^= Y3.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 (HasY1) {
        output.WriteRawTag(8);
        output.WriteInt32(Y1);
      }
      if (HasY2) {
        output.WriteRawTag(16);
        output.WriteInt32(Y2);
      }
      if (HasY3) {
        output.WriteRawTag(24);
        output.WriteInt32(Y3);
      }
      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 (HasY1) {
        output.WriteRawTag(8);
        output.WriteInt32(Y1);
      }
      if (HasY2) {
        output.WriteRawTag(16);
        output.WriteInt32(Y2);
      }
      if (HasY3) {
        output.WriteRawTag(24);
        output.WriteInt32(Y3);
      }
      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 (HasY1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y1);
      }
      if (HasY2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y2);
      }
      if (HasY3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y3);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestFoo other) {
      if (other == null) {
        return;
      }
      if (other.HasY1) {
        Y1 = other.Y1;
      }
      if (other.HasY2) {
        Y2 = other.Y2;
      }
      if (other.HasY3) {
        Y3 = other.Y3;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Y1 = input.ReadInt32();
            break;
          }
          case 16: {
            Y2 = input.ReadInt32();
            break;
          }
          case 24: {
            Y3 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Y1 = input.ReadInt32();
            break;
          }
          case 16: {
            Y2 = input.ReadInt32();
            break;
          }
          case 24: {
            Y3 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestMultiRowTitle() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestMultiRowTitle(TestMultiRowTitle other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      name_ = other.name_;
      x1_ = other.x1_ != null ? other.x1_.Clone() : null;
      x20_ = other.x20_ != null ? other.x20_.Clone() : null;
      x2_ = other.x2_.Clone();
      x3_ = other.x3_.Clone();
      x4_ = other.x4_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 3;
    private global::Cfg.TestH1 x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestH1 X1 {
      get { return x1_; }
      set {
        x1_ = value;
      }
    }

    /// <summary>Field number for the "x2_0" field.</summary>
    public const int X20FieldNumber = 4;
    private global::Cfg.TestH2 x20_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestH2 X20 {
      get { return x20_; }
      set {
        x20_ = value;
      }
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 5;
    private static readonly pb::FieldCodec<global::Cfg.TestH2> _repeated_x2_codec
        = pb::FieldCodec.ForMessage(42, global::Cfg.TestH2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestH2> x2_ = new pbc::RepeatedField<global::Cfg.TestH2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestH2> X2 {
      get { return x2_; }
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 6;
    private static readonly pb::FieldCodec<global::Cfg.TestH2> _repeated_x3_codec
        = pb::FieldCodec.ForMessage(50, global::Cfg.TestH2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestH2> x3_ = new pbc::RepeatedField<global::Cfg.TestH2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestH2> X3 {
      get { return x3_; }
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 7;
    private static readonly pb::FieldCodec<global::Cfg.TestH2> _repeated_x4_codec
        = pb::FieldCodec.ForMessage(58, global::Cfg.TestH2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestH2> x4_ = new pbc::RepeatedField<global::Cfg.TestH2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestH2> X4 {
      get { return x4_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestMultiRowTitle other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (!object.Equals(X1, other.X1)) return false;
      if (!object.Equals(X20, other.X20)) return false;
      if(!x2_.Equals(other.x2_)) return false;
      if(!x3_.Equals(other.x3_)) return false;
      if(!x4_.Equals(other.x4_)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (x1_ != null) hash ^= X1.GetHashCode();
      if (x20_ != null) hash ^= X20.GetHashCode();
      hash ^= x2_.GetHashCode();
      hash ^= x3_.GetHashCode();
      hash ^= x4_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (x1_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(X1);
      }
      if (x20_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(X20);
      }
      x2_.WriteTo(output, _repeated_x2_codec);
      x3_.WriteTo(output, _repeated_x3_codec);
      x4_.WriteTo(output, _repeated_x4_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (x1_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(X1);
      }
      if (x20_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(X20);
      }
      x2_.WriteTo(ref output, _repeated_x2_codec);
      x3_.WriteTo(ref output, _repeated_x3_codec);
      x4_.WriteTo(ref output, _repeated_x4_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (x1_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X1);
      }
      if (x20_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X20);
      }
      size += x2_.CalculateSize(_repeated_x2_codec);
      size += x3_.CalculateSize(_repeated_x3_codec);
      size += x4_.CalculateSize(_repeated_x4_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestMultiRowTitle other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.x1_ != null) {
        if (x1_ == null) {
          X1 = new global::Cfg.TestH1();
        }
        X1.MergeFrom(other.X1);
      }
      if (other.x20_ != null) {
        if (x20_ == null) {
          X20 = new global::Cfg.TestH2();
        }
        X20.MergeFrom(other.X20);
      }
      x2_.Add(other.x2_);
      x3_.Add(other.x3_);
      x4_.Add(other.x4_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            if (x1_ == null) {
              X1 = new global::Cfg.TestH1();
            }
            input.ReadMessage(X1);
            break;
          }
          case 34: {
            if (x20_ == null) {
              X20 = new global::Cfg.TestH2();
            }
            input.ReadMessage(X20);
            break;
          }
          case 42: {
            x2_.AddEntriesFrom(input, _repeated_x2_codec);
            break;
          }
          case 50: {
            x3_.AddEntriesFrom(input, _repeated_x3_codec);
            break;
          }
          case 58: {
            x4_.AddEntriesFrom(input, _repeated_x4_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            if (x1_ == null) {
              X1 = new global::Cfg.TestH1();
            }
            input.ReadMessage(X1);
            break;
          }
          case 34: {
            if (x20_ == null) {
              X20 = new global::Cfg.TestH2();
            }
            input.ReadMessage(X20);
            break;
          }
          case 42: {
            x2_.AddEntriesFrom(ref input, _repeated_x2_codec);
            break;
          }
          case 50: {
            x3_.AddEntriesFrom(ref input, _repeated_x3_codec);
            break;
          }
          case 58: {
            x4_.AddEntriesFrom(ref input, _repeated_x4_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestH1() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "y2" field.</summary>
    public const int Y2FieldNumber = 1;
    private global::Cfg.TestH2 y2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestH2 Y2 {
      get { return y2_; }
      set {
        y2_ = value;
      }
    }

    /// <summary>Field number for the "y3" field.</summary>
    public const int Y3FieldNumber = 2;
    private readonly static int Y3DefaultValue = 0;

    private int y3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y3 {
      get { if ((_hasBits0 & 1) != 0) { return y3_; } else { return Y3DefaultValue; } }
      set {
        _hasBits0 |= 1;
        y3_ = value;
      }
    }
    /// <summary>Gets whether the "y3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY3 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "y3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY3() {
      _hasBits0 &= ~1;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestH1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Y2, other.Y2)) return false;
      if (Y3 != other.Y3) 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 (y2_ != null) hash ^= Y2.GetHashCode();
      if (HasY3) hash ^= Y3.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 (y2_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Y2);
      }
      if (HasY3) {
        output.WriteRawTag(16);
        output.WriteInt32(Y3);
      }
      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 (y2_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Y2);
      }
      if (HasY3) {
        output.WriteRawTag(16);
        output.WriteInt32(Y3);
      }
      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 (y2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Y2);
      }
      if (HasY3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y3);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestH1 other) {
      if (other == null) {
        return;
      }
      if (other.y2_ != null) {
        if (y2_ == null) {
          Y2 = new global::Cfg.TestH2();
        }
        Y2.MergeFrom(other.Y2);
      }
      if (other.HasY3) {
        Y3 = other.Y3;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (y2_ == null) {
              Y2 = new global::Cfg.TestH2();
            }
            input.ReadMessage(Y2);
            break;
          }
          case 16: {
            Y3 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (y2_ == null) {
              Y2 = new global::Cfg.TestH2();
            }
            input.ReadMessage(Y2);
            break;
          }
          case 16: {
            Y3 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestH2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "z2" field.</summary>
    public const int Z2FieldNumber = 1;
    private readonly static int Z2DefaultValue = 0;

    private int z2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Z2 {
      get { if ((_hasBits0 & 1) != 0) { return z2_; } else { return Z2DefaultValue; } }
      set {
        _hasBits0 |= 1;
        z2_ = value;
      }
    }
    /// <summary>Gets whether the "z2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasZ2 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "z2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearZ2() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "z3" field.</summary>
    public const int Z3FieldNumber = 2;
    private readonly static int Z3DefaultValue = 0;

    private int z3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Z3 {
      get { if ((_hasBits0 & 2) != 0) { return z3_; } else { return Z3DefaultValue; } }
      set {
        _hasBits0 |= 2;
        z3_ = value;
      }
    }
    /// <summary>Gets whether the "z3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasZ3 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "z3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearZ3() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestH2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Z2 != other.Z2) return false;
      if (Z3 != other.Z3) 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 (HasZ2) hash ^= Z2.GetHashCode();
      if (HasZ3) hash ^= Z3.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 (HasZ2) {
        output.WriteRawTag(8);
        output.WriteInt32(Z2);
      }
      if (HasZ3) {
        output.WriteRawTag(16);
        output.WriteInt32(Z3);
      }
      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 (HasZ2) {
        output.WriteRawTag(8);
        output.WriteInt32(Z2);
      }
      if (HasZ3) {
        output.WriteRawTag(16);
        output.WriteInt32(Z3);
      }
      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 (HasZ2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Z2);
      }
      if (HasZ3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Z3);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestH2 other) {
      if (other == null) {
        return;
      }
      if (other.HasZ2) {
        Z2 = other.Z2;
      }
      if (other.HasZ3) {
        Z3 = other.Z3;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Z2 = input.ReadInt32();
            break;
          }
          case 16: {
            Z3 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Z2 = input.ReadInt32();
            break;
          }
          case 16: {
            Z3 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestNull() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestNull(TestTestNull other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      x1_ = other.x1_;
      x2_ = other.x2_;
      x3_ = other.x3_ != null ? other.x3_.Clone() : null;
      x4_ = other.x4_ != null ? other.x4_.Clone() : null;
      s1_ = other.s1_;
      s2_ = other.s2_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 2) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 3;
    private readonly static global::Cfg.TestDemoEnum X2DefaultValue = global::Cfg.TestDemoEnum.None;

    private global::Cfg.TestDemoEnum x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoEnum X2 {
      get { if ((_hasBits0 & 4) != 0) { return x2_; } else { return X2DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x2_ = value;
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 4;
    private global::Cfg.TestDemoType1 x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoType1 X3 {
      get { return x3_; }
      set {
        x3_ = value;
      }
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 5;
    private global::Cfg.TestDemoDynamic x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoDynamic X4 {
      get { return x4_; }
      set {
        x4_ = value;
      }
    }

    /// <summary>Field number for the "s1" field.</summary>
    public const int S1FieldNumber = 6;
    private readonly static string S1DefaultValue = "";

    private string s1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S1 {
      get { return s1_ ?? S1DefaultValue; }
      set {
        s1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS1 {
      get { return s1_ != null; }
    }
    /// <summary>Clears the value of the "s1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS1() {
      s1_ = null;
    }

    /// <summary>Field number for the "s2" field.</summary>
    public const int S2FieldNumber = 7;
    private readonly static string S2DefaultValue = "";

    private string s2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S2 {
      get { return s2_ ?? S2DefaultValue; }
      set {
        s2_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS2 {
      get { return s2_ != null; }
    }
    /// <summary>Clears the value of the "s2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS2() {
      s2_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestNull other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X1 != other.X1) return false;
      if (X2 != other.X2) return false;
      if (!object.Equals(X3, other.X3)) return false;
      if (!object.Equals(X4, other.X4)) return false;
      if (S1 != other.S1) return false;
      if (S2 != other.S2) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX1) hash ^= X1.GetHashCode();
      if (HasX2) hash ^= X2.GetHashCode();
      if (x3_ != null) hash ^= X3.GetHashCode();
      if (x4_ != null) hash ^= X4.GetHashCode();
      if (HasS1) hash ^= S1.GetHashCode();
      if (HasS2) hash ^= S2.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(24);
        output.WriteEnum((int) X2);
      }
      if (x3_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(X3);
      }
      if (x4_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(X4);
      }
      if (HasS1) {
        output.WriteRawTag(50);
        output.WriteString(S1);
      }
      if (HasS2) {
        output.WriteRawTag(58);
        output.WriteString(S2);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(24);
        output.WriteEnum((int) X2);
      }
      if (x3_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(X3);
      }
      if (x4_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(X4);
      }
      if (HasS1) {
        output.WriteRawTag(50);
        output.WriteString(S1);
      }
      if (HasS2) {
        output.WriteRawTag(58);
        output.WriteString(S2);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) X2);
      }
      if (x3_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X3);
      }
      if (x4_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X4);
      }
      if (HasS1) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S1);
      }
      if (HasS2) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S2);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestNull other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      if (other.x3_ != null) {
        if (x3_ == null) {
          X3 = new global::Cfg.TestDemoType1();
        }
        X3.MergeFrom(other.X3);
      }
      if (other.x4_ != null) {
        if (x4_ == null) {
          X4 = new global::Cfg.TestDemoDynamic();
        }
        X4.MergeFrom(other.X4);
      }
      if (other.HasS1) {
        S1 = other.S1;
      }
      if (other.HasS2) {
        S2 = other.S2;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadInt32();
            break;
          }
          case 24: {
            X2 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 34: {
            if (x3_ == null) {
              X3 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X3);
            break;
          }
          case 42: {
            if (x4_ == null) {
              X4 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X4);
            break;
          }
          case 50: {
            S1 = input.ReadString();
            break;
          }
          case 58: {
            S2 = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadInt32();
            break;
          }
          case 24: {
            X2 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 34: {
            if (x3_ == null) {
              X3 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X3);
            break;
          }
          case 42: {
            if (x4_ == null) {
              X4 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X4);
            break;
          }
          case 50: {
            S1 = input.ReadString();
            break;
          }
          case 58: {
            S2 = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoPrimitiveTypesTable() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDemoPrimitiveTypesTable(TestDemoPrimitiveTypesTable other) : this() {
      _hasBits0 = other._hasBits0;
      x1_ = other.x1_;
      x2_ = other.x2_;
      x3_ = other.x3_;
      x4_ = other.x4_;
      x5_ = other.x5_;
      x6_ = other.x6_;
      x7_ = other.x7_;
      s1_ = other.s1_;
      s2_ = other.s2_;
      v2_ = other.v2_ != null ? other.v2_.Clone() : null;
      v3_ = other.v3_ != null ? other.v3_.Clone() : null;
      v4_ = other.v4_ != null ? other.v4_.Clone() : null;
      t1_ = other.t1_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 1;
    private readonly static bool X1DefaultValue = false;

    private bool x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool X1 {
      get { if ((_hasBits0 & 1) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 2;
    private readonly static int X2DefaultValue = 0;

    private int x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X2 {
      get { if ((_hasBits0 & 2) != 0) { return x2_; } else { return X2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x2_ = value;
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 3;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 4) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 4;
    private readonly static int X4DefaultValue = 0;

    private int x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X4 {
      get { if ((_hasBits0 & 8) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 8;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "x5" field.</summary>
    public const int X5FieldNumber = 5;
    private readonly static long X5DefaultValue = 0L;

    private long x5_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long X5 {
      get { if ((_hasBits0 & 16) != 0) { return x5_; } else { return X5DefaultValue; } }
      set {
        _hasBits0 |= 16;
        x5_ = value;
      }
    }
    /// <summary>Gets whether the "x5" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX5 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "x5" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX5() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "x6" field.</summary>
    public const int X6FieldNumber = 6;
    private readonly static float X6DefaultValue = 0F;

    private float x6_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X6 {
      get { if ((_hasBits0 & 32) != 0) { return x6_; } else { return X6DefaultValue; } }
      set {
        _hasBits0 |= 32;
        x6_ = value;
      }
    }
    /// <summary>Gets whether the "x6" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX6 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "x6" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX6() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "x7" field.</summary>
    public const int X7FieldNumber = 7;
    private readonly static double X7DefaultValue = 0D;

    private double x7_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public double X7 {
      get { if ((_hasBits0 & 64) != 0) { return x7_; } else { return X7DefaultValue; } }
      set {
        _hasBits0 |= 64;
        x7_ = value;
      }
    }
    /// <summary>Gets whether the "x7" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX7 {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "x7" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX7() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "s1" field.</summary>
    public const int S1FieldNumber = 8;
    private readonly static string S1DefaultValue = "";

    private string s1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S1 {
      get { return s1_ ?? S1DefaultValue; }
      set {
        s1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS1 {
      get { return s1_ != null; }
    }
    /// <summary>Clears the value of the "s1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS1() {
      s1_ = null;
    }

    /// <summary>Field number for the "s2" field.</summary>
    public const int S2FieldNumber = 9;
    private readonly static string S2DefaultValue = "";

    private string s2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S2 {
      get { return s2_ ?? S2DefaultValue; }
      set {
        s2_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS2 {
      get { return s2_ != null; }
    }
    /// <summary>Clears the value of the "s2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS2() {
      s2_ = null;
    }

    /// <summary>Field number for the "v2" field.</summary>
    public const int V2FieldNumber = 10;
    private global::Cfg.vector2 v2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector2 V2 {
      get { return v2_; }
      set {
        v2_ = value;
      }
    }

    /// <summary>Field number for the "v3" field.</summary>
    public const int V3FieldNumber = 11;
    private global::Cfg.vector3 v3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector3 V3 {
      get { return v3_; }
      set {
        v3_ = value;
      }
    }

    /// <summary>Field number for the "v4" field.</summary>
    public const int V4FieldNumber = 12;
    private global::Cfg.vector4 v4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector4 V4 {
      get { return v4_; }
      set {
        v4_ = value;
      }
    }

    /// <summary>Field number for the "t1" field.</summary>
    public const int T1FieldNumber = 13;
    private readonly static long T1DefaultValue = 0L;

    private long t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long T1 {
      get { if ((_hasBits0 & 128) != 0) { return t1_; } else { return T1DefaultValue; } }
      set {
        _hasBits0 |= 128;
        t1_ = value;
      }
    }
    /// <summary>Gets whether the "t1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasT1 {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "t1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearT1() {
      _hasBits0 &= ~128;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoPrimitiveTypesTable other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X1 != other.X1) return false;
      if (X2 != other.X2) return false;
      if (X3 != other.X3) return false;
      if (X4 != other.X4) return false;
      if (X5 != other.X5) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X6, other.X6)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(X7, other.X7)) return false;
      if (S1 != other.S1) return false;
      if (S2 != other.S2) return false;
      if (!object.Equals(V2, other.V2)) return false;
      if (!object.Equals(V3, other.V3)) return false;
      if (!object.Equals(V4, other.V4)) return false;
      if (T1 != other.T1) 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 (HasX1) hash ^= X1.GetHashCode();
      if (HasX2) hash ^= X2.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasX4) hash ^= X4.GetHashCode();
      if (HasX5) hash ^= X5.GetHashCode();
      if (HasX6) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X6);
      if (HasX7) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(X7);
      if (HasS1) hash ^= S1.GetHashCode();
      if (HasS2) hash ^= S2.GetHashCode();
      if (v2_ != null) hash ^= V2.GetHashCode();
      if (v3_ != null) hash ^= V3.GetHashCode();
      if (v4_ != null) hash ^= V4.GetHashCode();
      if (HasT1) hash ^= T1.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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteBool(X1);
      }
      if (HasX2) {
        output.WriteRawTag(16);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(24);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(32);
        output.WriteInt32(X4);
      }
      if (HasX5) {
        output.WriteRawTag(40);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(53);
        output.WriteFloat(X6);
      }
      if (HasX7) {
        output.WriteRawTag(57);
        output.WriteDouble(X7);
      }
      if (HasS1) {
        output.WriteRawTag(66);
        output.WriteString(S1);
      }
      if (HasS2) {
        output.WriteRawTag(74);
        output.WriteString(S2);
      }
      if (v2_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(V4);
      }
      if (HasT1) {
        output.WriteRawTag(104);
        output.WriteInt64(T1);
      }
      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 (HasX1) {
        output.WriteRawTag(8);
        output.WriteBool(X1);
      }
      if (HasX2) {
        output.WriteRawTag(16);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(24);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(32);
        output.WriteInt32(X4);
      }
      if (HasX5) {
        output.WriteRawTag(40);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(53);
        output.WriteFloat(X6);
      }
      if (HasX7) {
        output.WriteRawTag(57);
        output.WriteDouble(X7);
      }
      if (HasS1) {
        output.WriteRawTag(66);
        output.WriteString(S1);
      }
      if (HasS2) {
        output.WriteRawTag(74);
        output.WriteString(S2);
      }
      if (v2_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(V4);
      }
      if (HasT1) {
        output.WriteRawTag(104);
        output.WriteInt64(T1);
      }
      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 (HasX1) {
        size += 1 + 1;
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X2);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasX4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X4);
      }
      if (HasX5) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(X5);
      }
      if (HasX6) {
        size += 1 + 4;
      }
      if (HasX7) {
        size += 1 + 8;
      }
      if (HasS1) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S1);
      }
      if (HasS2) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S2);
      }
      if (v2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (v3_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V3);
      }
      if (v4_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V4);
      }
      if (HasT1) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(T1);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoPrimitiveTypesTable other) {
      if (other == null) {
        return;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      if (other.HasX5) {
        X5 = other.X5;
      }
      if (other.HasX6) {
        X6 = other.X6;
      }
      if (other.HasX7) {
        X7 = other.X7;
      }
      if (other.HasS1) {
        S1 = other.S1;
      }
      if (other.HasS2) {
        S2 = other.S2;
      }
      if (other.v2_ != null) {
        if (v2_ == null) {
          V2 = new global::Cfg.vector2();
        }
        V2.MergeFrom(other.V2);
      }
      if (other.v3_ != null) {
        if (v3_ == null) {
          V3 = new global::Cfg.vector3();
        }
        V3.MergeFrom(other.V3);
      }
      if (other.v4_ != null) {
        if (v4_ == null) {
          V4 = new global::Cfg.vector4();
        }
        V4.MergeFrom(other.V4);
      }
      if (other.HasT1) {
        T1 = other.T1;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X1 = input.ReadBool();
            break;
          }
          case 16: {
            X2 = input.ReadInt32();
            break;
          }
          case 24: {
            X3 = input.ReadInt32();
            break;
          }
          case 32: {
            X4 = input.ReadInt32();
            break;
          }
          case 40: {
            X5 = input.ReadInt64();
            break;
          }
          case 53: {
            X6 = input.ReadFloat();
            break;
          }
          case 57: {
            X7 = input.ReadDouble();
            break;
          }
          case 66: {
            S1 = input.ReadString();
            break;
          }
          case 74: {
            S2 = input.ReadString();
            break;
          }
          case 82: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 90: {
            if (v3_ == null) {
              V3 = new global::Cfg.vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 98: {
            if (v4_ == null) {
              V4 = new global::Cfg.vector4();
            }
            input.ReadMessage(V4);
            break;
          }
          case 104: {
            T1 = input.ReadInt64();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X1 = input.ReadBool();
            break;
          }
          case 16: {
            X2 = input.ReadInt32();
            break;
          }
          case 24: {
            X3 = input.ReadInt32();
            break;
          }
          case 32: {
            X4 = input.ReadInt32();
            break;
          }
          case 40: {
            X5 = input.ReadInt64();
            break;
          }
          case 53: {
            X6 = input.ReadFloat();
            break;
          }
          case 57: {
            X7 = input.ReadDouble();
            break;
          }
          case 66: {
            S1 = input.ReadString();
            break;
          }
          case 74: {
            S2 = input.ReadString();
            break;
          }
          case 82: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 90: {
            if (v3_ == null) {
              V3 = new global::Cfg.vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 98: {
            if (v4_ == null) {
              V4 = new global::Cfg.vector4();
            }
            input.ReadMessage(V4);
            break;
          }
          case 104: {
            T1 = input.ReadInt64();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 vector2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static float XDefaultValue = 0F;

    private float x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static float YDefaultValue = 0F;

    private float y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(vector2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X, other.X)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Y, other.Y)) 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 (HasX) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X);
      if (HasY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Y);
      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 (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      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 (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      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 (HasX) {
        size += 1 + 4;
      }
      if (HasY) {
        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(vector2 other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 vector3() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static float XDefaultValue = 0F;

    private float x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static float YDefaultValue = 0F;

    private float y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "z" field.</summary>
    public const int ZFieldNumber = 3;
    private readonly static float ZDefaultValue = 0F;

    private float z_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Z {
      get { if ((_hasBits0 & 4) != 0) { return z_; } else { return ZDefaultValue; } }
      set {
        _hasBits0 |= 4;
        z_ = value;
      }
    }
    /// <summary>Gets whether the "z" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasZ {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "z" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearZ() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(vector3 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X, other.X)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Y, other.Y)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Z, other.Z)) 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 (HasX) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X);
      if (HasY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Y);
      if (HasZ) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Z);
      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 (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      if (HasZ) {
        output.WriteRawTag(29);
        output.WriteFloat(Z);
      }
      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 (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      if (HasZ) {
        output.WriteRawTag(29);
        output.WriteFloat(Z);
      }
      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 (HasX) {
        size += 1 + 4;
      }
      if (HasY) {
        size += 1 + 4;
      }
      if (HasZ) {
        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(vector3 other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      if (other.HasZ) {
        Z = other.Z;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
          case 29: {
            Z = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
          case 29: {
            Z = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 vector4() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public vector4(vector4 other) : this() {
      _hasBits0 = other._hasBits0;
      x_ = other.x_;
      y_ = other.y_;
      z_ = other.z_;
      w_ = other.w_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static float XDefaultValue = 0F;

    private float x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static float YDefaultValue = 0F;

    private float y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "z" field.</summary>
    public const int ZFieldNumber = 3;
    private readonly static float ZDefaultValue = 0F;

    private float z_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Z {
      get { if ((_hasBits0 & 4) != 0) { return z_; } else { return ZDefaultValue; } }
      set {
        _hasBits0 |= 4;
        z_ = value;
      }
    }
    /// <summary>Gets whether the "z" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasZ {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "z" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearZ() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "w" field.</summary>
    public const int WFieldNumber = 4;
    private readonly static float WDefaultValue = 0F;

    private float w_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float W {
      get { if ((_hasBits0 & 8) != 0) { return w_; } else { return WDefaultValue; } }
      set {
        _hasBits0 |= 8;
        w_ = value;
      }
    }
    /// <summary>Gets whether the "w" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasW {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "w" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearW() {
      _hasBits0 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(vector4 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X, other.X)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Y, other.Y)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Z, other.Z)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(W, other.W)) 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 (HasX) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X);
      if (HasY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Y);
      if (HasZ) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Z);
      if (HasW) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(W);
      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 (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      if (HasZ) {
        output.WriteRawTag(29);
        output.WriteFloat(Z);
      }
      if (HasW) {
        output.WriteRawTag(37);
        output.WriteFloat(W);
      }
      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 (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      if (HasZ) {
        output.WriteRawTag(29);
        output.WriteFloat(Z);
      }
      if (HasW) {
        output.WriteRawTag(37);
        output.WriteFloat(W);
      }
      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 (HasX) {
        size += 1 + 4;
      }
      if (HasY) {
        size += 1 + 4;
      }
      if (HasZ) {
        size += 1 + 4;
      }
      if (HasW) {
        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(vector4 other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      if (other.HasZ) {
        Z = other.Z;
      }
      if (other.HasW) {
        W = other.W;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
          case 29: {
            Z = input.ReadFloat();
            break;
          }
          case 37: {
            W = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
          case 29: {
            Z = input.ReadFloat();
            break;
          }
          case 37: {
            W = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestString() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestString(TestTestString other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      s1_ = other.s1_;
      cs1_ = other.cs1_ != null ? other.cs1_.Clone() : null;
      cs2_ = other.cs2_ != null ? other.cs2_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "s1" field.</summary>
    public const int S1FieldNumber = 2;
    private readonly static string S1DefaultValue = "";

    private string s1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S1 {
      get { return s1_ ?? S1DefaultValue; }
      set {
        s1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS1 {
      get { return s1_ != null; }
    }
    /// <summary>Clears the value of the "s1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS1() {
      s1_ = null;
    }

    /// <summary>Field number for the "cs1" field.</summary>
    public const int Cs1FieldNumber = 3;
    private global::Cfg.TestCompactString cs1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestCompactString Cs1 {
      get { return cs1_; }
      set {
        cs1_ = value;
      }
    }

    /// <summary>Field number for the "cs2" field.</summary>
    public const int Cs2FieldNumber = 4;
    private global::Cfg.TestCompactString cs2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestCompactString Cs2 {
      get { return cs2_; }
      set {
        cs2_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestString other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (S1 != other.S1) return false;
      if (!object.Equals(Cs1, other.Cs1)) return false;
      if (!object.Equals(Cs2, other.Cs2)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasS1) hash ^= S1.GetHashCode();
      if (cs1_ != null) hash ^= Cs1.GetHashCode();
      if (cs2_ != null) hash ^= Cs2.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasS1) {
        output.WriteRawTag(18);
        output.WriteString(S1);
      }
      if (cs1_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Cs1);
      }
      if (cs2_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Cs2);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasS1) {
        output.WriteRawTag(18);
        output.WriteString(S1);
      }
      if (cs1_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Cs1);
      }
      if (cs2_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Cs2);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasS1) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S1);
      }
      if (cs1_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Cs1);
      }
      if (cs2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Cs2);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestString other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasS1) {
        S1 = other.S1;
      }
      if (other.cs1_ != null) {
        if (cs1_ == null) {
          Cs1 = new global::Cfg.TestCompactString();
        }
        Cs1.MergeFrom(other.Cs1);
      }
      if (other.cs2_ != null) {
        if (cs2_ == null) {
          Cs2 = new global::Cfg.TestCompactString();
        }
        Cs2.MergeFrom(other.Cs2);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            S1 = input.ReadString();
            break;
          }
          case 26: {
            if (cs1_ == null) {
              Cs1 = new global::Cfg.TestCompactString();
            }
            input.ReadMessage(Cs1);
            break;
          }
          case 34: {
            if (cs2_ == null) {
              Cs2 = new global::Cfg.TestCompactString();
            }
            input.ReadMessage(Cs2);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            S1 = input.ReadString();
            break;
          }
          case 26: {
            if (cs1_ == null) {
              Cs1 = new global::Cfg.TestCompactString();
            }
            input.ReadMessage(Cs1);
            break;
          }
          case 34: {
            if (cs2_ == null) {
              Cs2 = new global::Cfg.TestCompactString();
            }
            input.ReadMessage(Cs2);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestCompactString() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "s2" field.</summary>
    public const int S2FieldNumber = 2;
    private readonly static string S2DefaultValue = "";

    private string s2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S2 {
      get { return s2_ ?? S2DefaultValue; }
      set {
        s2_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS2 {
      get { return s2_ != null; }
    }
    /// <summary>Clears the value of the "s2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS2() {
      s2_ = null;
    }

    /// <summary>Field number for the "s3" field.</summary>
    public const int S3FieldNumber = 3;
    private readonly static string S3DefaultValue = "";

    private string s3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S3 {
      get { return s3_ ?? S3DefaultValue; }
      set {
        s3_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS3 {
      get { return s3_ != null; }
    }
    /// <summary>Clears the value of the "s3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS3() {
      s3_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestCompactString other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (S2 != other.S2) return false;
      if (S3 != other.S3) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasS2) hash ^= S2.GetHashCode();
      if (HasS3) hash ^= S3.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasS2) {
        output.WriteRawTag(18);
        output.WriteString(S2);
      }
      if (HasS3) {
        output.WriteRawTag(26);
        output.WriteString(S3);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasS2) {
        output.WriteRawTag(18);
        output.WriteString(S2);
      }
      if (HasS3) {
        output.WriteRawTag(26);
        output.WriteString(S3);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasS2) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S2);
      }
      if (HasS3) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S3);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestCompactString other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasS2) {
        S2 = other.S2;
      }
      if (other.HasS3) {
        S3 = other.S3;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            S2 = input.ReadString();
            break;
          }
          case 26: {
            S3 = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            S2 = input.ReadString();
            break;
          }
          case 26: {
            S3 = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDemoGroup() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDemoGroup(TestDemoGroup other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      x1_ = other.x1_;
      x2_ = other.x2_;
      x3_ = other.x3_;
      x4_ = other.x4_;
      x5_ = other.x5_ != null ? other.x5_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 2) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 3;
    private readonly static int X2DefaultValue = 0;

    private int x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X2 {
      get { if ((_hasBits0 & 4) != 0) { return x2_; } else { return X2DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x2_ = value;
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 4;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 8) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 8;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 5;
    private readonly static int X4DefaultValue = 0;

    private int x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X4 {
      get { if ((_hasBits0 & 16) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 16;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "x5" field.</summary>
    public const int X5FieldNumber = 6;
    private global::Cfg.TestInnerGroup x5_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestInnerGroup X5 {
      get { return x5_; }
      set {
        x5_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDemoGroup other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X1 != other.X1) return false;
      if (X2 != other.X2) return false;
      if (X3 != other.X3) return false;
      if (X4 != other.X4) return false;
      if (!object.Equals(X5, other.X5)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX1) hash ^= X1.GetHashCode();
      if (HasX2) hash ^= X2.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasX4) hash ^= X4.GetHashCode();
      if (x5_ != null) hash ^= X5.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(24);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(32);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(40);
        output.WriteInt32(X4);
      }
      if (x5_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(X5);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteInt32(X1);
      }
      if (HasX2) {
        output.WriteRawTag(24);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(32);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(40);
        output.WriteInt32(X4);
      }
      if (x5_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(X5);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X2);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasX4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X4);
      }
      if (x5_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X5);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDemoGroup other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      if (other.x5_ != null) {
        if (x5_ == null) {
          X5 = new global::Cfg.TestInnerGroup();
        }
        X5.MergeFrom(other.X5);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadInt32();
            break;
          }
          case 24: {
            X2 = input.ReadInt32();
            break;
          }
          case 32: {
            X3 = input.ReadInt32();
            break;
          }
          case 40: {
            X4 = input.ReadInt32();
            break;
          }
          case 50: {
            if (x5_ == null) {
              X5 = new global::Cfg.TestInnerGroup();
            }
            input.ReadMessage(X5);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadInt32();
            break;
          }
          case 24: {
            X2 = input.ReadInt32();
            break;
          }
          case 32: {
            X3 = input.ReadInt32();
            break;
          }
          case 40: {
            X4 = input.ReadInt32();
            break;
          }
          case 50: {
            if (x5_ == null) {
              X5 = new global::Cfg.TestInnerGroup();
            }
            input.ReadMessage(X5);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestInnerGroup() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestInnerGroup(TestInnerGroup other) : this() {
      _hasBits0 = other._hasBits0;
      y1_ = other.y1_;
      y2_ = other.y2_;
      y3_ = other.y3_;
      y4_ = other.y4_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "y1" field.</summary>
    public const int Y1FieldNumber = 1;
    private readonly static int Y1DefaultValue = 0;

    private int y1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y1 {
      get { if ((_hasBits0 & 1) != 0) { return y1_; } else { return Y1DefaultValue; } }
      set {
        _hasBits0 |= 1;
        y1_ = value;
      }
    }
    /// <summary>Gets whether the "y1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY1 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "y1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY1() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y2" field.</summary>
    public const int Y2FieldNumber = 2;
    private readonly static int Y2DefaultValue = 0;

    private int y2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y2 {
      get { if ((_hasBits0 & 2) != 0) { return y2_; } else { return Y2DefaultValue; } }
      set {
        _hasBits0 |= 2;
        y2_ = value;
      }
    }
    /// <summary>Gets whether the "y2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY2 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY2() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "y3" field.</summary>
    public const int Y3FieldNumber = 3;
    private readonly static int Y3DefaultValue = 0;

    private int y3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y3 {
      get { if ((_hasBits0 & 4) != 0) { return y3_; } else { return Y3DefaultValue; } }
      set {
        _hasBits0 |= 4;
        y3_ = value;
      }
    }
    /// <summary>Gets whether the "y3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY3 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "y3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY3() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "y4" field.</summary>
    public const int Y4FieldNumber = 4;
    private readonly static int Y4DefaultValue = 0;

    private int y4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y4 {
      get { if ((_hasBits0 & 8) != 0) { return y4_; } else { return Y4DefaultValue; } }
      set {
        _hasBits0 |= 8;
        y4_ = value;
      }
    }
    /// <summary>Gets whether the "y4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY4 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "y4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY4() {
      _hasBits0 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestInnerGroup other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Y1 != other.Y1) return false;
      if (Y2 != other.Y2) return false;
      if (Y3 != other.Y3) return false;
      if (Y4 != other.Y4) 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 (HasY1) hash ^= Y1.GetHashCode();
      if (HasY2) hash ^= Y2.GetHashCode();
      if (HasY3) hash ^= Y3.GetHashCode();
      if (HasY4) hash ^= Y4.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 (HasY1) {
        output.WriteRawTag(8);
        output.WriteInt32(Y1);
      }
      if (HasY2) {
        output.WriteRawTag(16);
        output.WriteInt32(Y2);
      }
      if (HasY3) {
        output.WriteRawTag(24);
        output.WriteInt32(Y3);
      }
      if (HasY4) {
        output.WriteRawTag(32);
        output.WriteInt32(Y4);
      }
      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 (HasY1) {
        output.WriteRawTag(8);
        output.WriteInt32(Y1);
      }
      if (HasY2) {
        output.WriteRawTag(16);
        output.WriteInt32(Y2);
      }
      if (HasY3) {
        output.WriteRawTag(24);
        output.WriteInt32(Y3);
      }
      if (HasY4) {
        output.WriteRawTag(32);
        output.WriteInt32(Y4);
      }
      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 (HasY1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y1);
      }
      if (HasY2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y2);
      }
      if (HasY3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y3);
      }
      if (HasY4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y4);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestInnerGroup other) {
      if (other == null) {
        return;
      }
      if (other.HasY1) {
        Y1 = other.Y1;
      }
      if (other.HasY2) {
        Y2 = other.Y2;
      }
      if (other.HasY3) {
        Y3 = other.Y3;
      }
      if (other.HasY4) {
        Y4 = other.Y4;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Y1 = input.ReadInt32();
            break;
          }
          case 16: {
            Y2 = input.ReadInt32();
            break;
          }
          case 24: {
            Y3 = input.ReadInt32();
            break;
          }
          case 32: {
            Y4 = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Y1 = input.ReadInt32();
            break;
          }
          case 16: {
            Y2 = input.ReadInt32();
            break;
          }
          case 24: {
            Y3 = input.ReadInt32();
            break;
          }
          case 32: {
            Y4 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestGlobal() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "unlock_equip" field.</summary>
    public const int UnlockEquipFieldNumber = 1;
    private readonly static int UnlockEquipDefaultValue = 0;

    private int unlockEquip_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UnlockEquip {
      get { if ((_hasBits0 & 1) != 0) { return unlockEquip_; } else { return UnlockEquipDefaultValue; } }
      set {
        _hasBits0 |= 1;
        unlockEquip_ = value;
      }
    }
    /// <summary>Gets whether the "unlock_equip" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUnlockEquip {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "unlock_equip" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUnlockEquip() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "unlock_hero" field.</summary>
    public const int UnlockHeroFieldNumber = 2;
    private readonly static int UnlockHeroDefaultValue = 0;

    private int unlockHero_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UnlockHero {
      get { if ((_hasBits0 & 2) != 0) { return unlockHero_; } else { return UnlockHeroDefaultValue; } }
      set {
        _hasBits0 |= 2;
        unlockHero_ = value;
      }
    }
    /// <summary>Gets whether the "unlock_hero" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUnlockHero {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "unlock_hero" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUnlockHero() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestGlobal other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (UnlockEquip != other.UnlockEquip) return false;
      if (UnlockHero != other.UnlockHero) 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 (HasUnlockEquip) hash ^= UnlockEquip.GetHashCode();
      if (HasUnlockHero) hash ^= UnlockHero.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 (HasUnlockEquip) {
        output.WriteRawTag(8);
        output.WriteInt32(UnlockEquip);
      }
      if (HasUnlockHero) {
        output.WriteRawTag(16);
        output.WriteInt32(UnlockHero);
      }
      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 (HasUnlockEquip) {
        output.WriteRawTag(8);
        output.WriteInt32(UnlockEquip);
      }
      if (HasUnlockHero) {
        output.WriteRawTag(16);
        output.WriteInt32(UnlockHero);
      }
      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 (HasUnlockEquip) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UnlockEquip);
      }
      if (HasUnlockHero) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UnlockHero);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestGlobal other) {
      if (other == null) {
        return;
      }
      if (other.HasUnlockEquip) {
        UnlockEquip = other.UnlockEquip;
      }
      if (other.HasUnlockHero) {
        UnlockHero = other.UnlockHero;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            UnlockEquip = input.ReadInt32();
            break;
          }
          case 16: {
            UnlockHero = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            UnlockEquip = input.ReadInt32();
            break;
          }
          case 16: {
            UnlockHero = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestBeRef() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "count" field.</summary>
    public const int CountFieldNumber = 2;
    private readonly static int CountDefaultValue = 0;

    private int count_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Count {
      get { if ((_hasBits0 & 2) != 0) { return count_; } else { return CountDefaultValue; } }
      set {
        _hasBits0 |= 2;
        count_ = value;
      }
    }
    /// <summary>Gets whether the "count" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCount {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "count" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCount() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestBeRef other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Count != other.Count) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasCount) hash ^= Count.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasCount) {
        output.WriteRawTag(16);
        output.WriteInt32(Count);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasCount) {
        output.WriteRawTag(16);
        output.WriteInt32(Count);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasCount) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestBeRef other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasCount) {
        Count = other.Count;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            Count = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            Count = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestRef() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestRef(TestTestRef other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      x1_ = other.x1_;
      x12_ = other.x12_;
      x2_ = other.x2_;
      x3_ = other.x3_;
      x4_ = other.x4_;
      a1_ = other.a1_.Clone();
      a2_ = other.a2_.Clone();
      b1_ = other.b1_.Clone();
      b2_ = other.b2_.Clone();
      c1_ = other.c1_.Clone();
      c2_ = other.c2_.Clone();
      d1_ = other.d1_.Clone();
      d2_ = other.d2_.Clone();
      e1_ = other.e1_;
      e2_ = other.e2_;
      e3_ = other.e3_;
      f1_ = other.f1_;
      f2_ = other.f2_;
      f3_ = other.f3_;
      s1_ = other.s1_ != null ? other.s1_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private readonly static int X1DefaultValue = 0;

    private int x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X1 {
      get { if ((_hasBits0 & 2) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x1_2" field.</summary>
    public const int X12FieldNumber = 3;
    private readonly static int X12DefaultValue = 0;

    private int x12_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X12 {
      get { if ((_hasBits0 & 4) != 0) { return x12_; } else { return X12DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x12_ = value;
      }
    }
    /// <summary>Gets whether the "x1_2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX12 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x1_2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX12() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 4;
    private readonly static int X2DefaultValue = 0;

    private int x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X2 {
      get { if ((_hasBits0 & 8) != 0) { return x2_; } else { return X2DefaultValue; } }
      set {
        _hasBits0 |= 8;
        x2_ = value;
      }
    }
    /// <summary>Gets whether the "x2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX2 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "x2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX2() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 5;
    private readonly static int X3DefaultValue = 0;

    private int x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X3 {
      get { if ((_hasBits0 & 16) != 0) { return x3_; } else { return X3DefaultValue; } }
      set {
        _hasBits0 |= 16;
        x3_ = value;
      }
    }
    /// <summary>Gets whether the "x3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX3 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "x3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX3() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 6;
    private readonly static int X4DefaultValue = 0;

    private int x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X4 {
      get { if ((_hasBits0 & 32) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 32;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "a1" field.</summary>
    public const int A1FieldNumber = 7;
    private static readonly pb::FieldCodec<int> _repeated_a1_codec
        = pb::FieldCodec.ForInt32(58);
    private readonly pbc::RepeatedField<int> a1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> A1 {
      get { return a1_; }
    }

    /// <summary>Field number for the "a2" field.</summary>
    public const int A2FieldNumber = 8;
    private static readonly pb::FieldCodec<int> _repeated_a2_codec
        = pb::FieldCodec.ForInt32(66);
    private readonly pbc::RepeatedField<int> a2_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> A2 {
      get { return a2_; }
    }

    /// <summary>Field number for the "b1" field.</summary>
    public const int B1FieldNumber = 9;
    private static readonly pb::FieldCodec<int> _repeated_b1_codec
        = pb::FieldCodec.ForInt32(74);
    private readonly pbc::RepeatedField<int> b1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> B1 {
      get { return b1_; }
    }

    /// <summary>Field number for the "b2" field.</summary>
    public const int B2FieldNumber = 10;
    private static readonly pb::FieldCodec<int> _repeated_b2_codec
        = pb::FieldCodec.ForInt32(82);
    private readonly pbc::RepeatedField<int> b2_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> B2 {
      get { return b2_; }
    }

    /// <summary>Field number for the "c1" field.</summary>
    public const int C1FieldNumber = 11;
    private static readonly pb::FieldCodec<int> _repeated_c1_codec
        = pb::FieldCodec.ForInt32(90);
    private readonly pbc::RepeatedField<int> c1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> C1 {
      get { return c1_; }
    }

    /// <summary>Field number for the "c2" field.</summary>
    public const int C2FieldNumber = 12;
    private static readonly pb::FieldCodec<int> _repeated_c2_codec
        = pb::FieldCodec.ForInt32(98);
    private readonly pbc::RepeatedField<int> c2_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> C2 {
      get { return c2_; }
    }

    /// <summary>Field number for the "d1" field.</summary>
    public const int D1FieldNumber = 13;
    private static readonly pbc::MapField<int, int>.Codec _map_d1_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 106);
    private readonly pbc::MapField<int, int> d1_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> D1 {
      get { return d1_; }
    }

    /// <summary>Field number for the "d2" field.</summary>
    public const int D2FieldNumber = 14;
    private static readonly pbc::MapField<int, int>.Codec _map_d2_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 114);
    private readonly pbc::MapField<int, int> d2_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> D2 {
      get { return d2_; }
    }

    /// <summary>Field number for the "e1" field.</summary>
    public const int E1FieldNumber = 15;
    private readonly static int E1DefaultValue = 0;

    private int e1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int E1 {
      get { if ((_hasBits0 & 64) != 0) { return e1_; } else { return E1DefaultValue; } }
      set {
        _hasBits0 |= 64;
        e1_ = value;
      }
    }
    /// <summary>Gets whether the "e1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasE1 {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "e1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearE1() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "e2" field.</summary>
    public const int E2FieldNumber = 16;
    private readonly static long E2DefaultValue = 0L;

    private long e2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long E2 {
      get { if ((_hasBits0 & 128) != 0) { return e2_; } else { return E2DefaultValue; } }
      set {
        _hasBits0 |= 128;
        e2_ = value;
      }
    }
    /// <summary>Gets whether the "e2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasE2 {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "e2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearE2() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "e3" field.</summary>
    public const int E3FieldNumber = 17;
    private readonly static string E3DefaultValue = "";

    private string e3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string E3 {
      get { return e3_ ?? E3DefaultValue; }
      set {
        e3_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "e3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasE3 {
      get { return e3_ != null; }
    }
    /// <summary>Clears the value of the "e3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearE3() {
      e3_ = null;
    }

    /// <summary>Field number for the "f1" field.</summary>
    public const int F1FieldNumber = 18;
    private readonly static int F1DefaultValue = 0;

    private int f1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int F1 {
      get { if ((_hasBits0 & 256) != 0) { return f1_; } else { return F1DefaultValue; } }
      set {
        _hasBits0 |= 256;
        f1_ = value;
      }
    }
    /// <summary>Gets whether the "f1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasF1 {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "f1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearF1() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "f2" field.</summary>
    public const int F2FieldNumber = 19;
    private readonly static long F2DefaultValue = 0L;

    private long f2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long F2 {
      get { if ((_hasBits0 & 512) != 0) { return f2_; } else { return F2DefaultValue; } }
      set {
        _hasBits0 |= 512;
        f2_ = value;
      }
    }
    /// <summary>Gets whether the "f2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasF2 {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "f2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearF2() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "f3" field.</summary>
    public const int F3FieldNumber = 20;
    private readonly static string F3DefaultValue = "";

    private string f3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string F3 {
      get { return f3_ ?? F3DefaultValue; }
      set {
        f3_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "f3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasF3 {
      get { return f3_ != null; }
    }
    /// <summary>Clears the value of the "f3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearF3() {
      f3_ = null;
    }

    /// <summary>Field number for the "s1" field.</summary>
    public const int S1FieldNumber = 21;
    private global::Cfg.TestRefDynamicBase s1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestRefDynamicBase S1 {
      get { return s1_; }
      set {
        s1_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestRef other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X1 != other.X1) return false;
      if (X12 != other.X12) return false;
      if (X2 != other.X2) return false;
      if (X3 != other.X3) return false;
      if (X4 != other.X4) return false;
      if(!a1_.Equals(other.a1_)) return false;
      if(!a2_.Equals(other.a2_)) return false;
      if(!b1_.Equals(other.b1_)) return false;
      if(!b2_.Equals(other.b2_)) return false;
      if(!c1_.Equals(other.c1_)) return false;
      if(!c2_.Equals(other.c2_)) return false;
      if (!D1.Equals(other.D1)) return false;
      if (!D2.Equals(other.D2)) return false;
      if (E1 != other.E1) return false;
      if (E2 != other.E2) return false;
      if (E3 != other.E3) return false;
      if (F1 != other.F1) return false;
      if (F2 != other.F2) return false;
      if (F3 != other.F3) return false;
      if (!object.Equals(S1, other.S1)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX1) hash ^= X1.GetHashCode();
      if (HasX12) hash ^= X12.GetHashCode();
      if (HasX2) hash ^= X2.GetHashCode();
      if (HasX3) hash ^= X3.GetHashCode();
      if (HasX4) hash ^= X4.GetHashCode();
      hash ^= a1_.GetHashCode();
      hash ^= a2_.GetHashCode();
      hash ^= b1_.GetHashCode();
      hash ^= b2_.GetHashCode();
      hash ^= c1_.GetHashCode();
      hash ^= c2_.GetHashCode();
      hash ^= D1.GetHashCode();
      hash ^= D2.GetHashCode();
      if (HasE1) hash ^= E1.GetHashCode();
      if (HasE2) hash ^= E2.GetHashCode();
      if (HasE3) hash ^= E3.GetHashCode();
      if (HasF1) hash ^= F1.GetHashCode();
      if (HasF2) hash ^= F2.GetHashCode();
      if (HasF3) hash ^= F3.GetHashCode();
      if (s1_ != null) hash ^= S1.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteInt32(X1);
      }
      if (HasX12) {
        output.WriteRawTag(24);
        output.WriteInt32(X12);
      }
      if (HasX2) {
        output.WriteRawTag(32);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(40);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(48);
        output.WriteInt32(X4);
      }
      a1_.WriteTo(output, _repeated_a1_codec);
      a2_.WriteTo(output, _repeated_a2_codec);
      b1_.WriteTo(output, _repeated_b1_codec);
      b2_.WriteTo(output, _repeated_b2_codec);
      c1_.WriteTo(output, _repeated_c1_codec);
      c2_.WriteTo(output, _repeated_c2_codec);
      d1_.WriteTo(output, _map_d1_codec);
      d2_.WriteTo(output, _map_d2_codec);
      if (HasE1) {
        output.WriteRawTag(120);
        output.WriteInt32(E1);
      }
      if (HasE2) {
        output.WriteRawTag(128, 1);
        output.WriteInt64(E2);
      }
      if (HasE3) {
        output.WriteRawTag(138, 1);
        output.WriteString(E3);
      }
      if (HasF1) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(F1);
      }
      if (HasF2) {
        output.WriteRawTag(152, 1);
        output.WriteInt64(F2);
      }
      if (HasF3) {
        output.WriteRawTag(162, 1);
        output.WriteString(F3);
      }
      if (s1_ != null) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(S1);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteInt32(X1);
      }
      if (HasX12) {
        output.WriteRawTag(24);
        output.WriteInt32(X12);
      }
      if (HasX2) {
        output.WriteRawTag(32);
        output.WriteInt32(X2);
      }
      if (HasX3) {
        output.WriteRawTag(40);
        output.WriteInt32(X3);
      }
      if (HasX4) {
        output.WriteRawTag(48);
        output.WriteInt32(X4);
      }
      a1_.WriteTo(ref output, _repeated_a1_codec);
      a2_.WriteTo(ref output, _repeated_a2_codec);
      b1_.WriteTo(ref output, _repeated_b1_codec);
      b2_.WriteTo(ref output, _repeated_b2_codec);
      c1_.WriteTo(ref output, _repeated_c1_codec);
      c2_.WriteTo(ref output, _repeated_c2_codec);
      d1_.WriteTo(ref output, _map_d1_codec);
      d2_.WriteTo(ref output, _map_d2_codec);
      if (HasE1) {
        output.WriteRawTag(120);
        output.WriteInt32(E1);
      }
      if (HasE2) {
        output.WriteRawTag(128, 1);
        output.WriteInt64(E2);
      }
      if (HasE3) {
        output.WriteRawTag(138, 1);
        output.WriteString(E3);
      }
      if (HasF1) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(F1);
      }
      if (HasF2) {
        output.WriteRawTag(152, 1);
        output.WriteInt64(F2);
      }
      if (HasF3) {
        output.WriteRawTag(162, 1);
        output.WriteString(F3);
      }
      if (s1_ != null) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(S1);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X1);
      }
      if (HasX12) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X12);
      }
      if (HasX2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X2);
      }
      if (HasX3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X3);
      }
      if (HasX4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X4);
      }
      size += a1_.CalculateSize(_repeated_a1_codec);
      size += a2_.CalculateSize(_repeated_a2_codec);
      size += b1_.CalculateSize(_repeated_b1_codec);
      size += b2_.CalculateSize(_repeated_b2_codec);
      size += c1_.CalculateSize(_repeated_c1_codec);
      size += c2_.CalculateSize(_repeated_c2_codec);
      size += d1_.CalculateSize(_map_d1_codec);
      size += d2_.CalculateSize(_map_d2_codec);
      if (HasE1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(E1);
      }
      if (HasE2) {
        size += 2 + pb::CodedOutputStream.ComputeInt64Size(E2);
      }
      if (HasE3) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(E3);
      }
      if (HasF1) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(F1);
      }
      if (HasF2) {
        size += 2 + pb::CodedOutputStream.ComputeInt64Size(F2);
      }
      if (HasF3) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(F3);
      }
      if (s1_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(S1);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestRef other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX12) {
        X12 = other.X12;
      }
      if (other.HasX2) {
        X2 = other.X2;
      }
      if (other.HasX3) {
        X3 = other.X3;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      a1_.Add(other.a1_);
      a2_.Add(other.a2_);
      b1_.Add(other.b1_);
      b2_.Add(other.b2_);
      c1_.Add(other.c1_);
      c2_.Add(other.c2_);
      d1_.MergeFrom(other.d1_);
      d2_.MergeFrom(other.d2_);
      if (other.HasE1) {
        E1 = other.E1;
      }
      if (other.HasE2) {
        E2 = other.E2;
      }
      if (other.HasE3) {
        E3 = other.E3;
      }
      if (other.HasF1) {
        F1 = other.F1;
      }
      if (other.HasF2) {
        F2 = other.F2;
      }
      if (other.HasF3) {
        F3 = other.F3;
      }
      if (other.s1_ != null) {
        if (s1_ == null) {
          S1 = new global::Cfg.TestRefDynamicBase();
        }
        S1.MergeFrom(other.S1);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadInt32();
            break;
          }
          case 24: {
            X12 = input.ReadInt32();
            break;
          }
          case 32: {
            X2 = input.ReadInt32();
            break;
          }
          case 40: {
            X3 = input.ReadInt32();
            break;
          }
          case 48: {
            X4 = input.ReadInt32();
            break;
          }
          case 58:
          case 56: {
            a1_.AddEntriesFrom(input, _repeated_a1_codec);
            break;
          }
          case 66:
          case 64: {
            a2_.AddEntriesFrom(input, _repeated_a2_codec);
            break;
          }
          case 74:
          case 72: {
            b1_.AddEntriesFrom(input, _repeated_b1_codec);
            break;
          }
          case 82:
          case 80: {
            b2_.AddEntriesFrom(input, _repeated_b2_codec);
            break;
          }
          case 90:
          case 88: {
            c1_.AddEntriesFrom(input, _repeated_c1_codec);
            break;
          }
          case 98:
          case 96: {
            c2_.AddEntriesFrom(input, _repeated_c2_codec);
            break;
          }
          case 106: {
            d1_.AddEntriesFrom(input, _map_d1_codec);
            break;
          }
          case 114: {
            d2_.AddEntriesFrom(input, _map_d2_codec);
            break;
          }
          case 120: {
            E1 = input.ReadInt32();
            break;
          }
          case 128: {
            E2 = input.ReadInt64();
            break;
          }
          case 138: {
            E3 = input.ReadString();
            break;
          }
          case 144: {
            F1 = input.ReadInt32();
            break;
          }
          case 152: {
            F2 = input.ReadInt64();
            break;
          }
          case 162: {
            F3 = input.ReadString();
            break;
          }
          case 170: {
            if (s1_ == null) {
              S1 = new global::Cfg.TestRefDynamicBase();
            }
            input.ReadMessage(S1);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadInt32();
            break;
          }
          case 24: {
            X12 = input.ReadInt32();
            break;
          }
          case 32: {
            X2 = input.ReadInt32();
            break;
          }
          case 40: {
            X3 = input.ReadInt32();
            break;
          }
          case 48: {
            X4 = input.ReadInt32();
            break;
          }
          case 58:
          case 56: {
            a1_.AddEntriesFrom(ref input, _repeated_a1_codec);
            break;
          }
          case 66:
          case 64: {
            a2_.AddEntriesFrom(ref input, _repeated_a2_codec);
            break;
          }
          case 74:
          case 72: {
            b1_.AddEntriesFrom(ref input, _repeated_b1_codec);
            break;
          }
          case 82:
          case 80: {
            b2_.AddEntriesFrom(ref input, _repeated_b2_codec);
            break;
          }
          case 90:
          case 88: {
            c1_.AddEntriesFrom(ref input, _repeated_c1_codec);
            break;
          }
          case 98:
          case 96: {
            c2_.AddEntriesFrom(ref input, _repeated_c2_codec);
            break;
          }
          case 106: {
            d1_.AddEntriesFrom(ref input, _map_d1_codec);
            break;
          }
          case 114: {
            d2_.AddEntriesFrom(ref input, _map_d2_codec);
            break;
          }
          case 120: {
            E1 = input.ReadInt32();
            break;
          }
          case 128: {
            E2 = input.ReadInt64();
            break;
          }
          case 138: {
            E3 = input.ReadString();
            break;
          }
          case 144: {
            F1 = input.ReadInt32();
            break;
          }
          case 152: {
            F2 = input.ReadInt64();
            break;
          }
          case 162: {
            F3 = input.ReadString();
            break;
          }
          case 170: {
            if (s1_ == null) {
              S1 = new global::Cfg.TestRefDynamicBase();
            }
            input.ReadMessage(S1);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestRefDynamicBase() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestRefDynamicBase(TestRefDynamicBase other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.RefBean:
          RefBean = other.RefBean.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "RefBean" field.</summary>
    public const int RefBeanFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestRefBean RefBean {
      get { return valueCase_ == ValueOneofCase.RefBean ? (global::Cfg.TestRefBean) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.RefBean;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      RefBean = 1,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestRefDynamicBase other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(RefBean, other.RefBean)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.RefBean) hash ^= RefBean.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.RefBean) {
        output.WriteRawTag(10);
        output.WriteMessage(RefBean);
      }
      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 (valueCase_ == ValueOneofCase.RefBean) {
        output.WriteRawTag(10);
        output.WriteMessage(RefBean);
      }
      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 (valueCase_ == ValueOneofCase.RefBean) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RefBean);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestRefDynamicBase other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.RefBean:
          if (RefBean == null) {
            RefBean = new global::Cfg.TestRefBean();
          }
          RefBean.MergeFrom(other.RefBean);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.TestRefBean subBuilder = new global::Cfg.TestRefBean();
            if (valueCase_ == ValueOneofCase.RefBean) {
              subBuilder.MergeFrom(RefBean);
            }
            input.ReadMessage(subBuilder);
            RefBean = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.TestRefBean subBuilder = new global::Cfg.TestRefBean();
            if (valueCase_ == ValueOneofCase.RefBean) {
              subBuilder.MergeFrom(RefBean);
            }
            input.ReadMessage(subBuilder);
            RefBean = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestRefBean() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "arr" field.</summary>
    public const int ArrFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_arr_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> arr_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Arr {
      get { return arr_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestRefBean other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X != other.X) return false;
      if(!arr_.Equals(other.arr_)) 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 (HasX) hash ^= X.GetHashCode();
      hash ^= arr_.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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      arr_.WriteTo(output, _repeated_arr_codec);
      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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      arr_.WriteTo(ref output, _repeated_arr_codec);
      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 (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      size += arr_.CalculateSize(_repeated_arr_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestRefBean other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      arr_.Add(other.arr_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            arr_.AddEntriesFrom(input, _repeated_arr_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            arr_.AddEntriesFrom(ref input, _repeated_arr_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestSize() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_x1_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> x1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> X1 {
      get { return x1_; }
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 3;
    private static readonly pb::FieldCodec<int> _repeated_x2_codec
        = pb::FieldCodec.ForInt32(26);
    private readonly pbc::RepeatedField<int> x2_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> X2 {
      get { return x2_; }
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 4;
    private static readonly pb::FieldCodec<int> _repeated_x3_codec
        = pb::FieldCodec.ForInt32(34);
    private readonly pbc::RepeatedField<int> x3_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> X3 {
      get { return x3_; }
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 5;
    private static readonly pbc::MapField<int, int>.Codec _map_x4_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 42);
    private readonly pbc::MapField<int, int> x4_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> X4 {
      get { return x4_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestSize other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if(!x1_.Equals(other.x1_)) return false;
      if(!x2_.Equals(other.x2_)) return false;
      if(!x3_.Equals(other.x3_)) return false;
      if (!X4.Equals(other.X4)) 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 (HasId) hash ^= Id.GetHashCode();
      hash ^= x1_.GetHashCode();
      hash ^= x2_.GetHashCode();
      hash ^= x3_.GetHashCode();
      hash ^= X4.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      x1_.WriteTo(output, _repeated_x1_codec);
      x2_.WriteTo(output, _repeated_x2_codec);
      x3_.WriteTo(output, _repeated_x3_codec);
      x4_.WriteTo(output, _map_x4_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      x1_.WriteTo(ref output, _repeated_x1_codec);
      x2_.WriteTo(ref output, _repeated_x2_codec);
      x3_.WriteTo(ref output, _repeated_x3_codec);
      x4_.WriteTo(ref output, _map_x4_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      size += x1_.CalculateSize(_repeated_x1_codec);
      size += x2_.CalculateSize(_repeated_x2_codec);
      size += x3_.CalculateSize(_repeated_x3_codec);
      size += x4_.CalculateSize(_map_x4_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestSize other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      x1_.Add(other.x1_);
      x2_.Add(other.x2_);
      x3_.Add(other.x3_);
      x4_.MergeFrom(other.x4_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            x1_.AddEntriesFrom(input, _repeated_x1_codec);
            break;
          }
          case 26:
          case 24: {
            x2_.AddEntriesFrom(input, _repeated_x2_codec);
            break;
          }
          case 34:
          case 32: {
            x3_.AddEntriesFrom(input, _repeated_x3_codec);
            break;
          }
          case 42: {
            x4_.AddEntriesFrom(input, _map_x4_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            x1_.AddEntriesFrom(ref input, _repeated_x1_codec);
            break;
          }
          case 26:
          case 24: {
            x2_.AddEntriesFrom(ref input, _repeated_x2_codec);
            break;
          }
          case 34:
          case 32: {
            x3_.AddEntriesFrom(ref input, _repeated_x3_codec);
            break;
          }
          case 42: {
            x4_.AddEntriesFrom(ref input, _map_x4_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestSet() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestSet(TestTestSet other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      x0_ = other.x0_;
      x1_ = other.x1_.Clone();
      x2_ = other.x2_.Clone();
      x3_ = other.x3_.Clone();
      x4_ = other.x4_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x0" field.</summary>
    public const int X0FieldNumber = 2;
    private readonly static string X0DefaultValue = "";

    private string x0_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string X0 {
      get { return x0_ ?? X0DefaultValue; }
      set {
        x0_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "x0" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX0 {
      get { return x0_ != null; }
    }
    /// <summary>Clears the value of the "x0" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX0() {
      x0_ = null;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 3;
    private static readonly pb::FieldCodec<int> _repeated_x1_codec
        = pb::FieldCodec.ForInt32(26);
    private readonly pbc::RepeatedField<int> x1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> X1 {
      get { return x1_; }
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 4;
    private static readonly pb::FieldCodec<long> _repeated_x2_codec
        = pb::FieldCodec.ForInt64(34);
    private readonly pbc::RepeatedField<long> x2_ = new pbc::RepeatedField<long>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<long> X2 {
      get { return x2_; }
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_x3_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> x3_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> X3 {
      get { return x3_; }
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 6;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoEnum> _repeated_x4_codec
        = pb::FieldCodec.ForEnum(48, x => (int) x, x => (global::Cfg.TestDemoEnum) x);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoEnum> x4_ = new pbc::RepeatedField<global::Cfg.TestDemoEnum>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoEnum> X4 {
      get { return x4_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestSet other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X0 != other.X0) return false;
      if(!x1_.Equals(other.x1_)) return false;
      if(!x2_.Equals(other.x2_)) return false;
      if(!x3_.Equals(other.x3_)) return false;
      if(!x4_.Equals(other.x4_)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX0) hash ^= X0.GetHashCode();
      hash ^= x1_.GetHashCode();
      hash ^= x2_.GetHashCode();
      hash ^= x3_.GetHashCode();
      hash ^= x4_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX0) {
        output.WriteRawTag(18);
        output.WriteString(X0);
      }
      x1_.WriteTo(output, _repeated_x1_codec);
      x2_.WriteTo(output, _repeated_x2_codec);
      x3_.WriteTo(output, _repeated_x3_codec);
      x4_.WriteTo(output, _repeated_x4_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX0) {
        output.WriteRawTag(18);
        output.WriteString(X0);
      }
      x1_.WriteTo(ref output, _repeated_x1_codec);
      x2_.WriteTo(ref output, _repeated_x2_codec);
      x3_.WriteTo(ref output, _repeated_x3_codec);
      x4_.WriteTo(ref output, _repeated_x4_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(X0);
      }
      size += x1_.CalculateSize(_repeated_x1_codec);
      size += x2_.CalculateSize(_repeated_x2_codec);
      size += x3_.CalculateSize(_repeated_x3_codec);
      size += x4_.CalculateSize(_repeated_x4_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestSet other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX0) {
        X0 = other.X0;
      }
      x1_.Add(other.x1_);
      x2_.Add(other.x2_);
      x3_.Add(other.x3_);
      x4_.Add(other.x4_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            X0 = input.ReadString();
            break;
          }
          case 26:
          case 24: {
            x1_.AddEntriesFrom(input, _repeated_x1_codec);
            break;
          }
          case 34:
          case 32: {
            x2_.AddEntriesFrom(input, _repeated_x2_codec);
            break;
          }
          case 42: {
            x3_.AddEntriesFrom(input, _repeated_x3_codec);
            break;
          }
          case 50:
          case 48: {
            x4_.AddEntriesFrom(input, _repeated_x4_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            X0 = input.ReadString();
            break;
          }
          case 26:
          case 24: {
            x1_.AddEntriesFrom(ref input, _repeated_x1_codec);
            break;
          }
          case 34:
          case 32: {
            x2_.AddEntriesFrom(ref input, _repeated_x2_codec);
            break;
          }
          case 42: {
            x3_.AddEntriesFrom(ref input, _repeated_x3_codec);
            break;
          }
          case 50:
          case 48: {
            x4_.AddEntriesFrom(ref input, _repeated_x4_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDetectEncoding() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDetectEncoding other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDetectEncoding other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestItemBase() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestItemBase(TestItemBase other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.Item:
          Item = other.Item.Clone();
          break;
        case ValueOneofCase.Equipment:
          Equipment = other.Equipment.Clone();
          break;
        case ValueOneofCase.Decorator:
          Decorator = other.Decorator.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "Item" field.</summary>
    public const int ItemFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestItem Item {
      get { return valueCase_ == ValueOneofCase.Item ? (global::Cfg.TestItem) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Item;
      }
    }

    /// <summary>Field number for the "Equipment" field.</summary>
    public const int EquipmentFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestEquipment Equipment {
      get { return valueCase_ == ValueOneofCase.Equipment ? (global::Cfg.TestEquipment) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Equipment;
      }
    }

    /// <summary>Field number for the "Decorator" field.</summary>
    public const int DecoratorFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDecorator Decorator {
      get { return valueCase_ == ValueOneofCase.Decorator ? (global::Cfg.TestDecorator) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Decorator;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      Item = 1,
      Equipment = 2,
      Decorator = 3,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestItemBase other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Item, other.Item)) return false;
      if (!object.Equals(Equipment, other.Equipment)) return false;
      if (!object.Equals(Decorator, other.Decorator)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.Item) hash ^= Item.GetHashCode();
      if (valueCase_ == ValueOneofCase.Equipment) hash ^= Equipment.GetHashCode();
      if (valueCase_ == ValueOneofCase.Decorator) hash ^= Decorator.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.Item) {
        output.WriteRawTag(10);
        output.WriteMessage(Item);
      }
      if (valueCase_ == ValueOneofCase.Equipment) {
        output.WriteRawTag(18);
        output.WriteMessage(Equipment);
      }
      if (valueCase_ == ValueOneofCase.Decorator) {
        output.WriteRawTag(26);
        output.WriteMessage(Decorator);
      }
      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 (valueCase_ == ValueOneofCase.Item) {
        output.WriteRawTag(10);
        output.WriteMessage(Item);
      }
      if (valueCase_ == ValueOneofCase.Equipment) {
        output.WriteRawTag(18);
        output.WriteMessage(Equipment);
      }
      if (valueCase_ == ValueOneofCase.Decorator) {
        output.WriteRawTag(26);
        output.WriteMessage(Decorator);
      }
      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 (valueCase_ == ValueOneofCase.Item) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
      }
      if (valueCase_ == ValueOneofCase.Equipment) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Equipment);
      }
      if (valueCase_ == ValueOneofCase.Decorator) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Decorator);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestItemBase other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.Item:
          if (Item == null) {
            Item = new global::Cfg.TestItem();
          }
          Item.MergeFrom(other.Item);
          break;
        case ValueOneofCase.Equipment:
          if (Equipment == null) {
            Equipment = new global::Cfg.TestEquipment();
          }
          Equipment.MergeFrom(other.Equipment);
          break;
        case ValueOneofCase.Decorator:
          if (Decorator == null) {
            Decorator = new global::Cfg.TestDecorator();
          }
          Decorator.MergeFrom(other.Decorator);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.TestItem subBuilder = new global::Cfg.TestItem();
            if (valueCase_ == ValueOneofCase.Item) {
              subBuilder.MergeFrom(Item);
            }
            input.ReadMessage(subBuilder);
            Item = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.TestEquipment subBuilder = new global::Cfg.TestEquipment();
            if (valueCase_ == ValueOneofCase.Equipment) {
              subBuilder.MergeFrom(Equipment);
            }
            input.ReadMessage(subBuilder);
            Equipment = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.TestDecorator subBuilder = new global::Cfg.TestDecorator();
            if (valueCase_ == ValueOneofCase.Decorator) {
              subBuilder.MergeFrom(Decorator);
            }
            input.ReadMessage(subBuilder);
            Decorator = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.TestItem subBuilder = new global::Cfg.TestItem();
            if (valueCase_ == ValueOneofCase.Item) {
              subBuilder.MergeFrom(Item);
            }
            input.ReadMessage(subBuilder);
            Item = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.TestEquipment subBuilder = new global::Cfg.TestEquipment();
            if (valueCase_ == ValueOneofCase.Equipment) {
              subBuilder.MergeFrom(Equipment);
            }
            input.ReadMessage(subBuilder);
            Equipment = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.TestDecorator subBuilder = new global::Cfg.TestDecorator();
            if (valueCase_ == ValueOneofCase.Decorator) {
              subBuilder.MergeFrom(Decorator);
            }
            input.ReadMessage(subBuilder);
            Decorator = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestItem() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 3;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 4;
    private readonly static int NumDefaultValue = 0;

    private int num_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Num {
      get { if ((_hasBits0 & 2) != 0) { return num_; } else { return NumDefaultValue; } }
      set {
        _hasBits0 |= 2;
        num_ = value;
      }
    }
    /// <summary>Gets whether the "num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNum {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNum() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "price" field.</summary>
    public const int PriceFieldNumber = 5;
    private readonly static int PriceDefaultValue = 0;

    private int price_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Price {
      get { if ((_hasBits0 & 4) != 0) { return price_; } else { return PriceDefaultValue; } }
      set {
        _hasBits0 |= 4;
        price_ = value;
      }
    }
    /// <summary>Gets whether the "price" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasPrice {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "price" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPrice() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestItem other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if (Num != other.Num) return false;
      if (Price != other.Price) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasNum) hash ^= Num.GetHashCode();
      if (HasPrice) hash ^= Price.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (HasPrice) {
        output.WriteRawTag(40);
        output.WriteInt32(Price);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (HasPrice) {
        output.WriteRawTag(40);
        output.WriteInt32(Price);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Num);
      }
      if (HasPrice) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Price);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestItem other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.HasPrice) {
        Price = other.Price;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 40: {
            Price = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 40: {
            Price = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestEquipment() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 3;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "attr" field.</summary>
    public const int AttrFieldNumber = 4;
    private readonly static global::Cfg.TestDemoEnum AttrDefaultValue = global::Cfg.TestDemoEnum.None;

    private global::Cfg.TestDemoEnum attr_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoEnum Attr {
      get { if ((_hasBits0 & 2) != 0) { return attr_; } else { return AttrDefaultValue; } }
      set {
        _hasBits0 |= 2;
        attr_ = value;
      }
    }
    /// <summary>Gets whether the "attr" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasAttr {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "attr" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearAttr() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 5;
    private readonly static int ValueDefaultValue = 0;

    private int value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Value {
      get { if ((_hasBits0 & 4) != 0) { return value_; } else { return ValueDefaultValue; } }
      set {
        _hasBits0 |= 4;
        value_ = value;
      }
    }
    /// <summary>Gets whether the "value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasValue {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "value" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestEquipment other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if (Attr != other.Attr) return false;
      if (Value != other.Value) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasAttr) hash ^= Attr.GetHashCode();
      if (HasValue) hash ^= Value.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasAttr) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Attr);
      }
      if (HasValue) {
        output.WriteRawTag(40);
        output.WriteInt32(Value);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasAttr) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Attr);
      }
      if (HasValue) {
        output.WriteRawTag(40);
        output.WriteInt32(Value);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasAttr) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Attr);
      }
      if (HasValue) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestEquipment other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasAttr) {
        Attr = other.Attr;
      }
      if (other.HasValue) {
        Value = other.Value;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 32: {
            Attr = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 40: {
            Value = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 32: {
            Attr = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 40: {
            Value = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestDecorator() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private readonly static string NameDefaultValue = "";

    private string name_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_ ?? NameDefaultValue; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "name" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasName {
      get { return name_ != null; }
    }
    /// <summary>Clears the value of the "name" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearName() {
      name_ = null;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 3;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "duration" field.</summary>
    public const int DurationFieldNumber = 4;
    private readonly static int DurationDefaultValue = 0;

    private int duration_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Duration {
      get { if ((_hasBits0 & 2) != 0) { return duration_; } else { return DurationDefaultValue; } }
      set {
        _hasBits0 |= 2;
        duration_ = value;
      }
    }
    /// <summary>Gets whether the "duration" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDuration {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "duration" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDuration() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDecorator other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if (Duration != other.Duration) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasName) hash ^= Name.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasDuration) hash ^= Duration.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasDuration) {
        output.WriteRawTag(32);
        output.WriteInt32(Duration);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasName) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      if (HasDuration) {
        output.WriteRawTag(32);
        output.WriteInt32(Duration);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasDuration) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Duration);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDecorator other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasDuration) {
        Duration = other.Duration;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 32: {
            Duration = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 32: {
            Duration = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestIndex() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "eles" field.</summary>
    public const int ElesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoType1> _repeated_eles_codec
        = pb::FieldCodec.ForMessage(18, global::Cfg.TestDemoType1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoType1> eles_ = new pbc::RepeatedField<global::Cfg.TestDemoType1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoType1> Eles {
      get { return eles_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestIndex other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if(!eles_.Equals(other.eles_)) 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 (HasId) hash ^= Id.GetHashCode();
      hash ^= eles_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      eles_.WriteTo(output, _repeated_eles_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      eles_.WriteTo(ref output, _repeated_eles_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      size += eles_.CalculateSize(_repeated_eles_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestIndex other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      eles_.Add(other.eles_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            eles_.AddEntriesFrom(input, _repeated_eles_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            eles_.AddEntriesFrom(ref input, _repeated_eles_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestMap() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private static readonly pbc::MapField<int, int>.Codec _map_x1_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 18);
    private readonly pbc::MapField<int, int> x1_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> X1 {
      get { return x1_; }
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 3;
    private static readonly pbc::MapField<long, int>.Codec _map_x2_codec
        = new pbc::MapField<long, int>.Codec(pb::FieldCodec.ForInt64(8, 0L), pb::FieldCodec.ForInt32(16, 0), 26);
    private readonly pbc::MapField<long, int> x2_ = new pbc::MapField<long, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<long, int> X2 {
      get { return x2_; }
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 4;
    private static readonly pbc::MapField<string, int>.Codec _map_x3_codec
        = new pbc::MapField<string, int>.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForInt32(16, 0), 34);
    private readonly pbc::MapField<string, int> x3_ = new pbc::MapField<string, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<string, int> X3 {
      get { return x3_; }
    }

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 5;
    private static readonly pbc::MapField<int, int>.Codec _map_x4_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 42);
    private readonly pbc::MapField<int, int> x4_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> X4 {
      get { return x4_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestMap other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (!X1.Equals(other.X1)) return false;
      if (!X2.Equals(other.X2)) return false;
      if (!X3.Equals(other.X3)) return false;
      if (!X4.Equals(other.X4)) 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 (HasId) hash ^= Id.GetHashCode();
      hash ^= X1.GetHashCode();
      hash ^= X2.GetHashCode();
      hash ^= X3.GetHashCode();
      hash ^= X4.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      x1_.WriteTo(output, _map_x1_codec);
      x2_.WriteTo(output, _map_x2_codec);
      x3_.WriteTo(output, _map_x3_codec);
      x4_.WriteTo(output, _map_x4_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      x1_.WriteTo(ref output, _map_x1_codec);
      x2_.WriteTo(ref output, _map_x2_codec);
      x3_.WriteTo(ref output, _map_x3_codec);
      x4_.WriteTo(ref output, _map_x4_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      size += x1_.CalculateSize(_map_x1_codec);
      size += x2_.CalculateSize(_map_x2_codec);
      size += x3_.CalculateSize(_map_x3_codec);
      size += x4_.CalculateSize(_map_x4_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestMap other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      x1_.MergeFrom(other.x1_);
      x2_.MergeFrom(other.x2_);
      x3_.MergeFrom(other.x3_);
      x4_.MergeFrom(other.x4_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            x1_.AddEntriesFrom(input, _map_x1_codec);
            break;
          }
          case 26: {
            x2_.AddEntriesFrom(input, _map_x2_codec);
            break;
          }
          case 34: {
            x3_.AddEntriesFrom(input, _map_x3_codec);
            break;
          }
          case 42: {
            x4_.AddEntriesFrom(input, _map_x4_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            x1_.AddEntriesFrom(ref input, _map_x1_codec);
            break;
          }
          case 26: {
            x2_.AddEntriesFrom(ref input, _map_x2_codec);
            break;
          }
          case 34: {
            x3_.AddEntriesFrom(ref input, _map_x3_codec);
            break;
          }
          case 42: {
            x4_.AddEntriesFrom(ref input, _map_x4_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestExcelFromJson() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestExcelFromJson(TestExcelFromJson other) : this() {
      _hasBits0 = other._hasBits0;
      x4_ = other.x4_;
      x1_ = other.x1_;
      x5_ = other.x5_;
      x6_ = other.x6_;
      s1_ = other.s1_;
      s2_ = other.s2_;
      t1_ = other.t1_;
      x12_ = other.x12_ != null ? other.x12_.Clone() : null;
      x13_ = other.x13_;
      x14_ = other.x14_ != null ? other.x14_.Clone() : null;
      k1_ = other.k1_.Clone();
      k8_ = other.k8_.Clone();
      k9_ = other.k9_.Clone();
      k15_ = other.k15_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x4" field.</summary>
    public const int X4FieldNumber = 1;
    private readonly static int X4DefaultValue = 0;

    private int x4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X4 {
      get { if ((_hasBits0 & 1) != 0) { return x4_; } else { return X4DefaultValue; } }
      set {
        _hasBits0 |= 1;
        x4_ = value;
      }
    }
    /// <summary>Gets whether the "x4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX4 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX4() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private readonly static bool X1DefaultValue = false;

    private bool x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool X1 {
      get { if ((_hasBits0 & 2) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x5" field.</summary>
    public const int X5FieldNumber = 3;
    private readonly static long X5DefaultValue = 0L;

    private long x5_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long X5 {
      get { if ((_hasBits0 & 4) != 0) { return x5_; } else { return X5DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x5_ = value;
      }
    }
    /// <summary>Gets whether the "x5" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX5 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x5" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX5() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x6" field.</summary>
    public const int X6FieldNumber = 4;
    private readonly static float X6DefaultValue = 0F;

    private float x6_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X6 {
      get { if ((_hasBits0 & 8) != 0) { return x6_; } else { return X6DefaultValue; } }
      set {
        _hasBits0 |= 8;
        x6_ = value;
      }
    }
    /// <summary>Gets whether the "x6" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX6 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "x6" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX6() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "s1" field.</summary>
    public const int S1FieldNumber = 5;
    private readonly static string S1DefaultValue = "";

    private string s1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S1 {
      get { return s1_ ?? S1DefaultValue; }
      set {
        s1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS1 {
      get { return s1_ != null; }
    }
    /// <summary>Clears the value of the "s1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS1() {
      s1_ = null;
    }

    /// <summary>Field number for the "s2" field.</summary>
    public const int S2FieldNumber = 6;
    private readonly static string S2DefaultValue = "";

    private string s2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string S2 {
      get { return s2_ ?? S2DefaultValue; }
      set {
        s2_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "s2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasS2 {
      get { return s2_ != null; }
    }
    /// <summary>Clears the value of the "s2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearS2() {
      s2_ = null;
    }

    /// <summary>Field number for the "t1" field.</summary>
    public const int T1FieldNumber = 7;
    private readonly static long T1DefaultValue = 0L;

    private long t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long T1 {
      get { if ((_hasBits0 & 16) != 0) { return t1_; } else { return T1DefaultValue; } }
      set {
        _hasBits0 |= 16;
        t1_ = value;
      }
    }
    /// <summary>Gets whether the "t1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasT1 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "t1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearT1() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "x12" field.</summary>
    public const int X12FieldNumber = 8;
    private global::Cfg.TestDemoType1 x12_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoType1 X12 {
      get { return x12_; }
      set {
        x12_ = value;
      }
    }

    /// <summary>Field number for the "x13" field.</summary>
    public const int X13FieldNumber = 9;
    private readonly static global::Cfg.TestDemoEnum X13DefaultValue = global::Cfg.TestDemoEnum.None;

    private global::Cfg.TestDemoEnum x13_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoEnum X13 {
      get { if ((_hasBits0 & 32) != 0) { return x13_; } else { return X13DefaultValue; } }
      set {
        _hasBits0 |= 32;
        x13_ = value;
      }
    }
    /// <summary>Gets whether the "x13" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX13 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "x13" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX13() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "x14" field.</summary>
    public const int X14FieldNumber = 10;
    private global::Cfg.TestDemoDynamic x14_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoDynamic X14 {
      get { return x14_; }
      set {
        x14_ = value;
      }
    }

    /// <summary>Field number for the "k1" field.</summary>
    public const int K1FieldNumber = 11;
    private static readonly pb::FieldCodec<int> _repeated_k1_codec
        = pb::FieldCodec.ForInt32(90);
    private readonly pbc::RepeatedField<int> k1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> K1 {
      get { return k1_; }
    }

    /// <summary>Field number for the "k8" field.</summary>
    public const int K8FieldNumber = 12;
    private static readonly pbc::MapField<int, int>.Codec _map_k8_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 98);
    private readonly pbc::MapField<int, int> k8_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> K8 {
      get { return k8_; }
    }

    /// <summary>Field number for the "k9" field.</summary>
    public const int K9FieldNumber = 13;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoE2> _repeated_k9_codec
        = pb::FieldCodec.ForMessage(106, global::Cfg.TestDemoE2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoE2> k9_ = new pbc::RepeatedField<global::Cfg.TestDemoE2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoE2> K9 {
      get { return k9_; }
    }

    /// <summary>Field number for the "k15" field.</summary>
    public const int K15FieldNumber = 14;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoDynamic> _repeated_k15_codec
        = pb::FieldCodec.ForMessage(114, global::Cfg.TestDemoDynamic.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoDynamic> k15_ = new pbc::RepeatedField<global::Cfg.TestDemoDynamic>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoDynamic> K15 {
      get { return k15_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestExcelFromJson other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X4 != other.X4) return false;
      if (X1 != other.X1) return false;
      if (X5 != other.X5) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X6, other.X6)) return false;
      if (S1 != other.S1) return false;
      if (S2 != other.S2) return false;
      if (T1 != other.T1) return false;
      if (!object.Equals(X12, other.X12)) return false;
      if (X13 != other.X13) return false;
      if (!object.Equals(X14, other.X14)) return false;
      if(!k1_.Equals(other.k1_)) return false;
      if (!K8.Equals(other.K8)) return false;
      if(!k9_.Equals(other.k9_)) return false;
      if(!k15_.Equals(other.k15_)) 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 (HasX4) hash ^= X4.GetHashCode();
      if (HasX1) hash ^= X1.GetHashCode();
      if (HasX5) hash ^= X5.GetHashCode();
      if (HasX6) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X6);
      if (HasS1) hash ^= S1.GetHashCode();
      if (HasS2) hash ^= S2.GetHashCode();
      if (HasT1) hash ^= T1.GetHashCode();
      if (x12_ != null) hash ^= X12.GetHashCode();
      if (HasX13) hash ^= X13.GetHashCode();
      if (x14_ != null) hash ^= X14.GetHashCode();
      hash ^= k1_.GetHashCode();
      hash ^= K8.GetHashCode();
      hash ^= k9_.GetHashCode();
      hash ^= k15_.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 (HasX4) {
        output.WriteRawTag(8);
        output.WriteInt32(X4);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteBool(X1);
      }
      if (HasX5) {
        output.WriteRawTag(24);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(37);
        output.WriteFloat(X6);
      }
      if (HasS1) {
        output.WriteRawTag(42);
        output.WriteString(S1);
      }
      if (HasS2) {
        output.WriteRawTag(50);
        output.WriteString(S2);
      }
      if (HasT1) {
        output.WriteRawTag(56);
        output.WriteInt64(T1);
      }
      if (x12_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(X12);
      }
      if (HasX13) {
        output.WriteRawTag(72);
        output.WriteEnum((int) X13);
      }
      if (x14_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(X14);
      }
      k1_.WriteTo(output, _repeated_k1_codec);
      k8_.WriteTo(output, _map_k8_codec);
      k9_.WriteTo(output, _repeated_k9_codec);
      k15_.WriteTo(output, _repeated_k15_codec);
      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 (HasX4) {
        output.WriteRawTag(8);
        output.WriteInt32(X4);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteBool(X1);
      }
      if (HasX5) {
        output.WriteRawTag(24);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(37);
        output.WriteFloat(X6);
      }
      if (HasS1) {
        output.WriteRawTag(42);
        output.WriteString(S1);
      }
      if (HasS2) {
        output.WriteRawTag(50);
        output.WriteString(S2);
      }
      if (HasT1) {
        output.WriteRawTag(56);
        output.WriteInt64(T1);
      }
      if (x12_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(X12);
      }
      if (HasX13) {
        output.WriteRawTag(72);
        output.WriteEnum((int) X13);
      }
      if (x14_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(X14);
      }
      k1_.WriteTo(ref output, _repeated_k1_codec);
      k8_.WriteTo(ref output, _map_k8_codec);
      k9_.WriteTo(ref output, _repeated_k9_codec);
      k15_.WriteTo(ref output, _repeated_k15_codec);
      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 (HasX4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X4);
      }
      if (HasX1) {
        size += 1 + 1;
      }
      if (HasX5) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(X5);
      }
      if (HasX6) {
        size += 1 + 4;
      }
      if (HasS1) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S1);
      }
      if (HasS2) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(S2);
      }
      if (HasT1) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(T1);
      }
      if (x12_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X12);
      }
      if (HasX13) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) X13);
      }
      if (x14_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X14);
      }
      size += k1_.CalculateSize(_repeated_k1_codec);
      size += k8_.CalculateSize(_map_k8_codec);
      size += k9_.CalculateSize(_repeated_k9_codec);
      size += k15_.CalculateSize(_repeated_k15_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestExcelFromJson other) {
      if (other == null) {
        return;
      }
      if (other.HasX4) {
        X4 = other.X4;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX5) {
        X5 = other.X5;
      }
      if (other.HasX6) {
        X6 = other.X6;
      }
      if (other.HasS1) {
        S1 = other.S1;
      }
      if (other.HasS2) {
        S2 = other.S2;
      }
      if (other.HasT1) {
        T1 = other.T1;
      }
      if (other.x12_ != null) {
        if (x12_ == null) {
          X12 = new global::Cfg.TestDemoType1();
        }
        X12.MergeFrom(other.X12);
      }
      if (other.HasX13) {
        X13 = other.X13;
      }
      if (other.x14_ != null) {
        if (x14_ == null) {
          X14 = new global::Cfg.TestDemoDynamic();
        }
        X14.MergeFrom(other.X14);
      }
      k1_.Add(other.k1_);
      k8_.MergeFrom(other.k8_);
      k9_.Add(other.k9_);
      k15_.Add(other.k15_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X4 = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadBool();
            break;
          }
          case 24: {
            X5 = input.ReadInt64();
            break;
          }
          case 37: {
            X6 = input.ReadFloat();
            break;
          }
          case 42: {
            S1 = input.ReadString();
            break;
          }
          case 50: {
            S2 = input.ReadString();
            break;
          }
          case 56: {
            T1 = input.ReadInt64();
            break;
          }
          case 66: {
            if (x12_ == null) {
              X12 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X12);
            break;
          }
          case 72: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 82: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 90:
          case 88: {
            k1_.AddEntriesFrom(input, _repeated_k1_codec);
            break;
          }
          case 98: {
            k8_.AddEntriesFrom(input, _map_k8_codec);
            break;
          }
          case 106: {
            k9_.AddEntriesFrom(input, _repeated_k9_codec);
            break;
          }
          case 114: {
            k15_.AddEntriesFrom(input, _repeated_k15_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X4 = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadBool();
            break;
          }
          case 24: {
            X5 = input.ReadInt64();
            break;
          }
          case 37: {
            X6 = input.ReadFloat();
            break;
          }
          case 42: {
            S1 = input.ReadString();
            break;
          }
          case 50: {
            S2 = input.ReadString();
            break;
          }
          case 56: {
            T1 = input.ReadInt64();
            break;
          }
          case 66: {
            if (x12_ == null) {
              X12 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X12);
            break;
          }
          case 72: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 82: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 90:
          case 88: {
            k1_.AddEntriesFrom(ref input, _repeated_k1_codec);
            break;
          }
          case 98: {
            k8_.AddEntriesFrom(ref input, _map_k8_codec);
            break;
          }
          case 106: {
            k9_.AddEntriesFrom(ref input, _repeated_k9_codec);
            break;
          }
          case 114: {
            k15_.AddEntriesFrom(ref input, _repeated_k15_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestCompositeJsonTable1() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 2;
    private readonly static string XDefaultValue = "";

    private string x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string X {
      get { return x_ ?? XDefaultValue; }
      set {
        x_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return x_ != null; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      x_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestCompositeJsonTable1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X != other.X) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX) hash ^= X.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(18);
        output.WriteString(X);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(18);
        output.WriteString(X);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(X);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestCompositeJsonTable1 other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX) {
        X = other.X;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            X = input.ReadString();
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            X = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestCompositeJsonTable2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static int YDefaultValue = 0;

    private int y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestCompositeJsonTable2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Y != other.Y) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasY) hash ^= Y.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasY) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestCompositeJsonTable2 other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            Y = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestCompositeJsonTable3() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "a" field.</summary>
    public const int AFieldNumber = 1;
    private readonly static int ADefaultValue = 0;

    private int a_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int A {
      get { if ((_hasBits0 & 1) != 0) { return a_; } else { return ADefaultValue; } }
      set {
        _hasBits0 |= 1;
        a_ = value;
      }
    }
    /// <summary>Gets whether the "a" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasA {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "a" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearA() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "b" field.</summary>
    public const int BFieldNumber = 2;
    private readonly static int BDefaultValue = 0;

    private int b_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int B {
      get { if ((_hasBits0 & 2) != 0) { return b_; } else { return BDefaultValue; } }
      set {
        _hasBits0 |= 2;
        b_ = value;
      }
    }
    /// <summary>Gets whether the "b" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasB {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "b" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearB() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestCompositeJsonTable3 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (A != other.A) return false;
      if (B != other.B) 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 (HasA) hash ^= A.GetHashCode();
      if (HasB) hash ^= B.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 (HasA) {
        output.WriteRawTag(8);
        output.WriteInt32(A);
      }
      if (HasB) {
        output.WriteRawTag(16);
        output.WriteInt32(B);
      }
      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 (HasA) {
        output.WriteRawTag(8);
        output.WriteInt32(A);
      }
      if (HasB) {
        output.WriteRawTag(16);
        output.WriteInt32(B);
      }
      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 (HasA) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(A);
      }
      if (HasB) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(B);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestCompositeJsonTable3 other) {
      if (other == null) {
        return;
      }
      if (other.HasA) {
        A = other.A;
      }
      if (other.HasB) {
        B = other.B;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            A = input.ReadInt32();
            break;
          }
          case 16: {
            B = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            A = input.ReadInt32();
            break;
          }
          case 16: {
            B = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestExcelFromJsonMultiRow() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 2;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 2) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 2;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "items" field.</summary>
    public const int ItemsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.TestTestRow> _repeated_items_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.TestTestRow.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestRow> items_ = new pbc::RepeatedField<global::Cfg.TestTestRow>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestRow> Items {
      get { return items_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestExcelFromJsonMultiRow other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X != other.X) return false;
      if(!items_.Equals(other.items_)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX) hash ^= X.GetHashCode();
      hash ^= items_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(16);
        output.WriteInt32(X);
      }
      items_.WriteTo(output, _repeated_items_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX) {
        output.WriteRawTag(16);
        output.WriteInt32(X);
      }
      items_.WriteTo(ref output, _repeated_items_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      size += items_.CalculateSize(_repeated_items_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestExcelFromJsonMultiRow other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX) {
        X = other.X;
      }
      items_.Add(other.items_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X = input.ReadInt32();
            break;
          }
          case 26: {
            items_.AddEntriesFrom(input, _repeated_items_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X = input.ReadInt32();
            break;
          }
          case 26: {
            items_.AddEntriesFrom(ref input, _repeated_items_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestRow() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestRow(TestTestRow other) : this() {
      _hasBits0 = other._hasBits0;
      x_ = other.x_;
      y_ = other.y_;
      z_ = other.z_;
      a_ = other.a_ != null ? other.a_.Clone() : null;
      b_ = other.b_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static bool YDefaultValue = false;

    private bool y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "z" field.</summary>
    public const int ZFieldNumber = 3;
    private readonly static string ZDefaultValue = "";

    private string z_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Z {
      get { return z_ ?? ZDefaultValue; }
      set {
        z_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "z" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasZ {
      get { return z_ != null; }
    }
    /// <summary>Clears the value of the "z" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearZ() {
      z_ = null;
    }

    /// <summary>Field number for the "a" field.</summary>
    public const int AFieldNumber = 4;
    private global::Cfg.TestTest3 a_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestTest3 A {
      get { return a_; }
      set {
        a_ = value;
      }
    }

    /// <summary>Field number for the "b" field.</summary>
    public const int BFieldNumber = 5;
    private static readonly pb::FieldCodec<int> _repeated_b_codec
        = pb::FieldCodec.ForInt32(42);
    private readonly pbc::RepeatedField<int> b_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> B {
      get { return b_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestRow other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X != other.X) return false;
      if (Y != other.Y) return false;
      if (Z != other.Z) return false;
      if (!object.Equals(A, other.A)) return false;
      if(!b_.Equals(other.b_)) 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 (HasX) hash ^= X.GetHashCode();
      if (HasY) hash ^= Y.GetHashCode();
      if (HasZ) hash ^= Z.GetHashCode();
      if (a_ != null) hash ^= A.GetHashCode();
      hash ^= b_.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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteBool(Y);
      }
      if (HasZ) {
        output.WriteRawTag(26);
        output.WriteString(Z);
      }
      if (a_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(A);
      }
      b_.WriteTo(output, _repeated_b_codec);
      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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteBool(Y);
      }
      if (HasZ) {
        output.WriteRawTag(26);
        output.WriteString(Z);
      }
      if (a_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(A);
      }
      b_.WriteTo(ref output, _repeated_b_codec);
      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 (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (HasY) {
        size += 1 + 1;
      }
      if (HasZ) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Z);
      }
      if (a_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(A);
      }
      size += b_.CalculateSize(_repeated_b_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestRow other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      if (other.HasZ) {
        Z = other.Z;
      }
      if (other.a_ != null) {
        if (a_ == null) {
          A = new global::Cfg.TestTest3();
        }
        A.MergeFrom(other.A);
      }
      b_.Add(other.b_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadBool();
            break;
          }
          case 26: {
            Z = input.ReadString();
            break;
          }
          case 34: {
            if (a_ == null) {
              A = new global::Cfg.TestTest3();
            }
            input.ReadMessage(A);
            break;
          }
          case 42:
          case 40: {
            b_.AddEntriesFrom(input, _repeated_b_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadBool();
            break;
          }
          case 26: {
            Z = input.ReadString();
            break;
          }
          case 34: {
            if (a_ == null) {
              A = new global::Cfg.TestTest3();
            }
            input.ReadMessage(A);
            break;
          }
          case 42:
          case 40: {
            b_.AddEntriesFrom(ref input, _repeated_b_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTest3() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static int XDefaultValue = 0;

    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static int YDefaultValue = 0;

    private int y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTest3 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X != other.X) return false;
      if (Y != other.Y) 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 (HasX) hash ^= X.GetHashCode();
      if (HasY) hash ^= Y.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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      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 (HasX) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      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 (HasX) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (HasY) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTest3 other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestScriptableObject() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestScriptableObject(TestTestScriptableObject other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      desc_ = other.desc_;
      rate_ = other.rate_;
      num_ = other.num_;
      v2_ = other.v2_ != null ? other.v2_.Clone() : null;
      v3_ = other.v3_ != null ? other.v3_.Clone() : null;
      v4_ = other.v4_ != null ? other.v4_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 2;
    private readonly static string DescDefaultValue = "";

    private string desc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Desc {
      get { return desc_ ?? DescDefaultValue; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "desc" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDesc {
      get { return desc_ != null; }
    }
    /// <summary>Clears the value of the "desc" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDesc() {
      desc_ = null;
    }

    /// <summary>Field number for the "rate" field.</summary>
    public const int RateFieldNumber = 3;
    private readonly static float RateDefaultValue = 0F;

    private float rate_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Rate {
      get { if ((_hasBits0 & 2) != 0) { return rate_; } else { return RateDefaultValue; } }
      set {
        _hasBits0 |= 2;
        rate_ = value;
      }
    }
    /// <summary>Gets whether the "rate" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRate {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "rate" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRate() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 4;
    private readonly static int NumDefaultValue = 0;

    private int num_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Num {
      get { if ((_hasBits0 & 4) != 0) { return num_; } else { return NumDefaultValue; } }
      set {
        _hasBits0 |= 4;
        num_ = value;
      }
    }
    /// <summary>Gets whether the "num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNum {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNum() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "v2" field.</summary>
    public const int V2FieldNumber = 5;
    private global::Cfg.vector2 v2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector2 V2 {
      get { return v2_; }
      set {
        v2_ = value;
      }
    }

    /// <summary>Field number for the "v3" field.</summary>
    public const int V3FieldNumber = 6;
    private global::Cfg.vector3 v3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector3 V3 {
      get { return v3_; }
      set {
        v3_ = value;
      }
    }

    /// <summary>Field number for the "v4" field.</summary>
    public const int V4FieldNumber = 7;
    private global::Cfg.vector4 v4_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector4 V4 {
      get { return v4_; }
      set {
        v4_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestScriptableObject other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Desc != other.Desc) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Rate, other.Rate)) return false;
      if (Num != other.Num) return false;
      if (!object.Equals(V2, other.V2)) return false;
      if (!object.Equals(V3, other.V3)) return false;
      if (!object.Equals(V4, other.V4)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (HasRate) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Rate);
      if (HasNum) hash ^= Num.GetHashCode();
      if (v2_ != null) hash ^= V2.GetHashCode();
      if (v3_ != null) hash ^= V3.GetHashCode();
      if (v4_ != null) hash ^= V4.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (HasRate) {
        output.WriteRawTag(29);
        output.WriteFloat(Rate);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (v2_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(V4);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (HasRate) {
        output.WriteRawTag(29);
        output.WriteFloat(Rate);
      }
      if (HasNum) {
        output.WriteRawTag(32);
        output.WriteInt32(Num);
      }
      if (v2_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(V4);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (HasRate) {
        size += 1 + 4;
      }
      if (HasNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Num);
      }
      if (v2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (v3_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V3);
      }
      if (v4_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V4);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestScriptableObject other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.HasRate) {
        Rate = other.Rate;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.v2_ != null) {
        if (v2_ == null) {
          V2 = new global::Cfg.vector2();
        }
        V2.MergeFrom(other.V2);
      }
      if (other.v3_ != null) {
        if (v3_ == null) {
          V3 = new global::Cfg.vector3();
        }
        V3.MergeFrom(other.V3);
      }
      if (other.v4_ != null) {
        if (v4_ == null) {
          V4 = new global::Cfg.vector4();
        }
        V4.MergeFrom(other.V4);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 29: {
            Rate = input.ReadFloat();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 42: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 50: {
            if (v3_ == null) {
              V3 = new global::Cfg.vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 58: {
            if (v4_ == null) {
              V4 = new global::Cfg.vector4();
            }
            input.ReadMessage(V4);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 29: {
            Rate = input.ReadFloat();
            break;
          }
          case 32: {
            Num = input.ReadInt32();
            break;
          }
          case 42: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 50: {
            if (v3_ == null) {
              V3 = new global::Cfg.vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 58: {
            if (v4_ == null) {
              V4 = new global::Cfg.vector4();
            }
            input.ReadMessage(V4);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTestMapper() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "audio_type" field.</summary>
    public const int AudioTypeFieldNumber = 2;
    private readonly static global::Cfg.AudioType AudioTypeDefaultValue = global::Cfg.AudioType.Unknown;

    private global::Cfg.AudioType audioType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.AudioType AudioType {
      get { if ((_hasBits0 & 2) != 0) { return audioType_; } else { return AudioTypeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        audioType_ = value;
      }
    }
    /// <summary>Gets whether the "audio_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasAudioType {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "audio_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearAudioType() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "v2" field.</summary>
    public const int V2FieldNumber = 3;
    private global::Cfg.vector2 v2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector2 V2 {
      get { return v2_; }
      set {
        v2_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestMapper other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (AudioType != other.AudioType) return false;
      if (!object.Equals(V2, other.V2)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasAudioType) hash ^= AudioType.GetHashCode();
      if (v2_ != null) hash ^= V2.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasAudioType) {
        output.WriteRawTag(16);
        output.WriteEnum((int) AudioType);
      }
      if (v2_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(V2);
      }
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasAudioType) {
        output.WriteRawTag(16);
        output.WriteEnum((int) AudioType);
      }
      if (v2_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(V2);
      }
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasAudioType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AudioType);
      }
      if (v2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestMapper other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasAudioType) {
        AudioType = other.AudioType;
      }
      if (other.v2_ != null) {
        if (v2_ == null) {
          V2 = new global::Cfg.vector2();
        }
        V2.MergeFrom(other.V2);
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            AudioType = (global::Cfg.AudioType) input.ReadEnum();
            break;
          }
          case 26: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            AudioType = (global::Cfg.AudioType) input.ReadEnum();
            break;
          }
          case 26: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 DefineFromExcel2() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DefineFromExcel2(DefineFromExcel2 other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      x1_ = other.x1_;
      x5_ = other.x5_;
      x6_ = other.x6_;
      x8_ = other.x8_;
      x10_ = other.x10_;
      x13_ = other.x13_;
      x132_ = other.x132_;
      x14_ = other.x14_ != null ? other.x14_.Clone() : null;
      x15_ = other.x15_ != null ? other.x15_.Clone() : null;
      v2_ = other.v2_ != null ? other.v2_.Clone() : null;
      t1_ = other.t1_;
      k1_ = other.k1_.Clone();
      k2_ = other.k2_.Clone();
      k8_ = other.k8_.Clone();
      k9_ = other.k9_.Clone();
      k10_ = other.k10_.Clone();
      k11_ = other.k11_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private readonly static int IdDefaultValue = 0;

    private int id_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { if ((_hasBits0 & 1) != 0) { return id_; } else { return IdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        id_ = value;
      }
    }
    /// <summary>Gets whether the "id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 2;
    private readonly static bool X1DefaultValue = false;

    private bool x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool X1 {
      get { if ((_hasBits0 & 2) != 0) { return x1_; } else { return X1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        x1_ = value;
      }
    }
    /// <summary>Gets whether the "x1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "x5" field.</summary>
    public const int X5FieldNumber = 3;
    private readonly static long X5DefaultValue = 0L;

    private long x5_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long X5 {
      get { if ((_hasBits0 & 4) != 0) { return x5_; } else { return X5DefaultValue; } }
      set {
        _hasBits0 |= 4;
        x5_ = value;
      }
    }
    /// <summary>Gets whether the "x5" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX5 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "x5" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX5() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "x6" field.</summary>
    public const int X6FieldNumber = 4;
    private readonly static float X6DefaultValue = 0F;

    private float x6_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float X6 {
      get { if ((_hasBits0 & 8) != 0) { return x6_; } else { return X6DefaultValue; } }
      set {
        _hasBits0 |= 8;
        x6_ = value;
      }
    }
    /// <summary>Gets whether the "x6" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX6 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "x6" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX6() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "x8" field.</summary>
    public const int X8FieldNumber = 5;
    private readonly static int X8DefaultValue = 0;

    private int x8_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X8 {
      get { if ((_hasBits0 & 16) != 0) { return x8_; } else { return X8DefaultValue; } }
      set {
        _hasBits0 |= 16;
        x8_ = value;
      }
    }
    /// <summary>Gets whether the "x8" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX8 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "x8" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX8() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "x10" field.</summary>
    public const int X10FieldNumber = 6;
    private readonly static string X10DefaultValue = "";

    private string x10_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string X10 {
      get { return x10_ ?? X10DefaultValue; }
      set {
        x10_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "x10" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX10 {
      get { return x10_ != null; }
    }
    /// <summary>Clears the value of the "x10" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX10() {
      x10_ = null;
    }

    /// <summary>Field number for the "x13" field.</summary>
    public const int X13FieldNumber = 7;
    private readonly static global::Cfg.TestDemoEnum X13DefaultValue = global::Cfg.TestDemoEnum.None;

    private global::Cfg.TestDemoEnum x13_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoEnum X13 {
      get { if ((_hasBits0 & 32) != 0) { return x13_; } else { return X13DefaultValue; } }
      set {
        _hasBits0 |= 32;
        x13_ = value;
      }
    }
    /// <summary>Gets whether the "x13" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX13 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "x13" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX13() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "x13_2" field.</summary>
    public const int X132FieldNumber = 8;
    private readonly static global::Cfg.TestDemoFlag X132DefaultValue = global::Cfg.TestDemoFlag.A;

    private global::Cfg.TestDemoFlag x132_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoFlag X132 {
      get { if ((_hasBits0 & 64) != 0) { return x132_; } else { return X132DefaultValue; } }
      set {
        _hasBits0 |= 64;
        x132_ = value;
      }
    }
    /// <summary>Gets whether the "x13_2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasX132 {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "x13_2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX132() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "x14" field.</summary>
    public const int X14FieldNumber = 9;
    private global::Cfg.TestDemoDynamic x14_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestDemoDynamic X14 {
      get { return x14_; }
      set {
        x14_ = value;
      }
    }

    /// <summary>Field number for the "x15" field.</summary>
    public const int X15FieldNumber = 10;
    private global::Cfg.TestShape x15_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestShape X15 {
      get { return x15_; }
      set {
        x15_ = value;
      }
    }

    /// <summary>Field number for the "v2" field.</summary>
    public const int V2FieldNumber = 11;
    private global::Cfg.vector2 v2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.vector2 V2 {
      get { return v2_; }
      set {
        v2_ = value;
      }
    }

    /// <summary>Field number for the "t1" field.</summary>
    public const int T1FieldNumber = 12;
    private readonly static long T1DefaultValue = 0L;

    private long t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long T1 {
      get { if ((_hasBits0 & 128) != 0) { return t1_; } else { return T1DefaultValue; } }
      set {
        _hasBits0 |= 128;
        t1_ = value;
      }
    }
    /// <summary>Gets whether the "t1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasT1 {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "t1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearT1() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "k1" field.</summary>
    public const int K1FieldNumber = 13;
    private static readonly pb::FieldCodec<int> _repeated_k1_codec
        = pb::FieldCodec.ForInt32(106);
    private readonly pbc::RepeatedField<int> k1_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> K1 {
      get { return k1_; }
    }

    /// <summary>Field number for the "k2" field.</summary>
    public const int K2FieldNumber = 14;
    private static readonly pb::FieldCodec<int> _repeated_k2_codec
        = pb::FieldCodec.ForInt32(114);
    private readonly pbc::RepeatedField<int> k2_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> K2 {
      get { return k2_; }
    }

    /// <summary>Field number for the "k8" field.</summary>
    public const int K8FieldNumber = 15;
    private static readonly pbc::MapField<int, int>.Codec _map_k8_codec
        = new pbc::MapField<int, int>.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 122);
    private readonly pbc::MapField<int, int> k8_ = new pbc::MapField<int, int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::MapField<int, int> K8 {
      get { return k8_; }
    }

    /// <summary>Field number for the "k9" field.</summary>
    public const int K9FieldNumber = 16;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoE2> _repeated_k9_codec
        = pb::FieldCodec.ForMessage(130, global::Cfg.TestDemoE2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoE2> k9_ = new pbc::RepeatedField<global::Cfg.TestDemoE2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoE2> K9 {
      get { return k9_; }
    }

    /// <summary>Field number for the "k10" field.</summary>
    public const int K10FieldNumber = 17;
    private static readonly pb::FieldCodec<global::Cfg.vector3> _repeated_k10_codec
        = pb::FieldCodec.ForMessage(138, global::Cfg.vector3.Parser);
    private readonly pbc::RepeatedField<global::Cfg.vector3> k10_ = new pbc::RepeatedField<global::Cfg.vector3>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.vector3> K10 {
      get { return k10_; }
    }

    /// <summary>Field number for the "k11" field.</summary>
    public const int K11FieldNumber = 18;
    private static readonly pb::FieldCodec<global::Cfg.vector4> _repeated_k11_codec
        = pb::FieldCodec.ForMessage(146, global::Cfg.vector4.Parser);
    private readonly pbc::RepeatedField<global::Cfg.vector4> k11_ = new pbc::RepeatedField<global::Cfg.vector4>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.vector4> K11 {
      get { return k11_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DefineFromExcel2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (X1 != other.X1) return false;
      if (X5 != other.X5) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X6, other.X6)) return false;
      if (X8 != other.X8) return false;
      if (X10 != other.X10) return false;
      if (X13 != other.X13) return false;
      if (X132 != other.X132) return false;
      if (!object.Equals(X14, other.X14)) return false;
      if (!object.Equals(X15, other.X15)) return false;
      if (!object.Equals(V2, other.V2)) return false;
      if (T1 != other.T1) return false;
      if(!k1_.Equals(other.k1_)) return false;
      if(!k2_.Equals(other.k2_)) return false;
      if (!K8.Equals(other.K8)) return false;
      if(!k9_.Equals(other.k9_)) return false;
      if(!k10_.Equals(other.k10_)) return false;
      if(!k11_.Equals(other.k11_)) 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 (HasId) hash ^= Id.GetHashCode();
      if (HasX1) hash ^= X1.GetHashCode();
      if (HasX5) hash ^= X5.GetHashCode();
      if (HasX6) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X6);
      if (HasX8) hash ^= X8.GetHashCode();
      if (HasX10) hash ^= X10.GetHashCode();
      if (HasX13) hash ^= X13.GetHashCode();
      if (HasX132) hash ^= X132.GetHashCode();
      if (x14_ != null) hash ^= X14.GetHashCode();
      if (x15_ != null) hash ^= X15.GetHashCode();
      if (v2_ != null) hash ^= V2.GetHashCode();
      if (HasT1) hash ^= T1.GetHashCode();
      hash ^= k1_.GetHashCode();
      hash ^= k2_.GetHashCode();
      hash ^= K8.GetHashCode();
      hash ^= k9_.GetHashCode();
      hash ^= k10_.GetHashCode();
      hash ^= k11_.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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteBool(X1);
      }
      if (HasX5) {
        output.WriteRawTag(24);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(37);
        output.WriteFloat(X6);
      }
      if (HasX8) {
        output.WriteRawTag(40);
        output.WriteInt32(X8);
      }
      if (HasX10) {
        output.WriteRawTag(50);
        output.WriteString(X10);
      }
      if (HasX13) {
        output.WriteRawTag(56);
        output.WriteEnum((int) X13);
      }
      if (HasX132) {
        output.WriteRawTag(64);
        output.WriteEnum((int) X132);
      }
      if (x14_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(X14);
      }
      if (x15_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(X15);
      }
      if (v2_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(V2);
      }
      if (HasT1) {
        output.WriteRawTag(96);
        output.WriteInt64(T1);
      }
      k1_.WriteTo(output, _repeated_k1_codec);
      k2_.WriteTo(output, _repeated_k2_codec);
      k8_.WriteTo(output, _map_k8_codec);
      k9_.WriteTo(output, _repeated_k9_codec);
      k10_.WriteTo(output, _repeated_k10_codec);
      k11_.WriteTo(output, _repeated_k11_codec);
      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 (HasId) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (HasX1) {
        output.WriteRawTag(16);
        output.WriteBool(X1);
      }
      if (HasX5) {
        output.WriteRawTag(24);
        output.WriteInt64(X5);
      }
      if (HasX6) {
        output.WriteRawTag(37);
        output.WriteFloat(X6);
      }
      if (HasX8) {
        output.WriteRawTag(40);
        output.WriteInt32(X8);
      }
      if (HasX10) {
        output.WriteRawTag(50);
        output.WriteString(X10);
      }
      if (HasX13) {
        output.WriteRawTag(56);
        output.WriteEnum((int) X13);
      }
      if (HasX132) {
        output.WriteRawTag(64);
        output.WriteEnum((int) X132);
      }
      if (x14_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(X14);
      }
      if (x15_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(X15);
      }
      if (v2_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(V2);
      }
      if (HasT1) {
        output.WriteRawTag(96);
        output.WriteInt64(T1);
      }
      k1_.WriteTo(ref output, _repeated_k1_codec);
      k2_.WriteTo(ref output, _repeated_k2_codec);
      k8_.WriteTo(ref output, _map_k8_codec);
      k9_.WriteTo(ref output, _repeated_k9_codec);
      k10_.WriteTo(ref output, _repeated_k10_codec);
      k11_.WriteTo(ref output, _repeated_k11_codec);
      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 (HasId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (HasX1) {
        size += 1 + 1;
      }
      if (HasX5) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(X5);
      }
      if (HasX6) {
        size += 1 + 4;
      }
      if (HasX8) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X8);
      }
      if (HasX10) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(X10);
      }
      if (HasX13) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) X13);
      }
      if (HasX132) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) X132);
      }
      if (x14_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X14);
      }
      if (x15_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X15);
      }
      if (v2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (HasT1) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(T1);
      }
      size += k1_.CalculateSize(_repeated_k1_codec);
      size += k2_.CalculateSize(_repeated_k2_codec);
      size += k8_.CalculateSize(_map_k8_codec);
      size += k9_.CalculateSize(_repeated_k9_codec);
      size += k10_.CalculateSize(_repeated_k10_codec);
      size += k11_.CalculateSize(_repeated_k11_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DefineFromExcel2 other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.HasX5) {
        X5 = other.X5;
      }
      if (other.HasX6) {
        X6 = other.X6;
      }
      if (other.HasX8) {
        X8 = other.X8;
      }
      if (other.HasX10) {
        X10 = other.X10;
      }
      if (other.HasX13) {
        X13 = other.X13;
      }
      if (other.HasX132) {
        X132 = other.X132;
      }
      if (other.x14_ != null) {
        if (x14_ == null) {
          X14 = new global::Cfg.TestDemoDynamic();
        }
        X14.MergeFrom(other.X14);
      }
      if (other.x15_ != null) {
        if (x15_ == null) {
          X15 = new global::Cfg.TestShape();
        }
        X15.MergeFrom(other.X15);
      }
      if (other.v2_ != null) {
        if (v2_ == null) {
          V2 = new global::Cfg.vector2();
        }
        V2.MergeFrom(other.V2);
      }
      if (other.HasT1) {
        T1 = other.T1;
      }
      k1_.Add(other.k1_);
      k2_.Add(other.k2_);
      k8_.MergeFrom(other.k8_);
      k9_.Add(other.k9_);
      k10_.Add(other.k10_);
      k11_.Add(other.k11_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadBool();
            break;
          }
          case 24: {
            X5 = input.ReadInt64();
            break;
          }
          case 37: {
            X6 = input.ReadFloat();
            break;
          }
          case 40: {
            X8 = input.ReadInt32();
            break;
          }
          case 50: {
            X10 = input.ReadString();
            break;
          }
          case 56: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 64: {
            X132 = (global::Cfg.TestDemoFlag) input.ReadEnum();
            break;
          }
          case 74: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 82: {
            if (x15_ == null) {
              X15 = new global::Cfg.TestShape();
            }
            input.ReadMessage(X15);
            break;
          }
          case 90: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 96: {
            T1 = input.ReadInt64();
            break;
          }
          case 106:
          case 104: {
            k1_.AddEntriesFrom(input, _repeated_k1_codec);
            break;
          }
          case 114:
          case 112: {
            k2_.AddEntriesFrom(input, _repeated_k2_codec);
            break;
          }
          case 122: {
            k8_.AddEntriesFrom(input, _map_k8_codec);
            break;
          }
          case 130: {
            k9_.AddEntriesFrom(input, _repeated_k9_codec);
            break;
          }
          case 138: {
            k10_.AddEntriesFrom(input, _repeated_k10_codec);
            break;
          }
          case 146: {
            k11_.AddEntriesFrom(input, _repeated_k11_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            X1 = input.ReadBool();
            break;
          }
          case 24: {
            X5 = input.ReadInt64();
            break;
          }
          case 37: {
            X6 = input.ReadFloat();
            break;
          }
          case 40: {
            X8 = input.ReadInt32();
            break;
          }
          case 50: {
            X10 = input.ReadString();
            break;
          }
          case 56: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 64: {
            X132 = (global::Cfg.TestDemoFlag) input.ReadEnum();
            break;
          }
          case 74: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 82: {
            if (x15_ == null) {
              X15 = new global::Cfg.TestShape();
            }
            input.ReadMessage(X15);
            break;
          }
          case 90: {
            if (v2_ == null) {
              V2 = new global::Cfg.vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 96: {
            T1 = input.ReadInt64();
            break;
          }
          case 106:
          case 104: {
            k1_.AddEntriesFrom(ref input, _repeated_k1_codec);
            break;
          }
          case 114:
          case 112: {
            k2_.AddEntriesFrom(ref input, _repeated_k2_codec);
            break;
          }
          case 122: {
            k8_.AddEntriesFrom(ref input, _map_k8_codec);
            break;
          }
          case 130: {
            k9_.AddEntriesFrom(ref input, _repeated_k9_codec);
            break;
          }
          case 138: {
            k10_.AddEntriesFrom(ref input, _repeated_k10_codec);
            break;
          }
          case 146: {
            k11_.AddEntriesFrom(ref input, _repeated_k11_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestShape() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestShape(TestShape other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.Circle:
          Circle = other.Circle.Clone();
          break;
        case ValueOneofCase.Rectangle:
          Rectangle = other.Rectangle.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "Circle" field.</summary>
    public const int CircleFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestCircle Circle {
      get { return valueCase_ == ValueOneofCase.Circle ? (global::Cfg.TestCircle) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Circle;
      }
    }

    /// <summary>Field number for the "Rectangle" field.</summary>
    public const int RectangleFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.Test2Rectangle Rectangle {
      get { return valueCase_ == ValueOneofCase.Rectangle ? (global::Cfg.Test2Rectangle) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Rectangle;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      Circle = 1,
      Rectangle = 2,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestShape other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Circle, other.Circle)) return false;
      if (!object.Equals(Rectangle, other.Rectangle)) return false;
      if (ValueCase != other.ValueCase) 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 (valueCase_ == ValueOneofCase.Circle) hash ^= Circle.GetHashCode();
      if (valueCase_ == ValueOneofCase.Rectangle) hash ^= Rectangle.GetHashCode();
      hash ^= (int) valueCase_;
      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 (valueCase_ == ValueOneofCase.Circle) {
        output.WriteRawTag(10);
        output.WriteMessage(Circle);
      }
      if (valueCase_ == ValueOneofCase.Rectangle) {
        output.WriteRawTag(18);
        output.WriteMessage(Rectangle);
      }
      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 (valueCase_ == ValueOneofCase.Circle) {
        output.WriteRawTag(10);
        output.WriteMessage(Circle);
      }
      if (valueCase_ == ValueOneofCase.Rectangle) {
        output.WriteRawTag(18);
        output.WriteMessage(Rectangle);
      }
      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 (valueCase_ == ValueOneofCase.Circle) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Circle);
      }
      if (valueCase_ == ValueOneofCase.Rectangle) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Rectangle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestShape other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.Circle:
          if (Circle == null) {
            Circle = new global::Cfg.TestCircle();
          }
          Circle.MergeFrom(other.Circle);
          break;
        case ValueOneofCase.Rectangle:
          if (Rectangle == null) {
            Rectangle = new global::Cfg.Test2Rectangle();
          }
          Rectangle.MergeFrom(other.Rectangle);
          break;
      }

      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Cfg.TestCircle subBuilder = new global::Cfg.TestCircle();
            if (valueCase_ == ValueOneofCase.Circle) {
              subBuilder.MergeFrom(Circle);
            }
            input.ReadMessage(subBuilder);
            Circle = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.Test2Rectangle subBuilder = new global::Cfg.Test2Rectangle();
            if (valueCase_ == ValueOneofCase.Rectangle) {
              subBuilder.MergeFrom(Rectangle);
            }
            input.ReadMessage(subBuilder);
            Rectangle = subBuilder;
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Cfg.TestCircle subBuilder = new global::Cfg.TestCircle();
            if (valueCase_ == ValueOneofCase.Circle) {
              subBuilder.MergeFrom(Circle);
            }
            input.ReadMessage(subBuilder);
            Circle = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.Test2Rectangle subBuilder = new global::Cfg.Test2Rectangle();
            if (valueCase_ == ValueOneofCase.Rectangle) {
              subBuilder.MergeFrom(Rectangle);
            }
            input.ReadMessage(subBuilder);
            Rectangle = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestCircle() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "radius" field.</summary>
    public const int RadiusFieldNumber = 1;
    private readonly static float RadiusDefaultValue = 0F;

    private float radius_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Radius {
      get { if ((_hasBits0 & 1) != 0) { return radius_; } else { return RadiusDefaultValue; } }
      set {
        _hasBits0 |= 1;
        radius_ = value;
      }
    }
    /// <summary>Gets whether the "radius" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRadius {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "radius" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRadius() {
      _hasBits0 &= ~1;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestCircle other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Radius, other.Radius)) 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 (HasRadius) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Radius);
      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 (HasRadius) {
        output.WriteRawTag(13);
        output.WriteFloat(Radius);
      }
      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 (HasRadius) {
        output.WriteRawTag(13);
        output.WriteFloat(Radius);
      }
      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 (HasRadius) {
        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(TestCircle other) {
      if (other == null) {
        return;
      }
      if (other.HasRadius) {
        Radius = other.Radius;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            Radius = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            Radius = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 Test2Rectangle() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "width" field.</summary>
    public const int WidthFieldNumber = 1;
    private readonly static float WidthDefaultValue = 0F;

    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Width {
      get { if ((_hasBits0 & 1) != 0) { return width_; } else { return WidthDefaultValue; } }
      set {
        _hasBits0 |= 1;
        width_ = value;
      }
    }
    /// <summary>Gets whether the "width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasWidth {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearWidth() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "height" field.</summary>
    public const int HeightFieldNumber = 2;
    private readonly static float HeightDefaultValue = 0F;

    private float height_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Height {
      get { if ((_hasBits0 & 2) != 0) { return height_; } else { return HeightDefaultValue; } }
      set {
        _hasBits0 |= 2;
        height_ = value;
      }
    }
    /// <summary>Gets whether the "height" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHeight {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHeight() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Test2Rectangle other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Width, other.Width)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Height, other.Height)) 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 (HasWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Width);
      if (HasHeight) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Height);
      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 (HasWidth) {
        output.WriteRawTag(13);
        output.WriteFloat(Width);
      }
      if (HasHeight) {
        output.WriteRawTag(21);
        output.WriteFloat(Height);
      }
      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 (HasWidth) {
        output.WriteRawTag(13);
        output.WriteFloat(Width);
      }
      if (HasHeight) {
        output.WriteRawTag(21);
        output.WriteFloat(Height);
      }
      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 (HasWidth) {
        size += 1 + 4;
      }
      if (HasHeight) {
        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(Test2Rectangle other) {
      if (other == null) {
        return;
      }
      if (other.HasWidth) {
        Width = other.Width;
      }
      if (other.HasHeight) {
        Height = other.Height;
      }
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            Width = input.ReadFloat();
            break;
          }
          case 21: {
            Height = 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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            Width = input.ReadFloat();
            break;
          }
          case 21: {
            Height = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiTbBlackboard() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.AiBlackboard> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.AiBlackboard.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiBlackboard> dataList_ = new pbc::RepeatedField<global::Cfg.AiBlackboard>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiBlackboard> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiTbBlackboard other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiTbBlackboard other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 AiTbBehaviorTree() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.AiBehaviorTree> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.AiBehaviorTree.Parser);
    private readonly pbc::RepeatedField<global::Cfg.AiBehaviorTree> dataList_ = new pbc::RepeatedField<global::Cfg.AiBehaviorTree>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.AiBehaviorTree> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AiTbBehaviorTree other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AiTbBehaviorTree other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 CommonTbGlobalConfig() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.CommonGlobalConfig> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.CommonGlobalConfig.Parser);
    private readonly pbc::RepeatedField<global::Cfg.CommonGlobalConfig> dataList_ = new pbc::RepeatedField<global::Cfg.CommonGlobalConfig>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.CommonGlobalConfig> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CommonTbGlobalConfig other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CommonTbGlobalConfig other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 ItemTbItem() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.ItemItem> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.ItemItem.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ItemItem> dataList_ = new pbc::RepeatedField<global::Cfg.ItemItem>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ItemItem> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemTbItem other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemTbItem other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 L10nTbL10NDemo() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.L10nL10NDemo> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.L10nL10NDemo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.L10nL10NDemo> dataList_ = new pbc::RepeatedField<global::Cfg.L10nL10NDemo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.L10nL10NDemo> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(L10nTbL10NDemo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(L10nTbL10NDemo other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 L10nTbPatchDemo() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.L10nPatchDemo> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.L10nPatchDemo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.L10nPatchDemo> dataList_ = new pbc::RepeatedField<global::Cfg.L10nPatchDemo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.L10nPatchDemo> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(L10nTbPatchDemo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(L10nTbPatchDemo other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TagTbTestTag() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TagTestTag> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TagTestTag.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TagTestTag> dataList_ = new pbc::RepeatedField<global::Cfg.TagTestTag>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TagTestTag> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TagTbTestTag other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TagTbTestTag other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbFullTypes() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoType2> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoType2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoType2> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoType2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoType2> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbFullTypes other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbFullTypes other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbSingleton() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoSingletonType> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoSingletonType.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoSingletonType> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoSingletonType>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoSingletonType> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbSingleton other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbSingleton other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbNotIndexList() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestNotIndexList> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestNotIndexList.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestNotIndexList> dataList_ = new pbc::RepeatedField<global::Cfg.TestNotIndexList>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestNotIndexList> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbNotIndexList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbNotIndexList other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbMultiUnionIndexList() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiUnionIndexList> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestMultiUnionIndexList.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiUnionIndexList> dataList_ = new pbc::RepeatedField<global::Cfg.TestMultiUnionIndexList>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiUnionIndexList> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbMultiUnionIndexList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbMultiUnionIndexList other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbMultiIndexList() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiIndexList> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestMultiIndexList.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiIndexList> dataList_ = new pbc::RepeatedField<global::Cfg.TestMultiIndexList>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiIndexList> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbMultiIndexList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbMultiIndexList other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDataFromMisc() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoType2> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoType2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoType2> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoType2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoType2> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDataFromMisc other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDataFromMisc other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbMultiRowRecord() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowRecord> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestMultiRowRecord.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowRecord> dataList_ = new pbc::RepeatedField<global::Cfg.TestMultiRowRecord>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowRecord> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbMultiRowRecord other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbMultiRowRecord other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestMultiColumn() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestMultiColumn> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestMultiColumn.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestMultiColumn> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestMultiColumn>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestMultiColumn> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestMultiColumn other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestMultiColumn other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbMultiRowTitle() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestMultiRowTitle> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestMultiRowTitle.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestMultiRowTitle> dataList_ = new pbc::RepeatedField<global::Cfg.TestMultiRowTitle>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestMultiRowTitle> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbMultiRowTitle other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbMultiRowTitle other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestNull() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestNull> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestNull.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestNull> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestNull>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestNull> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestNull other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestNull other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDemoPrimitive() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoPrimitiveTypesTable> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoPrimitiveTypesTable.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoPrimitiveTypesTable> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoPrimitiveTypesTable>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoPrimitiveTypesTable> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDemoPrimitive other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDemoPrimitive other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestString() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestString> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestString.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestString> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestString>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestString> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestString other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestString other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDemoGroup() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoGroup> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoGroup.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoGroup> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoGroup>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoGroup> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDemoGroup other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDemoGroup other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDemoGroup_C() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoGroup> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoGroup.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoGroup> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoGroup>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoGroup> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDemoGroup_C other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDemoGroup_C other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDemoGroup_S() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoGroup> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoGroup.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoGroup> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoGroup>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoGroup> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDemoGroup_S other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDemoGroup_S other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDemoGroup_E() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoGroup> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDemoGroup.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDemoGroup> dataList_ = new pbc::RepeatedField<global::Cfg.TestDemoGroup>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDemoGroup> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDemoGroup_E other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDemoGroup_E other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestGlobal() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestGlobal> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestGlobal.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestGlobal> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestGlobal>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestGlobal> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestGlobal other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestGlobal other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestBeRef() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestBeRef> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestBeRef.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestBeRef> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestBeRef>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestBeRef> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestBeRef other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestBeRef other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestBeRef2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestBeRef> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestBeRef.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestBeRef> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestBeRef>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestBeRef> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestBeRef2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestBeRef2 other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestRef() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestRef> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestRef.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestRef> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestRef>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestRef> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestRef other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestRef other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestSize() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestSize> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestSize.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestSize> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestSize>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestSize> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestSize other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestSize other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestSet() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestSet> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestSet.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestSet> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestSet>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestSet> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestSet other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestSet other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDetectCsvEncoding() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDetectEncoding> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDetectEncoding.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDetectEncoding> dataList_ = new pbc::RepeatedField<global::Cfg.TestDetectEncoding>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDetectEncoding> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDetectCsvEncoding other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDetectCsvEncoding other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbItem2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestItemBase> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestItemBase.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestItemBase> dataList_ = new pbc::RepeatedField<global::Cfg.TestItemBase>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestItemBase> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbItem2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbItem2 other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestIndex() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestIndex> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestIndex.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestIndex> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestIndex>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestIndex> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestIndex other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestIndex other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestMap() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestMap> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestMap.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestMap> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestMap>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestMap> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestMap other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestMap other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbExcelFromJson() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestExcelFromJson> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestExcelFromJson.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestExcelFromJson> dataList_ = new pbc::RepeatedField<global::Cfg.TestExcelFromJson>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestExcelFromJson> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbExcelFromJson other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbExcelFromJson other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbCompositeJsonTable1() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestCompositeJsonTable1> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestCompositeJsonTable1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestCompositeJsonTable1> dataList_ = new pbc::RepeatedField<global::Cfg.TestCompositeJsonTable1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestCompositeJsonTable1> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbCompositeJsonTable1 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbCompositeJsonTable1 other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbCompositeJsonTable2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestCompositeJsonTable2> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestCompositeJsonTable2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestCompositeJsonTable2> dataList_ = new pbc::RepeatedField<global::Cfg.TestCompositeJsonTable2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestCompositeJsonTable2> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbCompositeJsonTable2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbCompositeJsonTable2 other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbCompositeJsonTable3() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestCompositeJsonTable3> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestCompositeJsonTable3.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestCompositeJsonTable3> dataList_ = new pbc::RepeatedField<global::Cfg.TestCompositeJsonTable3>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestCompositeJsonTable3> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbCompositeJsonTable3 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbCompositeJsonTable3 other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbExcelFromJsonMultiRow() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestExcelFromJsonMultiRow> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestExcelFromJsonMultiRow.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestExcelFromJsonMultiRow> dataList_ = new pbc::RepeatedField<global::Cfg.TestExcelFromJsonMultiRow>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestExcelFromJsonMultiRow> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbExcelFromJsonMultiRow other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbExcelFromJsonMultiRow other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestScriptableObject() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestScriptableObject> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestScriptableObject.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestScriptableObject> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestScriptableObject>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestScriptableObject> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestScriptableObject other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestScriptableObject other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbTestMapper() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestMapper> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestMapper.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestMapper> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestMapper>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestMapper> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestMapper other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbTestMapper other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 TestTbDefineFromExcel2() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.DefineFromExcel2> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.DefineFromExcel2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.DefineFromExcel2> dataList_ = new pbc::RepeatedField<global::Cfg.DefineFromExcel2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.DefineFromExcel2> DataList {
      get { return dataList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDefineFromExcel2 other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!dataList_.Equals(other.dataList_)) 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;
      hash ^= dataList_.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
      dataList_.WriteTo(output, _repeated_dataList_codec);
      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) {
      dataList_.WriteTo(ref output, _repeated_dataList_codec);
      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;
      size += dataList_.CalculateSize(_repeated_dataList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTbDefineFromExcel2 other) {
      if (other == null) {
        return;
      }
      dataList_.Add(other.dataList_);
      _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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(input, _repeated_dataList_codec);
            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) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            dataList_.AddEntriesFrom(ref input, _repeated_dataList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code