// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: config.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#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 config.proto</summary>
  public static partial class ConfigReflection {

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

    static ConfigReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cgxjb25maWcucHJvdG8SA2NmZyIfCgdWZWN0b3IyEgkKAXgYASACKAISCQoB",
            "eRgCIAIoAiIqCgdWZWN0b3IzEgkKAXgYASACKAISCQoBeRgCIAIoAhIJCgF6",
            "GAMgAigCIjUKB1ZlY3RvcjQSCQoBeBgBIAIoAhIJCgF5GAIgAigCEgkKAXoY",
            "AyACKAISCQoBdxgEIAIoAiJnCgxBaUJsYWNrYm9hcmQSDAoEbmFtZRgBIAIo",
            "CRIMCgRkZXNjGAIgAigJEhMKC3BhcmVudF9uYW1lGAMgAigJEiYKBGtleXMY",
            "BCADKAsyFC5jZmcuQWlCbGFja2JvYXJkS2V5QgIQACJ4Cg9BaUJsYWNrYm9h",
            "cmRLZXkSDAoEbmFtZRgBIAIoCRIMCgRkZXNjGAIgAigJEhEKCWlzX3N0YXRp",
            "YxgDIAIoCBIdCgR0eXBlGAQgAigOMg8uY2ZnLkFpRUtleVR5cGUSFwoPdHlw",
            "ZV9jbGFzc19uYW1lGAUgAigJInEKDkFpQmVoYXZpb3JUcmVlEgoKAmlkGAEg",
            "AigFEgwKBG5hbWUYAiACKAkSDAoEZGVzYxgDIAIoCRIVCg1ibGFja2JvYXJk",
            "X2lkGAQgAigJEiAKBHJvb3QYBSACKAsyEi5jZmcuQWlDb21wb3NlTm9kZSLW",
            "CAoGQWlOb2RlEjUKEVVlU2V0RGVmYXVsdEZvY3VzGAEgASgLMhguY2ZnLkFp",
            "VWVTZXREZWZhdWx0Rm9jdXNIABI7ChRFeGVjdXRlVGltZVN0YXRpc3RpYxgC",
            "IAEoCzIbLmNmZy5BaUV4ZWN1dGVUaW1lU3RhdGlzdGljSAASKwoMQ2hvb3Nl",
            "VGFyZ2V0GAMgASgLMhMuY2ZnLkFpQ2hvb3NlVGFyZ2V0SAASLwoOS2VlcEZh",
            "Y2VUYXJnZXQYBCABKAsyFS5jZmcuQWlLZWVwRmFjZVRhcmdldEgAEi8KDkdl",
            "dE93bmVyUGxheWVyGAUgASgLMhUuY2ZnLkFpR2V0T3duZXJQbGF5ZXJIABJD",
            "ChhVcGRhdGVEYWlseUJlaGF2aW9yUHJvcHMYBiABKAsyHy5jZmcuQWlVcGRh",
            "dGVEYWlseUJlaGF2aW9yUHJvcHNIABIfCgZVZUxvb3AYByABKAsyDS5jZmcu",
            "QWlVZUxvb3BIABInCgpVZUNvb2xkb3duGAggASgLMhEuY2ZnLkFpVWVDb29s",
            "ZG93bkgAEikKC1VlVGltZUxpbWl0GAkgASgLMhIuY2ZnLkFpVWVUaW1lTGlt",
            "aXRIABIrCgxVZUJsYWNrYm9hcmQYCiABKAsyEy5jZmcuQWlVZUJsYWNrYm9h",
            "cmRIABIvCg5VZUZvcmNlU3VjY2VzcxgLIAEoCzIVLmNmZy5BaVVlRm9yY2VT",
            "dWNjZXNzSAASKwoMSXNBdExvY2F0aW9uGAwgASgLMhMuY2ZnLkFpSXNBdExv",
            "Y2F0aW9uSAASMwoQRGlzdGFuY2VMZXNzVGhhbhgNIAEoCzIXLmNmZy5BaURp",
            "c3RhbmNlTGVzc1RoYW5IABIjCghTZXF1ZW5jZRgOIAEoCzIPLmNmZy5BaVNl",
            "cXVlbmNlSAASIwoIU2VsZWN0b3IYDyABKAsyDy5jZmcuQWlTZWxlY3RvckgA",
            "Ei8KDlNpbXBsZVBhcmFsbGVsGBAgASgLMhUuY2ZnLkFpU2ltcGxlUGFyYWxs",
            "ZWxIABIfCgZVZVdhaXQYESABKAsyDS5jZmcuQWlVZVdhaXRIABI7ChRVZVdh",
            "aXRCbGFja2JvYXJkVGltZRgSIAEoCzIbLmNmZy5BaVVlV2FpdEJsYWNrYm9h",
            "cmRUaW1lSAASKwoMTW92ZVRvVGFyZ2V0GBMgASgLMhMuY2ZnLkFpTW92ZVRv",
            "VGFyZ2V0SAASKQoLQ2hvb3NlU2tpbGwYFCABKAsyEi5jZmcuQWlDaG9vc2VT",
            "a2lsbEgAEjsKFE1vdmVUb1JhbmRvbUxvY2F0aW9uGBUgASgLMhsuY2ZnLkFp",
            "TW92ZVRvUmFuZG9tTG9jYXRpb25IABIvCg5Nb3ZlVG9Mb2NhdGlvbhgWIAEo",
            "CzIVLmNmZy5BaU1vdmVUb0xvY2F0aW9uSAASJwoKRGVidWdQcmludBgXIAEo",
            "CzIRLmNmZy5BaURlYnVnUHJpbnRIAEIHCgV2YWx1ZSLcAgoJQWlTZXJ2aWNl",
            "EjUKEVVlU2V0RGVmYXVsdEZvY3VzGAEgASgLMhguY2ZnLkFpVWVTZXREZWZh",
            "dWx0Rm9jdXNIABI7ChRFeGVjdXRlVGltZVN0YXRpc3RpYxgCIAEoCzIbLmNm",
            "Zy5BaUV4ZWN1dGVUaW1lU3RhdGlzdGljSAASKwoMQ2hvb3NlVGFyZ2V0GAMg",
            "ASgLMhMuY2ZnLkFpQ2hvb3NlVGFyZ2V0SAASLwoOS2VlcEZhY2VUYXJnZXQY",
            "BCABKAsyFS5jZmcuQWlLZWVwRmFjZVRhcmdldEgAEi8KDkdldE93bmVyUGxh",
            "eWVyGAUgASgLMhUuY2ZnLkFpR2V0T3duZXJQbGF5ZXJIABJDChhVcGRhdGVE",
            "YWlseUJlaGF2aW9yUHJvcHMYBiABKAsyHy5jZmcuQWlVcGRhdGVEYWlseUJl",
            "aGF2aW9yUHJvcHNIAEIHCgV2YWx1ZSJKChNBaVVlU2V0RGVmYXVsdEZvY3Vz",
            "EgoKAmlkGAEgAigFEhEKCW5vZGVfbmFtZRgCIAIoCRIUCgxrZXlib2FyZF9r",
            "ZXkYAyACKAkiNwoWQWlFeGVjdXRlVGltZVN0YXRpc3RpYxIKCgJpZBgBIAIo",
            "BRIRCglub2RlX25hbWUYAiACKAkiSgoOQWlDaG9vc2VUYXJnZXQSCgoCaWQY",
            "ASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEhkKEXJlc3VsdF90YXJnZXRfa2V5",
            "GAMgAigJIksKEEFpS2VlcEZhY2VUYXJnZXQSCgoCaWQYASACKAUSEQoJbm9k",
            "ZV9uYW1lGAIgAigJEhgKEHRhcmdldF9hY3Rvcl9rZXkYAyACKAkiSwoQQWlH",
            "ZXRPd25lclBsYXllchIKCgJpZBgBIAIoBRIRCglub2RlX25hbWUYAiACKAkS",
            "GAoQcGxheWVyX2FjdG9yX2tleRgDIAIoCSLMAgoaQWlVcGRhdGVEYWlseUJl",
            "aGF2aW9yUHJvcHMSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEhMK",
            "C3NhdGlldHlfa2V5GAMgAigJEhIKCmVuZXJneV9rZXkYBCACKAkSEAoIbW9v",
            "ZF9rZXkYBSACKAkSIwobc2F0aWV0eV9sb3dlcl90aHJlc2hvbGRfa2V5GAYg",
            "AigJEiMKG3NhdGlldHlfdXBwZXJfdGhyZXNob2xkX2tleRgHIAIoCRIiChpl",
            "bmVyZ3lfbG93ZXJfdGhyZXNob2xkX2tleRgIIAIoCRIiChplbmVyZ3lfdXBw",
            "ZXJfdGhyZXNob2xkX2tleRgJIAIoCRIgChhtb29kX2xvd2VyX3RocmVzaG9s",
            "ZF9rZXkYCiACKAkSIAoYbW9vZF91cHBlcl90aHJlc2hvbGRfa2V5GAsgAigJ",
            "IssCCgtBaURlY29yYXRvchIfCgZVZUxvb3AYByABKAsyDS5jZmcuQWlVZUxv",
            "b3BIABInCgpVZUNvb2xkb3duGAggASgLMhEuY2ZnLkFpVWVDb29sZG93bkgA",
            "EikKC1VlVGltZUxpbWl0GAkgASgLMhIuY2ZnLkFpVWVUaW1lTGltaXRIABIr",
            "CgxVZUJsYWNrYm9hcmQYCiABKAsyEy5jZmcuQWlVZUJsYWNrYm9hcmRIABIv",
            "Cg5VZUZvcmNlU3VjY2VzcxgLIAEoCzIVLmNmZy5BaVVlRm9yY2VTdWNjZXNz",
            "SAASKwoMSXNBdExvY2F0aW9uGAwgASgLMhMuY2ZnLkFpSXNBdExvY2F0aW9u",
            "SAASMwoQRGlzdGFuY2VMZXNzVGhhbhgNIAEoCzIXLmNmZy5BaURpc3RhbmNl",
            "TGVzc1RoYW5IAEIHCgV2YWx1ZSKnAQoIQWlVZUxvb3ASCgoCaWQYASACKAUS",
            "EQoJbm9kZV9uYW1lGAIgAigJEi4KD2Zsb3dfYWJvcnRfbW9kZRgDIAIoDjIV",
            "LmNmZy5BaUVGbG93QWJvcnRNb2RlEhEKCW51bV9sb29wcxgEIAIoBRIVCg1p",
            "bmZpbml0ZV9sb29wGAUgAigIEiIKGmluZmluaXRlX2xvb3BfdGltZW91dF90",
            "aW1lGAYgAigCInQKDEFpVWVDb29sZG93bhIKCgJpZBgBIAIoBRIRCglub2Rl",
            "X25hbWUYAiACKAkSLgoPZmxvd19hYm9ydF9tb2RlGAMgAigOMhUuY2ZnLkFp",
            "RUZsb3dBYm9ydE1vZGUSFQoNY29vbGRvd25fdGltZRgEIAIoAiJyCg1BaVVl",
            "VGltZUxpbWl0EgoKAmlkGAEgAigFEhEKCW5vZGVfbmFtZRgCIAIoCRIuCg9m",
            "bG93X2Fib3J0X21vZGUYAyACKA4yFS5jZmcuQWlFRmxvd0Fib3J0TW9kZRIS",
            "CgpsaW1pdF90aW1lGAQgAigCItgBCg5BaVVlQmxhY2tib2FyZBIKCgJpZBgB",
            "IAIoBRIRCglub2RlX25hbWUYAiACKAkSLgoPZmxvd19hYm9ydF9tb2RlGAMg",
            "AigOMhUuY2ZnLkFpRUZsb3dBYm9ydE1vZGUSMwoPbm90aWZ5X29ic2VydmVy",
            "GAQgAigOMhouY2ZnLkFpRU5vdGlmeU9ic2VydmVyTW9kZRIWCg5ibGFja2Jv",
            "YXJkX2tleRgFIAIoCRIqCglrZXlfcXVlcnkYBiACKAsyFy5jZmcuQWlLZXlR",
            "dWVyeU9wZXJhdG9yIpIBChJBaUtleVF1ZXJ5T3BlcmF0b3ISHQoFSXNTZXQY",
            "ASABKAsyDC5jZmcuQWlJc1NldEgAEiMKCElzTm90U2V0GAIgASgLMg8uY2Zn",
            "LkFpSXNOb3RTZXRIABIvCg5CaW5hcnlPcGVyYXRvchgDIAEoCzIVLmNmZy5B",
            "aUJpbmFyeU9wZXJhdG9ySABCBwoFdmFsdWUiCQoHQWlJc1NldCIMCgpBaUlz",
            "Tm90U2V0IlAKEEFpQmluYXJ5T3BlcmF0b3ISHgoEb3BlchgBIAIoDjIQLmNm",
            "Zy5BaUVPcGVyYXRvchIcCgRkYXRhGAIgAigLMg4uY2ZnLkFpS2V5RGF0YSLQ",
            "AQoJQWlLZXlEYXRhEisKDEZsb2F0S2V5RGF0YRgBIAEoCzITLmNmZy5BaUZs",
            "b2F0S2V5RGF0YUgAEicKCkludEtleURhdGEYAiABKAsyES5jZmcuQWlJbnRL",
            "ZXlEYXRhSAASLQoNU3RyaW5nS2V5RGF0YRgDIAEoCzIULmNmZy5BaVN0cmlu",
            "Z0tleURhdGFIABI1ChFCbGFja2JvYXJkS2V5RGF0YRgEIAEoCzIYLmNmZy5B",
            "aUJsYWNrYm9hcmRLZXlEYXRhSABCBwoFdmFsdWUiHwoOQWlGbG9hdEtleURh",
            "dGESDQoFdmFsdWUYASACKAIiHQoMQWlJbnRLZXlEYXRhEg0KBXZhbHVlGAEg",
            "AigFIiAKD0FpU3RyaW5nS2V5RGF0YRINCgV2YWx1ZRgBIAIoCSIkChNBaUJs",
            "YWNrYm9hcmRLZXlEYXRhEg0KBXZhbHVlGAEgAigJImEKEEFpVWVGb3JjZVN1",
            "Y2Nlc3MSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEi4KD2Zsb3df",
            "YWJvcnRfbW9kZRgDIAIoDjIVLmNmZy5BaUVGbG93QWJvcnRNb2RlIqsBCg5B",
            "aUlzQXRMb2NhdGlvbhIKCgJpZBgBIAIoBRIRCglub2RlX25hbWUYAiACKAkS",
            "LgoPZmxvd19hYm9ydF9tb2RlGAMgAigOMhUuY2ZnLkFpRUZsb3dBYm9ydE1v",
            "ZGUSGQoRYWNjZXB0YWJsZV9yYWRpdXMYBCACKAISFAoMa2V5Ym9hcmRfa2V5",
            "GAUgAigJEhkKEWludmVyc2VfY29uZGl0aW9uGAYgAigIIrUBChJBaURpc3Rh",
            "bmNlTGVzc1RoYW4SCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEi4K",
            "D2Zsb3dfYWJvcnRfbW9kZRgDIAIoDjIVLmNmZy5BaUVGbG93QWJvcnRNb2Rl",
            "EhIKCmFjdG9yMV9rZXkYBCACKAkSEgoKYWN0b3IyX2tleRgFIAIoCRIQCghk",
            "aXN0YW5jZRgGIAIoAhIWCg5yZXZlcnNlX3Jlc3VsdBgHIAIoCCLdAwoKQWlG",
            "bG93Tm9kZRIjCghTZXF1ZW5jZRgOIAEoCzIPLmNmZy5BaVNlcXVlbmNlSAAS",
            "IwoIU2VsZWN0b3IYDyABKAsyDy5jZmcuQWlTZWxlY3RvckgAEi8KDlNpbXBs",
            "ZVBhcmFsbGVsGBAgASgLMhUuY2ZnLkFpU2ltcGxlUGFyYWxsZWxIABIfCgZV",
            "ZVdhaXQYESABKAsyDS5jZmcuQWlVZVdhaXRIABI7ChRVZVdhaXRCbGFja2Jv",
            "YXJkVGltZRgSIAEoCzIbLmNmZy5BaVVlV2FpdEJsYWNrYm9hcmRUaW1lSAAS",
            "KwoMTW92ZVRvVGFyZ2V0GBMgASgLMhMuY2ZnLkFpTW92ZVRvVGFyZ2V0SAAS",
            "KQoLQ2hvb3NlU2tpbGwYFCABKAsyEi5jZmcuQWlDaG9vc2VTa2lsbEgAEjsK",
            "FE1vdmVUb1JhbmRvbUxvY2F0aW9uGBUgASgLMhsuY2ZnLkFpTW92ZVRvUmFu",
            "ZG9tTG9jYXRpb25IABIvCg5Nb3ZlVG9Mb2NhdGlvbhgWIAEoCzIVLmNmZy5B",
            "aU1vdmVUb0xvY2F0aW9uSAASJwoKRGVidWdQcmludBgXIAEoCzIRLmNmZy5B",
            "aURlYnVnUHJpbnRIAEIHCgV2YWx1ZSKTAQoNQWlDb21wb3NlTm9kZRIjCghT",
            "ZXF1ZW5jZRgOIAEoCzIPLmNmZy5BaVNlcXVlbmNlSAASIwoIU2VsZWN0b3IY",
            "DyABKAsyDy5jZmcuQWlTZWxlY3RvckgAEi8KDlNpbXBsZVBhcmFsbGVsGBAg",
            "ASgLMhUuY2ZnLkFpU2ltcGxlUGFyYWxsZWxIAEIHCgV2YWx1ZSKiAQoKQWlT",
            "ZXF1ZW5jZRIKCgJpZBgBIAIoBRIRCglub2RlX25hbWUYAiACKAkSKAoKZGVj",
            "b3JhdG9ycxgDIAMoCzIQLmNmZy5BaURlY29yYXRvckICEAASJAoIc2Vydmlj",
            "ZXMYBCADKAsyDi5jZmcuQWlTZXJ2aWNlQgIQABIlCghjaGlsZHJlbhgFIAMo",
            "CzIPLmNmZy5BaUZsb3dOb2RlQgIQACKiAQoKQWlTZWxlY3RvchIKCgJpZBgB",
            "IAIoBRIRCglub2RlX25hbWUYAiACKAkSKAoKZGVjb3JhdG9ycxgDIAMoCzIQ",
            "LmNmZy5BaURlY29yYXRvckICEAASJAoIc2VydmljZXMYBCADKAsyDi5jZmcu",
            "QWlTZXJ2aWNlQgIQABIlCghjaGlsZHJlbhgFIAMoCzIPLmNmZy5BaUZsb3dO",
            "b2RlQgIQACL0AQoQQWlTaW1wbGVQYXJhbGxlbBIKCgJpZBgBIAIoBRIRCglu",
            "b2RlX25hbWUYAiACKAkSKAoKZGVjb3JhdG9ycxgDIAMoCzIQLmNmZy5BaURl",
            "Y29yYXRvckICEAASJAoIc2VydmljZXMYBCADKAsyDi5jZmcuQWlTZXJ2aWNl",
            "QgIQABInCgtmaW5pc2hfbW9kZRgFIAIoDjISLmNmZy5BaUVGaW5pc2hNb2Rl",
            "Eh4KCW1haW5fdGFzaxgGIAIoCzILLmNmZy5BaVRhc2sSKAoPYmFja2dyb3Vu",
            "ZF9ub2RlGAcgAigLMg8uY2ZnLkFpRmxvd05vZGUi3gIKBkFpVGFzaxIfCgZV",
            "ZVdhaXQYESABKAsyDS5jZmcuQWlVZVdhaXRIABI7ChRVZVdhaXRCbGFja2Jv",
            "YXJkVGltZRgSIAEoCzIbLmNmZy5BaVVlV2FpdEJsYWNrYm9hcmRUaW1lSAAS",
            "KwoMTW92ZVRvVGFyZ2V0GBMgASgLMhMuY2ZnLkFpTW92ZVRvVGFyZ2V0SAAS",
            "KQoLQ2hvb3NlU2tpbGwYFCABKAsyEi5jZmcuQWlDaG9vc2VTa2lsbEgAEjsK",
            "FE1vdmVUb1JhbmRvbUxvY2F0aW9uGBUgASgLMhsuY2ZnLkFpTW92ZVRvUmFu",
            "ZG9tTG9jYXRpb25IABIvCg5Nb3ZlVG9Mb2NhdGlvbhgWIAEoCzIVLmNmZy5B",
            "aU1vdmVUb0xvY2F0aW9uSAASJwoKRGVidWdQcmludBgXIAEoCzIRLmNmZy5B",
            "aURlYnVnUHJpbnRIAEIHCgV2YWx1ZSLDAQoIQWlVZVdhaXQSCgoCaWQYASAC",
            "KAUSEQoJbm9kZV9uYW1lGAIgAigJEigKCmRlY29yYXRvcnMYAyADKAsyEC5j",
            "ZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNlcnZpY2VzGAQgAygLMg4uY2ZnLkFp",
            "U2VydmljZUICEAASGwoTaWdub3JlX3Jlc3RhcnRfc2VsZhgFIAIoCBIRCgl3",
            "YWl0X3RpbWUYBiACKAISGAoQcmFuZG9tX2RldmlhdGlvbhgHIAIoAiK8AQoW",
            "QWlVZVdhaXRCbGFja2JvYXJkVGltZRIKCgJpZBgBIAIoBRIRCglub2RlX25h",
            "bWUYAiACKAkSKAoKZGVjb3JhdG9ycxgDIAMoCzIQLmNmZy5BaURlY29yYXRv",
            "ckICEAASJAoIc2VydmljZXMYBCADKAsyDi5jZmcuQWlTZXJ2aWNlQgIQABIb",
            "ChNpZ25vcmVfcmVzdGFydF9zZWxmGAUgAigIEhYKDmJsYWNrYm9hcmRfa2V5",
            "GAYgAigJItEBCg5BaU1vdmVUb1RhcmdldBIKCgJpZBgBIAIoBRIRCglub2Rl",
            "X25hbWUYAiACKAkSKAoKZGVjb3JhdG9ycxgDIAMoCzIQLmNmZy5BaURlY29y",
            "YXRvckICEAASJAoIc2VydmljZXMYBCADKAsyDi5jZmcuQWlTZXJ2aWNlQgIQ",
            "ABIbChNpZ25vcmVfcmVzdGFydF9zZWxmGAUgAigIEhgKEHRhcmdldF9hY3Rv",
            "cl9rZXkYBiACKAkSGQoRYWNjZXB0YWJsZV9yYWRpdXMYByACKAIi0gEKDUFp",
            "Q2hvb3NlU2tpbGwSCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEigK",
            "CmRlY29yYXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNl",
            "cnZpY2VzGAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASGwoTaWdub3JlX3Jl",
            "c3RhcnRfc2VsZhgFIAIoCBIYChB0YXJnZXRfYWN0b3Jfa2V5GAYgAigJEhsK",
            "E3Jlc3VsdF9za2lsbF9pZF9rZXkYByACKAki0QEKFkFpTW92ZVRvUmFuZG9t",
            "TG9jYXRpb24SCgoCaWQYASACKAUSEQoJbm9kZV9uYW1lGAIgAigJEigKCmRl",
            "Y29yYXRvcnMYAyADKAsyEC5jZmcuQWlEZWNvcmF0b3JCAhAAEiQKCHNlcnZp",
            "Y2VzGAQgAygLMg4uY2ZnLkFpU2VydmljZUICEAASGwoTaWdub3JlX3Jlc3Rh",
            "cnRfc2VsZhgFIAIoCBIbChNvcmlnaW5fcG9zaXRpb25fa2V5GAYgAigJEg4K",
            "BnJhZGl1cxgHIAIoAiLZAQoQQWlNb3ZlVG9Mb2NhdGlvbhIKCgJpZBgBIAIo",
            "BRIRCglub2RlX25hbWUYAiACKAkSKAoKZGVjb3JhdG9ycxgDIAMoCzIQLmNm",
            "Zy5BaURlY29yYXRvckICEAASJAoIc2VydmljZXMYBCADKAsyDi5jZmcuQWlT",
            "ZXJ2aWNlQgIQABIbChNpZ25vcmVfcmVzdGFydF9zZWxmGAUgAigIEh4KCGxv",
            "Y2F0aW9uGAYgAigLMgwuY2ZnLlZlY3RvcjMSGQoRYWNjZXB0YWJsZV9yYWRp",
            "dXMYByACKAIiqAEKDEFpRGVidWdQcmludBIKCgJpZBgBIAIoBRIRCglub2Rl",
            "X25hbWUYAiACKAkSKAoKZGVjb3JhdG9ycxgDIAMoCzIQLmNmZy5BaURlY29y",
            "YXRvckICEAASJAoIc2VydmljZXMYBCADKAsyDi5jZmcuQWlTZXJ2aWNlQgIQ",
            "ABIbChNpZ25vcmVfcmVzdGFydF9zZWxmGAUgAigIEgwKBHRleHQYBiACKAki",
            "pwEKDkJsdWVwcmludENsYXp6EiwKCUludGVyZmFjZRgBIAEoCzIXLmNmZy5C",
            "bHVlcHJpbnRJbnRlcmZhY2VIABIwCgtOb3JtYWxDbGF6ehgCIAEoCzIZLmNm",
            "Zy5CbHVlcHJpbnROb3JtYWxDbGF6ekgAEiwKCUVudW1DbGF6ehgDIAEoCzIX",
            "LmNmZy5CbHVlcHJpbnRFbnVtQ2xhenpIAEIHCgV2YWx1ZSLEAQoPQmx1ZXBy",
            "aW50TWV0aG9kEjYKDkFic3RyYWNlTWV0aG9kGAEgASgLMhwuY2ZnLkJsdWVw",
            "cmludEFic3RyYWNlTWV0aG9kSAASNgoORXh0ZXJuYWxNZXRob2QYAiABKAsy",
            "HC5jZmcuQmx1ZXByaW50RXh0ZXJuYWxNZXRob2RIABI4Cg9CbHVlcHJpbnRN",
            "ZXRob2QYAyABKAsyHS5jZmcuQmx1ZXByaW50Qmx1ZXByaW50TWV0aG9kSABC",
            "BwoFdmFsdWUiQAoSQmx1ZXByaW50UGFyYW1JbmZvEgwKBG5hbWUYASACKAkS",
            "DAoEdHlwZRgCIAIoCRIOCgZpc19yZWYYAyACKAgijgEKF0JsdWVwcmludEFi",
            "c3RyYWNlTWV0aG9kEgwKBG5hbWUYASACKAkSDAoEZGVzYxgCIAIoCRIRCglp",
            "c19zdGF0aWMYAyACKAgSEwoLcmV0dXJuX3R5cGUYBCACKAkSLwoKcGFyYW1l",
            "dGVycxgFIAMoCzIXLmNmZy5CbHVlcHJpbnRQYXJhbUluZm9CAhAAIo4BChdC",
            "bHVlcHJpbnRFeHRlcm5hbE1ldGhvZBIMCgRuYW1lGAEgAigJEgwKBGRlc2MY",
            "AiACKAkSEQoJaXNfc3RhdGljGAMgAigIEhMKC3JldHVybl90eXBlGAQgAigJ",
            "Ei8KCnBhcmFtZXRlcnMYBSADKAsyFy5jZmcuQmx1ZXByaW50UGFyYW1JbmZv",
            "QgIQACKPAQoYQmx1ZXByaW50Qmx1ZXByaW50TWV0aG9kEgwKBG5hbWUYASAC",
            "KAkSDAoEZGVzYxgCIAIoCRIRCglpc19zdGF0aWMYAyACKAgSEwoLcmV0dXJu",
            "X3R5cGUYBCACKAkSLwoKcGFyYW1ldGVycxgFIAMoCzIXLmNmZy5CbHVlcHJp",
            "bnRQYXJhbUluZm9CAhAAIoUBChJCbHVlcHJpbnRJbnRlcmZhY2USDAoEbmFt",
            "ZRgBIAIoCRIMCgRkZXNjGAIgAigJEigKB3BhcmVudHMYAyADKAsyEy5jZmcu",
            "Qmx1ZXByaW50Q2xhenpCAhAAEikKB21ldGhvZHMYBCADKAsyFC5jZmcuQmx1",
            "ZXByaW50TWV0aG9kQgIQACLFAQoUQmx1ZXByaW50Tm9ybWFsQ2xhenoSDAoE",
            "bmFtZRgBIAIoCRIMCgRkZXNjGAIgAigJEigKB3BhcmVudHMYAyADKAsyEy5j",
            "ZmcuQmx1ZXByaW50Q2xhenpCAhAAEikKB21ldGhvZHMYBCADKAsyFC5jZmcu",
            "Qmx1ZXByaW50TWV0aG9kQgIQABITCgtpc19hYnN0cmFjdBgFIAIoCBInCgZm",
            "aWVsZHMYBiADKAsyEy5jZmcuQmx1ZXByaW50RmllbGRCAhAAIjoKDkJsdWVw",
            "cmludEZpZWxkEgwKBG5hbWUYASACKAkSDAoEdHlwZRgCIAIoCRIMCgRkZXNj",
            "GAMgAigJIrEBChJCbHVlcHJpbnRFbnVtQ2xhenoSDAoEbmFtZRgBIAIoCRIM",
            "CgRkZXNjGAIgAigJEigKB3BhcmVudHMYAyADKAsyEy5jZmcuQmx1ZXByaW50",
            "Q2xhenpCAhAAEikKB21ldGhvZHMYBCADKAsyFC5jZmcuQmx1ZXByaW50TWV0",
            "aG9kQgIQABIqCgVlbnVtcxgFIAMoCzIXLmNmZy5CbHVlcHJpbnRFbnVtRmll",
            "bGRCAhAAIjEKEkJsdWVwcmludEVudW1GaWVsZBIMCgRuYW1lGAEgAigJEg0K",
            "BXZhbHVlGAIgAigFIoABCg1Cb251c0Ryb3BJbmZvEgoKAmlkGAEgAigFEgwK",
            "BGRlc2MYAiACKAkSNQoRY2xpZW50X3Nob3dfaXRlbXMYAyADKAsyFi5jZmcu",
            "Qm9udXNTaG93SXRlbUluZm9CAhAAEh4KBWJvbnVzGAQgAigLMg8uY2ZnLkJv",
            "bnVzQm9udXMiNgoRQm9udXNTaG93SXRlbUluZm8SDwoHaXRlbV9pZBgBIAIo",
            "BRIQCghpdGVtX251bRgCIAIoAyL9AwoKQm9udXNCb251cxIkCgdPbmVJdGVt",
            "GAEgASgLMhEuY2ZnLkJvbnVzT25lSXRlbUgAEiYKCE9uZUl0ZW1zGAIgASgL",
            "MhIuY2ZnLkJvbnVzT25lSXRlbXNIABIeCgRJdGVtGAMgASgLMg4uY2ZnLkJv",
            "bnVzSXRlbUgAEiAKBUl0ZW1zGAQgASgLMg8uY2ZnLkJvbnVzSXRlbXNIABI0",
            "Cg9Db2VmZmljaWVudEl0ZW0YBSABKAsyGS5jZmcuQm9udXNDb2VmZmljaWVu",
            "dEl0ZW1IABIsCgtXZWlnaHRJdGVtcxgGIAEoCzIVLmNmZy5Cb251c1dlaWdo",
            "dEl0ZW1zSAASNgoQUHJvYmFiaWxpdHlJdGVtcxgHIAEoCzIaLmNmZy5Cb251",
            "c1Byb2JhYmlsaXR5SXRlbXNIABIqCgpNdWx0aUJvbnVzGAggASgLMhQuY2Zn",
            "LkJvbnVzTXVsdGlCb251c0gAEjYKEFByb2JhYmlsaXR5Qm9udXMYCSABKAsy",
            "Gi5jZmcuQm9udXNQcm9iYWJpbGl0eUJvbnVzSAASLAoLV2VpZ2h0Qm9udXMY",
            "CiABKAsyFS5jZmcuQm9udXNXZWlnaHRCb251c0gAEigKCURyb3BCb251cxgL",
            "IAEoCzITLmNmZy5Cb251c0Ryb3BCb251c0gAQgcKBXZhbHVlIh8KDEJvbnVz",
            "T25lSXRlbRIPCgdpdGVtX2lkGAEgAigFIiIKDUJvbnVzT25lSXRlbXMSEQoF",
            "aXRlbXMYASADKAVCAhABIiwKCUJvbnVzSXRlbRIPCgdpdGVtX2lkGAEgAigF",
            "Eg4KBmFtb3VudBgCIAIoBSIzCgpCb251c0l0ZW1zEiUKCWl0ZW1fbGlzdBgB",
            "IAMoCzIOLmNmZy5Cb251c0l0ZW1CAhAAIk0KFEJvbnVzQ29lZmZpY2llbnRJ",
            "dGVtEhAKCGJvbnVzX2lkGAEgAigFEiMKCmJvbnVzX2xpc3QYAiACKAsyDy5j",
            "ZmcuQm9udXNJdGVtcyJDChBCb251c1dlaWdodEl0ZW1zEi8KCWl0ZW1fbGlz",
            "dBgBIAMoCzIYLmNmZy5Cb251c1dlaWdodEl0ZW1JbmZvQgIQACJDChNCb251",
            "c1dlaWdodEl0ZW1JbmZvEg8KB2l0ZW1faWQYASACKAUSCwoDbnVtGAIgAigF",
            "Eg4KBndlaWdodBgDIAIoBSJNChVCb251c1Byb2JhYmlsaXR5SXRlbXMSNAoJ",
            "aXRlbV9saXN0GAEgAygLMh0uY2ZnLkJvbnVzUHJvYmFiaWxpdHlJdGVtSW5m",
            "b0ICEAAiTQoYQm9udXNQcm9iYWJpbGl0eUl0ZW1JbmZvEg8KB2l0ZW1faWQY",
            "ASACKAUSCwoDbnVtGAIgAigFEhMKC3Byb2JhYmlsaXR5GAMgAigCIjcKD0Jv",
            "bnVzTXVsdGlCb251cxIkCgdib251c2VzGAEgAygLMg8uY2ZnLkJvbnVzQm9u",
            "dXNCAhAAIkwKFUJvbnVzUHJvYmFiaWxpdHlCb251cxIzCgdib251c2VzGAEg",
            "AygLMh4uY2ZnLkJvbnVzUHJvYmFiaWxpdHlCb251c0luZm9CAhAAIlAKGUJv",
            "bnVzUHJvYmFiaWxpdHlCb251c0luZm8SHgoFYm9udXMYASACKAsyDy5jZmcu",
            "Qm9udXNCb251cxITCgtwcm9iYWJpbGl0eRgCIAIoAiJCChBCb251c1dlaWdo",
            "dEJvbnVzEi4KB2JvbnVzZXMYASADKAsyGS5jZmcuQm9udXNXZWlnaHRCb251",
            "c0luZm9CAhAAIkYKFEJvbnVzV2VpZ2h0Qm9udXNJbmZvEh4KBWJvbnVzGAEg",
            "AigLMg8uY2ZnLkJvbnVzQm9udXMSDgoGd2VpZ2h0GAIgAigFIhwKDkJvbnVz",
            "RHJvcEJvbnVzEgoKAmlkGAEgAigFIs8EChJDb21tb25HbG9iYWxDb25maWcS",
            "FAoMYmFnX2NhcGFjaXR5GAEgAigFEhwKFGJhZ19jYXBhY2l0eV9zcGVjaWFs",
            "GAIgAigFEiQKHGJhZ190ZW1wX2V4cGVuZGFibGVfY2FwYWNpdHkYAyACKAUS",
            "HgoWYmFnX3RlbXBfdG9vbF9jYXBhY2l0eRgEIAIoBRIZChFiYWdfaW5pdF9j",
            "YXBhY2l0eRgFIAIoBRIaChJxdWlja19iYWdfY2FwYWNpdHkYBiACKAUSGgoS",
            "Y2xvdGhfYmFnX2NhcGFjaXR5GAcgAigFEh8KF2Nsb3RoX2JhZ19pbml0X2Nh",
            "cGFjaXR5GAggAigFEiIKGmNsb3RoX2JhZ19jYXBhY2l0eV9zcGVjaWFsGAkg",
            "AigFEh4KFmJhZ19pbml0X2l0ZW1zX2Ryb3BfaWQYCiABKAUSGQoRbWFpbF9i",
            "b3hfY2FwYWNpdHkYCyACKAUSFgoOZGFtYWdlX3BhcmFtX2MYDCACKAISFgoO",
            "ZGFtYWdlX3BhcmFtX2UYDSACKAISFgoOZGFtYWdlX3BhcmFtX2YYDiACKAIS",
            "FgoOZGFtYWdlX3BhcmFtX2QYDyACKAISEgoKcm9sZV9zcGVlZBgQIAIoAhIV",
            "Cg1tb25zdGVyX3NwZWVkGBEgAigCEhMKC2luaXRfZW5lcmd5GBIgAigFEhQK",
            "DGluaXRfdmlhbGl0eRgTIAIoBRITCgttYXhfdmlhbGl0eRgUIAIoBRIhChlw",
            "ZXJfdmlhbGl0eV9yZWNvdmVyeV90aW1lGBUgAigFIlEKDkVycm9yRXJyb3JJ",
            "bmZvEgwKBGNvZGUYASACKAkSDAoEZGVzYxgCIAIoCRIjCgVzdHlsZRgDIAIo",
            "CzIULmNmZy5FcnJvckVycm9yU3R5bGUi/AEKD0Vycm9yRXJyb3JTdHlsZRIw",
            "Cg1FcnJvclN0eWxlVGlwGAEgASgLMhcuY2ZnLkVycm9yRXJyb3JTdHlsZVRp",
            "cEgAEjYKEEVycm9yU3R5bGVNc2dib3gYAiABKAsyGi5jZmcuRXJyb3JFcnJv",
            "clN0eWxlTXNnYm94SAASNAoPRXJyb3JTdHlsZURsZ09rGAMgASgLMhkuY2Zn",
            "LkVycm9yRXJyb3JTdHlsZURsZ09rSAASQAoVRXJyb3JTdHlsZURsZ09rQ2Fu",
            "Y2VsGAQgASgLMh8uY2ZnLkVycm9yRXJyb3JTdHlsZURsZ09rQ2FuY2VsSABC",
            "BwoFdmFsdWUiFAoSRXJyb3JFcnJvclN0eWxlVGlwIlIKFUVycm9yRXJyb3JT",
            "dHlsZU1zZ2JveBIQCghidG5fbmFtZRgBIAIoCRInCglvcGVyYXRpb24YAiAC",
            "KA4yFC5jZmcuRXJyb3JFT3BlcmF0aW9uIigKFEVycm9yRXJyb3JTdHlsZURs",
            "Z09rEhAKCGJ0bl9uYW1lGAEgAigJIkIKGkVycm9yRXJyb3JTdHlsZURsZ09r",
            "Q2FuY2VsEhEKCWJ0bjFfbmFtZRgBIAIoCRIRCglidG4yX25hbWUYAiACKAki",
            "QAoNRXJyb3JDb2RlSW5mbxIiCgRjb2RlGAEgAigOMhQuY2ZnLkVycm9yRUVy",
            "cm9yQ29kZRILCgNrZXkYAiACKAki/gMKCEl0ZW1JdGVtEgoKAmlkGAEgAigF",
            "EgwKBG5hbWUYAiACKAkSJwoKbWFqb3JfdHlwZRgDIAIoDjITLmNmZy5JdGVt",
            "RU1ham9yVHlwZRInCgptaW5vcl90eXBlGAQgAigOMhMuY2ZnLkl0ZW1FTWlu",
            "b3JUeXBlEhQKDG1heF9waWxlX251bRgFIAIoBRImCgdxdWFsaXR5GAYgAigO",
            "MhUuY2ZnLkl0ZW1FSXRlbVF1YWxpdHkSDAoEaWNvbhgHIAIoCRIWCg5pY29u",
            "X2JhY2tncm91ZBgIIAIoCRIRCglpY29uX21hc2sYCSACKAkSDAoEZGVzYxgK",
            "IAIoCRISCgpzaG93X29yZGVyGAsgAigFEhIKCnF1YW50aWZpZXIYDCACKAkS",
            "EwoLc2hvd19pbl9iYWcYDSACKAgSFgoObWluX3Nob3dfbGV2ZWwYDiACKAUS",
            "FAoMYmF0Y2hfdXNhYmxlGA8gAigIEh4KFnByb2dyZXNzX3RpbWVfd2hlbl91",
            "c2UYECACKAISGgoSc2hvd19oaW50X3doZW5fdXNlGBEgAigIEhEKCWRyb3Bw",
            "YWJsZRgSIAIoCBINCgVwcmljZRgTIAEoBRIjCgh1c2VfdHlwZRgUIAIoDjIR",
            "LmNmZy5JdGVtRVVzZVR5cGUSEwoLbGV2ZWxfdXBfaWQYFSABKAUikAEKEEl0",
            "ZW1JdGVtRnVuY3Rpb24SJwoKbWlub3JfdHlwZRgBIAIoDjITLmNmZy5JdGVt",
            "RU1pbm9yVHlwZRItCglmdW5jX3R5cGUYAiACKA4yGi5jZmcuSXRlbUVJdGVt",
            "RnVuY3Rpb25UeXBlEg4KBm1ldGhvZBgDIAIoCRIUCgxjbG9zZV9iYWdfdWkY",
            "BCACKAgi8QEKDUl0ZW1JdGVtRXh0cmESKwoLVHJlYXN1cmVCb3gYASABKAsy",
            "FC5jZmcuSXRlbVRyZWFzdXJlQm94SAASMwoPSW50ZXJhY3Rpb25JdGVtGAIg",
            "ASgLMhguY2ZnLkl0ZW1JbnRlcmFjdGlvbkl0ZW1IABIjCgdDbG90aGVzGAMg",
            "ASgLMhAuY2ZnLkl0ZW1DbG90aGVzSAASLwoNRGVzaWduRHJhd2luZxgEIAEo",
            "CzIWLmNmZy5JdGVtRGVzaWduRHJhd2luZ0gAEh8KBUR5bW15GAUgASgLMg4u",
            "Y2ZnLkl0ZW1EeW1teUgAQgcKBXZhbHVlIr0BCg9JdGVtVHJlYXN1cmVCb3gS",
            "CgoCaWQYASACKAUSEwoLa2V5X2l0ZW1faWQYAiABKAUSKgoKb3Blbl9sZXZl",
            "bBgDIAIoCzIWLmNmZy5Db25kaXRpb25NaW5MZXZlbBIVCg11c2Vfb25fb2J0",
            "YWluGAQgAigIEhQKCGRyb3BfaWRzGAUgAygFQgIQARIwCgtjaG9vc2VfbGlz",
            "dBgGIAMoCzIXLmNmZy5JdGVtQ2hvb3NlT25lQm9udXNCAhAAItUDChJDb25k",
            "aXRpb25Db25kaXRpb24SLAoJVGltZVJhbmdlGAEgASgLMhcuY2ZnLkNvbmRp",
            "dGlvblRpbWVSYW5nZUgAEj4KEk11bHRpUm9sZUNvbmRpdGlvbhgCIAEoCzIg",
            "LmNmZy5Db25kaXRpb25NdWx0aVJvbGVDb25kaXRpb25IABIwCgtHZW5kZXJM",
            "aW1pdBgDIAEoCzIZLmNmZy5Db25kaXRpb25HZW5kZXJMaW1pdEgAEioKCE1p",
            "bkxldmVsGAQgASgLMhYuY2ZnLkNvbmRpdGlvbk1pbkxldmVsSAASKgoITWF4",
            "TGV2ZWwYBSABKAsyFi5jZmcuQ29uZGl0aW9uTWF4TGV2ZWxIABIwCgtNaW5N",
            "YXhMZXZlbBgGIAEoCzIZLmNmZy5Db25kaXRpb25NaW5NYXhMZXZlbEgAElgK",
            "H0Nsb3RoZXNQcm9wZXJ0eVNjb3JlR3JlYXRlclRoYW4YByABKAsyLS5jZmcu",
            "Q29uZGl0aW9uQ2xvdGhlc1Byb3BlcnR5U2NvcmVHcmVhdGVyVGhhbkgAEjIK",
            "DENvbnRhaW5zSXRlbRgIIAEoCzIaLmNmZy5Db25kaXRpb25Db250YWluc0l0",
            "ZW1IAEIHCgV2YWx1ZSJHChJDb25kaXRpb25UaW1lUmFuZ2USMQoPZGF0ZV90",
            "aW1lX3JhbmdlGAEgAigLMhguY2ZnLkNvbW1vbkRhdGVUaW1lUmFuZ2UiOwoT",
            "Q29tbW9uRGF0ZVRpbWVSYW5nZRISCgpzdGFydF90aW1lGAEgASgFEhAKCGVu",
            "ZF90aW1lGAIgASgFIqsDChZDb25kaXRpb25Sb2xlQ29uZGl0aW9uEj4KEk11",
            "bHRpUm9sZUNvbmRpdGlvbhgCIAEoCzIgLmNmZy5Db25kaXRpb25NdWx0aVJv",
            "bGVDb25kaXRpb25IABIwCgtHZW5kZXJMaW1pdBgDIAEoCzIZLmNmZy5Db25k",
            "aXRpb25HZW5kZXJMaW1pdEgAEioKCE1pbkxldmVsGAQgASgLMhYuY2ZnLkNv",
            "bmRpdGlvbk1pbkxldmVsSAASKgoITWF4TGV2ZWwYBSABKAsyFi5jZmcuQ29u",
            "ZGl0aW9uTWF4TGV2ZWxIABIwCgtNaW5NYXhMZXZlbBgGIAEoCzIZLmNmZy5D",
            "b25kaXRpb25NaW5NYXhMZXZlbEgAElgKH0Nsb3RoZXNQcm9wZXJ0eVNjb3Jl",
            "R3JlYXRlclRoYW4YByABKAsyLS5jZmcuQ29uZGl0aW9uQ2xvdGhlc1Byb3Bl",
            "cnR5U2NvcmVHcmVhdGVyVGhhbkgAEjIKDENvbnRhaW5zSXRlbRgIIAEoCzIa",
            "LmNmZy5Db25kaXRpb25Db250YWluc0l0ZW1IAEIHCgV2YWx1ZSJSChtDb25k",
            "aXRpb25NdWx0aVJvbGVDb25kaXRpb24SMwoKY29uZGl0aW9ucxgBIAMoCzIb",
            "LmNmZy5Db25kaXRpb25Sb2xlQ29uZGl0aW9uQgIQACK7AgoaQ29uZGl0aW9u",
            "Qm9vbFJvbGVDb25kaXRpb24SMAoLR2VuZGVyTGltaXQYAyABKAsyGS5jZmcu",
            "Q29uZGl0aW9uR2VuZGVyTGltaXRIABIqCghNaW5MZXZlbBgEIAEoCzIWLmNm",
            "Zy5Db25kaXRpb25NaW5MZXZlbEgAEioKCE1heExldmVsGAUgASgLMhYuY2Zn",
            "LkNvbmRpdGlvbk1heExldmVsSAASMAoLTWluTWF4TGV2ZWwYBiABKAsyGS5j",
            "ZmcuQ29uZGl0aW9uTWluTWF4TGV2ZWxIABJYCh9DbG90aGVzUHJvcGVydHlT",
            "Y29yZUdyZWF0ZXJUaGFuGAcgASgLMi0uY2ZnLkNvbmRpdGlvbkNsb3RoZXNQ",
            "cm9wZXJ0eVNjb3JlR3JlYXRlclRoYW5IAEIHCgV2YWx1ZSI8ChRDb25kaXRp",
            "b25HZW5kZXJMaW1pdBIkCgZnZW5kZXIYASACKA4yFC5jZmcuUm9sZUVHZW5k",
            "ZXJUeXBlIiIKEUNvbmRpdGlvbk1pbkxldmVsEg0KBWxldmVsGAEgAigFIiIK",
            "EUNvbmRpdGlvbk1heExldmVsEg0KBWxldmVsGAEgAigFIjAKFENvbmRpdGlv",
            "bk1pbk1heExldmVsEgsKA21pbhgBIAIoBRILCgNtYXgYAiACKAUiZgooQ29u",
            "ZGl0aW9uQ2xvdGhlc1Byb3BlcnR5U2NvcmVHcmVhdGVyVGhhbhIrCgRwcm9w",
            "GAEgAigOMh0uY2ZnLkl0ZW1FQ2xvdGhlc1Byb3BlcnR5VHlwZRINCgV2YWx1",
            "ZRgCIAIoBSJGChVDb25kaXRpb25Db250YWluc0l0ZW0SDwoHaXRlbV9pZBgB",
            "IAIoBRILCgNudW0YAiACKAUSDwoHcmV2ZXJzZRgDIAIoCCI4ChJJdGVtQ2hv",
            "b3NlT25lQm9udXMSDwoHZHJvcF9pZBgBIAIoBRIRCglpc191bmlxdWUYAiAC",
            "KAgicwoTSXRlbUludGVyYWN0aW9uSXRlbRIKCgJpZBgBIAIoBRISCgphdHRh",
            "Y2tfbnVtGAIgASgFEhsKE2hvbGRpbmdfc3RhdGljX21lc2gYAyACKAkSHwoX",
            "aG9sZGluZ19zdGF0aWNfbWVzaF9tYXQYBCACKAkiYgoLSXRlbUNsb3RoZXMS",
            "CgoCaWQYASACKAUSDgoGYXR0YWNrGAIgAigFEgoKAmhwGAMgAigDEhQKDGVu",
            "ZXJneV9saW1pdBgEIAIoBRIVCg1lbmVyZ3lfcmVzdW1lGAUgAigFIj8KEUl0",
            "ZW1EZXNpZ25EcmF3aW5nEgoKAmlkGAEgAigFEh4KEmxlYXJuX2NvbXBvbmVu",
            "dF9pZBgCIAMoBUICEAEiNAoJSXRlbUR5bW15EgoKAmlkGAEgAigFEhsKBGNv",
            "c3QYAiACKAsyDS5jZmcuQ29zdENvc3Qi8gEKCENvc3RDb3N0Ei0KDENvc3RD",
            "dXJyZW5jeRgBIAEoCzIVLmNmZy5Db3N0Q29zdEN1cnJlbmN5SAASMQoOQ29z",
            "dEN1cnJlbmNpZXMYAiABKAsyFy5jZmcuQ29zdENvc3RDdXJyZW5jaWVzSAAS",
            "KwoLQ29zdE9uZUl0ZW0YAyABKAsyFC5jZmcuQ29zdENvc3RPbmVJdGVtSAAS",
            "JQoIQ29zdEl0ZW0YBCABKAsyES5jZmcuQ29zdENvc3RJdGVtSAASJwoJQ29z",
            "dEl0ZW1zGAUgASgLMhIuY2ZnLkNvc3RDb3N0SXRlbXNIAEIHCgV2YWx1ZSJF",
            "ChBDb3N0Q29zdEN1cnJlbmN5EiQKBHR5cGUYASACKA4yFi5jZmcuSXRlbUVD",
            "dXJyZW5jeVR5cGUSCwoDbnVtGAIgAigFIkMKEkNvc3RDb3N0Q3VycmVuY2ll",
            "cxItCgpjdXJyZW5jaWVzGAEgAygLMhUuY2ZnLkNvc3RDb3N0Q3VycmVuY3lC",
            "AhAAIiIKD0Nvc3RDb3N0T25lSXRlbRIPCgdpdGVtX2lkGAEgAigFIi8KDENv",
            "c3RDb3N0SXRlbRIPCgdpdGVtX2lkGAEgAigFEg4KBmFtb3VudBgCIAIoBSI5",
            "Cg1Db3N0Q29zdEl0ZW1zEigKCWl0ZW1fbGlzdBgBIAMoCzIRLmNmZy5Db3N0",
            "Q29zdEl0ZW1CAhAAIigKDEwxMG5MMTBORGVtbxIKCgJpZBgBIAIoBRIMCgR0",
            "ZXh0GAIgAigJIioKDUwxMG5QYXRjaERlbW8SCgoCaWQYASACKAUSDQoFdmFs",
            "dWUYAiACKAUiXwoOTWFpbFN5c3RlbU1haWwSCgoCaWQYASACKAUSDQoFdGl0",
            "bGUYAiACKAkSDgoGc2VuZGVyGAMgAigJEg8KB2NvbnRlbnQYBCACKAkSEQoF",
            "YXdhcmQYBSADKAVCAhABIr0CCg5NYWlsR2xvYmFsTWFpbBIKCgJpZBgBIAIo",
            "BRINCgV0aXRsZRgCIAIoCRIOCgZzZW5kZXIYAyACKAkSDwoHY29udGVudBgE",
            "IAIoCRIRCgVhd2FyZBgFIAMoBUICEAESEgoKYWxsX3NlcnZlchgGIAIoCBIX",
            "CgtzZXJ2ZXJfbGlzdBgHIAMoBUICEAESEAoIcGxhdGZvcm0YCCACKAkSDwoH",
            "Y2hhbm5lbBgJIAIoCRIwCg1taW5fbWF4X2xldmVsGAogAigLMhkuY2ZnLkNv",
            "bmRpdGlvbk1pbk1heExldmVsEi4KDXJlZ2lzdGVyX3RpbWUYCyACKAsyFy5j",
            "ZmcuQ29uZGl0aW9uVGltZVJhbmdlEioKCW1haWxfdGltZRgMIAIoCzIXLmNm",
            "Zy5Db25kaXRpb25UaW1lUmFuZ2UiTgoQUm9sZUxldmVsRXhwQXR0chINCgVs",
            "ZXZlbBgBIAIoBRIQCghuZWVkX2V4cBgCIAIoAxIZCg1jbG90aGVzX2F0dHJz",
            "GAMgAygFQgIQASJbCg5Sb2xlTGV2ZWxCb251cxIKCgJpZBgBIAIoBRI9ChRk",
            "aXN0aW5jdF9ib251c19pbmZvcxgCIAMoCzIbLmNmZy5Sb2xlRGlzdGluY3RC",
            "b251c0luZm9zQgIQACJdChZSb2xlRGlzdGluY3RCb251c0luZm9zEhcKD2Vm",
            "ZmVjdGl2ZV9sZXZlbBgBIAIoBRIqCgpib251c19pbmZvGAIgAygLMhIuY2Zn",
            "LlJvbGVCb251c0luZm9CAhAAIkoKDVJvbGVCb251c0luZm8SJAoEdHlwZRgB",
            "IAIoDjIWLmNmZy5JdGVtRUN1cnJlbmN5VHlwZRITCgtjb2VmZmljaWVudBgC",
            "IAIoAiInCgpUYWdUZXN0VGFnEgoKAmlkGAEgAigFEg0KBXZhbHVlGAIgAigJ",
            "IqsECg1UZXN0RGVtb1R5cGUyEgoKAng0GAEgAigFEgoKAngxGAIgAigIEgoK",
            "AngyGAMgAigFEgoKAngzGAQgAigFEgoKAng1GAUgAigDEgoKAng2GAYgAigC",
            "EgoKAng3GAcgAigBEgwKBHg4XzAYCCACKAUSCgoCeDgYCSACKA8SCgoCeDkY",
            "CiACKBASCwoDeDEwGAsgAigJEh8KA3gxMhgMIAIoCzISLmNmZy5UZXN0RGVt",
            "b1R5cGUxEh4KA3gxMxgNIAIoDjIRLmNmZy5UZXN0RGVtb0VudW0SIQoDeDE0",
            "GA4gAigLMhQuY2ZnLlRlc3REZW1vRHluYW1pYxIKCgJzMRgPIAIoCRIYCgJ2",
            "MhgQIAIoCzIMLmNmZy5WZWN0b3IyEhgKAnYzGBEgAigLMgwuY2ZnLlZlY3Rv",
            "cjMSGAoCdjQYEiACKAsyDC5jZmcuVmVjdG9yNBIKCgJ0MRgTIAIoBRIOCgJr",
            "MRgUIAMoBUICEAESDgoCazIYFSADKAVCAhABEg4KAms1GBYgAygFQgIQARIm",
            "CgJrOBgXIAMoCzIaLmNmZy5UZXN0RGVtb1R5cGUyLks4RW50cnkSHwoCazkY",
            "GCADKAsyDy5jZmcuVGVzdERlbW9FMkICEAASJQoDazE1GBkgAygLMhQuY2Zn",
            "LlRlc3REZW1vRHluYW1pY0ICEAAaKQoHSzhFbnRyeRILCgNrZXkYASABKAUS",
            "DQoFdmFsdWUYAiABKAU6AjgBIhsKDVRlc3REZW1vVHlwZTESCgoCeDEYASAC",
            "KAUigwEKD1Rlc3REZW1vRHluYW1pYxIhCgZEZW1vRDIYASABKAsyDy5jZmcu",
            "VGVzdERlbW9EMkgAEiEKBkRlbW9FMRgCIAEoCzIPLmNmZy5UZXN0RGVtb0Ux",
            "SAASIQoGRGVtb0Q1GAMgASgLMg8uY2ZnLlRlc3REZW1vRDVIAEIHCgV2YWx1",
            "ZSIkCgpUZXN0RGVtb0QyEgoKAngxGAEgAigFEgoKAngyGAIgAigFIjgKClRl",
            "c3REZW1vRDMSIQoGRGVtb0UxGAIgASgLMg8uY2ZnLlRlc3REZW1vRTFIAEIH",
            "CgV2YWx1ZSIwCgpUZXN0RGVtb0UxEgoKAngxGAEgAigFEgoKAngzGAIgAigF",
            "EgoKAng0GAMgAigFIj4KClRlc3REZW1vRDUSCgoCeDEYASACKAUSJAoEdGlt",
            "ZRgCIAIoCzIWLmNmZy5UZXN0RGF0ZVRpbWVSYW5nZSI5ChFUZXN0RGF0ZVRp",
            "bWVSYW5nZRISCgpzdGFydF90aW1lGAEgAigFEhAKCGVuZF90aW1lGAIgAigF",
            "IiQKClRlc3REZW1vRTISCgoCeTEYASABKAUSCgoCeTIYAiACKAgiVQoVVGVz",
            "dERlbW9TaW5nbGV0b25UeXBlEgoKAmlkGAEgAigFEgwKBG5hbWUYAiACKAkS",
            "IgoEZGF0ZRgDIAIoCzIULmNmZy5UZXN0RGVtb0R5bmFtaWMiKAoQVGVzdE5v",
            "dEluZGV4TGlzdBIJCgF4GAEgAigFEgkKAXkYAiACKAUiWwoXVGVzdE11bHRp",
            "VW5pb25JbmRleExpc3QSCwoDaWQxGAEgAigFEgsKA2lkMhgCIAIoAxILCgNp",
            "ZDMYAyACKAkSCwoDbnVtGAQgAigFEgwKBGRlc2MYBSACKAkiVgoSVGVzdE11",
            "bHRpSW5kZXhMaXN0EgsKA2lkMRgBIAIoBRILCgNpZDIYAiACKAMSCwoDaWQz",
            "GAMgAigJEgsKA251bRgEIAIoBRIMCgRkZXNjGAUgAigJIvIEChJUZXN0TXVs",
            "dGlSb3dSZWNvcmQSCgoCaWQYASACKAUSDAoEbmFtZRgCIAIoCRIsCghvbmVf",
            "cm93cxgDIAMoCzIWLmNmZy5UZXN0TXVsdGlSb3dUeXBlMUICEAASLwoLbXVs",
            "dGlfcm93czEYBCADKAsyFi5jZmcuVGVzdE11bHRpUm93VHlwZTFCAhAAEi8K",
            "C211bHRpX3Jvd3MyGAUgAygLMhYuY2ZnLlRlc3RNdWx0aVJvd1R5cGUxQgIQ",
            "ABI8CgttdWx0aV9yb3dzNBgGIAMoCzInLmNmZy5UZXN0TXVsdGlSb3dSZWNv",
            "cmQuTXVsdGlSb3dzNEVudHJ5Ei8KC211bHRpX3Jvd3M1GAcgAygLMhYuY2Zn",
            "LlRlc3RNdWx0aVJvd1R5cGUzQgIQABI8CgttdWx0aV9yb3dzNhgIIAMoCzIn",
            "LmNmZy5UZXN0TXVsdGlSb3dSZWNvcmQuTXVsdGlSb3dzNkVudHJ5EjwKC211",
            "bHRpX3Jvd3M3GAkgAygLMicuY2ZnLlRlc3RNdWx0aVJvd1JlY29yZC5NdWx0",
            "aVJvd3M3RW50cnkaSQoPTXVsdGlSb3dzNEVudHJ5EgsKA2tleRgBIAEoBRIl",
            "CgV2YWx1ZRgCIAEoCzIWLmNmZy5UZXN0TXVsdGlSb3dUeXBlMjoCOAEaSQoP",
            "TXVsdGlSb3dzNkVudHJ5EgsKA2tleRgBIAEoBRIlCgV2YWx1ZRgCIAEoCzIW",
            "LmNmZy5UZXN0TXVsdGlSb3dUeXBlMjoCOAEaMQoPTXVsdGlSb3dzN0VudHJ5",
            "EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiKgoRVGVzdE11bHRp",
            "Um93VHlwZTESCgoCaWQYASACKAUSCQoBeBgCIAIoBSI1ChFUZXN0TXVsdGlS",
            "b3dUeXBlMhIKCgJpZBgBIAIoBRIJCgF4GAIgAigFEgkKAXkYAyACKAIiSgoR",
            "VGVzdE11bHRpUm93VHlwZTMSCgoCaWQYASACKAUSKQoFaXRlbXMYAiADKAsy",
            "Fi5jZmcuVGVzdE11bHRpUm93VHlwZTFCAhAAIrgBChFUZXN0TXVsdGlSb3dU",
            "aXRsZRIKCgJpZBgBIAIoBRIMCgRuYW1lGAIgAigJEhcKAngxGAMgAigLMgsu",
            "Y2ZnLlRlc3RIMRIZCgR4Ml8wGAQgASgLMgsuY2ZnLlRlc3RIMhIbCgJ4MhgF",
            "IAMoCzILLmNmZy5UZXN0SDJCAhAAEhsKAngzGAYgAygLMgsuY2ZnLlRlc3RI",
            "MkICEAASGwoCeDQYByADKAsyCy5jZmcuVGVzdEgyQgIQACItCgZUZXN0SDES",
            "FwoCeTIYASACKAsyCy5jZmcuVGVzdEgyEgoKAnkzGAIgAigFIiAKBlRlc3RI",
            "MhIKCgJ6MhgBIAIoBRIKCgJ6MxgCIAIoBSKfAQoMVGVzdFRlc3ROdWxsEgoK",
            "AmlkGAEgAigFEgoKAngxGAIgASgFEh0KAngyGAMgASgOMhEuY2ZnLlRlc3RE",
            "ZW1vRW51bRIeCgJ4MxgEIAEoCzISLmNmZy5UZXN0RGVtb1R5cGUxEiAKAng0",
            "GAUgASgLMhQuY2ZnLlRlc3REZW1vRHluYW1pYxIKCgJzMRgGIAEoCRIKCgJz",
            "MhgHIAEoCSLjAQobVGVzdERlbW9QcmltaXRpdmVUeXBlc1RhYmxlEgoKAngx",
            "GAEgAigIEgoKAngyGAIgAigFEgoKAngzGAMgAigFEgoKAng0GAQgAigFEgoK",
            "Ang1GAUgAigDEgoKAng2GAYgAigCEgoKAng3GAcgAigBEgoKAnMxGAggAigJ",
            "EgoKAnMyGAkgAigJEhgKAnYyGAogAigLMgwuY2ZnLlZlY3RvcjISGAoCdjMY",
            "CyACKAsyDC5jZmcuVmVjdG9yMxIYCgJ2NBgMIAIoCzIMLmNmZy5WZWN0b3I0",
            "EgoKAnQxGA0gAigFInIKDlRlc3RUZXN0U3RyaW5nEgoKAmlkGAEgAigFEgoK",
            "AnMxGAIgAigJEiMKA2NzMRgDIAIoCzIWLmNmZy5UZXN0Q29tcGFjdFN0cmlu",
            "ZxIjCgNjczIYBCACKAsyFi5jZmcuVGVzdENvbXBhY3RTdHJpbmciNwoRVGVz",
            "dENvbXBhY3RTdHJpbmcSCgoCaWQYASACKAUSCgoCczIYAiACKAkSCgoCczMY",
            "AyACKAkibAoNVGVzdERlbW9Hcm91cBIKCgJpZBgBIAIoBRIKCgJ4MRgCIAIo",
            "BRIKCgJ4MhgDIAIoBRIKCgJ4MxgEIAIoBRIKCgJ4NBgFIAIoBRIfCgJ4NRgG",
            "IAIoCzITLmNmZy5UZXN0SW5uZXJHcm91cCJACg5UZXN0SW5uZXJHcm91cBIK",
            "CgJ5MRgBIAIoBRIKCgJ5MhgCIAIoBRIKCgJ5MxgDIAIoBRIKCgJ5NBgEIAIo",
            "BSI7Cg5UZXN0VGVzdEdsb2JhbBIUCgx1bmxvY2tfZXF1aXAYASACKAUSEwoL",
            "dW5sb2NrX2hlcm8YAiACKAUiKgoNVGVzdFRlc3RCZVJlZhIKCgJpZBgBIAIo",
            "BRINCgVjb3VudBgCIAIoBSKVAwoLVGVzdFRlc3RSZWYSCgoCaWQYASACKAUS",
            "CgoCeDEYAiACKAUSDAoEeDFfMhgDIAIoBRIKCgJ4MhgEIAIoBRIKCgJ4MxgF",
            "IAIoBRIOCgJhMRgGIAMoBUICEAESDgoCYTIYByADKAVCAhABEg4KAmIxGAgg",
            "AygFQgIQARIOCgJiMhgJIAMoBUICEAESDgoCYzEYCiADKAVCAhABEg4KAmMy",
            "GAsgAygFQgIQARIkCgJkMRgMIAMoCzIYLmNmZy5UZXN0VGVzdFJlZi5EMUVu",
            "dHJ5EiQKAmQyGA0gAygLMhguY2ZnLlRlc3RUZXN0UmVmLkQyRW50cnkSCgoC",
            "ZTEYDiACKAUSCgoCZTIYDyACKAMSCgoCZTMYECACKAkSCgoCZjEYESACKAUS",
            "CgoCZjIYEiACKAMSCgoCZjMYEyACKAkaKQoHRDFFbnRyeRILCgNrZXkYASAB",
            "KAUSDQoFdmFsdWUYAiABKAU6AjgBGikKB0QyRW50cnkSCwoDa2V5GAEgASgF",
            "Eg0KBXZhbHVlGAIgASgFOgI4ASKcAQoMVGVzdFRlc3RTaXplEgoKAmlkGAEg",
            "AigFEg4KAngxGAIgAygFQgIQARIOCgJ4MhgDIAMoBUICEAESDgoCeDMYBCAD",
            "KAVCAhABEiUKAng0GAUgAygLMhkuY2ZnLlRlc3RUZXN0U2l6ZS5YNEVudHJ5",
            "GikKB1g0RW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASJs",
            "CgtUZXN0VGVzdFNldBIKCgJpZBgBIAIoBRIOCgJ4MRgCIAMoBUICEAESDgoC",
            "eDIYAyADKANCAhABEg4KAngzGAQgAygJQgIQABIhCgJ4NBgFIAMoDjIRLmNm",
            "Zy5UZXN0RGVtb0VudW1CAhAAIi4KElRlc3REZXRlY3RFbmNvZGluZxIKCgJp",
            "ZBgBIAIoBRIMCgRuYW1lGAIgAigJItUCChNUZXN0RGVmaW5lRnJvbUV4Y2Vs",
            "EgoKAmlkGAEgAigFEgoKAngxGAIgAigIEgoKAng1GAMgAigDEgoKAng2GAQg",
            "AigCEgoKAng4GAUgAigFEgsKA3gxMBgGIAIoCRIiCgN4MTMYByACKA4yFS5j",
            "ZmcuVGVzdEVUZXN0UXVhbGl0eRIhCgN4MTQYCCACKAsyFC5jZmcuVGVzdERl",
            "bW9EeW5hbWljEhgKAnYyGAkgAigLMgwuY2ZnLlZlY3RvcjISCgoCdDEYCiAC",
            "KAUSDgoCazEYCyADKAVCAhABEiwKAms4GAwgAygLMiAuY2ZnLlRlc3REZWZp",
            "bmVGcm9tRXhjZWwuSzhFbnRyeRIfCgJrORgNIAMoCzIPLmNmZy5UZXN0RGVt",
            "b0UyQgIQABopCgdLOEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEo",
            "BToCOAEicQoWVGVzdERlZmluZUZyb21FeGNlbE9uZRIUCgx1bmxvY2tfZXF1",
            "aXAYASACKAUSEwoLdW5sb2NrX2hlcm8YAiACKAUSFgoOZGVmYXVsdF9hdmF0",
            "YXIYAyACKAkSFAoMZGVmYXVsdF9pdGVtGAQgAigJIkEKDVRlc3RUZXN0SW5k",
            "ZXgSCgoCaWQYASACKAUSJAoEZWxlcxgCIAMoCzISLmNmZy5UZXN0RGVtb1R5",
            "cGUxQgIQACLdAgoLVGVzdFRlc3RNYXASCgoCaWQYASACKAUSJAoCeDEYAiAD",
            "KAsyGC5jZmcuVGVzdFRlc3RNYXAuWDFFbnRyeRIkCgJ4MhgDIAMoCzIYLmNm",
            "Zy5UZXN0VGVzdE1hcC5YMkVudHJ5EiQKAngzGAQgAygLMhguY2ZnLlRlc3RU",
            "ZXN0TWFwLlgzRW50cnkSJAoCeDQYBSADKAsyGC5jZmcuVGVzdFRlc3RNYXAu",
            "WDRFbnRyeRopCgdYMUVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEo",
            "BToCOAEaKQoHWDJFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAU6",
            "AjgBGikKB1gzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4",
            "ARopCgdYNEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi",
            "yAMKEVRlc3RFeGNlbEZyb21Kc29uEgoKAng0GAEgAigFEgoKAngxGAIgAigI",
            "EgoKAng1GAMgAigDEgoKAng2GAQgAigCEgoKAnMxGAUgAigJEgoKAnMyGAYg",
            "AigJEhgKAnYyGAcgAigLMgwuY2ZnLlZlY3RvcjISGAoCdjMYCCACKAsyDC5j",
            "ZmcuVmVjdG9yMxIYCgJ2NBgJIAIoCzIMLmNmZy5WZWN0b3I0EgoKAnQxGAog",
            "AigFEh8KA3gxMhgLIAIoCzISLmNmZy5UZXN0RGVtb1R5cGUxEh4KA3gxMxgM",
            "IAIoDjIRLmNmZy5UZXN0RGVtb0VudW0SIQoDeDE0GA0gAigLMhQuY2ZnLlRl",
            "c3REZW1vRHluYW1pYxIOCgJrMRgOIAMoBUICEAESKgoCazgYDyADKAsyHi5j",
            "ZmcuVGVzdEV4Y2VsRnJvbUpzb24uSzhFbnRyeRIfCgJrORgQIAMoCzIPLmNm",
            "Zy5UZXN0RGVtb0UyQgIQABIlCgNrMTUYESADKAsyFC5jZmcuVGVzdERlbW9E",
            "eW5hbWljQgIQABopCgdLOEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgC",
            "IAEoBToCOAEiMAoXVGVzdENvbXBvc2l0ZUpzb25UYWJsZTESCgoCaWQYASAC",
            "KAUSCQoBeBgCIAIoCSIwChdUZXN0Q29tcG9zaXRlSnNvblRhYmxlMhIKCgJp",
            "ZBgBIAIoBRIJCgF5GAIgAigFIi8KF1Rlc3RDb21wb3NpdGVKc29uVGFibGUz",
            "EgkKAWEYASACKAUSCQoBYhgCIAIoBSJXChlUZXN0RXhjZWxGcm9tSnNvbk11",
            "bHRpUm93EgoKAmlkGAEgAigFEgkKAXgYAiACKAUSIwoFaXRlbXMYAyADKAsy",
            "EC5jZmcuVGVzdFRlc3RSb3dCAhAAIlgKC1Rlc3RUZXN0Um93EgkKAXgYASAC",
            "KAUSCQoBeRgCIAIoCBIJCgF6GAMgAigJEhkKAWEYBCACKAsyDi5jZmcuVGVz",
            "dFRlc3QzEg0KAWIYBSADKAVCAhABIiEKCVRlc3RUZXN0MxIJCgF4GAEgAigF",
            "EgkKAXkYAiACKAUizgEKC1Rlc3RUZXN0U2VwEgoKAmlkGAEgAigFEgoKAngx",
            "GAIgAigJEh0KAngyGAMgAigLMhEuY2ZnLlRlc3RTZXBCZWFuMRIeCgJ4MxgE",
            "IAIoCzISLmNmZy5UZXN0U2VwVmVjdG9yEiIKAng0GAUgAygLMhIuY2ZnLlRl",
            "c3RTZXBWZWN0b3JCAhAAEiEKAng1GAYgAygLMhEuY2ZnLlRlc3RTZXBCZWFu",
            "MUICEAASIQoCeDYYByADKAsyES5jZmcuVGVzdFNlcEJlYW4xQgIQACIvCgxU",
            "ZXN0U2VwQmVhbjESCQoBYRgBIAIoBRIJCgFiGAIgAigFEgkKAWMYAyACKAki",
            "MAoNVGVzdFNlcFZlY3RvchIJCgF4GAEgAigFEgkKAXkYAiACKAUSCQoBehgD",
            "IAIoBSJpChRUZXN0VGVzdEV4dGVybmFsVHlwZRIKCgJpZBgBIAIoBRImCgph",
            "dWRpb190eXBlGAIgAigOMhIuY2ZnLlRlc3RBdWRpb1R5cGUSHQoFY29sb3IY",
            "AyACKAsyDi5jZmcuVGVzdENvbG9yIjcKCVRlc3RDb2xvchIJCgFyGAEgAigC",
            "EgkKAWcYAiACKAISCQoBYhgDIAIoAhIJCgFhGAQgAigCItcCChRUZXN0RGVm",
            "aW5lRnJvbUV4Y2VsMhIKCgJpZBgBIAIoBRIKCgJ4MRgCIAIoCBIKCgJ4NRgD",
            "IAIoAxIKCgJ4NhgEIAIoAhIKCgJ4OBgFIAIoBRILCgN4MTAYBiACKAkSIgoD",
            "eDEzGAcgAigOMhUuY2ZnLlRlc3RFVGVzdFF1YWxpdHkSIQoDeDE0GAggAigL",
            "MhQuY2ZnLlRlc3REZW1vRHluYW1pYxIYCgJ2MhgJIAIoCzIMLmNmZy5WZWN0",
            "b3IyEgoKAnQxGAogAigFEg4KAmsxGAsgAygFQgIQARItCgJrOBgMIAMoCzIh",
            "LmNmZy5UZXN0RGVmaW5lRnJvbUV4Y2VsMi5LOEVudHJ5Eh8KAms5GA0gAygL",
            "Mg8uY2ZnLlRlc3REZW1vRTJCAhAAGikKB0s4RW50cnkSCwoDa2V5GAEgASgF",
            "Eg0KBXZhbHVlGAIgASgFOgI4ASJEChJUZXN0VGVzdEV4Y2VsQmVhbjESCgoC",
            "eDEYASACKAUSCgoCeDIYAiACKAkSCgoCeDMYAyACKAUSCgoCeDQYBCACKAIi",
            "kwEKDFRlc3RUZXN0RGVzYxIKCgJpZBgBIAIoBRIMCgRuYW1lGAIgAigJEgoK",
            "AmExGAMgAigFEgoKAmEyGAQgAigFEhcKAngxGAUgAigLMgsuY2ZnLlRlc3RI",
            "MRIbCgJ4MhgGIAMoCzILLmNmZy5UZXN0SDJCAhAAEhsKAngzGAcgAygLMgsu",
            "Y2ZnLlRlc3RIMkICEAAiOgoOQWlUYkJsYWNrYm9hcmQSKAoJZGF0YV9saXN0",
            "GAEgAygLMhEuY2ZnLkFpQmxhY2tib2FyZEICEAAiPgoQQWlUYkJlaGF2aW9y",
            "VHJlZRIqCglkYXRhX2xpc3QYASADKAsyEy5jZmcuQWlCZWhhdmlvclRyZWVC",
            "AhAAIj4KEEJsdWVwcmludFRiQ2xhenoSKgoJZGF0YV9saXN0GAEgAygLMhMu",
            "Y2ZnLkJsdWVwcmludENsYXp6QgIQACI4CgtCb251c1RiRHJvcBIpCglkYXRh",
            "X2xpc3QYASADKAsyEi5jZmcuQm9udXNEcm9wSW5mb0ICEAAiRgoUQ29tbW9u",
            "VGJHbG9iYWxDb25maWcSLgoJZGF0YV9saXN0GAEgAygLMhcuY2ZnLkNvbW1v",
            "bkdsb2JhbENvbmZpZ0ICEAAiPgoQRXJyb3JUYkVycm9ySW5mbxIqCglkYXRh",
            "X2xpc3QYASADKAsyEy5jZmcuRXJyb3JFcnJvckluZm9CAhAAIjwKD0Vycm9y",
            "VGJDb2RlSW5mbxIpCglkYXRhX2xpc3QYASADKAsyEi5jZmcuRXJyb3JDb2Rl",
            "SW5mb0ICEAAiMgoKSXRlbVRiSXRlbRIkCglkYXRhX2xpc3QYASADKAsyDS5j",
            "ZmcuSXRlbUl0ZW1CAhAAIj4KDkl0ZW1UYkl0ZW1GdW5jEiwKCWRhdGFfbGlz",
            "dBgBIAMoCzIVLmNmZy5JdGVtSXRlbUZ1bmN0aW9uQgIQACI8Cg9JdGVtVGJJ",
            "dGVtRXh0cmESKQoJZGF0YV9saXN0GAEgAygLMhIuY2ZnLkl0ZW1JdGVtRXh0",
            "cmFCAhAAIjoKDkwxMG5UYkwxME5EZW1vEigKCWRhdGFfbGlzdBgBIAMoCzIR",
            "LmNmZy5MMTBuTDEwTkRlbW9CAhAAIjwKD0wxMG5UYlBhdGNoRGVtbxIpCglk",
            "YXRhX2xpc3QYASADKAsyEi5jZmcuTDEwblBhdGNoRGVtb0ICEAAiPgoQTWFp",
            "bFRiU3lzdGVtTWFpbBIqCglkYXRhX2xpc3QYASADKAsyEy5jZmcuTWFpbFN5",
            "c3RlbU1haWxCAhAAIj4KEE1haWxUYkdsb2JhbE1haWwSKgoJZGF0YV9saXN0",
            "GAEgAygLMhMuY2ZnLk1haWxHbG9iYWxNYWlsQgIQACJGChZSb2xlVGJSb2xl",
            "TGV2ZWxFeHBBdHRyEiwKCWRhdGFfbGlzdBgBIAMoCzIVLmNmZy5Sb2xlTGV2",
            "ZWxFeHBBdHRyQgIQACJNCh9Sb2xlVGJSb2xlTGV2ZWxCb251c0NvZWZmaWNp",
            "ZW50EioKCWRhdGFfbGlzdBgBIAMoCzITLmNmZy5Sb2xlTGV2ZWxCb251c0IC",
            "EAAiNgoMVGFnVGJUZXN0VGFnEiYKCWRhdGFfbGlzdBgBIAMoCzIPLmNmZy5U",
            "YWdUZXN0VGFnQgIQACI8Cg9UZXN0VGJGdWxsVHlwZXMSKQoJZGF0YV9saXN0",
            "GAEgAygLMhIuY2ZnLlRlc3REZW1vVHlwZTJCAhAAIkQKD1Rlc3RUYlNpbmds",
            "ZXRvbhIxCglkYXRhX2xpc3QYASADKAsyGi5jZmcuVGVzdERlbW9TaW5nbGV0",
            "b25UeXBlQgIQACJCChJUZXN0VGJOb3RJbmRleExpc3QSLAoJZGF0YV9saXN0",
            "GAEgAygLMhUuY2ZnLlRlc3ROb3RJbmRleExpc3RCAhAAIlAKGVRlc3RUYk11",
            "bHRpVW5pb25JbmRleExpc3QSMwoJZGF0YV9saXN0GAEgAygLMhwuY2ZnLlRl",
            "c3RNdWx0aVVuaW9uSW5kZXhMaXN0QgIQACJGChRUZXN0VGJNdWx0aUluZGV4",
            "TGlzdBIuCglkYXRhX2xpc3QYASADKAsyFy5jZmcuVGVzdE11bHRpSW5kZXhM",
            "aXN0QgIQACI/ChJUZXN0VGJEYXRhRnJvbU1pc2MSKQoJZGF0YV9saXN0GAEg",
            "AygLMhIuY2ZnLlRlc3REZW1vVHlwZTJCAhAAIkYKFFRlc3RUYk11bHRpUm93",
            "UmVjb3JkEi4KCWRhdGFfbGlzdBgBIAMoCzIXLmNmZy5UZXN0TXVsdGlSb3dS",
            "ZWNvcmRCAhAAIkQKE1Rlc3RUYk11bHRpUm93VGl0bGUSLQoJZGF0YV9saXN0",
            "GAEgAygLMhYuY2ZnLlRlc3RNdWx0aVJvd1RpdGxlQgIQACI6Cg5UZXN0VGJU",
            "ZXN0TnVsbBIoCglkYXRhX2xpc3QYASADKAsyES5jZmcuVGVzdFRlc3ROdWxs",
            "QgIQACJOChNUZXN0VGJEZW1vUHJpbWl0aXZlEjcKCWRhdGFfbGlzdBgBIAMo",
            "CzIgLmNmZy5UZXN0RGVtb1ByaW1pdGl2ZVR5cGVzVGFibGVCAhAAIj4KEFRl",
            "c3RUYlRlc3RTdHJpbmcSKgoJZGF0YV9saXN0GAEgAygLMhMuY2ZnLlRlc3RU",
            "ZXN0U3RyaW5nQgIQACI8Cg9UZXN0VGJEZW1vR3JvdXASKQoJZGF0YV9saXN0",
            "GAEgAygLMhIuY2ZnLlRlc3REZW1vR3JvdXBCAhAAIj4KEVRlc3RUYkRlbW9H",
            "cm91cF9DEikKCWRhdGFfbGlzdBgBIAMoCzISLmNmZy5UZXN0RGVtb0dyb3Vw",
            "QgIQACI+ChFUZXN0VGJEZW1vR3JvdXBfUxIpCglkYXRhX2xpc3QYASADKAsy",
            "Ei5jZmcuVGVzdERlbW9Hcm91cEICEAAiPgoRVGVzdFRiRGVtb0dyb3VwX0US",
            "KQoJZGF0YV9saXN0GAEgAygLMhIuY2ZnLlRlc3REZW1vR3JvdXBCAhAAIj4K",
            "EFRlc3RUYlRlc3RHbG9iYWwSKgoJZGF0YV9saXN0GAEgAygLMhMuY2ZnLlRl",
            "c3RUZXN0R2xvYmFsQgIQACI8Cg9UZXN0VGJUZXN0QmVSZWYSKQoJZGF0YV9s",
            "aXN0GAEgAygLMhIuY2ZnLlRlc3RUZXN0QmVSZWZCAhAAIj0KEFRlc3RUYlRl",
            "c3RCZVJlZjISKQoJZGF0YV9saXN0GAEgAygLMhIuY2ZnLlRlc3RUZXN0QmVS",
            "ZWZCAhAAIjgKDVRlc3RUYlRlc3RSZWYSJwoJZGF0YV9saXN0GAEgAygLMhAu",
            "Y2ZnLlRlc3RUZXN0UmVmQgIQACI6Cg5UZXN0VGJUZXN0U2l6ZRIoCglkYXRh",
            "X2xpc3QYASADKAsyES5jZmcuVGVzdFRlc3RTaXplQgIQACI4Cg1UZXN0VGJU",
            "ZXN0U2V0EicKCWRhdGFfbGlzdBgBIAMoCzIQLmNmZy5UZXN0VGVzdFNldEIC",
            "EAAiSQoXVGVzdFRiRGV0ZWN0Q3N2RW5jb2RpbmcSLgoJZGF0YV9saXN0GAEg",
            "AygLMhcuY2ZnLlRlc3REZXRlY3RFbmNvZGluZ0ICEAAiSAoVVGVzdFRiRGVm",
            "aW5lRnJvbUV4Y2VsEi8KCWRhdGFfbGlzdBgBIAMoCzIYLmNmZy5UZXN0RGVm",
            "aW5lRnJvbUV4Y2VsQgIQACJOChhUZXN0VGJEZWZpbmVGcm9tRXhjZWxPbmUS",
            "MgoJZGF0YV9saXN0GAEgAygLMhsuY2ZnLlRlc3REZWZpbmVGcm9tRXhjZWxP",
            "bmVCAhAAIjwKD1Rlc3RUYlRlc3RJbmRleBIpCglkYXRhX2xpc3QYASADKAsy",
            "Ei5jZmcuVGVzdFRlc3RJbmRleEICEAAiOAoNVGVzdFRiVGVzdE1hcBInCglk",
            "YXRhX2xpc3QYASADKAsyEC5jZmcuVGVzdFRlc3RNYXBCAhAAIkQKE1Rlc3RU",
            "YkV4Y2VsRnJvbUpzb24SLQoJZGF0YV9saXN0GAEgAygLMhYuY2ZnLlRlc3RF",
            "eGNlbEZyb21Kc29uQgIQACJQChlUZXN0VGJDb21wb3NpdGVKc29uVGFibGUx",
            "EjMKCWRhdGFfbGlzdBgBIAMoCzIcLmNmZy5UZXN0Q29tcG9zaXRlSnNvblRh",
            "YmxlMUICEAAiUAoZVGVzdFRiQ29tcG9zaXRlSnNvblRhYmxlMhIzCglkYXRh",
            "X2xpc3QYASADKAsyHC5jZmcuVGVzdENvbXBvc2l0ZUpzb25UYWJsZTJCAhAA",
            "IlAKGVRlc3RUYkNvbXBvc2l0ZUpzb25UYWJsZTMSMwoJZGF0YV9saXN0GAEg",
            "AygLMhwuY2ZnLlRlc3RDb21wb3NpdGVKc29uVGFibGUzQgIQACJUChtUZXN0",
            "VGJFeGNlbEZyb21Kc29uTXVsdGlSb3cSNQoJZGF0YV9saXN0GAEgAygLMh4u",
            "Y2ZnLlRlc3RFeGNlbEZyb21Kc29uTXVsdGlSb3dCAhAAIjgKDVRlc3RUYlRl",
            "c3RTZXASJwoJZGF0YV9saXN0GAEgAygLMhAuY2ZnLlRlc3RUZXN0U2VwQgIQ",
            "ACJKChZUZXN0VGJUZXN0RXh0ZXJuYWxUeXBlEjAKCWRhdGFfbGlzdBgBIAMo",
            "CzIZLmNmZy5UZXN0VGVzdEV4dGVybmFsVHlwZUICEAAiSwoeVGVzdFRiRGVt",
            "b0dyb3VwRGVmaW5lRnJvbUV4Y2VsEikKCWRhdGFfbGlzdBgBIAMoCzISLmNm",
            "Zy5UZXN0RGVtb0dyb3VwQgIQACJKChZUZXN0VGJEZWZpbmVGcm9tRXhjZWwy",
            "EjAKCWRhdGFfbGlzdBgBIAMoCzIZLmNmZy5UZXN0RGVmaW5lRnJvbUV4Y2Vs",
            "MkICEAAiRQoTVGVzdFRiVGVzdEV4Y2VsQmVhbhIuCglkYXRhX2xpc3QYASAD",
            "KAsyFy5jZmcuVGVzdFRlc3RFeGNlbEJlYW4xQgIQACI6Cg5UZXN0VGJUZXN0",
            "RGVzYxIoCglkYXRhX2xpc3QYASADKAsyES5jZmcuVGVzdFRlc3REZXNjQgIQ",
            "ACo9CgtBaUVFeGVjdXRvchIWChJBaUVFeGVjdXRvcl9DTElFTlQQABIWChJB",
            "aUVFeGVjdXRvcl9TRVJWRVIQASroAQoKQWlFS2V5VHlwZRITCg9BaUVLZXlU",
            "eXBlX0JPT0wQARISCg5BaUVLZXlUeXBlX0lOVBACEhQKEEFpRUtleVR5cGVf",
            "RkxPQVQQAxIVChFBaUVLZXlUeXBlX1NUUklORxAEEhUKEUFpRUtleVR5cGVf",
            "VkVDVE9SEAUSFgoSQWlFS2V5VHlwZV9ST1RBVE9SEAYSEwoPQWlFS2V5VHlw",
            "ZV9OQU1FEAcSFAoQQWlFS2V5VHlwZV9DTEFTUxAIEhMKD0FpRUtleVR5cGVf",
            "RU5VTRAJEhUKEUFpRUtleVR5cGVfT0JKRUNUEAoqiAEKEEFpRUZsb3dBYm9y",
            "dE1vZGUSGQoVQWlFRmxvd0Fib3J0TW9kZV9OT05FEAASIwofQWlFRmxvd0Fi",
            "b3J0TW9kZV9MT1dFUl9QUklPUklUWRABEhkKFUFpRUZsb3dBYm9ydE1vZGVf",
            "U0VMRhACEhkKFUFpRUZsb3dBYm9ydE1vZGVfQk9USBADKkcKDUFpRUZpbmlz",
            "aE1vZGUSGwoXQWlFRmluaXNoTW9kZV9JTU1FRElBVEUQABIZChVBaUVGaW5p",
            "c2hNb2RlX0RFTEFZRUQQASpuChVBaUVOb3RpZnlPYnNlcnZlck1vZGUSKQol",
            "QWlFTm90aWZ5T2JzZXJ2ZXJNb2RlX09OX1ZBTFVFX0NIQU5HRRAAEioKJkFp",
            "RU5vdGlmeU9ic2VydmVyTW9kZV9PTl9SRVNVTFRfQ0hBTkdFEAEqlQIKC0Fp",
            "RU9wZXJhdG9yEhsKF0FpRU9wZXJhdG9yX0lTX0VRVUFMX1RPEAASHwobQWlF",
            "T3BlcmF0b3JfSVNfTk9UX0VRVUFMX1RPEAESHAoYQWlFT3BlcmF0b3JfSVNf",
            "TEVTU19USEFOEAISKAokQWlFT3BlcmF0b3JfSVNfTEVTU19USEFOX09SX0VR",
            "VUFMX1RPEAMSHQoZQWlFT3BlcmF0b3JfSVNfR1JFQVRfVEhBThAEEikKJUFp",
            "RU9wZXJhdG9yX0lTX0dSRUFUX1RIQU5fT1JfRVFVQUxfVE8QBRIYChRBaUVP",
            "cGVyYXRvcl9DT05UQUlOUxAGEhwKGEFpRU9wZXJhdG9yX05PVF9DT05UQUlO",
            "UxAHKk4KE0NvbW1vbkVCb29sT3BlcmF0b3ISGwoXQ29tbW9uRUJvb2xPcGVy",
            "YXRvcl9BTkQQABIaChZDb21tb25FQm9vbE9wZXJhdG9yX09SEAEqSgoPRXJy",
            "b3JFT3BlcmF0aW9uEhoKFkVycm9yRU9wZXJhdGlvbl9MT0dPVVQQABIbChdF",
            "cnJvckVPcGVyYXRpb25fUkVTVEFSVBABKt8bCg9FcnJvckVFcnJvckNvZGUS",
            "FgoSRXJyb3JFRXJyb3JDb2RlX09LEAASJQohRXJyb3JFRXJyb3JDb2RlX1NF",
            "UlZFUl9OT1RfRVhJU1RTEAESIwofRXJyb3JFRXJyb3JDb2RlX0hBU19CSU5E",
            "X1NFUlZFUhACEh0KGUVycm9yRUVycm9yQ29kZV9BVVRIX0ZBSUwQAxIjCh9F",
            "cnJvckVFcnJvckNvZGVfTk9UX0JJTkRfU0VSVkVSEAQSJgoiRXJyb3JFRXJy",
            "b3JDb2RlX1NFUlZFUl9BQ0NFU1NfRkFJTBAFEiEKHUVycm9yRUVycm9yQ29k",
            "ZV9FWEFNUExFX0ZMQVNIEAYSIgoeRXJyb3JFRXJyb3JDb2RlX0VYQU1QTEVf",
            "TVNHQk9YEAcSIgoeRXJyb3JFRXJyb3JDb2RlX0VYQU1QTEVfRExHX09LEAgS",
            "KQolRXJyb3JFRXJyb3JDb2RlX0VYQU1QTEVfRExHX09LX0NBTkNFTBAJEjEK",
            "LUVycm9yRUVycm9yQ29kZV9ST0xFX0NSRUFURV9OQU1FX0lOVkFMSURfQ0hB",
            "UhBkEioKJkVycm9yRUVycm9yQ29kZV9ST0xFX0NSRUFURV9OQU1FX0VNUFRZ",
            "EGUSNgoyRXJyb3JFRXJyb3JDb2RlX1JPTEVfQ1JFQVRFX05BTUVfRVhDRUVE",
            "X01BWF9MRU5HVEgQZhIuCipFcnJvckVFcnJvckNvZGVfUk9MRV9DUkVBVEVf",
            "Uk9MRV9MSVNUX0ZVTEwQZxIyCi5FcnJvckVFcnJvckNvZGVfUk9MRV9DUkVB",
            "VEVfSU5WQUxJRF9QUk9GRVNTSU9OEGgSLgoqRXJyb3JFRXJyb3JDb2RlX1JP",
            "TEVfQ1JFQVRFX0lOVkFMSURfR0VOREVSEGkSKgomRXJyb3JFRXJyb3JDb2Rl",
            "X1JPTEVfTk9UX09XTkVEX0JZX1VTRVIQahIpCiVFcnJvckVFcnJvckNvZGVf",
            "Uk9MRV9MRVZFTF9OT1RfQVJSSVZFEGsSIgodRXJyb3JFRXJyb3JDb2RlX1BB",
            "UkFNX0lMTEVHQUwQyAESJwoiRXJyb3JFRXJyb3JDb2RlX1RFTVBfQkFHX05P",
            "VF9FTVBUWRDJARIlCiBFcnJvckVFcnJvckNvZGVfSVRFTV9DQU5fTk9UX1VT",
            "RRDKARIoCiNFcnJvckVFcnJvckNvZGVfQ1VSUkVOQ1lfTk9UX0VOT1VHSBDL",
            "ARIgChtFcnJvckVFcnJvckNvZGVfQkFHX0lTX0ZVTEwQzAESJAofRXJyb3JF",
            "RXJyb3JDb2RlX0lURU1fTk9UX0VOT1VHSBDNARIgChtFcnJvckVFcnJvckNv",
            "ZGVfSVRFTV9JTl9CQUcQzgESJQogRXJyb3JFRXJyb3JDb2RlX0dFTkRFUl9O",
            "T1RfTUFUQ0gQrAISIgodRXJyb3JFRXJyb3JDb2RlX0xFVkVMX1RPT19MT1cQ",
            "rQISIwoeRXJyb3JFRXJyb3JDb2RlX0xFVkVMX1RPT19ISUdIEK4CEiEKHEVy",
            "cm9yRUVycm9yQ29kZV9FWENFRURfTElNSVQQrwISHgoZRXJyb3JFRXJyb3JD",
            "b2RlX09WRVJfVElNRRCwAhIhChxFcnJvckVFcnJvckNvZGVfU0VSVkVSX0VS",
            "Uk9SELECEiYKIUVycm9yRUVycm9yQ29kZV9TS0lMTF9OT1RfSU5fTElTVBCQ",
            "AxInCiJFcnJvckVFcnJvckNvZGVfU0tJTExfTk9UX0NPT0xET1dOEJEDEisK",
            "JkVycm9yRUVycm9yQ29kZV9TS0lMTF9UQVJHRVRfTk9UX0VYSVNUEJIDEioK",
            "JUVycm9yRUVycm9yQ29kZV9TS0lMTF9BTk9USEVSX0NBU1RJTkcQkwMSKgol",
            "RXJyb3JFRXJyb3JDb2RlX1NLSUxMX09VVF9PRl9ESVNUQU5DRRCUAxIwCitF",
            "cnJvckVFcnJvckNvZGVfU0tJTExfVEFSR0VUX0NBTVBfTk9UX01BVENIEJUD",
            "EiwKJ0Vycm9yRUVycm9yQ29kZV9TS0lMTF9JTlZBTElEX0RJUkVDVElPThCW",
            "AxIuCilFcnJvckVFcnJvckNvZGVfU0tJTExfTk9UX0lOX1NFTEVDVF9TSEFQ",
            "RRCXAxIsCidFcnJvckVFcnJvckNvZGVfU0tJTExfRU5FUkdZX05PVF9FTk9V",
            "R0gQmAMSLAonRXJyb3JFRXJyb3JDb2RlX0RJQUxPR19OT0RFX05PVF9DSE9P",
            "U0VOEPQDEiYKIUVycm9yRUVycm9yQ29kZV9ESUFMT0dfTk9UX0ZJTklTSBD1",
            "AxImCiFFcnJvckVFcnJvckNvZGVfRElBTE9HX0hBU19GSU5JU0gQ9gMSLQoo",
            "RXJyb3JFRXJyb3JDb2RlX1FVRVNUX1NUQUdFX05PVF9GSU5JU0hFRBD3AxIk",
            "Ch9FcnJvckVFcnJvckNvZGVfUVVFU1RfTk9UX0RPSU5HEPgDEioKJUVycm9y",
            "RUVycm9yQ29kZV9RVUVTVF9TVEFHRV9OT1RfRE9JTkcQ+QMSJwoiRXJyb3JF",
            "RXJyb3JDb2RlX1FVRVNUX0hBU19BQ0NFUFRFRBD6AxIpCiRFcnJvckVFcnJv",
            "ckNvZGVfTUFQX09CSkVDVF9OT1RfRVhJU1QQ2AQSPQo4RXJyb3JFRXJyb3JD",
            "b2RlX0lOVEVSQUNUSU9OX09CSkVDVF9OT1RfU1VQUE9SVF9PUEVSQVRJT04Q",
            "2QQSIgodRXJyb3JFRXJyb3JDb2RlX0hBU19OT1RfRVFVSVAQ2gQSMAorRXJy",
            "b3JFRXJyb3JDb2RlX0hBTkRIRUxEX0VRVUlQX0lEX05PVF9NQVRDSBDbBBIq",
            "CiVFcnJvckVFcnJvckNvZGVfTk9UX0FWQUlMQUJMRV9TVUlUX0lEENwEEi0K",
            "KEVycm9yRUVycm9yQ29kZV9OT19JTlRFUkFDVElPTl9DT01QT05FTlQQ3QQS",
            "IwoeRXJyb3JFRXJyb3JDb2RlX0hBU19JTlRFUkFDVEVEEN4EEicKIkVycm9y",
            "RUVycm9yQ29kZV9WSUFMSVRZX05PVF9FTk9VR0gQ3wQSLQooRXJyb3JFRXJy",
            "b3JDb2RlX1BMQVlFUl9TRVNTSU9OX05PVF9FWElTVBDgBBI5CjRFcnJvckVF",
            "cnJvckNvZGVfUExBWUVSX1NFU1NJT05fV09STERfUExBWUVSX05PVF9JTklU",
            "EOEEEiIKHUVycm9yRUVycm9yQ29kZV9NQVBfTk9UX0VYSVNUEOIEEiQKH0Vy",
            "cm9yRUVycm9yQ29kZV9NQUlMX1RZUEVfRVJST1IQvAUSJAofRXJyb3JFRXJy",
            "b3JDb2RlX01BSUxfTk9UX0VYSVRTVBC9BRImCiFFcnJvckVFcnJvckNvZGVf",
            "TUFJTF9IQVZFX0RFTEVURUQQvgUSLQooRXJyb3JFRXJyb3JDb2RlX01BSUxf",
            "QVdBUkRfSEFWRV9SRUNFSVZFRBC/BRIsCidFcnJvckVFcnJvckNvZGVfTUFJ",
            "TF9PUEVSQVRFX1RZUEVfRVJST1IQwAUSLAonRXJyb3JFRXJyb3JDb2RlX01B",
            "SUxfQ09ORElUSU9OX05PVF9NRUVUEMEFEiUKIEVycm9yRUVycm9yQ29kZV9N",
            "QUlMX1NUQVRFX0VSUk9SEMIFEiIKHUVycm9yRUVycm9yQ29kZV9NQUlMX05P",
            "X0FXQVJEEMMFEiUKIEVycm9yRUVycm9yQ29kZV9NQUlMX0JPWF9JU19GVUxM",
            "EMQFEi8KKkVycm9yRUVycm9yQ29kZV9QUk9QX1NDT1JFX05PVF9CSUdHRVJf",
            "VEhBThCgBhIlCiBFcnJvckVFcnJvckNvZGVfTk9UX1dFQVJfQ0xPVEhFUxCh",
            "BhIiCh1FcnJvckVFcnJvckNvZGVfTk9UX1dFQVJfU1VJVBCiBhIkCh9FcnJv",
            "ckVFcnJvckNvZGVfU1VJVF9OT1RfVU5MT0NLEIQHEi4KKUVycm9yRUVycm9y",
            "Q29kZV9TVUlUX0NPTVBPTkVOVF9OT1RfVU5MT0NLEIUHEiUKIEVycm9yRUVy",
            "cm9yQ29kZV9TVUlUX1NUQVRFX0VSUk9SEIYHEi8KKkVycm9yRUVycm9yQ29k",
            "ZV9TVUlUX0NPTVBPTkVOVF9TVEFURV9FUlJPUhCHBxIxCixFcnJvckVFcnJv",
            "ckNvZGVfU1VJVF9DT01QT05FTlRfTk9fTkVFRF9MRUFSThCIBxImCiFFcnJv",
            "ckVFcnJvckNvZGVfU1RPUkVfTk9UX0VOQUJMRUQQ6AcSJgohRXJyb3JFRXJy",
            "b3JDb2RlX1NIRUxGX05PVF9FTkFCTEVEEOkHEiYKIUVycm9yRUVycm9yQ29k",
            "ZV9HT09EU19OT1RfRU5BQkxFRBDqBxItCihFcnJvckVFcnJvckNvZGVfR09P",
            "RFNfTk9UX0lOX0NVUl9SRUZSRVNIEOsHEhoKFUVycm9yRUVycm9yQ29kZV9S",
            "RVRSWRDMCBIhChxFcnJvckVFcnJvckNvZGVfTk9UX0NPT0xET1dOEM0IEiIK",
            "HUVycm9yRUVycm9yQ29kZV9TRUxGSUVfVU5MT0NLELAJEioKJUVycm9yRUVy",
            "cm9yQ29kZV9TRUxGSUVfQUxSRUFEWV9VTkxPQ0sQsQkSJwoiRXJyb3JFRXJy",
            "b3JDb2RlX1NFTEZJRV9MQUNLX1NUQVJUUxCyCRImCiFFcnJvckVFcnJvckNv",
            "ZGVfU0VMRklFX0hBRF9SRVdBUkQQswkqnwEKEEl0ZW1FSXRlbVF1YWxpdHkS",
            "GgoWSXRlbUVJdGVtUXVhbGl0eV9XSElURRAAEhoKFkl0ZW1FSXRlbVF1YWxp",
            "dHlfR1JFRU4QARIZChVJdGVtRUl0ZW1RdWFsaXR5X0JMVUUQAhIbChdJdGVt",
            "RUl0ZW1RdWFsaXR5X1BVUlBMRRADEhsKF0l0ZW1FSXRlbVF1YWxpdHlfR09M",
            "REVOEAQqqgEKEUl0ZW1FQ3VycmVuY3lUeXBlEh0KGUl0ZW1FQ3VycmVuY3lU",
            "eXBlX0RJQU1PTkQQARIaChZJdGVtRUN1cnJlbmN5VHlwZV9HT0xEEAISHAoY",
            "SXRlbUVDdXJyZW5jeVR5cGVfU0lMVkVSEAMSGQoVSXRlbUVDdXJyZW5jeVR5",
            "cGVfRVhQEAQSIQodSXRlbUVDdXJyZW5jeVR5cGVfUE9XRVJfUE9JTlQQBSrb",
            "AgoOSXRlbUVNYWpvclR5cGUSGwoXSXRlbUVNYWpvclR5cGVfQ1VSUkVOQ1kQ",
            "ARIYChRJdGVtRU1ham9yVHlwZV9DTE9USBACEhgKFEl0ZW1FTWFqb3JUeXBl",
            "X1FVRVNUEAMSHgoaSXRlbUVNYWpvclR5cGVfQ09OU1VNQUJMRVMQBBIfChtJ",
            "dGVtRU1ham9yVHlwZV9UUkVBU1VSRV9CT1gQBRIoCiRJdGVtRU1ham9yVHlw",
            "ZV9BQ0hJRVZFTUVOVF9BTkRfVElUTEUQBhIdChlJdGVtRU1ham9yVHlwZV9I",
            "RUFEX0ZSQU1FEAcSGAoUSXRlbUVNYWpvclR5cGVfVk9JQ0UQCBIZChVJdGVt",
            "RU1ham9yVHlwZV9BQ1RJT04QCRIcChhJdGVtRU1ham9yVHlwZV9FWFBBTlNJ",
            "T04QChIbChdJdGVtRU1ham9yVHlwZV9NQVRFUklBTBALKo8MCg5JdGVtRU1p",
            "bm9yVHlwZRIaChZJdGVtRU1pbm9yVHlwZV9ESUFNT05EEGUSFwoTSXRlbUVN",
            "aW5vclR5cGVfR09MRBBmEhkKFUl0ZW1FTWlub3JUeXBlX1NJTFZFUhBnEhYK",
            "Ekl0ZW1FTWlub3JUeXBlX0VYUBBoEh4KGkl0ZW1FTWlub3JUeXBlX1BPV0VS",
            "X1BPSU5UEGkSHgoZSXRlbUVNaW5vclR5cGVfSEFJUl9TVFlMRRDSARIYChNJ",
            "dGVtRU1pbm9yVHlwZV9DT0FUENwBEiAKG0l0ZW1FTWlub3JUeXBlX1VQUEVS",
            "X0pBQ0tFVBDmARIcChdJdGVtRU1pbm9yVHlwZV9UUk9VU0VSUxDxARIZChRJ",
            "dGVtRU1pbm9yVHlwZV9TS0lSVBDyARIZChRJdGVtRU1pbm9yVHlwZV9TT0NL",
            "UxD6ARIZChRJdGVtRU1pbm9yVHlwZV9TSE9FUxCEAhIiCh1JdGVtRU1pbm9y",
            "VHlwZV9IQUlSX0FDQ0VTU09SWRCPAhIXChJJdGVtRU1pbm9yVHlwZV9IQVQQ",
            "kAISGwoWSXRlbUVNaW5vclR5cGVfRUFSUklORxCRAhIcChdJdGVtRU1pbm9y",
            "VHlwZV9ORUNLTEFDRRCSAhIcChdJdGVtRU1pbm9yVHlwZV9CUkFDRUxFVBCT",
            "AhIeChlJdGVtRU1pbm9yVHlwZV9IQUlSX0NMQVNQEJQCEhkKFEl0ZW1FTWlu",
            "b3JUeXBlX0dMT1ZFEJUCEiMKHkl0ZW1FTWlub3JUeXBlX0hBTkRIRUxEX09C",
            "SkVDVBCWAhIbChZJdGVtRU1pbm9yVHlwZV9TUEVDSUFMEJcCEiEKHEl0ZW1F",
            "TWlub3JUeXBlX0JBU0VfQ09TTUVUSUMQmQISJAofSXRlbUVNaW5vclR5cGVf",
            "RVlFQlJPV19DT1NNRVRJQxCaAhIbChZJdGVtRU1pbm9yVHlwZV9FWUVMQVNI",
            "EJsCEisKJkl0ZW1FTWlub3JUeXBlX0NPU01FVElDX0NPTlRBQ1RfTEVOU0VT",
            "EJwCEiAKG0l0ZW1FTWlub3JUeXBlX0xJUF9DT1NNRVRJQxCdAhIeChlJdGVt",
            "RU1pbm9yVHlwZV9TS0lOX0NPTE9SEJ4CEiMKHkl0ZW1FTWlub3JUeXBlX09O",
            "RV9QSUVDRV9EUkVTUxCiAhIoCiNJdGVtRU1pbm9yVHlwZV9TV0lUQ0hfQ0xP",
            "VEhFU19TQ0VORRCjAhIZChRJdGVtRU1pbm9yVHlwZV9RVUVTVBCtAhIYChNJ",
            "dGVtRU1pbm9yVHlwZV9DQVNUEJEDEhkKFEl0ZW1FTWlub3JUeXBlX1NXT1JE",
            "EKUDEh0KGEl0ZW1FTWlub3JUeXBlX0JPV19BUlJPVxCmAxIZChRJdGVtRU1p",
            "bm9yVHlwZV9XQU5EUxCnAxIgChtJdGVtRU1pbm9yVHlwZV9TUEVDSUFMX1RP",
            "T0wQqAMSGAoTSXRlbUVNaW5vclR5cGVfRk9PRBCTAxIgChtJdGVtRU1pbm9y",
            "VHlwZV9UUkVBU1VSRV9CT1gQ9QMSFwoSSXRlbUVNaW5vclR5cGVfS0VZEPYD",
            "Ei0KKEl0ZW1FTWlub3JUeXBlX01VTFRJX0NIT09TRV9UUkVBU1VSRV9CT1gQ",
            "9wMSHwoaSXRlbUVNaW5vclR5cGVfQUNISUVWRU1FTlQQ2QQSGQoUSXRlbUVN",
            "aW5vclR5cGVfVElUTEUQ2gQSIAobSXRlbUVNaW5vclR5cGVfQVZBVEFSX0ZS",
            "QU1FEL0FEhkKFEl0ZW1FTWlub3JUeXBlX1ZPSUNFEKEGEh0KGEl0ZW1FTWlu",
            "b3JUeXBlX0lETEVfUE9TRRCFBxIeChlJdGVtRU1pbm9yVHlwZV9QSE9UT19Q",
            "T1NFEIYHEhcKEkl0ZW1FTWlub3JUeXBlX0JBRxDpBxIjCh5JdGVtRU1pbm9y",
            "VHlwZV9GUklFTkRfQ0FQQUNJVFkQ6gcSKQokSXRlbUVNaW5vclR5cGVfQ09O",
            "U1RSVUNUSU9OX01BVEVSSUFMEM0IEiIKHUl0ZW1FTWlub3JUeXBlX0RFU0lH",
            "Tl9EUkFXSU5HEM4IKqMDChxJdGVtRUNsb3RoZXJzU3RhclF1YWxpdHlUeXBl",
            "EiQKIEl0ZW1FQ2xvdGhlcnNTdGFyUXVhbGl0eVR5cGVfT05FEAESJAogSXRl",
            "bUVDbG90aGVyc1N0YXJRdWFsaXR5VHlwZV9UV08QAhImCiJJdGVtRUNsb3Ro",
            "ZXJzU3RhclF1YWxpdHlUeXBlX1RIUkVFEAMSJQohSXRlbUVDbG90aGVyc1N0",
            "YXJRdWFsaXR5VHlwZV9GT1VSEAQSJQohSXRlbUVDbG90aGVyc1N0YXJRdWFs",
            "aXR5VHlwZV9GSVZFEAUSJAogSXRlbUVDbG90aGVyc1N0YXJRdWFsaXR5VHlw",
            "ZV9TSVgQBhImCiJJdGVtRUNsb3RoZXJzU3RhclF1YWxpdHlUeXBlX1NFVkVO",
            "EAcSJgoiSXRlbUVDbG90aGVyc1N0YXJRdWFsaXR5VHlwZV9FSUdIVBAIEiUK",
            "IUl0ZW1FQ2xvdGhlcnNTdGFyUXVhbGl0eVR5cGVfTklORRAJEiQKIEl0ZW1F",
            "Q2xvdGhlcnNTdGFyUXVhbGl0eVR5cGVfVEVOEAoqTwoQSXRlbUVDbG90aGVy",
            "c1RhZxIeChpJdGVtRUNsb3RoZXJzVGFnX0ZBTkdfU0hBSRABEhsKF0l0ZW1F",
            "Q2xvdGhlcnNUYWdfV1VfWkhFEAIqPgoMSXRlbUVVc2VUeXBlEhcKE0l0ZW1F",
            "VXNlVHlwZV9NQU5VQUwQABIVChFJdGVtRVVzZVR5cGVfQVVUTxABKtACChhJ",
            "dGVtRUNsb3RoZXNIaWRlUGFydFR5cGUSIgoeSXRlbUVDbG90aGVzSGlkZVBh",
            "cnRUeXBlX0NIRVNUEAASIQodSXRlbUVDbG90aGVzSGlkZVBhcnRUeXBlX0hF",
            "QUQQARIoCiRJdGVtRUNsb3RoZXNIaWRlUGFydFR5cGVfU1BJTkVfVVBQRVIQ",
            "AhIoCiRJdGVtRUNsb3RoZXNIaWRlUGFydFR5cGVfU1BJTkVfTE9XRVIQAxIg",
            "ChxJdGVtRUNsb3RoZXNIaWRlUGFydFR5cGVfSElQEAQSJgoiSXRlbUVDbG90",
            "aGVzSGlkZVBhcnRUeXBlX0xFR19VUFBFUhAFEicKI0l0ZW1FQ2xvdGhlc0hp",
            "ZGVQYXJ0VHlwZV9MRUdfTUlERExFEAYSJgoiSXRlbUVDbG90aGVzSGlkZVBh",
            "cnRUeXBlX0xFR19MT1dFUhAHKpsDChhJdGVtRUNsb3RoZXNQcm9wZXJ0eVR5",
            "cGUSJQohSXRlbUVDbG90aGVzUHJvcGVydHlUeXBlX0pJQU5fWVVFEAESIwof",
            "SXRlbUVDbG90aGVzUHJvcGVydHlUeXBlX0hVQV9MSRACEiIKHkl0ZW1FQ2xv",
            "dGhlc1Byb3BlcnR5VHlwZV9LRV9BSRADEiYKIkl0ZW1FQ2xvdGhlc1Byb3Bl",
            "cnR5VHlwZV9DSEVOR19TSFUQBBIjCh9JdGVtRUNsb3RoZXNQcm9wZXJ0eVR5",
            "cGVfSFVPX1BPEAUSIwofSXRlbUVDbG90aGVzUHJvcGVydHlUeXBlX1lPVV9Z",
            "QRAGEiYKIkl0ZW1FQ2xvdGhlc1Byb3BlcnR5VHlwZV9RSU5HX0NIVU4QBxIl",
            "CiFJdGVtRUNsb3RoZXNQcm9wZXJ0eVR5cGVfWElOR19HQU4QCBInCiNJdGVt",
            "RUNsb3RoZXNQcm9wZXJ0eVR5cGVfUUlOR19MSUFORxAJEiUKIUl0ZW1FQ2xv",
            "dGhlc1Byb3BlcnR5VHlwZV9CQU9fTlVBThAKKnEKFUl0ZW1FSXRlbUZ1bmN0",
            "aW9uVHlwZRIqCiZJdGVtRUl0ZW1GdW5jdGlvblR5cGVfUkVQTEFDRV9IQU5E",
            "SEVMRBAAEiwKKEl0ZW1FSXRlbUZ1bmN0aW9uVHlwZV9VU0VfREVTSUdOX0RS",
            "QVdJTkcQASqLAQoPTGltaXRFTmFtZXNwYWNlEiUKIUxpbWl0RU5hbWVzcGFj",
            "ZV9JVEVNX0RBSUxZX09CVEFJThABEiYKIkxpbWl0RU5hbWVzcGFjZV9UUkVB",
            "U1VSRV9EQUlMWV9VU0UQAhIpCiVMaW1pdEVOYW1lc3BhY2VfU1RPUkVfR09P",
            "RFNfTElNSVRfQlVZEAMqQwoNTWFpbEVNYWlsVHlwZRIYChRNYWlsRU1haWxU",
            "eXBlX0dMT0JBTBAAEhgKFE1haWxFTWFpbFR5cGVfU1lTVEVNEAEqRwoPUm9s",
            "ZUVHZW5kZXJUeXBlEhgKFFJvbGVFR2VuZGVyVHlwZV9NQUxFEAESGgoWUm9s",
            "ZUVHZW5kZXJUeXBlX0ZFTUFMRRACKjYKD1JvbGVFUHJvZmVzc2lvbhIjCh9S",
            "b2xlRVByb2Zlc3Npb25fVEVTVF9QUk9GRVNTSU9OEAEqXgoMVGVzdERlbW9F",
            "bnVtEhIKDlRlc3REZW1vRW51bV9BEAESEgoOVGVzdERlbW9FbnVtX0IQAhIS",
            "Cg5UZXN0RGVtb0VudW1fQxAEEhIKDlRlc3REZW1vRW51bV9EEAUqSgoMVGVz",
            "dERlbW9GbGFnEhIKDlRlc3REZW1vRmxhZ19BEAESEgoOVGVzdERlbW9GbGFn",
            "X0IQAhISCg5UZXN0RGVtb0ZsYWdfRBADKkcKD1Rlc3RFVGVzdFVlVHlwZRIZ",
            "ChVUZXN0RVRlc3RVZVR5cGVfV0hJVEUQABIZChVUZXN0RVRlc3RVZVR5cGVf",
            "QkxBQ0sQASo+ChJUZXN0RVRlc3RFbXB0eUVudW0SKAokVGVzdEVUZXN0RW1w",
            "dHlFbnVtX0VNUFRZX1BMQUNFSE9MREVSEAAqfgoTVGVzdEVUZXN0RW1wdHlF",
            "bnVtMhInCiJUZXN0RVRlc3RFbXB0eUVudW0yX1NNQUxMX1RIQU5fMjU2EP8B",
            "Eh4KGVRlc3RFVGVzdEVtcHR5RW51bTJfWF8yNTYQgAISHgoZVGVzdEVUZXN0",
            "RW1wdHlFbnVtMl9YXzI1NxCBAipZCg1UZXN0QXVkaW9UeXBlEhkKFVRlc3RB",
            "dWRpb1R5cGVfVU5LTk9XThAAEhUKEVRlc3RBdWRpb1R5cGVfQUNDEAESFgoS",
            "VGVzdEF1ZGlvVHlwZV9BSUZGEAIqcgoQVGVzdEVUZXN0UXVhbGl0eRIWChJU",
            "ZXN0RVRlc3RRdWFsaXR5X0EQARIWChJUZXN0RVRlc3RRdWFsaXR5X0IQAhIW",
            "ChJUZXN0RVRlc3RRdWFsaXR5X0MQAxIWChJUZXN0RVRlc3RRdWFsaXR5X0QQ",
            "BCqXAQoOVGVzdEFjY2Vzc0ZsYWcSGAoUVGVzdEFjY2Vzc0ZsYWdfV1JJVEUQ",
            "ARIXChNUZXN0QWNjZXNzRmxhZ19SRUFEEAISGwoXVGVzdEFjY2Vzc0ZsYWdf",
            "VFJVTkNBVEUQBBIWChJUZXN0QWNjZXNzRmxhZ19ORVcQCBIdChlUZXN0QWNj",
            "ZXNzRmxhZ19SRUFEX1dSSVRFEAM="));
      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.CommonEBoolOperator), typeof(global::Cfg.ErrorEOperation), typeof(global::Cfg.ErrorEErrorCode), 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.ItemEItemFunctionType), typeof(global::Cfg.LimitENamespace), typeof(global::Cfg.MailEMailType), typeof(global::Cfg.RoleEGenderType), typeof(global::Cfg.RoleEProfession), typeof(global::Cfg.TestDemoEnum), typeof(global::Cfg.TestDemoFlag), typeof(global::Cfg.TestETestUeType), typeof(global::Cfg.TestETestEmptyEnum), typeof(global::Cfg.TestETestEmptyEnum2), typeof(global::Cfg.TestAudioType), typeof(global::Cfg.TestETestQuality), typeof(global::Cfg.TestAccessFlag), }, null, new pbr::GeneratedClrTypeInfo[] {
            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.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", "Location", "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.BlueprintClazz), global::Cfg.BlueprintClazz.Parser, new[]{ "Interface", "NormalClazz", "EnumClazz" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintMethod), global::Cfg.BlueprintMethod.Parser, new[]{ "AbstraceMethod", "ExternalMethod", "BlueprintMethod_" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintParamInfo), global::Cfg.BlueprintParamInfo.Parser, new[]{ "Name", "Type", "IsRef" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintAbstraceMethod), global::Cfg.BlueprintAbstraceMethod.Parser, new[]{ "Name", "Desc", "IsStatic", "ReturnType", "Parameters" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintExternalMethod), global::Cfg.BlueprintExternalMethod.Parser, new[]{ "Name", "Desc", "IsStatic", "ReturnType", "Parameters" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintBlueprintMethod), global::Cfg.BlueprintBlueprintMethod.Parser, new[]{ "Name", "Desc", "IsStatic", "ReturnType", "Parameters" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintInterface), global::Cfg.BlueprintInterface.Parser, new[]{ "Name", "Desc", "Parents", "Methods" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintNormalClazz), global::Cfg.BlueprintNormalClazz.Parser, new[]{ "Name", "Desc", "Parents", "Methods", "IsAbstract", "Fields" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintField), global::Cfg.BlueprintField.Parser, new[]{ "Name", "Type", "Desc" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintEnumClazz), global::Cfg.BlueprintEnumClazz.Parser, new[]{ "Name", "Desc", "Parents", "Methods", "Enums" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BlueprintEnumField), global::Cfg.BlueprintEnumField.Parser, new[]{ "Name", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusDropInfo), global::Cfg.BonusDropInfo.Parser, new[]{ "Id", "Desc", "ClientShowItems", "Bonus" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusShowItemInfo), global::Cfg.BonusShowItemInfo.Parser, new[]{ "ItemId", "ItemNum" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusBonus), global::Cfg.BonusBonus.Parser, new[]{ "OneItem", "OneItems", "Item", "Items", "CoefficientItem", "WeightItems", "ProbabilityItems", "MultiBonus", "ProbabilityBonus", "WeightBonus", "DropBonus" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusOneItem), global::Cfg.BonusOneItem.Parser, new[]{ "ItemId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusOneItems), global::Cfg.BonusOneItems.Parser, new[]{ "Items" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusItem), global::Cfg.BonusItem.Parser, new[]{ "ItemId", "Amount" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusItems), global::Cfg.BonusItems.Parser, new[]{ "ItemList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusCoefficientItem), global::Cfg.BonusCoefficientItem.Parser, new[]{ "BonusId", "BonusList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusWeightItems), global::Cfg.BonusWeightItems.Parser, new[]{ "ItemList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusWeightItemInfo), global::Cfg.BonusWeightItemInfo.Parser, new[]{ "ItemId", "Num", "Weight" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusProbabilityItems), global::Cfg.BonusProbabilityItems.Parser, new[]{ "ItemList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusProbabilityItemInfo), global::Cfg.BonusProbabilityItemInfo.Parser, new[]{ "ItemId", "Num", "Probability" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusMultiBonus), global::Cfg.BonusMultiBonus.Parser, new[]{ "Bonuses" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusProbabilityBonus), global::Cfg.BonusProbabilityBonus.Parser, new[]{ "Bonuses" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusProbabilityBonusInfo), global::Cfg.BonusProbabilityBonusInfo.Parser, new[]{ "Bonus", "Probability" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusWeightBonus), global::Cfg.BonusWeightBonus.Parser, new[]{ "Bonuses" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusWeightBonusInfo), global::Cfg.BonusWeightBonusInfo.Parser, new[]{ "Bonus", "Weight" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusDropBonus), global::Cfg.BonusDropBonus.Parser, new[]{ "Id" }, 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.ErrorErrorInfo), global::Cfg.ErrorErrorInfo.Parser, new[]{ "Code", "Desc", "Style" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorErrorStyle), global::Cfg.ErrorErrorStyle.Parser, new[]{ "ErrorStyleTip", "ErrorStyleMsgbox", "ErrorStyleDlgOk", "ErrorStyleDlgOkCancel" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorErrorStyleTip), global::Cfg.ErrorErrorStyleTip.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorErrorStyleMsgbox), global::Cfg.ErrorErrorStyleMsgbox.Parser, new[]{ "BtnName", "Operation" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorErrorStyleDlgOk), global::Cfg.ErrorErrorStyleDlgOk.Parser, new[]{ "BtnName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorErrorStyleDlgOkCancel), global::Cfg.ErrorErrorStyleDlgOkCancel.Parser, new[]{ "Btn1Name", "Btn2Name" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorCodeInfo), global::Cfg.ErrorCodeInfo.Parser, new[]{ "Code", "Key" }, 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", "Quantifier", "ShowInBag", "MinShowLevel", "BatchUsable", "ProgressTimeWhenUse", "ShowHintWhenUse", "Droppable", "Price", "UseType", "LevelUpId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemItemFunction), global::Cfg.ItemItemFunction.Parser, new[]{ "MinorType", "FuncType", "Method", "CloseBagUi" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemItemExtra), global::Cfg.ItemItemExtra.Parser, new[]{ "TreasureBox", "InteractionItem", "Clothes", "DesignDrawing", "Dymmy" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemTreasureBox), global::Cfg.ItemTreasureBox.Parser, new[]{ "Id", "KeyItemId", "OpenLevel", "UseOnObtain", "DropIds", "ChooseList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionCondition), global::Cfg.ConditionCondition.Parser, new[]{ "TimeRange", "MultiRoleCondition", "GenderLimit", "MinLevel", "MaxLevel", "MinMaxLevel", "ClothesPropertyScoreGreaterThan", "ContainsItem" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionTimeRange), global::Cfg.ConditionTimeRange.Parser, new[]{ "DateTimeRange" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CommonDateTimeRange), global::Cfg.CommonDateTimeRange.Parser, new[]{ "StartTime", "EndTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionRoleCondition), global::Cfg.ConditionRoleCondition.Parser, new[]{ "MultiRoleCondition", "GenderLimit", "MinLevel", "MaxLevel", "MinMaxLevel", "ClothesPropertyScoreGreaterThan", "ContainsItem" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionMultiRoleCondition), global::Cfg.ConditionMultiRoleCondition.Parser, new[]{ "Conditions" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionBoolRoleCondition), global::Cfg.ConditionBoolRoleCondition.Parser, new[]{ "GenderLimit", "MinLevel", "MaxLevel", "MinMaxLevel", "ClothesPropertyScoreGreaterThan" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionGenderLimit), global::Cfg.ConditionGenderLimit.Parser, new[]{ "Gender" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionMinLevel), global::Cfg.ConditionMinLevel.Parser, new[]{ "Level" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionMaxLevel), global::Cfg.ConditionMaxLevel.Parser, new[]{ "Level" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionMinMaxLevel), global::Cfg.ConditionMinMaxLevel.Parser, new[]{ "Min", "Max" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionClothesPropertyScoreGreaterThan), global::Cfg.ConditionClothesPropertyScoreGreaterThan.Parser, new[]{ "Prop", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ConditionContainsItem), global::Cfg.ConditionContainsItem.Parser, new[]{ "ItemId", "Num", "Reverse" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemChooseOneBonus), global::Cfg.ItemChooseOneBonus.Parser, new[]{ "DropId", "IsUnique" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemInteractionItem), global::Cfg.ItemInteractionItem.Parser, new[]{ "Id", "AttackNum", "HoldingStaticMesh", "HoldingStaticMeshMat" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemClothes), global::Cfg.ItemClothes.Parser, new[]{ "Id", "Attack", "Hp", "EnergyLimit", "EnergyResume" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemDesignDrawing), global::Cfg.ItemDesignDrawing.Parser, new[]{ "Id", "LearnComponentId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemDymmy), global::Cfg.ItemDymmy.Parser, new[]{ "Id", "Cost" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CostCost), global::Cfg.CostCost.Parser, new[]{ "CostCurrency", "CostCurrencies", "CostOneItem", "CostItem", "CostItems" }, new[]{ "Value" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CostCostCurrency), global::Cfg.CostCostCurrency.Parser, new[]{ "Type", "Num" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CostCostCurrencies), global::Cfg.CostCostCurrencies.Parser, new[]{ "Currencies" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CostCostOneItem), global::Cfg.CostCostOneItem.Parser, new[]{ "ItemId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CostCostItem), global::Cfg.CostCostItem.Parser, new[]{ "ItemId", "Amount" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.CostCostItems), global::Cfg.CostCostItems.Parser, new[]{ "ItemList" }, 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.MailSystemMail), global::Cfg.MailSystemMail.Parser, new[]{ "Id", "Title", "Sender", "Content", "Award" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.MailGlobalMail), global::Cfg.MailGlobalMail.Parser, new[]{ "Id", "Title", "Sender", "Content", "Award", "AllServer", "ServerList", "Platform", "Channel", "MinMaxLevel", "RegisterTime", "MailTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.RoleLevelExpAttr), global::Cfg.RoleLevelExpAttr.Parser, new[]{ "Level", "NeedExp", "ClothesAttrs" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.RoleLevelBonus), global::Cfg.RoleLevelBonus.Parser, new[]{ "Id", "DistinctBonusInfos" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.RoleDistinctBonusInfos), global::Cfg.RoleDistinctBonusInfos.Parser, new[]{ "EffectiveLevel", "BonusInfo" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.RoleBonusInfo), global::Cfg.RoleBonusInfo.Parser, new[]{ "Type", "Coefficient" }, 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", "V2", "V3", "V4", "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", "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" }, 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.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.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.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", "A1", "A2", "B1", "B2", "C1", "C2", "D1", "D2", "E1", "E2", "E3", "F1", "F2", "F3" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { 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", "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.TestDefineFromExcel), global::Cfg.TestDefineFromExcel.Parser, new[]{ "Id", "X1", "X5", "X6", "X8", "X10", "X13", "X14", "V2", "T1", "K1", "K8", "K9" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDefineFromExcelOne), global::Cfg.TestDefineFromExcelOne.Parser, new[]{ "UnlockEquip", "UnlockHero", "DefaultAvatar", "DefaultItem" }, 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", "V2", "V3", "V4", "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.TestTestSep), global::Cfg.TestTestSep.Parser, new[]{ "Id", "X1", "X2", "X3", "X4", "X5", "X6" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestSepBean1), global::Cfg.TestSepBean1.Parser, new[]{ "A", "B", "C" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestSepVector), global::Cfg.TestSepVector.Parser, new[]{ "X", "Y", "Z" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTestExternalType), global::Cfg.TestTestExternalType.Parser, new[]{ "Id", "AudioType", "Color" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestColor), global::Cfg.TestColor.Parser, new[]{ "R", "G", "B", "A" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestDefineFromExcel2), global::Cfg.TestDefineFromExcel2.Parser, new[]{ "Id", "X1", "X5", "X6", "X8", "X10", "X13", "X14", "V2", "T1", "K1", "K8", "K9" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            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.TestTestDesc), global::Cfg.TestTestDesc.Parser, new[]{ "Id", "Name", "A1", "A2", "X1", "X2", "X3" }, 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.BlueprintTbClazz), global::Cfg.BlueprintTbClazz.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.BonusTbDrop), global::Cfg.BonusTbDrop.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.ErrorTbErrorInfo), global::Cfg.ErrorTbErrorInfo.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ErrorTbCodeInfo), global::Cfg.ErrorTbCodeInfo.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.ItemTbItemFunc), global::Cfg.ItemTbItemFunc.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.ItemTbItemExtra), global::Cfg.ItemTbItemExtra.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.MailTbSystemMail), global::Cfg.MailTbSystemMail.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.MailTbGlobalMail), global::Cfg.MailTbGlobalMail.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.RoleTbRoleLevelExpAttr), global::Cfg.RoleTbRoleLevelExpAttr.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.RoleTbRoleLevelBonusCoefficient), global::Cfg.RoleTbRoleLevelBonusCoefficient.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.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.TestTbDefineFromExcel), global::Cfg.TestTbDefineFromExcel.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDefineFromExcelOne), global::Cfg.TestTbDefineFromExcelOne.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.TestTbTestSep), global::Cfg.TestTbTestSep.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestExternalType), global::Cfg.TestTbTestExternalType.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDemoGroupDefineFromExcel), global::Cfg.TestTbDemoGroupDefineFromExcel.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbDefineFromExcel2), global::Cfg.TestTbDefineFromExcel2.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestExcelBean), global::Cfg.TestTbTestExcelBean.Parser, new[]{ "DataList" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Cfg.TestTbTestDesc), global::Cfg.TestTbTestDesc.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 CommonEBoolOperator {
    [pbr::OriginalName("CommonEBoolOperator_AND")] And = 0,
    [pbr::OriginalName("CommonEBoolOperator_OR")] Or = 1,
  }

  public enum ErrorEOperation {
    [pbr::OriginalName("ErrorEOperation_LOGOUT")] Logout = 0,
    [pbr::OriginalName("ErrorEOperation_RESTART")] Restart = 1,
  }

  public enum ErrorEErrorCode {
    [pbr::OriginalName("ErrorEErrorCode_OK")] Ok = 0,
    [pbr::OriginalName("ErrorEErrorCode_SERVER_NOT_EXISTS")] ServerNotExists = 1,
    [pbr::OriginalName("ErrorEErrorCode_HAS_BIND_SERVER")] HasBindServer = 2,
    [pbr::OriginalName("ErrorEErrorCode_AUTH_FAIL")] AuthFail = 3,
    [pbr::OriginalName("ErrorEErrorCode_NOT_BIND_SERVER")] NotBindServer = 4,
    [pbr::OriginalName("ErrorEErrorCode_SERVER_ACCESS_FAIL")] ServerAccessFail = 5,
    [pbr::OriginalName("ErrorEErrorCode_EXAMPLE_FLASH")] ExampleFlash = 6,
    [pbr::OriginalName("ErrorEErrorCode_EXAMPLE_MSGBOX")] ExampleMsgbox = 7,
    [pbr::OriginalName("ErrorEErrorCode_EXAMPLE_DLG_OK")] ExampleDlgOk = 8,
    [pbr::OriginalName("ErrorEErrorCode_EXAMPLE_DLG_OK_CANCEL")] ExampleDlgOkCancel = 9,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_CREATE_NAME_INVALID_CHAR")] RoleCreateNameInvalidChar = 100,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_CREATE_NAME_EMPTY")] RoleCreateNameEmpty = 101,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_CREATE_NAME_EXCEED_MAX_LENGTH")] RoleCreateNameExceedMaxLength = 102,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_CREATE_ROLE_LIST_FULL")] RoleCreateRoleListFull = 103,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_CREATE_INVALID_PROFESSION")] RoleCreateInvalidProfession = 104,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_CREATE_INVALID_GENDER")] RoleCreateInvalidGender = 105,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_NOT_OWNED_BY_USER")] RoleNotOwnedByUser = 106,
    [pbr::OriginalName("ErrorEErrorCode_ROLE_LEVEL_NOT_ARRIVE")] RoleLevelNotArrive = 107,
    [pbr::OriginalName("ErrorEErrorCode_PARAM_ILLEGAL")] ParamIllegal = 200,
    [pbr::OriginalName("ErrorEErrorCode_TEMP_BAG_NOT_EMPTY")] TempBagNotEmpty = 201,
    [pbr::OriginalName("ErrorEErrorCode_ITEM_CAN_NOT_USE")] ItemCanNotUse = 202,
    [pbr::OriginalName("ErrorEErrorCode_CURRENCY_NOT_ENOUGH")] CurrencyNotEnough = 203,
    [pbr::OriginalName("ErrorEErrorCode_BAG_IS_FULL")] BagIsFull = 204,
    [pbr::OriginalName("ErrorEErrorCode_ITEM_NOT_ENOUGH")] ItemNotEnough = 205,
    [pbr::OriginalName("ErrorEErrorCode_ITEM_IN_BAG")] ItemInBag = 206,
    [pbr::OriginalName("ErrorEErrorCode_GENDER_NOT_MATCH")] GenderNotMatch = 300,
    [pbr::OriginalName("ErrorEErrorCode_LEVEL_TOO_LOW")] LevelTooLow = 301,
    [pbr::OriginalName("ErrorEErrorCode_LEVEL_TOO_HIGH")] LevelTooHigh = 302,
    [pbr::OriginalName("ErrorEErrorCode_EXCEED_LIMIT")] ExceedLimit = 303,
    [pbr::OriginalName("ErrorEErrorCode_OVER_TIME")] OverTime = 304,
    [pbr::OriginalName("ErrorEErrorCode_SERVER_ERROR")] ServerError = 305,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_NOT_IN_LIST")] SkillNotInList = 400,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_NOT_COOLDOWN")] SkillNotCooldown = 401,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_TARGET_NOT_EXIST")] SkillTargetNotExist = 402,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_ANOTHER_CASTING")] SkillAnotherCasting = 403,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_OUT_OF_DISTANCE")] SkillOutOfDistance = 404,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_TARGET_CAMP_NOT_MATCH")] SkillTargetCampNotMatch = 405,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_INVALID_DIRECTION")] SkillInvalidDirection = 406,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_NOT_IN_SELECT_SHAPE")] SkillNotInSelectShape = 407,
    [pbr::OriginalName("ErrorEErrorCode_SKILL_ENERGY_NOT_ENOUGH")] SkillEnergyNotEnough = 408,
    [pbr::OriginalName("ErrorEErrorCode_DIALOG_NODE_NOT_CHOOSEN")] DialogNodeNotChoosen = 500,
    [pbr::OriginalName("ErrorEErrorCode_DIALOG_NOT_FINISH")] DialogNotFinish = 501,
    [pbr::OriginalName("ErrorEErrorCode_DIALOG_HAS_FINISH")] DialogHasFinish = 502,
    [pbr::OriginalName("ErrorEErrorCode_QUEST_STAGE_NOT_FINISHED")] QuestStageNotFinished = 503,
    [pbr::OriginalName("ErrorEErrorCode_QUEST_NOT_DOING")] QuestNotDoing = 504,
    [pbr::OriginalName("ErrorEErrorCode_QUEST_STAGE_NOT_DOING")] QuestStageNotDoing = 505,
    [pbr::OriginalName("ErrorEErrorCode_QUEST_HAS_ACCEPTED")] QuestHasAccepted = 506,
    [pbr::OriginalName("ErrorEErrorCode_MAP_OBJECT_NOT_EXIST")] MapObjectNotExist = 600,
    [pbr::OriginalName("ErrorEErrorCode_INTERACTION_OBJECT_NOT_SUPPORT_OPERATION")] InteractionObjectNotSupportOperation = 601,
    [pbr::OriginalName("ErrorEErrorCode_HAS_NOT_EQUIP")] HasNotEquip = 602,
    [pbr::OriginalName("ErrorEErrorCode_HANDHELD_EQUIP_ID_NOT_MATCH")] HandheldEquipIdNotMatch = 603,
    [pbr::OriginalName("ErrorEErrorCode_NOT_AVAILABLE_SUIT_ID")] NotAvailableSuitId = 604,
    [pbr::OriginalName("ErrorEErrorCode_NO_INTERACTION_COMPONENT")] NoInteractionComponent = 605,
    [pbr::OriginalName("ErrorEErrorCode_HAS_INTERACTED")] HasInteracted = 606,
    [pbr::OriginalName("ErrorEErrorCode_VIALITY_NOT_ENOUGH")] VialityNotEnough = 607,
    [pbr::OriginalName("ErrorEErrorCode_PLAYER_SESSION_NOT_EXIST")] PlayerSessionNotExist = 608,
    [pbr::OriginalName("ErrorEErrorCode_PLAYER_SESSION_WORLD_PLAYER_NOT_INIT")] PlayerSessionWorldPlayerNotInit = 609,
    [pbr::OriginalName("ErrorEErrorCode_MAP_NOT_EXIST")] MapNotExist = 610,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_TYPE_ERROR")] MailTypeError = 700,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_NOT_EXITST")] MailNotExitst = 701,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_HAVE_DELETED")] MailHaveDeleted = 702,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_AWARD_HAVE_RECEIVED")] MailAwardHaveReceived = 703,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_OPERATE_TYPE_ERROR")] MailOperateTypeError = 704,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_CONDITION_NOT_MEET")] MailConditionNotMeet = 705,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_STATE_ERROR")] MailStateError = 706,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_NO_AWARD")] MailNoAward = 707,
    [pbr::OriginalName("ErrorEErrorCode_MAIL_BOX_IS_FULL")] MailBoxIsFull = 708,
    [pbr::OriginalName("ErrorEErrorCode_PROP_SCORE_NOT_BIGGER_THAN")] PropScoreNotBiggerThan = 800,
    [pbr::OriginalName("ErrorEErrorCode_NOT_WEAR_CLOTHES")] NotWearClothes = 801,
    [pbr::OriginalName("ErrorEErrorCode_NOT_WEAR_SUIT")] NotWearSuit = 802,
    [pbr::OriginalName("ErrorEErrorCode_SUIT_NOT_UNLOCK")] SuitNotUnlock = 900,
    [pbr::OriginalName("ErrorEErrorCode_SUIT_COMPONENT_NOT_UNLOCK")] SuitComponentNotUnlock = 901,
    [pbr::OriginalName("ErrorEErrorCode_SUIT_STATE_ERROR")] SuitStateError = 902,
    [pbr::OriginalName("ErrorEErrorCode_SUIT_COMPONENT_STATE_ERROR")] SuitComponentStateError = 903,
    [pbr::OriginalName("ErrorEErrorCode_SUIT_COMPONENT_NO_NEED_LEARN")] SuitComponentNoNeedLearn = 904,
    [pbr::OriginalName("ErrorEErrorCode_STORE_NOT_ENABLED")] StoreNotEnabled = 1000,
    [pbr::OriginalName("ErrorEErrorCode_SHELF_NOT_ENABLED")] ShelfNotEnabled = 1001,
    [pbr::OriginalName("ErrorEErrorCode_GOODS_NOT_ENABLED")] GoodsNotEnabled = 1002,
    [pbr::OriginalName("ErrorEErrorCode_GOODS_NOT_IN_CUR_REFRESH")] GoodsNotInCurRefresh = 1003,
    [pbr::OriginalName("ErrorEErrorCode_RETRY")] Retry = 1100,
    [pbr::OriginalName("ErrorEErrorCode_NOT_COOLDOWN")] NotCooldown = 1101,
    [pbr::OriginalName("ErrorEErrorCode_SELFIE_UNLOCK")] SelfieUnlock = 1200,
    [pbr::OriginalName("ErrorEErrorCode_SELFIE_ALREADY_UNLOCK")] SelfieAlreadyUnlock = 1201,
    [pbr::OriginalName("ErrorEErrorCode_SELFIE_LACK_STARTS")] SelfieLackStarts = 1202,
    [pbr::OriginalName("ErrorEErrorCode_SELFIE_HAD_REWARD")] SelfieHadReward = 1203,
  }

  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 ItemEItemFunctionType {
    [pbr::OriginalName("ItemEItemFunctionType_REPLACE_HANDHELD")] ReplaceHandheld = 0,
    [pbr::OriginalName("ItemEItemFunctionType_USE_DESIGN_DRAWING")] UseDesignDrawing = 1,
  }

  public enum LimitENamespace {
    [pbr::OriginalName("LimitENamespace_ITEM_DAILY_OBTAIN")] ItemDailyObtain = 1,
    [pbr::OriginalName("LimitENamespace_TREASURE_DAILY_USE")] TreasureDailyUse = 2,
    [pbr::OriginalName("LimitENamespace_STORE_GOODS_LIMIT_BUY")] StoreGoodsLimitBuy = 3,
  }

  public enum MailEMailType {
    [pbr::OriginalName("MailEMailType_GLOBAL")] Global = 0,
    [pbr::OriginalName("MailEMailType_SYSTEM")] System = 1,
  }

  public enum RoleEGenderType {
    [pbr::OriginalName("RoleEGenderType_MALE")] Male = 1,
    [pbr::OriginalName("RoleEGenderType_FEMALE")] Female = 2,
  }

  public enum RoleEProfession {
    [pbr::OriginalName("RoleEProfession_TEST_PROFESSION")] TestProfession = 1,
  }

  public enum TestDemoEnum {
    [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_D")] D = 3,
  }

  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 TestAudioType {
    [pbr::OriginalName("TestAudioType_UNKNOWN")] Unknown = 0,
    [pbr::OriginalName("TestAudioType_ACC")] Acc = 1,
    [pbr::OriginalName("TestAudioType_AIFF")] Aiff = 2,
  }

  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
  /// <summary>
  /// luban internal types begin
  /// </summary>
  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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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_;
      location_ = other.location_ != null ? other.location_.Clone() : null;
      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 "location" field.</summary>
    public const int LocationFieldNumber = 6;
    private global::Cfg.Vector3 location_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.Vector3 Location {
      get { return location_; }
      set {
        location_ = value;
      }
    }

    /// <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 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 (!object.Equals(Location, other.Location)) 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 (location_ != null) hash ^= Location.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 (location_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Location);
      }
      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 (location_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Location);
      }
      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 (location_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Location);
      }
      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.location_ != null) {
        if (location_ == null) {
          Location = new global::Cfg.Vector3();
        }
        Location.MergeFrom(other.Location);
      }
      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: {
            if (location_ == null) {
              Location = new global::Cfg.Vector3();
            }
            input.ReadMessage(Location);
            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: {
            if (location_ == null) {
              Location = new global::Cfg.Vector3();
            }
            input.ReadMessage(Location);
            break;
          }
          case 61: {
            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.ConfigReflection.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 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 BlueprintClazz : pb::IMessage<BlueprintClazz>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BlueprintClazz> _parser = new pb::MessageParser<BlueprintClazz>(() => new BlueprintClazz());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BlueprintClazz> Parser { get { return _parser; } }

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintClazz(BlueprintClazz other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.Interface:
          Interface = other.Interface.Clone();
          break;
        case ValueOneofCase.NormalClazz:
          NormalClazz = other.NormalClazz.Clone();
          break;
        case ValueOneofCase.EnumClazz:
          EnumClazz = other.EnumClazz.Clone();
          break;
      }

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      Interface = 1,
      NormalClazz = 2,
      EnumClazz = 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 BlueprintClazz);
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintClazz other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.Interface:
          if (Interface == null) {
            Interface = new global::Cfg.BlueprintInterface();
          }
          Interface.MergeFrom(other.Interface);
          break;
        case ValueOneofCase.NormalClazz:
          if (NormalClazz == null) {
            NormalClazz = new global::Cfg.BlueprintNormalClazz();
          }
          NormalClazz.MergeFrom(other.NormalClazz);
          break;
        case ValueOneofCase.EnumClazz:
          if (EnumClazz == null) {
            EnumClazz = new global::Cfg.BlueprintEnumClazz();
          }
          EnumClazz.MergeFrom(other.EnumClazz);
          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.BlueprintInterface subBuilder = new global::Cfg.BlueprintInterface();
            if (valueCase_ == ValueOneofCase.Interface) {
              subBuilder.MergeFrom(Interface);
            }
            input.ReadMessage(subBuilder);
            Interface = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.BlueprintNormalClazz subBuilder = new global::Cfg.BlueprintNormalClazz();
            if (valueCase_ == ValueOneofCase.NormalClazz) {
              subBuilder.MergeFrom(NormalClazz);
            }
            input.ReadMessage(subBuilder);
            NormalClazz = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.BlueprintEnumClazz subBuilder = new global::Cfg.BlueprintEnumClazz();
            if (valueCase_ == ValueOneofCase.EnumClazz) {
              subBuilder.MergeFrom(EnumClazz);
            }
            input.ReadMessage(subBuilder);
            EnumClazz = 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.BlueprintInterface subBuilder = new global::Cfg.BlueprintInterface();
            if (valueCase_ == ValueOneofCase.Interface) {
              subBuilder.MergeFrom(Interface);
            }
            input.ReadMessage(subBuilder);
            Interface = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.BlueprintNormalClazz subBuilder = new global::Cfg.BlueprintNormalClazz();
            if (valueCase_ == ValueOneofCase.NormalClazz) {
              subBuilder.MergeFrom(NormalClazz);
            }
            input.ReadMessage(subBuilder);
            NormalClazz = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.BlueprintEnumClazz subBuilder = new global::Cfg.BlueprintEnumClazz();
            if (valueCase_ == ValueOneofCase.EnumClazz) {
              subBuilder.MergeFrom(EnumClazz);
            }
            input.ReadMessage(subBuilder);
            EnumClazz = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintMethod(BlueprintMethod other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.AbstraceMethod:
          AbstraceMethod = other.AbstraceMethod.Clone();
          break;
        case ValueOneofCase.ExternalMethod:
          ExternalMethod = other.ExternalMethod.Clone();
          break;
        case ValueOneofCase.BlueprintMethod_:
          BlueprintMethod_ = other.BlueprintMethod_.Clone();
          break;
      }

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      AbstraceMethod = 1,
      ExternalMethod = 2,
      BlueprintMethod_ = 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 BlueprintMethod);
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintMethod other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.AbstraceMethod:
          if (AbstraceMethod == null) {
            AbstraceMethod = new global::Cfg.BlueprintAbstraceMethod();
          }
          AbstraceMethod.MergeFrom(other.AbstraceMethod);
          break;
        case ValueOneofCase.ExternalMethod:
          if (ExternalMethod == null) {
            ExternalMethod = new global::Cfg.BlueprintExternalMethod();
          }
          ExternalMethod.MergeFrom(other.ExternalMethod);
          break;
        case ValueOneofCase.BlueprintMethod_:
          if (BlueprintMethod_ == null) {
            BlueprintMethod_ = new global::Cfg.BlueprintBlueprintMethod();
          }
          BlueprintMethod_.MergeFrom(other.BlueprintMethod_);
          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.BlueprintAbstraceMethod subBuilder = new global::Cfg.BlueprintAbstraceMethod();
            if (valueCase_ == ValueOneofCase.AbstraceMethod) {
              subBuilder.MergeFrom(AbstraceMethod);
            }
            input.ReadMessage(subBuilder);
            AbstraceMethod = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.BlueprintExternalMethod subBuilder = new global::Cfg.BlueprintExternalMethod();
            if (valueCase_ == ValueOneofCase.ExternalMethod) {
              subBuilder.MergeFrom(ExternalMethod);
            }
            input.ReadMessage(subBuilder);
            ExternalMethod = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.BlueprintBlueprintMethod subBuilder = new global::Cfg.BlueprintBlueprintMethod();
            if (valueCase_ == ValueOneofCase.BlueprintMethod_) {
              subBuilder.MergeFrom(BlueprintMethod_);
            }
            input.ReadMessage(subBuilder);
            BlueprintMethod_ = 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.BlueprintAbstraceMethod subBuilder = new global::Cfg.BlueprintAbstraceMethod();
            if (valueCase_ == ValueOneofCase.AbstraceMethod) {
              subBuilder.MergeFrom(AbstraceMethod);
            }
            input.ReadMessage(subBuilder);
            AbstraceMethod = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.BlueprintExternalMethod subBuilder = new global::Cfg.BlueprintExternalMethod();
            if (valueCase_ == ValueOneofCase.ExternalMethod) {
              subBuilder.MergeFrom(ExternalMethod);
            }
            input.ReadMessage(subBuilder);
            ExternalMethod = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.BlueprintBlueprintMethod subBuilder = new global::Cfg.BlueprintBlueprintMethod();
            if (valueCase_ == ValueOneofCase.BlueprintMethod_) {
              subBuilder.MergeFrom(BlueprintMethod_);
            }
            input.ReadMessage(subBuilder);
            BlueprintMethod_ = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintParamInfo Clone() {
      return new BlueprintParamInfo(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 "type" field.</summary>
    public const int TypeFieldNumber = 2;
    private readonly static string TypeDefaultValue = "";

    private string type_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Type {
      get { return type_ ?? TypeDefaultValue; }
      set {
        type_ = pb::ProtoPreconditions.CheckNotNull(value, "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 type_ != null; }
    }
    /// <summary>Clears the value of the "type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearType() {
      type_ = null;
    }

    /// <summary>Field number for the "is_ref" field.</summary>
    public const int IsRefFieldNumber = 3;
    private readonly static bool IsRefDefaultValue = false;

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintParamInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Type != other.Type) return false;
      if (IsRef != other.IsRef) 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 (HasType) hash ^= Type.GetHashCode();
      if (HasIsRef) hash ^= IsRef.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 (HasType) {
        output.WriteRawTag(18);
        output.WriteString(Type);
      }
      if (HasIsRef) {
        output.WriteRawTag(24);
        output.WriteBool(IsRef);
      }
      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 (HasType) {
        output.WriteRawTag(18);
        output.WriteString(Type);
      }
      if (HasIsRef) {
        output.WriteRawTag(24);
        output.WriteBool(IsRef);
      }
      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 (HasType) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Type);
      }
      if (HasIsRef) {
        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(BlueprintParamInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasType) {
        Type = other.Type;
      }
      if (other.HasIsRef) {
        IsRef = other.IsRef;
      }
      _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: {
            Type = input.ReadString();
            break;
          }
          case 24: {
            IsRef = 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 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Type = input.ReadString();
            break;
          }
          case 24: {
            IsRef = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintAbstraceMethod Clone() {
      return new BlueprintAbstraceMethod(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 "return_type" field.</summary>
    public const int ReturnTypeFieldNumber = 4;
    private readonly static string ReturnTypeDefaultValue = "";

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintAbstraceMethod 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 (ReturnType != other.ReturnType) return false;
      if(!parameters_.Equals(other.parameters_)) 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 (HasReturnType) hash ^= ReturnType.GetHashCode();
      hash ^= parameters_.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 (HasReturnType) {
        output.WriteRawTag(34);
        output.WriteString(ReturnType);
      }
      parameters_.WriteTo(output, _repeated_parameters_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 (HasIsStatic) {
        output.WriteRawTag(24);
        output.WriteBool(IsStatic);
      }
      if (HasReturnType) {
        output.WriteRawTag(34);
        output.WriteString(ReturnType);
      }
      parameters_.WriteTo(ref output, _repeated_parameters_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 (HasIsStatic) {
        size += 1 + 1;
      }
      if (HasReturnType) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ReturnType);
      }
      size += parameters_.CalculateSize(_repeated_parameters_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintAbstraceMethod 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.HasReturnType) {
        ReturnType = other.ReturnType;
      }
      parameters_.Add(other.parameters_);
      _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 34: {
            ReturnType = input.ReadString();
            break;
          }
          case 42: {
            parameters_.AddEntriesFrom(input, _repeated_parameters_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 24: {
            IsStatic = input.ReadBool();
            break;
          }
          case 34: {
            ReturnType = input.ReadString();
            break;
          }
          case 42: {
            parameters_.AddEntriesFrom(ref input, _repeated_parameters_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintExternalMethod Clone() {
      return new BlueprintExternalMethod(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 "return_type" field.</summary>
    public const int ReturnTypeFieldNumber = 4;
    private readonly static string ReturnTypeDefaultValue = "";

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintExternalMethod 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 (ReturnType != other.ReturnType) return false;
      if(!parameters_.Equals(other.parameters_)) 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 (HasReturnType) hash ^= ReturnType.GetHashCode();
      hash ^= parameters_.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 (HasReturnType) {
        output.WriteRawTag(34);
        output.WriteString(ReturnType);
      }
      parameters_.WriteTo(output, _repeated_parameters_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 (HasIsStatic) {
        output.WriteRawTag(24);
        output.WriteBool(IsStatic);
      }
      if (HasReturnType) {
        output.WriteRawTag(34);
        output.WriteString(ReturnType);
      }
      parameters_.WriteTo(ref output, _repeated_parameters_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 (HasIsStatic) {
        size += 1 + 1;
      }
      if (HasReturnType) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ReturnType);
      }
      size += parameters_.CalculateSize(_repeated_parameters_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintExternalMethod 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.HasReturnType) {
        ReturnType = other.ReturnType;
      }
      parameters_.Add(other.parameters_);
      _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 34: {
            ReturnType = input.ReadString();
            break;
          }
          case 42: {
            parameters_.AddEntriesFrom(input, _repeated_parameters_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 24: {
            IsStatic = input.ReadBool();
            break;
          }
          case 34: {
            ReturnType = input.ReadString();
            break;
          }
          case 42: {
            parameters_.AddEntriesFrom(ref input, _repeated_parameters_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintBlueprintMethod Clone() {
      return new BlueprintBlueprintMethod(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 "return_type" field.</summary>
    public const int ReturnTypeFieldNumber = 4;
    private readonly static string ReturnTypeDefaultValue = "";

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintBlueprintMethod 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 (ReturnType != other.ReturnType) return false;
      if(!parameters_.Equals(other.parameters_)) 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 (HasReturnType) hash ^= ReturnType.GetHashCode();
      hash ^= parameters_.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 (HasReturnType) {
        output.WriteRawTag(34);
        output.WriteString(ReturnType);
      }
      parameters_.WriteTo(output, _repeated_parameters_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 (HasIsStatic) {
        output.WriteRawTag(24);
        output.WriteBool(IsStatic);
      }
      if (HasReturnType) {
        output.WriteRawTag(34);
        output.WriteString(ReturnType);
      }
      parameters_.WriteTo(ref output, _repeated_parameters_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 (HasIsStatic) {
        size += 1 + 1;
      }
      if (HasReturnType) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ReturnType);
      }
      size += parameters_.CalculateSize(_repeated_parameters_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintBlueprintMethod 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.HasReturnType) {
        ReturnType = other.ReturnType;
      }
      parameters_.Add(other.parameters_);
      _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 34: {
            ReturnType = input.ReadString();
            break;
          }
          case 42: {
            parameters_.AddEntriesFrom(input, _repeated_parameters_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 24: {
            IsStatic = input.ReadBool();
            break;
          }
          case 34: {
            ReturnType = input.ReadString();
            break;
          }
          case 42: {
            parameters_.AddEntriesFrom(ref input, _repeated_parameters_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintInterface Clone() {
      return new BlueprintInterface(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 "parents" field.</summary>
    public const int ParentsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.BlueprintClazz> _repeated_parents_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.BlueprintClazz.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BlueprintClazz> parents_ = new pbc::RepeatedField<global::Cfg.BlueprintClazz>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BlueprintClazz> Parents {
      get { return parents_; }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintInterface 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(!parents_.Equals(other.parents_)) return false;
      if(!methods_.Equals(other.methods_)) 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();
      hash ^= parents_.GetHashCode();
      hash ^= methods_.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);
      }
      parents_.WriteTo(output, _repeated_parents_codec);
      methods_.WriteTo(output, _repeated_methods_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);
      }
      parents_.WriteTo(ref output, _repeated_parents_codec);
      methods_.WriteTo(ref output, _repeated_methods_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);
      }
      size += parents_.CalculateSize(_repeated_parents_codec);
      size += methods_.CalculateSize(_repeated_methods_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintInterface other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      parents_.Add(other.parents_);
      methods_.Add(other.methods_);
      _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: {
            parents_.AddEntriesFrom(input, _repeated_parents_codec);
            break;
          }
          case 34: {
            methods_.AddEntriesFrom(input, _repeated_methods_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: {
            parents_.AddEntriesFrom(ref input, _repeated_parents_codec);
            break;
          }
          case 34: {
            methods_.AddEntriesFrom(ref input, _repeated_methods_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintNormalClazz(BlueprintNormalClazz other) : this() {
      _hasBits0 = other._hasBits0;
      name_ = other.name_;
      desc_ = other.desc_;
      parents_ = other.parents_.Clone();
      methods_ = other.methods_.Clone();
      isAbstract_ = other.isAbstract_;
      fields_ = other.fields_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintNormalClazz Clone() {
      return new BlueprintNormalClazz(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 "parents" field.</summary>
    public const int ParentsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.BlueprintClazz> _repeated_parents_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.BlueprintClazz.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BlueprintClazz> parents_ = new pbc::RepeatedField<global::Cfg.BlueprintClazz>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BlueprintClazz> Parents {
      get { return parents_; }
    }

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

    /// <summary>Field number for the "is_abstract" field.</summary>
    public const int IsAbstractFieldNumber = 5;
    private readonly static bool IsAbstractDefaultValue = false;

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

    /// <summary>Field number for the "fields" field.</summary>
    public const int FieldsFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Cfg.BlueprintField> _repeated_fields_codec
        = pb::FieldCodec.ForMessage(50, global::Cfg.BlueprintField.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BlueprintField> fields_ = new pbc::RepeatedField<global::Cfg.BlueprintField>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BlueprintField> Fields {
      get { return fields_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintNormalClazz 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(!parents_.Equals(other.parents_)) return false;
      if(!methods_.Equals(other.methods_)) return false;
      if (IsAbstract != other.IsAbstract) return false;
      if(!fields_.Equals(other.fields_)) 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();
      hash ^= parents_.GetHashCode();
      hash ^= methods_.GetHashCode();
      if (HasIsAbstract) hash ^= IsAbstract.GetHashCode();
      hash ^= fields_.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);
      }
      parents_.WriteTo(output, _repeated_parents_codec);
      methods_.WriteTo(output, _repeated_methods_codec);
      if (HasIsAbstract) {
        output.WriteRawTag(40);
        output.WriteBool(IsAbstract);
      }
      fields_.WriteTo(output, _repeated_fields_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);
      }
      parents_.WriteTo(ref output, _repeated_parents_codec);
      methods_.WriteTo(ref output, _repeated_methods_codec);
      if (HasIsAbstract) {
        output.WriteRawTag(40);
        output.WriteBool(IsAbstract);
      }
      fields_.WriteTo(ref output, _repeated_fields_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);
      }
      size += parents_.CalculateSize(_repeated_parents_codec);
      size += methods_.CalculateSize(_repeated_methods_codec);
      if (HasIsAbstract) {
        size += 1 + 1;
      }
      size += fields_.CalculateSize(_repeated_fields_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintNormalClazz other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      parents_.Add(other.parents_);
      methods_.Add(other.methods_);
      if (other.HasIsAbstract) {
        IsAbstract = other.IsAbstract;
      }
      fields_.Add(other.fields_);
      _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: {
            parents_.AddEntriesFrom(input, _repeated_parents_codec);
            break;
          }
          case 34: {
            methods_.AddEntriesFrom(input, _repeated_methods_codec);
            break;
          }
          case 40: {
            IsAbstract = input.ReadBool();
            break;
          }
          case 50: {
            fields_.AddEntriesFrom(input, _repeated_fields_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: {
            parents_.AddEntriesFrom(ref input, _repeated_parents_codec);
            break;
          }
          case 34: {
            methods_.AddEntriesFrom(ref input, _repeated_methods_codec);
            break;
          }
          case 40: {
            IsAbstract = input.ReadBool();
            break;
          }
          case 50: {
            fields_.AddEntriesFrom(ref input, _repeated_fields_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintField Clone() {
      return new BlueprintField(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 "type" field.</summary>
    public const int TypeFieldNumber = 2;
    private readonly static string TypeDefaultValue = "";

    private string type_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Type {
      get { return type_ ?? TypeDefaultValue; }
      set {
        type_ = pb::ProtoPreconditions.CheckNotNull(value, "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 type_ != null; }
    }
    /// <summary>Clears the value of the "type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearType() {
      type_ = 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;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintField other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Type != other.Type) 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 (HasName) hash ^= Name.GetHashCode();
      if (HasType) hash ^= Type.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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (HasType) {
        output.WriteRawTag(18);
        output.WriteString(Type);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (HasType) {
        output.WriteRawTag(18);
        output.WriteString(Type);
      }
      if (HasDesc) {
        output.WriteRawTag(26);
        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 (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HasType) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Type);
      }
      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(BlueprintField other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasType) {
        Type = other.Type;
      }
      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 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Type = input.ReadString();
            break;
          }
          case 26: {
            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 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Type = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintEnumClazz Clone() {
      return new BlueprintEnumClazz(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 "parents" field.</summary>
    public const int ParentsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.BlueprintClazz> _repeated_parents_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.BlueprintClazz.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BlueprintClazz> parents_ = new pbc::RepeatedField<global::Cfg.BlueprintClazz>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BlueprintClazz> Parents {
      get { return parents_; }
    }

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintEnumClazz 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(!parents_.Equals(other.parents_)) return false;
      if(!methods_.Equals(other.methods_)) return false;
      if(!enums_.Equals(other.enums_)) 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();
      hash ^= parents_.GetHashCode();
      hash ^= methods_.GetHashCode();
      hash ^= enums_.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);
      }
      parents_.WriteTo(output, _repeated_parents_codec);
      methods_.WriteTo(output, _repeated_methods_codec);
      enums_.WriteTo(output, _repeated_enums_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);
      }
      parents_.WriteTo(ref output, _repeated_parents_codec);
      methods_.WriteTo(ref output, _repeated_methods_codec);
      enums_.WriteTo(ref output, _repeated_enums_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);
      }
      size += parents_.CalculateSize(_repeated_parents_codec);
      size += methods_.CalculateSize(_repeated_methods_codec);
      size += enums_.CalculateSize(_repeated_enums_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BlueprintEnumClazz other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      parents_.Add(other.parents_);
      methods_.Add(other.methods_);
      enums_.Add(other.enums_);
      _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: {
            parents_.AddEntriesFrom(input, _repeated_parents_codec);
            break;
          }
          case 34: {
            methods_.AddEntriesFrom(input, _repeated_methods_codec);
            break;
          }
          case 42: {
            enums_.AddEntriesFrom(input, _repeated_enums_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: {
            parents_.AddEntriesFrom(ref input, _repeated_parents_codec);
            break;
          }
          case 34: {
            methods_.AddEntriesFrom(ref input, _repeated_methods_codec);
            break;
          }
          case 42: {
            enums_.AddEntriesFrom(ref input, _repeated_enums_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BlueprintEnumField Clone() {
      return new BlueprintEnumField(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 "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 & 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 BlueprintEnumField);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintEnumField other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) 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 (HasName) hash ^= Name.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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      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 (HasName) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      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 (HasName) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      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(BlueprintEnumField other) {
      if (other == null) {
        return;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      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: {
            Name = input.ReadString();
            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 10: {
            Name = input.ReadString();
            break;
          }
          case 16: {
            Value = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BonusDropInfo Clone() {
      return new BonusDropInfo(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 "client_show_items" field.</summary>
    public const int ClientShowItemsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Cfg.BonusShowItemInfo> _repeated_clientShowItems_codec
        = pb::FieldCodec.ForMessage(26, global::Cfg.BonusShowItemInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusShowItemInfo> clientShowItems_ = new pbc::RepeatedField<global::Cfg.BonusShowItemInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusShowItemInfo> ClientShowItems {
      get { return clientShowItems_; }
    }

    /// <summary>Field number for the "bonus" field.</summary>
    public const int BonusFieldNumber = 4;
    private global::Cfg.BonusBonus bonus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.BonusBonus Bonus {
      get { return bonus_; }
      set {
        bonus_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusDropInfo 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(!clientShowItems_.Equals(other.clientShowItems_)) return false;
      if (!object.Equals(Bonus, other.Bonus)) 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();
      hash ^= clientShowItems_.GetHashCode();
      if (bonus_ != null) hash ^= Bonus.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);
      }
      clientShowItems_.WriteTo(output, _repeated_clientShowItems_codec);
      if (bonus_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Bonus);
      }
      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);
      }
      clientShowItems_.WriteTo(ref output, _repeated_clientShowItems_codec);
      if (bonus_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Bonus);
      }
      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);
      }
      size += clientShowItems_.CalculateSize(_repeated_clientShowItems_codec);
      if (bonus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bonus);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusDropInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      clientShowItems_.Add(other.clientShowItems_);
      if (other.bonus_ != null) {
        if (bonus_ == null) {
          Bonus = new global::Cfg.BonusBonus();
        }
        Bonus.MergeFrom(other.Bonus);
      }
      _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 26: {
            clientShowItems_.AddEntriesFrom(input, _repeated_clientShowItems_codec);
            break;
          }
          case 34: {
            if (bonus_ == null) {
              Bonus = new global::Cfg.BonusBonus();
            }
            input.ReadMessage(Bonus);
            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 26: {
            clientShowItems_.AddEntriesFrom(ref input, _repeated_clientShowItems_codec);
            break;
          }
          case 34: {
            if (bonus_ == null) {
              Bonus = new global::Cfg.BonusBonus();
            }
            input.ReadMessage(Bonus);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "item_num" field.</summary>
    public const int ItemNumFieldNumber = 2;
    private readonly static long ItemNumDefaultValue = 0L;

    private long itemNum_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long ItemNum {
      get { if ((_hasBits0 & 2) != 0) { return itemNum_; } else { return ItemNumDefaultValue; } }
      set {
        _hasBits0 |= 2;
        itemNum_ = value;
      }
    }
    /// <summary>Gets whether the "item_num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasItemNum {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "item_num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearItemNum() {
      _hasBits0 &= ~2;
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusShowItemInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      if (other.HasItemNum) {
        ItemNum = other.ItemNum;
      }
      _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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            ItemNum = 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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            ItemNum = input.ReadInt64();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BonusBonus(BonusBonus other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.OneItem:
          OneItem = other.OneItem.Clone();
          break;
        case ValueOneofCase.OneItems:
          OneItems = other.OneItems.Clone();
          break;
        case ValueOneofCase.Item:
          Item = other.Item.Clone();
          break;
        case ValueOneofCase.Items:
          Items = other.Items.Clone();
          break;
        case ValueOneofCase.CoefficientItem:
          CoefficientItem = other.CoefficientItem.Clone();
          break;
        case ValueOneofCase.WeightItems:
          WeightItems = other.WeightItems.Clone();
          break;
        case ValueOneofCase.ProbabilityItems:
          ProbabilityItems = other.ProbabilityItems.Clone();
          break;
        case ValueOneofCase.MultiBonus:
          MultiBonus = other.MultiBonus.Clone();
          break;
        case ValueOneofCase.ProbabilityBonus:
          ProbabilityBonus = other.ProbabilityBonus.Clone();
          break;
        case ValueOneofCase.WeightBonus:
          WeightBonus = other.WeightBonus.Clone();
          break;
        case ValueOneofCase.DropBonus:
          DropBonus = other.DropBonus.Clone();
          break;
      }

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

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

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

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

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

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

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

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      OneItem = 1,
      OneItems = 2,
      Item = 3,
      Items = 4,
      CoefficientItem = 5,
      WeightItems = 6,
      ProbabilityItems = 7,
      MultiBonus = 8,
      ProbabilityBonus = 9,
      WeightBonus = 10,
      DropBonus = 11,
    }
    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 BonusBonus);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusBonus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(OneItem, other.OneItem)) return false;
      if (!object.Equals(OneItems, other.OneItems)) return false;
      if (!object.Equals(Item, other.Item)) return false;
      if (!object.Equals(Items, other.Items)) return false;
      if (!object.Equals(CoefficientItem, other.CoefficientItem)) return false;
      if (!object.Equals(WeightItems, other.WeightItems)) return false;
      if (!object.Equals(ProbabilityItems, other.ProbabilityItems)) return false;
      if (!object.Equals(MultiBonus, other.MultiBonus)) return false;
      if (!object.Equals(ProbabilityBonus, other.ProbabilityBonus)) return false;
      if (!object.Equals(WeightBonus, other.WeightBonus)) return false;
      if (!object.Equals(DropBonus, other.DropBonus)) 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.OneItem) hash ^= OneItem.GetHashCode();
      if (valueCase_ == ValueOneofCase.OneItems) hash ^= OneItems.GetHashCode();
      if (valueCase_ == ValueOneofCase.Item) hash ^= Item.GetHashCode();
      if (valueCase_ == ValueOneofCase.Items) hash ^= Items.GetHashCode();
      if (valueCase_ == ValueOneofCase.CoefficientItem) hash ^= CoefficientItem.GetHashCode();
      if (valueCase_ == ValueOneofCase.WeightItems) hash ^= WeightItems.GetHashCode();
      if (valueCase_ == ValueOneofCase.ProbabilityItems) hash ^= ProbabilityItems.GetHashCode();
      if (valueCase_ == ValueOneofCase.MultiBonus) hash ^= MultiBonus.GetHashCode();
      if (valueCase_ == ValueOneofCase.ProbabilityBonus) hash ^= ProbabilityBonus.GetHashCode();
      if (valueCase_ == ValueOneofCase.WeightBonus) hash ^= WeightBonus.GetHashCode();
      if (valueCase_ == ValueOneofCase.DropBonus) hash ^= DropBonus.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.OneItem) {
        output.WriteRawTag(10);
        output.WriteMessage(OneItem);
      }
      if (valueCase_ == ValueOneofCase.OneItems) {
        output.WriteRawTag(18);
        output.WriteMessage(OneItems);
      }
      if (valueCase_ == ValueOneofCase.Item) {
        output.WriteRawTag(26);
        output.WriteMessage(Item);
      }
      if (valueCase_ == ValueOneofCase.Items) {
        output.WriteRawTag(34);
        output.WriteMessage(Items);
      }
      if (valueCase_ == ValueOneofCase.CoefficientItem) {
        output.WriteRawTag(42);
        output.WriteMessage(CoefficientItem);
      }
      if (valueCase_ == ValueOneofCase.WeightItems) {
        output.WriteRawTag(50);
        output.WriteMessage(WeightItems);
      }
      if (valueCase_ == ValueOneofCase.ProbabilityItems) {
        output.WriteRawTag(58);
        output.WriteMessage(ProbabilityItems);
      }
      if (valueCase_ == ValueOneofCase.MultiBonus) {
        output.WriteRawTag(66);
        output.WriteMessage(MultiBonus);
      }
      if (valueCase_ == ValueOneofCase.ProbabilityBonus) {
        output.WriteRawTag(74);
        output.WriteMessage(ProbabilityBonus);
      }
      if (valueCase_ == ValueOneofCase.WeightBonus) {
        output.WriteRawTag(82);
        output.WriteMessage(WeightBonus);
      }
      if (valueCase_ == ValueOneofCase.DropBonus) {
        output.WriteRawTag(90);
        output.WriteMessage(DropBonus);
      }
      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.OneItem) {
        output.WriteRawTag(10);
        output.WriteMessage(OneItem);
      }
      if (valueCase_ == ValueOneofCase.OneItems) {
        output.WriteRawTag(18);
        output.WriteMessage(OneItems);
      }
      if (valueCase_ == ValueOneofCase.Item) {
        output.WriteRawTag(26);
        output.WriteMessage(Item);
      }
      if (valueCase_ == ValueOneofCase.Items) {
        output.WriteRawTag(34);
        output.WriteMessage(Items);
      }
      if (valueCase_ == ValueOneofCase.CoefficientItem) {
        output.WriteRawTag(42);
        output.WriteMessage(CoefficientItem);
      }
      if (valueCase_ == ValueOneofCase.WeightItems) {
        output.WriteRawTag(50);
        output.WriteMessage(WeightItems);
      }
      if (valueCase_ == ValueOneofCase.ProbabilityItems) {
        output.WriteRawTag(58);
        output.WriteMessage(ProbabilityItems);
      }
      if (valueCase_ == ValueOneofCase.MultiBonus) {
        output.WriteRawTag(66);
        output.WriteMessage(MultiBonus);
      }
      if (valueCase_ == ValueOneofCase.ProbabilityBonus) {
        output.WriteRawTag(74);
        output.WriteMessage(ProbabilityBonus);
      }
      if (valueCase_ == ValueOneofCase.WeightBonus) {
        output.WriteRawTag(82);
        output.WriteMessage(WeightBonus);
      }
      if (valueCase_ == ValueOneofCase.DropBonus) {
        output.WriteRawTag(90);
        output.WriteMessage(DropBonus);
      }
      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.OneItem) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OneItem);
      }
      if (valueCase_ == ValueOneofCase.OneItems) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OneItems);
      }
      if (valueCase_ == ValueOneofCase.Item) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
      }
      if (valueCase_ == ValueOneofCase.Items) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Items);
      }
      if (valueCase_ == ValueOneofCase.CoefficientItem) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CoefficientItem);
      }
      if (valueCase_ == ValueOneofCase.WeightItems) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WeightItems);
      }
      if (valueCase_ == ValueOneofCase.ProbabilityItems) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProbabilityItems);
      }
      if (valueCase_ == ValueOneofCase.MultiBonus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MultiBonus);
      }
      if (valueCase_ == ValueOneofCase.ProbabilityBonus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProbabilityBonus);
      }
      if (valueCase_ == ValueOneofCase.WeightBonus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WeightBonus);
      }
      if (valueCase_ == ValueOneofCase.DropBonus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DropBonus);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusBonus other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.OneItem:
          if (OneItem == null) {
            OneItem = new global::Cfg.BonusOneItem();
          }
          OneItem.MergeFrom(other.OneItem);
          break;
        case ValueOneofCase.OneItems:
          if (OneItems == null) {
            OneItems = new global::Cfg.BonusOneItems();
          }
          OneItems.MergeFrom(other.OneItems);
          break;
        case ValueOneofCase.Item:
          if (Item == null) {
            Item = new global::Cfg.BonusItem();
          }
          Item.MergeFrom(other.Item);
          break;
        case ValueOneofCase.Items:
          if (Items == null) {
            Items = new global::Cfg.BonusItems();
          }
          Items.MergeFrom(other.Items);
          break;
        case ValueOneofCase.CoefficientItem:
          if (CoefficientItem == null) {
            CoefficientItem = new global::Cfg.BonusCoefficientItem();
          }
          CoefficientItem.MergeFrom(other.CoefficientItem);
          break;
        case ValueOneofCase.WeightItems:
          if (WeightItems == null) {
            WeightItems = new global::Cfg.BonusWeightItems();
          }
          WeightItems.MergeFrom(other.WeightItems);
          break;
        case ValueOneofCase.ProbabilityItems:
          if (ProbabilityItems == null) {
            ProbabilityItems = new global::Cfg.BonusProbabilityItems();
          }
          ProbabilityItems.MergeFrom(other.ProbabilityItems);
          break;
        case ValueOneofCase.MultiBonus:
          if (MultiBonus == null) {
            MultiBonus = new global::Cfg.BonusMultiBonus();
          }
          MultiBonus.MergeFrom(other.MultiBonus);
          break;
        case ValueOneofCase.ProbabilityBonus:
          if (ProbabilityBonus == null) {
            ProbabilityBonus = new global::Cfg.BonusProbabilityBonus();
          }
          ProbabilityBonus.MergeFrom(other.ProbabilityBonus);
          break;
        case ValueOneofCase.WeightBonus:
          if (WeightBonus == null) {
            WeightBonus = new global::Cfg.BonusWeightBonus();
          }
          WeightBonus.MergeFrom(other.WeightBonus);
          break;
        case ValueOneofCase.DropBonus:
          if (DropBonus == null) {
            DropBonus = new global::Cfg.BonusDropBonus();
          }
          DropBonus.MergeFrom(other.DropBonus);
          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.BonusOneItem subBuilder = new global::Cfg.BonusOneItem();
            if (valueCase_ == ValueOneofCase.OneItem) {
              subBuilder.MergeFrom(OneItem);
            }
            input.ReadMessage(subBuilder);
            OneItem = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.BonusOneItems subBuilder = new global::Cfg.BonusOneItems();
            if (valueCase_ == ValueOneofCase.OneItems) {
              subBuilder.MergeFrom(OneItems);
            }
            input.ReadMessage(subBuilder);
            OneItems = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.BonusItem subBuilder = new global::Cfg.BonusItem();
            if (valueCase_ == ValueOneofCase.Item) {
              subBuilder.MergeFrom(Item);
            }
            input.ReadMessage(subBuilder);
            Item = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.BonusItems subBuilder = new global::Cfg.BonusItems();
            if (valueCase_ == ValueOneofCase.Items) {
              subBuilder.MergeFrom(Items);
            }
            input.ReadMessage(subBuilder);
            Items = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.BonusCoefficientItem subBuilder = new global::Cfg.BonusCoefficientItem();
            if (valueCase_ == ValueOneofCase.CoefficientItem) {
              subBuilder.MergeFrom(CoefficientItem);
            }
            input.ReadMessage(subBuilder);
            CoefficientItem = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.BonusWeightItems subBuilder = new global::Cfg.BonusWeightItems();
            if (valueCase_ == ValueOneofCase.WeightItems) {
              subBuilder.MergeFrom(WeightItems);
            }
            input.ReadMessage(subBuilder);
            WeightItems = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.BonusProbabilityItems subBuilder = new global::Cfg.BonusProbabilityItems();
            if (valueCase_ == ValueOneofCase.ProbabilityItems) {
              subBuilder.MergeFrom(ProbabilityItems);
            }
            input.ReadMessage(subBuilder);
            ProbabilityItems = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.BonusMultiBonus subBuilder = new global::Cfg.BonusMultiBonus();
            if (valueCase_ == ValueOneofCase.MultiBonus) {
              subBuilder.MergeFrom(MultiBonus);
            }
            input.ReadMessage(subBuilder);
            MultiBonus = subBuilder;
            break;
          }
          case 74: {
            global::Cfg.BonusProbabilityBonus subBuilder = new global::Cfg.BonusProbabilityBonus();
            if (valueCase_ == ValueOneofCase.ProbabilityBonus) {
              subBuilder.MergeFrom(ProbabilityBonus);
            }
            input.ReadMessage(subBuilder);
            ProbabilityBonus = subBuilder;
            break;
          }
          case 82: {
            global::Cfg.BonusWeightBonus subBuilder = new global::Cfg.BonusWeightBonus();
            if (valueCase_ == ValueOneofCase.WeightBonus) {
              subBuilder.MergeFrom(WeightBonus);
            }
            input.ReadMessage(subBuilder);
            WeightBonus = subBuilder;
            break;
          }
          case 90: {
            global::Cfg.BonusDropBonus subBuilder = new global::Cfg.BonusDropBonus();
            if (valueCase_ == ValueOneofCase.DropBonus) {
              subBuilder.MergeFrom(DropBonus);
            }
            input.ReadMessage(subBuilder);
            DropBonus = 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.BonusOneItem subBuilder = new global::Cfg.BonusOneItem();
            if (valueCase_ == ValueOneofCase.OneItem) {
              subBuilder.MergeFrom(OneItem);
            }
            input.ReadMessage(subBuilder);
            OneItem = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.BonusOneItems subBuilder = new global::Cfg.BonusOneItems();
            if (valueCase_ == ValueOneofCase.OneItems) {
              subBuilder.MergeFrom(OneItems);
            }
            input.ReadMessage(subBuilder);
            OneItems = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.BonusItem subBuilder = new global::Cfg.BonusItem();
            if (valueCase_ == ValueOneofCase.Item) {
              subBuilder.MergeFrom(Item);
            }
            input.ReadMessage(subBuilder);
            Item = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.BonusItems subBuilder = new global::Cfg.BonusItems();
            if (valueCase_ == ValueOneofCase.Items) {
              subBuilder.MergeFrom(Items);
            }
            input.ReadMessage(subBuilder);
            Items = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.BonusCoefficientItem subBuilder = new global::Cfg.BonusCoefficientItem();
            if (valueCase_ == ValueOneofCase.CoefficientItem) {
              subBuilder.MergeFrom(CoefficientItem);
            }
            input.ReadMessage(subBuilder);
            CoefficientItem = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.BonusWeightItems subBuilder = new global::Cfg.BonusWeightItems();
            if (valueCase_ == ValueOneofCase.WeightItems) {
              subBuilder.MergeFrom(WeightItems);
            }
            input.ReadMessage(subBuilder);
            WeightItems = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.BonusProbabilityItems subBuilder = new global::Cfg.BonusProbabilityItems();
            if (valueCase_ == ValueOneofCase.ProbabilityItems) {
              subBuilder.MergeFrom(ProbabilityItems);
            }
            input.ReadMessage(subBuilder);
            ProbabilityItems = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.BonusMultiBonus subBuilder = new global::Cfg.BonusMultiBonus();
            if (valueCase_ == ValueOneofCase.MultiBonus) {
              subBuilder.MergeFrom(MultiBonus);
            }
            input.ReadMessage(subBuilder);
            MultiBonus = subBuilder;
            break;
          }
          case 74: {
            global::Cfg.BonusProbabilityBonus subBuilder = new global::Cfg.BonusProbabilityBonus();
            if (valueCase_ == ValueOneofCase.ProbabilityBonus) {
              subBuilder.MergeFrom(ProbabilityBonus);
            }
            input.ReadMessage(subBuilder);
            ProbabilityBonus = subBuilder;
            break;
          }
          case 82: {
            global::Cfg.BonusWeightBonus subBuilder = new global::Cfg.BonusWeightBonus();
            if (valueCase_ == ValueOneofCase.WeightBonus) {
              subBuilder.MergeFrom(WeightBonus);
            }
            input.ReadMessage(subBuilder);
            WeightBonus = subBuilder;
            break;
          }
          case 90: {
            global::Cfg.BonusDropBonus subBuilder = new global::Cfg.BonusDropBonus();
            if (valueCase_ == ValueOneofCase.DropBonus) {
              subBuilder.MergeFrom(DropBonus);
            }
            input.ReadMessage(subBuilder);
            DropBonus = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusOneItem other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      _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: {
            ItemId = 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: {
            ItemId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "items" field.</summary>
    public const int ItemsFieldNumber = 1;
    private static readonly pb::FieldCodec<int> _repeated_items_codec
        = pb::FieldCodec.ForInt32(10);
    private readonly pbc::RepeatedField<int> items_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> 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 BonusOneItems);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusOneItems other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      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;
      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
      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) {
      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;
      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(BonusOneItems other) {
      if (other == null) {
        return;
      }
      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 10:
          case 8: {
            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 10:
          case 8: {
            items_.AddEntriesFrom(ref input, _repeated_items_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "amount" field.</summary>
    public const int AmountFieldNumber = 2;
    private readonly static int AmountDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusItem other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      if (other.HasAmount) {
        Amount = other.Amount;
      }
      _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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Amount = 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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Amount = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_list" field.</summary>
    public const int ItemListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusItem> _repeated_itemList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusItem.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusItem> itemList_ = new pbc::RepeatedField<global::Cfg.BonusItem>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusItem> ItemList {
      get { return itemList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusItems other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!itemList_.Equals(other.itemList_)) 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 ^= itemList_.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
      itemList_.WriteTo(output, _repeated_itemList_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) {
      itemList_.WriteTo(ref output, _repeated_itemList_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 += itemList_.CalculateSize(_repeated_itemList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusItems other) {
      if (other == null) {
        return;
      }
      itemList_.Add(other.itemList_);
      _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: {
            itemList_.AddEntriesFrom(input, _repeated_itemList_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: {
            itemList_.AddEntriesFrom(ref input, _repeated_itemList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "bonus_id" field.</summary>
    public const int BonusIdFieldNumber = 1;
    private readonly static int BonusIdDefaultValue = 0;

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusCoefficientItem other) {
      if (other == null) {
        return;
      }
      if (other.HasBonusId) {
        BonusId = other.BonusId;
      }
      if (other.bonusList_ != null) {
        if (bonusList_ == null) {
          BonusList = new global::Cfg.BonusItems();
        }
        BonusList.MergeFrom(other.BonusList);
      }
      _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: {
            BonusId = input.ReadInt32();
            break;
          }
          case 18: {
            if (bonusList_ == null) {
              BonusList = new global::Cfg.BonusItems();
            }
            input.ReadMessage(BonusList);
            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: {
            BonusId = input.ReadInt32();
            break;
          }
          case 18: {
            if (bonusList_ == null) {
              BonusList = new global::Cfg.BonusItems();
            }
            input.ReadMessage(BonusList);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_list" field.</summary>
    public const int ItemListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusWeightItemInfo> _repeated_itemList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusWeightItemInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusWeightItemInfo> itemList_ = new pbc::RepeatedField<global::Cfg.BonusWeightItemInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusWeightItemInfo> ItemList {
      get { return itemList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusWeightItems other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!itemList_.Equals(other.itemList_)) 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 ^= itemList_.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
      itemList_.WriteTo(output, _repeated_itemList_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) {
      itemList_.WriteTo(ref output, _repeated_itemList_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 += itemList_.CalculateSize(_repeated_itemList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusWeightItems other) {
      if (other == null) {
        return;
      }
      itemList_.Add(other.itemList_);
      _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: {
            itemList_.AddEntriesFrom(input, _repeated_itemList_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: {
            itemList_.AddEntriesFrom(ref input, _repeated_itemList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 2;
    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 "weight" field.</summary>
    public const int WeightFieldNumber = 3;
    private readonly static int WeightDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusWeightItemInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.HasWeight) {
        Weight = other.Weight;
      }
      _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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
          case 24: {
            Weight = 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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
          case 24: {
            Weight = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_list" field.</summary>
    public const int ItemListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusProbabilityItemInfo> _repeated_itemList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusProbabilityItemInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusProbabilityItemInfo> itemList_ = new pbc::RepeatedField<global::Cfg.BonusProbabilityItemInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusProbabilityItemInfo> ItemList {
      get { return itemList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusProbabilityItems other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!itemList_.Equals(other.itemList_)) 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 ^= itemList_.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
      itemList_.WriteTo(output, _repeated_itemList_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) {
      itemList_.WriteTo(ref output, _repeated_itemList_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 += itemList_.CalculateSize(_repeated_itemList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusProbabilityItems other) {
      if (other == null) {
        return;
      }
      itemList_.Add(other.itemList_);
      _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: {
            itemList_.AddEntriesFrom(input, _repeated_itemList_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: {
            itemList_.AddEntriesFrom(ref input, _repeated_itemList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 2;
    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 "probability" field.</summary>
    public const int ProbabilityFieldNumber = 3;
    private readonly static float ProbabilityDefaultValue = 0F;

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusProbabilityItemInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemId != other.ItemId) return false;
      if (Num != other.Num) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Probability, other.Probability)) 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 (HasItemId) hash ^= ItemId.GetHashCode();
      if (HasNum) hash ^= Num.GetHashCode();
      if (HasProbability) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Probability);
      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 (HasItemId) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemId);
      }
      if (HasNum) {
        output.WriteRawTag(16);
        output.WriteInt32(Num);
      }
      if (HasProbability) {
        output.WriteRawTag(29);
        output.WriteFloat(Probability);
      }
      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 (HasItemId) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemId);
      }
      if (HasNum) {
        output.WriteRawTag(16);
        output.WriteInt32(Num);
      }
      if (HasProbability) {
        output.WriteRawTag(29);
        output.WriteFloat(Probability);
      }
      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 (HasItemId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemId);
      }
      if (HasNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Num);
      }
      if (HasProbability) {
        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(BonusProbabilityItemInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.HasProbability) {
        Probability = other.Probability;
      }
      _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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
          case 29: {
            Probability = 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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
          case 29: {
            Probability = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "bonuses" field.</summary>
    public const int BonusesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusBonus> _repeated_bonuses_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusBonus.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusBonus> bonuses_ = new pbc::RepeatedField<global::Cfg.BonusBonus>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusBonus> Bonuses {
      get { return bonuses_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusMultiBonus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!bonuses_.Equals(other.bonuses_)) 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 ^= bonuses_.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
      bonuses_.WriteTo(output, _repeated_bonuses_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) {
      bonuses_.WriteTo(ref output, _repeated_bonuses_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 += bonuses_.CalculateSize(_repeated_bonuses_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusMultiBonus other) {
      if (other == null) {
        return;
      }
      bonuses_.Add(other.bonuses_);
      _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: {
            bonuses_.AddEntriesFrom(input, _repeated_bonuses_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: {
            bonuses_.AddEntriesFrom(ref input, _repeated_bonuses_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "bonuses" field.</summary>
    public const int BonusesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusProbabilityBonusInfo> _repeated_bonuses_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusProbabilityBonusInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusProbabilityBonusInfo> bonuses_ = new pbc::RepeatedField<global::Cfg.BonusProbabilityBonusInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusProbabilityBonusInfo> Bonuses {
      get { return bonuses_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusProbabilityBonus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!bonuses_.Equals(other.bonuses_)) 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 ^= bonuses_.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
      bonuses_.WriteTo(output, _repeated_bonuses_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) {
      bonuses_.WriteTo(ref output, _repeated_bonuses_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 += bonuses_.CalculateSize(_repeated_bonuses_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusProbabilityBonus other) {
      if (other == null) {
        return;
      }
      bonuses_.Add(other.bonuses_);
      _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: {
            bonuses_.AddEntriesFrom(input, _repeated_bonuses_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: {
            bonuses_.AddEntriesFrom(ref input, _repeated_bonuses_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "bonus" field.</summary>
    public const int BonusFieldNumber = 1;
    private global::Cfg.BonusBonus bonus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.BonusBonus Bonus {
      get { return bonus_; }
      set {
        bonus_ = value;
      }
    }

    /// <summary>Field number for the "probability" field.</summary>
    public const int ProbabilityFieldNumber = 2;
    private readonly static float ProbabilityDefaultValue = 0F;

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusProbabilityBonusInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Bonus, other.Bonus)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Probability, other.Probability)) 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 (bonus_ != null) hash ^= Bonus.GetHashCode();
      if (HasProbability) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Probability);
      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 (bonus_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Bonus);
      }
      if (HasProbability) {
        output.WriteRawTag(21);
        output.WriteFloat(Probability);
      }
      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 (bonus_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Bonus);
      }
      if (HasProbability) {
        output.WriteRawTag(21);
        output.WriteFloat(Probability);
      }
      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 (bonus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bonus);
      }
      if (HasProbability) {
        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(BonusProbabilityBonusInfo other) {
      if (other == null) {
        return;
      }
      if (other.bonus_ != null) {
        if (bonus_ == null) {
          Bonus = new global::Cfg.BonusBonus();
        }
        Bonus.MergeFrom(other.Bonus);
      }
      if (other.HasProbability) {
        Probability = other.Probability;
      }
      _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 (bonus_ == null) {
              Bonus = new global::Cfg.BonusBonus();
            }
            input.ReadMessage(Bonus);
            break;
          }
          case 21: {
            Probability = 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 10: {
            if (bonus_ == null) {
              Bonus = new global::Cfg.BonusBonus();
            }
            input.ReadMessage(Bonus);
            break;
          }
          case 21: {
            Probability = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "bonuses" field.</summary>
    public const int BonusesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusWeightBonusInfo> _repeated_bonuses_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusWeightBonusInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusWeightBonusInfo> bonuses_ = new pbc::RepeatedField<global::Cfg.BonusWeightBonusInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusWeightBonusInfo> Bonuses {
      get { return bonuses_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusWeightBonus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!bonuses_.Equals(other.bonuses_)) 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 ^= bonuses_.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
      bonuses_.WriteTo(output, _repeated_bonuses_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) {
      bonuses_.WriteTo(ref output, _repeated_bonuses_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 += bonuses_.CalculateSize(_repeated_bonuses_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusWeightBonus other) {
      if (other == null) {
        return;
      }
      bonuses_.Add(other.bonuses_);
      _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: {
            bonuses_.AddEntriesFrom(input, _repeated_bonuses_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: {
            bonuses_.AddEntriesFrom(ref input, _repeated_bonuses_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "bonus" field.</summary>
    public const int BonusFieldNumber = 1;
    private global::Cfg.BonusBonus bonus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.BonusBonus Bonus {
      get { return bonus_; }
      set {
        bonus_ = value;
      }
    }

    /// <summary>Field number for the "weight" field.</summary>
    public const int WeightFieldNumber = 2;
    private readonly static int WeightDefaultValue = 0;

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusWeightBonusInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Bonus, other.Bonus)) return false;
      if (Weight != other.Weight) 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 (bonus_ != null) hash ^= Bonus.GetHashCode();
      if (HasWeight) hash ^= Weight.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 (bonus_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Bonus);
      }
      if (HasWeight) {
        output.WriteRawTag(16);
        output.WriteInt32(Weight);
      }
      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 (bonus_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Bonus);
      }
      if (HasWeight) {
        output.WriteRawTag(16);
        output.WriteInt32(Weight);
      }
      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 (bonus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bonus);
      }
      if (HasWeight) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Weight);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BonusWeightBonusInfo other) {
      if (other == null) {
        return;
      }
      if (other.bonus_ != null) {
        if (bonus_ == null) {
          Bonus = new global::Cfg.BonusBonus();
        }
        Bonus.MergeFrom(other.Bonus);
      }
      if (other.HasWeight) {
        Weight = other.Weight;
      }
      _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 (bonus_ == null) {
              Bonus = new global::Cfg.BonusBonus();
            }
            input.ReadMessage(Bonus);
            break;
          }
          case 16: {
            Weight = 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 (bonus_ == null) {
              Bonus = new global::Cfg.BonusBonus();
            }
            input.ReadMessage(Bonus);
            break;
          }
          case 16: {
            Weight = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BonusDropBonus Clone() {
      return new BonusDropBonus(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;
    }

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

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

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

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

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

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

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

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

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

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            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.ConfigReflection.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 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 ErrorErrorInfo : pb::IMessage<ErrorErrorInfo>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ErrorErrorInfo> _parser = new pb::MessageParser<ErrorErrorInfo>(() => new ErrorErrorInfo());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ErrorErrorInfo> Parser { get { return _parser; } }

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "code" field.</summary>
    public const int CodeFieldNumber = 1;
    private readonly static string CodeDefaultValue = "";

    private string code_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Code {
      get { return code_ ?? CodeDefaultValue; }
      set {
        code_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "code" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCode {
      get { return code_ != null; }
    }
    /// <summary>Clears the value of the "code" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCode() {
      code_ = 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 "style" field.</summary>
    public const int StyleFieldNumber = 3;
    private global::Cfg.ErrorErrorStyle style_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ErrorErrorStyle Style {
      get { return style_; }
      set {
        style_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ErrorErrorInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Code != other.Code) return false;
      if (Desc != other.Desc) return false;
      if (!object.Equals(Style, other.Style)) 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 (HasCode) hash ^= Code.GetHashCode();
      if (HasDesc) hash ^= Desc.GetHashCode();
      if (style_ != null) hash ^= Style.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 (HasCode) {
        output.WriteRawTag(10);
        output.WriteString(Code);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (style_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Style);
      }
      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 (HasCode) {
        output.WriteRawTag(10);
        output.WriteString(Code);
      }
      if (HasDesc) {
        output.WriteRawTag(18);
        output.WriteString(Desc);
      }
      if (style_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Style);
      }
      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 (HasCode) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Code);
      }
      if (HasDesc) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      if (style_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Style);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ErrorErrorInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasCode) {
        Code = other.Code;
      }
      if (other.HasDesc) {
        Desc = other.Desc;
      }
      if (other.style_ != null) {
        if (style_ == null) {
          Style = new global::Cfg.ErrorErrorStyle();
        }
        Style.MergeFrom(other.Style);
      }
      _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: {
            Code = input.ReadString();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 26: {
            if (style_ == null) {
              Style = new global::Cfg.ErrorErrorStyle();
            }
            input.ReadMessage(Style);
            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: {
            Code = input.ReadString();
            break;
          }
          case 18: {
            Desc = input.ReadString();
            break;
          }
          case 26: {
            if (style_ == null) {
              Style = new global::Cfg.ErrorErrorStyle();
            }
            input.ReadMessage(Style);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ErrorErrorStyle(ErrorErrorStyle other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.ErrorStyleTip:
          ErrorStyleTip = other.ErrorStyleTip.Clone();
          break;
        case ValueOneofCase.ErrorStyleMsgbox:
          ErrorStyleMsgbox = other.ErrorStyleMsgbox.Clone();
          break;
        case ValueOneofCase.ErrorStyleDlgOk:
          ErrorStyleDlgOk = other.ErrorStyleDlgOk.Clone();
          break;
        case ValueOneofCase.ErrorStyleDlgOkCancel:
          ErrorStyleDlgOkCancel = other.ErrorStyleDlgOkCancel.Clone();
          break;
      }

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      ErrorStyleTip = 1,
      ErrorStyleMsgbox = 2,
      ErrorStyleDlgOk = 3,
      ErrorStyleDlgOkCancel = 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 ErrorErrorStyle);
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ErrorErrorStyle other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.ErrorStyleTip:
          if (ErrorStyleTip == null) {
            ErrorStyleTip = new global::Cfg.ErrorErrorStyleTip();
          }
          ErrorStyleTip.MergeFrom(other.ErrorStyleTip);
          break;
        case ValueOneofCase.ErrorStyleMsgbox:
          if (ErrorStyleMsgbox == null) {
            ErrorStyleMsgbox = new global::Cfg.ErrorErrorStyleMsgbox();
          }
          ErrorStyleMsgbox.MergeFrom(other.ErrorStyleMsgbox);
          break;
        case ValueOneofCase.ErrorStyleDlgOk:
          if (ErrorStyleDlgOk == null) {
            ErrorStyleDlgOk = new global::Cfg.ErrorErrorStyleDlgOk();
          }
          ErrorStyleDlgOk.MergeFrom(other.ErrorStyleDlgOk);
          break;
        case ValueOneofCase.ErrorStyleDlgOkCancel:
          if (ErrorStyleDlgOkCancel == null) {
            ErrorStyleDlgOkCancel = new global::Cfg.ErrorErrorStyleDlgOkCancel();
          }
          ErrorStyleDlgOkCancel.MergeFrom(other.ErrorStyleDlgOkCancel);
          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.ErrorErrorStyleTip subBuilder = new global::Cfg.ErrorErrorStyleTip();
            if (valueCase_ == ValueOneofCase.ErrorStyleTip) {
              subBuilder.MergeFrom(ErrorStyleTip);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleTip = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.ErrorErrorStyleMsgbox subBuilder = new global::Cfg.ErrorErrorStyleMsgbox();
            if (valueCase_ == ValueOneofCase.ErrorStyleMsgbox) {
              subBuilder.MergeFrom(ErrorStyleMsgbox);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleMsgbox = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ErrorErrorStyleDlgOk subBuilder = new global::Cfg.ErrorErrorStyleDlgOk();
            if (valueCase_ == ValueOneofCase.ErrorStyleDlgOk) {
              subBuilder.MergeFrom(ErrorStyleDlgOk);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleDlgOk = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ErrorErrorStyleDlgOkCancel subBuilder = new global::Cfg.ErrorErrorStyleDlgOkCancel();
            if (valueCase_ == ValueOneofCase.ErrorStyleDlgOkCancel) {
              subBuilder.MergeFrom(ErrorStyleDlgOkCancel);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleDlgOkCancel = 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.ErrorErrorStyleTip subBuilder = new global::Cfg.ErrorErrorStyleTip();
            if (valueCase_ == ValueOneofCase.ErrorStyleTip) {
              subBuilder.MergeFrom(ErrorStyleTip);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleTip = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.ErrorErrorStyleMsgbox subBuilder = new global::Cfg.ErrorErrorStyleMsgbox();
            if (valueCase_ == ValueOneofCase.ErrorStyleMsgbox) {
              subBuilder.MergeFrom(ErrorStyleMsgbox);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleMsgbox = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ErrorErrorStyleDlgOk subBuilder = new global::Cfg.ErrorErrorStyleDlgOk();
            if (valueCase_ == ValueOneofCase.ErrorStyleDlgOk) {
              subBuilder.MergeFrom(ErrorStyleDlgOk);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleDlgOk = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ErrorErrorStyleDlgOkCancel subBuilder = new global::Cfg.ErrorErrorStyleDlgOkCancel();
            if (valueCase_ == ValueOneofCase.ErrorStyleDlgOkCancel) {
              subBuilder.MergeFrom(ErrorStyleDlgOkCancel);
            }
            input.ReadMessage(subBuilder);
            ErrorStyleDlgOkCancel = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ErrorErrorStyleTip 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(ErrorErrorStyleTip 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 ErrorErrorStyleMsgbox : pb::IMessage<ErrorErrorStyleMsgbox>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ErrorErrorStyleMsgbox> _parser = new pb::MessageParser<ErrorErrorStyleMsgbox>(() => new ErrorErrorStyleMsgbox());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ErrorErrorStyleMsgbox> Parser { get { return _parser; } }

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "btn_name" field.</summary>
    public const int BtnNameFieldNumber = 1;
    private readonly static string BtnNameDefaultValue = "";

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

    /// <summary>Field number for the "operation" field.</summary>
    public const int OperationFieldNumber = 2;
    private readonly static global::Cfg.ErrorEOperation OperationDefaultValue = global::Cfg.ErrorEOperation.Logout;

    private global::Cfg.ErrorEOperation operation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ErrorEOperation Operation {
      get { if ((_hasBits0 & 1) != 0) { return operation_; } else { return OperationDefaultValue; } }
      set {
        _hasBits0 |= 1;
        operation_ = value;
      }
    }
    /// <summary>Gets whether the "operation" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOperation {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "operation" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOperation() {
      _hasBits0 &= ~1;
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ErrorErrorStyleMsgbox other) {
      if (other == null) {
        return;
      }
      if (other.HasBtnName) {
        BtnName = other.BtnName;
      }
      if (other.HasOperation) {
        Operation = other.Operation;
      }
      _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: {
            BtnName = input.ReadString();
            break;
          }
          case 16: {
            Operation = (global::Cfg.ErrorEOperation) 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 10: {
            BtnName = input.ReadString();
            break;
          }
          case 16: {
            Operation = (global::Cfg.ErrorEOperation) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "btn_name" field.</summary>
    public const int BtnNameFieldNumber = 1;
    private readonly static string BtnNameDefaultValue = "";

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ErrorErrorStyleDlgOk other) {
      if (other == null) {
        return;
      }
      if (other.HasBtnName) {
        BtnName = other.BtnName;
      }
      _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: {
            BtnName = 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: {
            BtnName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "btn1_name" field.</summary>
    public const int Btn1NameFieldNumber = 1;
    private readonly static string Btn1NameDefaultValue = "";

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

    /// <summary>Field number for the "btn2_name" field.</summary>
    public const int Btn2NameFieldNumber = 2;
    private readonly static string Btn2NameDefaultValue = "";

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ErrorErrorStyleDlgOkCancel other) {
      if (other == null) {
        return;
      }
      if (other.HasBtn1Name) {
        Btn1Name = other.Btn1Name;
      }
      if (other.HasBtn2Name) {
        Btn2Name = other.Btn2Name;
      }
      _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: {
            Btn1Name = input.ReadString();
            break;
          }
          case 18: {
            Btn2Name = 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: {
            Btn1Name = input.ReadString();
            break;
          }
          case 18: {
            Btn2Name = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "code" field.</summary>
    public const int CodeFieldNumber = 1;
    private readonly static global::Cfg.ErrorEErrorCode CodeDefaultValue = global::Cfg.ErrorEErrorCode.Ok;

    private global::Cfg.ErrorEErrorCode code_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ErrorEErrorCode Code {
      get { if ((_hasBits0 & 1) != 0) { return code_; } else { return CodeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        code_ = value;
      }
    }
    /// <summary>Gets whether the "code" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCode {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "code" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCode() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "key" field.</summary>
    public const int KeyFieldNumber = 2;
    private readonly static string KeyDefaultValue = "";

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ErrorCodeInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Code != other.Code) return false;
      if (Key != other.Key) 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 (HasCode) hash ^= Code.GetHashCode();
      if (HasKey) hash ^= Key.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 (HasCode) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Code);
      }
      if (HasKey) {
        output.WriteRawTag(18);
        output.WriteString(Key);
      }
      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 (HasCode) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Code);
      }
      if (HasKey) {
        output.WriteRawTag(18);
        output.WriteString(Key);
      }
      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 (HasCode) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Code);
      }
      if (HasKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Key);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ErrorCodeInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasCode) {
        Code = other.Code;
      }
      if (other.HasKey) {
        Key = other.Key;
      }
      _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: {
            Code = (global::Cfg.ErrorEErrorCode) input.ReadEnum();
            break;
          }
          case 18: {
            Key = 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: {
            Code = (global::Cfg.ErrorEErrorCode) input.ReadEnum();
            break;
          }
          case 18: {
            Key = input.ReadString();
            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.ConfigReflection.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 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_;
      quantifier_ = other.quantifier_;
      showInBag_ = other.showInBag_;
      minShowLevel_ = other.minShowLevel_;
      batchUsable_ = other.batchUsable_;
      progressTimeWhenUse_ = other.progressTimeWhenUse_;
      showHintWhenUse_ = other.showHintWhenUse_;
      droppable_ = other.droppable_;
      price_ = other.price_;
      useType_ = other.useType_;
      levelUpId_ = other.levelUpId_;
      _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;
    }

    /// <summary>Field number for the "quantifier" field.</summary>
    public const int QuantifierFieldNumber = 12;
    private readonly static string QuantifierDefaultValue = "";

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

    /// <summary>Field number for the "show_in_bag" field.</summary>
    public const int ShowInBagFieldNumber = 13;
    private readonly static bool ShowInBagDefaultValue = false;

    private bool showInBag_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool ShowInBag {
      get { if ((_hasBits0 & 64) != 0) { return showInBag_; } else { return ShowInBagDefaultValue; } }
      set {
        _hasBits0 |= 64;
        showInBag_ = value;
      }
    }
    /// <summary>Gets whether the "show_in_bag" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasShowInBag {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "show_in_bag" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearShowInBag() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "min_show_level" field.</summary>
    public const int MinShowLevelFieldNumber = 14;
    private readonly static int MinShowLevelDefaultValue = 0;

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

    /// <summary>Field number for the "batch_usable" field.</summary>
    public const int BatchUsableFieldNumber = 15;
    private readonly static bool BatchUsableDefaultValue = false;

    private bool batchUsable_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool BatchUsable {
      get { if ((_hasBits0 & 256) != 0) { return batchUsable_; } else { return BatchUsableDefaultValue; } }
      set {
        _hasBits0 |= 256;
        batchUsable_ = value;
      }
    }
    /// <summary>Gets whether the "batch_usable" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBatchUsable {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "batch_usable" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBatchUsable() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "progress_time_when_use" field.</summary>
    public const int ProgressTimeWhenUseFieldNumber = 16;
    private readonly static float ProgressTimeWhenUseDefaultValue = 0F;

    private float progressTimeWhenUse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ProgressTimeWhenUse {
      get { if ((_hasBits0 & 512) != 0) { return progressTimeWhenUse_; } else { return ProgressTimeWhenUseDefaultValue; } }
      set {
        _hasBits0 |= 512;
        progressTimeWhenUse_ = value;
      }
    }
    /// <summary>Gets whether the "progress_time_when_use" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasProgressTimeWhenUse {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "progress_time_when_use" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearProgressTimeWhenUse() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "show_hint_when_use" field.</summary>
    public const int ShowHintWhenUseFieldNumber = 17;
    private readonly static bool ShowHintWhenUseDefaultValue = false;

    private bool showHintWhenUse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool ShowHintWhenUse {
      get { if ((_hasBits0 & 1024) != 0) { return showHintWhenUse_; } else { return ShowHintWhenUseDefaultValue; } }
      set {
        _hasBits0 |= 1024;
        showHintWhenUse_ = value;
      }
    }
    /// <summary>Gets whether the "show_hint_when_use" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasShowHintWhenUse {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "show_hint_when_use" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearShowHintWhenUse() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "droppable" field.</summary>
    public const int DroppableFieldNumber = 18;
    private readonly static bool DroppableDefaultValue = false;

    private bool droppable_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Droppable {
      get { if ((_hasBits0 & 2048) != 0) { return droppable_; } else { return DroppableDefaultValue; } }
      set {
        _hasBits0 |= 2048;
        droppable_ = value;
      }
    }
    /// <summary>Gets whether the "droppable" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDroppable {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "droppable" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDroppable() {
      _hasBits0 &= ~2048;
    }

    /// <summary>Field number for the "price" field.</summary>
    public const int PriceFieldNumber = 19;
    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 & 4096) != 0) { return price_; } else { return PriceDefaultValue; } }
      set {
        _hasBits0 |= 4096;
        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 & 4096) != 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 &= ~4096;
    }

    /// <summary>Field number for the "use_type" field.</summary>
    public const int UseTypeFieldNumber = 20;
    private readonly static global::Cfg.ItemEUseType UseTypeDefaultValue = global::Cfg.ItemEUseType.Manual;

    private global::Cfg.ItemEUseType useType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemEUseType UseType {
      get { if ((_hasBits0 & 8192) != 0) { return useType_; } else { return UseTypeDefaultValue; } }
      set {
        _hasBits0 |= 8192;
        useType_ = value;
      }
    }
    /// <summary>Gets whether the "use_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUseType {
      get { return (_hasBits0 & 8192) != 0; }
    }
    /// <summary>Clears the value of the "use_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUseType() {
      _hasBits0 &= ~8192;
    }

    /// <summary>Field number for the "level_up_id" field.</summary>
    public const int LevelUpIdFieldNumber = 21;
    private readonly static int LevelUpIdDefaultValue = 0;

    private int levelUpId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int LevelUpId {
      get { if ((_hasBits0 & 16384) != 0) { return levelUpId_; } else { return LevelUpIdDefaultValue; } }
      set {
        _hasBits0 |= 16384;
        levelUpId_ = value;
      }
    }
    /// <summary>Gets whether the "level_up_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLevelUpId {
      get { return (_hasBits0 & 16384) != 0; }
    }
    /// <summary>Clears the value of the "level_up_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearLevelUpId() {
      _hasBits0 &= ~16384;
    }

    [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;
      if (Quantifier != other.Quantifier) return false;
      if (ShowInBag != other.ShowInBag) return false;
      if (MinShowLevel != other.MinShowLevel) return false;
      if (BatchUsable != other.BatchUsable) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ProgressTimeWhenUse, other.ProgressTimeWhenUse)) return false;
      if (ShowHintWhenUse != other.ShowHintWhenUse) return false;
      if (Droppable != other.Droppable) return false;
      if (Price != other.Price) return false;
      if (UseType != other.UseType) return false;
      if (LevelUpId != other.LevelUpId) 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 (HasQuantifier) hash ^= Quantifier.GetHashCode();
      if (HasShowInBag) hash ^= ShowInBag.GetHashCode();
      if (HasMinShowLevel) hash ^= MinShowLevel.GetHashCode();
      if (HasBatchUsable) hash ^= BatchUsable.GetHashCode();
      if (HasProgressTimeWhenUse) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ProgressTimeWhenUse);
      if (HasShowHintWhenUse) hash ^= ShowHintWhenUse.GetHashCode();
      if (HasDroppable) hash ^= Droppable.GetHashCode();
      if (HasPrice) hash ^= Price.GetHashCode();
      if (HasUseType) hash ^= UseType.GetHashCode();
      if (HasLevelUpId) hash ^= LevelUpId.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 (HasQuantifier) {
        output.WriteRawTag(98);
        output.WriteString(Quantifier);
      }
      if (HasShowInBag) {
        output.WriteRawTag(104);
        output.WriteBool(ShowInBag);
      }
      if (HasMinShowLevel) {
        output.WriteRawTag(112);
        output.WriteInt32(MinShowLevel);
      }
      if (HasBatchUsable) {
        output.WriteRawTag(120);
        output.WriteBool(BatchUsable);
      }
      if (HasProgressTimeWhenUse) {
        output.WriteRawTag(133, 1);
        output.WriteFloat(ProgressTimeWhenUse);
      }
      if (HasShowHintWhenUse) {
        output.WriteRawTag(136, 1);
        output.WriteBool(ShowHintWhenUse);
      }
      if (HasDroppable) {
        output.WriteRawTag(144, 1);
        output.WriteBool(Droppable);
      }
      if (HasPrice) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(Price);
      }
      if (HasUseType) {
        output.WriteRawTag(160, 1);
        output.WriteEnum((int) UseType);
      }
      if (HasLevelUpId) {
        output.WriteRawTag(168, 1);
        output.WriteInt32(LevelUpId);
      }
      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 (HasQuantifier) {
        output.WriteRawTag(98);
        output.WriteString(Quantifier);
      }
      if (HasShowInBag) {
        output.WriteRawTag(104);
        output.WriteBool(ShowInBag);
      }
      if (HasMinShowLevel) {
        output.WriteRawTag(112);
        output.WriteInt32(MinShowLevel);
      }
      if (HasBatchUsable) {
        output.WriteRawTag(120);
        output.WriteBool(BatchUsable);
      }
      if (HasProgressTimeWhenUse) {
        output.WriteRawTag(133, 1);
        output.WriteFloat(ProgressTimeWhenUse);
      }
      if (HasShowHintWhenUse) {
        output.WriteRawTag(136, 1);
        output.WriteBool(ShowHintWhenUse);
      }
      if (HasDroppable) {
        output.WriteRawTag(144, 1);
        output.WriteBool(Droppable);
      }
      if (HasPrice) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(Price);
      }
      if (HasUseType) {
        output.WriteRawTag(160, 1);
        output.WriteEnum((int) UseType);
      }
      if (HasLevelUpId) {
        output.WriteRawTag(168, 1);
        output.WriteInt32(LevelUpId);
      }
      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 (HasQuantifier) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Quantifier);
      }
      if (HasShowInBag) {
        size += 1 + 1;
      }
      if (HasMinShowLevel) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MinShowLevel);
      }
      if (HasBatchUsable) {
        size += 1 + 1;
      }
      if (HasProgressTimeWhenUse) {
        size += 2 + 4;
      }
      if (HasShowHintWhenUse) {
        size += 2 + 1;
      }
      if (HasDroppable) {
        size += 2 + 1;
      }
      if (HasPrice) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Price);
      }
      if (HasUseType) {
        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) UseType);
      }
      if (HasLevelUpId) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(LevelUpId);
      }
      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;
      }
      if (other.HasQuantifier) {
        Quantifier = other.Quantifier;
      }
      if (other.HasShowInBag) {
        ShowInBag = other.ShowInBag;
      }
      if (other.HasMinShowLevel) {
        MinShowLevel = other.MinShowLevel;
      }
      if (other.HasBatchUsable) {
        BatchUsable = other.BatchUsable;
      }
      if (other.HasProgressTimeWhenUse) {
        ProgressTimeWhenUse = other.ProgressTimeWhenUse;
      }
      if (other.HasShowHintWhenUse) {
        ShowHintWhenUse = other.ShowHintWhenUse;
      }
      if (other.HasDroppable) {
        Droppable = other.Droppable;
      }
      if (other.HasPrice) {
        Price = other.Price;
      }
      if (other.HasUseType) {
        UseType = other.UseType;
      }
      if (other.HasLevelUpId) {
        LevelUpId = other.LevelUpId;
      }
      _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;
          }
          case 98: {
            Quantifier = input.ReadString();
            break;
          }
          case 104: {
            ShowInBag = input.ReadBool();
            break;
          }
          case 112: {
            MinShowLevel = input.ReadInt32();
            break;
          }
          case 120: {
            BatchUsable = input.ReadBool();
            break;
          }
          case 133: {
            ProgressTimeWhenUse = input.ReadFloat();
            break;
          }
          case 136: {
            ShowHintWhenUse = input.ReadBool();
            break;
          }
          case 144: {
            Droppable = input.ReadBool();
            break;
          }
          case 152: {
            Price = input.ReadInt32();
            break;
          }
          case 160: {
            UseType = (global::Cfg.ItemEUseType) input.ReadEnum();
            break;
          }
          case 168: {
            LevelUpId = 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;
          }
          case 98: {
            Quantifier = input.ReadString();
            break;
          }
          case 104: {
            ShowInBag = input.ReadBool();
            break;
          }
          case 112: {
            MinShowLevel = input.ReadInt32();
            break;
          }
          case 120: {
            BatchUsable = input.ReadBool();
            break;
          }
          case 133: {
            ProgressTimeWhenUse = input.ReadFloat();
            break;
          }
          case 136: {
            ShowHintWhenUse = input.ReadBool();
            break;
          }
          case 144: {
            Droppable = input.ReadBool();
            break;
          }
          case 152: {
            Price = input.ReadInt32();
            break;
          }
          case 160: {
            UseType = (global::Cfg.ItemEUseType) input.ReadEnum();
            break;
          }
          case 168: {
            LevelUpId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "minor_type" field.</summary>
    public const int MinorTypeFieldNumber = 1;
    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 & 1) != 0) { return minorType_; } else { return MinorTypeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        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 & 1) != 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 &= ~1;
    }

    /// <summary>Field number for the "func_type" field.</summary>
    public const int FuncTypeFieldNumber = 2;
    private readonly static global::Cfg.ItemEItemFunctionType FuncTypeDefaultValue = global::Cfg.ItemEItemFunctionType.ReplaceHandheld;

    private global::Cfg.ItemEItemFunctionType funcType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemEItemFunctionType FuncType {
      get { if ((_hasBits0 & 2) != 0) { return funcType_; } else { return FuncTypeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        funcType_ = value;
      }
    }
    /// <summary>Gets whether the "func_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFuncType {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "func_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFuncType() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "method" field.</summary>
    public const int MethodFieldNumber = 3;
    private readonly static string MethodDefaultValue = "";

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

    /// <summary>Field number for the "close_bag_ui" field.</summary>
    public const int CloseBagUiFieldNumber = 4;
    private readonly static bool CloseBagUiDefaultValue = false;

    private bool closeBagUi_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool CloseBagUi {
      get { if ((_hasBits0 & 4) != 0) { return closeBagUi_; } else { return CloseBagUiDefaultValue; } }
      set {
        _hasBits0 |= 4;
        closeBagUi_ = value;
      }
    }
    /// <summary>Gets whether the "close_bag_ui" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCloseBagUi {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "close_bag_ui" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCloseBagUi() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemItemFunction other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (MinorType != other.MinorType) return false;
      if (FuncType != other.FuncType) return false;
      if (Method != other.Method) return false;
      if (CloseBagUi != other.CloseBagUi) 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 (HasMinorType) hash ^= MinorType.GetHashCode();
      if (HasFuncType) hash ^= FuncType.GetHashCode();
      if (HasMethod) hash ^= Method.GetHashCode();
      if (HasCloseBagUi) hash ^= CloseBagUi.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 (HasMinorType) {
        output.WriteRawTag(8);
        output.WriteEnum((int) MinorType);
      }
      if (HasFuncType) {
        output.WriteRawTag(16);
        output.WriteEnum((int) FuncType);
      }
      if (HasMethod) {
        output.WriteRawTag(26);
        output.WriteString(Method);
      }
      if (HasCloseBagUi) {
        output.WriteRawTag(32);
        output.WriteBool(CloseBagUi);
      }
      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 (HasMinorType) {
        output.WriteRawTag(8);
        output.WriteEnum((int) MinorType);
      }
      if (HasFuncType) {
        output.WriteRawTag(16);
        output.WriteEnum((int) FuncType);
      }
      if (HasMethod) {
        output.WriteRawTag(26);
        output.WriteString(Method);
      }
      if (HasCloseBagUi) {
        output.WriteRawTag(32);
        output.WriteBool(CloseBagUi);
      }
      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 (HasMinorType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MinorType);
      }
      if (HasFuncType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FuncType);
      }
      if (HasMethod) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Method);
      }
      if (HasCloseBagUi) {
        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(ItemItemFunction other) {
      if (other == null) {
        return;
      }
      if (other.HasMinorType) {
        MinorType = other.MinorType;
      }
      if (other.HasFuncType) {
        FuncType = other.FuncType;
      }
      if (other.HasMethod) {
        Method = other.Method;
      }
      if (other.HasCloseBagUi) {
        CloseBagUi = other.CloseBagUi;
      }
      _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: {
            MinorType = (global::Cfg.ItemEMinorType) input.ReadEnum();
            break;
          }
          case 16: {
            FuncType = (global::Cfg.ItemEItemFunctionType) input.ReadEnum();
            break;
          }
          case 26: {
            Method = input.ReadString();
            break;
          }
          case 32: {
            CloseBagUi = 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: {
            MinorType = (global::Cfg.ItemEMinorType) input.ReadEnum();
            break;
          }
          case 16: {
            FuncType = (global::Cfg.ItemEItemFunctionType) input.ReadEnum();
            break;
          }
          case 26: {
            Method = input.ReadString();
            break;
          }
          case 32: {
            CloseBagUi = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemItemExtra(ItemItemExtra other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.TreasureBox:
          TreasureBox = other.TreasureBox.Clone();
          break;
        case ValueOneofCase.InteractionItem:
          InteractionItem = other.InteractionItem.Clone();
          break;
        case ValueOneofCase.Clothes:
          Clothes = other.Clothes.Clone();
          break;
        case ValueOneofCase.DesignDrawing:
          DesignDrawing = other.DesignDrawing.Clone();
          break;
        case ValueOneofCase.Dymmy:
          Dymmy = other.Dymmy.Clone();
          break;
      }

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

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      TreasureBox = 1,
      InteractionItem = 2,
      Clothes = 3,
      DesignDrawing = 4,
      Dymmy = 5,
    }
    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 ItemItemExtra);
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemItemExtra other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.TreasureBox:
          if (TreasureBox == null) {
            TreasureBox = new global::Cfg.ItemTreasureBox();
          }
          TreasureBox.MergeFrom(other.TreasureBox);
          break;
        case ValueOneofCase.InteractionItem:
          if (InteractionItem == null) {
            InteractionItem = new global::Cfg.ItemInteractionItem();
          }
          InteractionItem.MergeFrom(other.InteractionItem);
          break;
        case ValueOneofCase.Clothes:
          if (Clothes == null) {
            Clothes = new global::Cfg.ItemClothes();
          }
          Clothes.MergeFrom(other.Clothes);
          break;
        case ValueOneofCase.DesignDrawing:
          if (DesignDrawing == null) {
            DesignDrawing = new global::Cfg.ItemDesignDrawing();
          }
          DesignDrawing.MergeFrom(other.DesignDrawing);
          break;
        case ValueOneofCase.Dymmy:
          if (Dymmy == null) {
            Dymmy = new global::Cfg.ItemDymmy();
          }
          Dymmy.MergeFrom(other.Dymmy);
          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.ItemTreasureBox subBuilder = new global::Cfg.ItemTreasureBox();
            if (valueCase_ == ValueOneofCase.TreasureBox) {
              subBuilder.MergeFrom(TreasureBox);
            }
            input.ReadMessage(subBuilder);
            TreasureBox = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.ItemInteractionItem subBuilder = new global::Cfg.ItemInteractionItem();
            if (valueCase_ == ValueOneofCase.InteractionItem) {
              subBuilder.MergeFrom(InteractionItem);
            }
            input.ReadMessage(subBuilder);
            InteractionItem = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ItemClothes subBuilder = new global::Cfg.ItemClothes();
            if (valueCase_ == ValueOneofCase.Clothes) {
              subBuilder.MergeFrom(Clothes);
            }
            input.ReadMessage(subBuilder);
            Clothes = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ItemDesignDrawing subBuilder = new global::Cfg.ItemDesignDrawing();
            if (valueCase_ == ValueOneofCase.DesignDrawing) {
              subBuilder.MergeFrom(DesignDrawing);
            }
            input.ReadMessage(subBuilder);
            DesignDrawing = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ItemDymmy subBuilder = new global::Cfg.ItemDymmy();
            if (valueCase_ == ValueOneofCase.Dymmy) {
              subBuilder.MergeFrom(Dymmy);
            }
            input.ReadMessage(subBuilder);
            Dymmy = 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.ItemTreasureBox subBuilder = new global::Cfg.ItemTreasureBox();
            if (valueCase_ == ValueOneofCase.TreasureBox) {
              subBuilder.MergeFrom(TreasureBox);
            }
            input.ReadMessage(subBuilder);
            TreasureBox = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.ItemInteractionItem subBuilder = new global::Cfg.ItemInteractionItem();
            if (valueCase_ == ValueOneofCase.InteractionItem) {
              subBuilder.MergeFrom(InteractionItem);
            }
            input.ReadMessage(subBuilder);
            InteractionItem = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ItemClothes subBuilder = new global::Cfg.ItemClothes();
            if (valueCase_ == ValueOneofCase.Clothes) {
              subBuilder.MergeFrom(Clothes);
            }
            input.ReadMessage(subBuilder);
            Clothes = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ItemDesignDrawing subBuilder = new global::Cfg.ItemDesignDrawing();
            if (valueCase_ == ValueOneofCase.DesignDrawing) {
              subBuilder.MergeFrom(DesignDrawing);
            }
            input.ReadMessage(subBuilder);
            DesignDrawing = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ItemDymmy subBuilder = new global::Cfg.ItemDymmy();
            if (valueCase_ == ValueOneofCase.Dymmy) {
              subBuilder.MergeFrom(Dymmy);
            }
            input.ReadMessage(subBuilder);
            Dymmy = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemTreasureBox(ItemTreasureBox other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      keyItemId_ = other.keyItemId_;
      openLevel_ = other.openLevel_ != null ? other.openLevel_.Clone() : null;
      useOnObtain_ = other.useOnObtain_;
      dropIds_ = other.dropIds_.Clone();
      chooseList_ = other.chooseList_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemTreasureBox Clone() {
      return new ItemTreasureBox(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 "key_item_id" field.</summary>
    public const int KeyItemIdFieldNumber = 2;
    private readonly static int KeyItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "open_level" field.</summary>
    public const int OpenLevelFieldNumber = 3;
    private global::Cfg.ConditionMinLevel openLevel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ConditionMinLevel OpenLevel {
      get { return openLevel_; }
      set {
        openLevel_ = value;
      }
    }

    /// <summary>Field number for the "use_on_obtain" field.</summary>
    public const int UseOnObtainFieldNumber = 4;
    private readonly static bool UseOnObtainDefaultValue = false;

    private bool useOnObtain_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool UseOnObtain {
      get { if ((_hasBits0 & 4) != 0) { return useOnObtain_; } else { return UseOnObtainDefaultValue; } }
      set {
        _hasBits0 |= 4;
        useOnObtain_ = value;
      }
    }
    /// <summary>Gets whether the "use_on_obtain" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUseOnObtain {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "use_on_obtain" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUseOnObtain() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "drop_ids" field.</summary>
    public const int DropIdsFieldNumber = 5;
    private static readonly pb::FieldCodec<int> _repeated_dropIds_codec
        = pb::FieldCodec.ForInt32(42);
    private readonly pbc::RepeatedField<int> dropIds_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> DropIds {
      get { return dropIds_; }
    }

    /// <summary>Field number for the "choose_list" field.</summary>
    public const int ChooseListFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Cfg.ItemChooseOneBonus> _repeated_chooseList_codec
        = pb::FieldCodec.ForMessage(50, global::Cfg.ItemChooseOneBonus.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ItemChooseOneBonus> chooseList_ = new pbc::RepeatedField<global::Cfg.ItemChooseOneBonus>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ItemChooseOneBonus> ChooseList {
      get { return chooseList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemTreasureBox other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (KeyItemId != other.KeyItemId) return false;
      if (!object.Equals(OpenLevel, other.OpenLevel)) return false;
      if (UseOnObtain != other.UseOnObtain) return false;
      if(!dropIds_.Equals(other.dropIds_)) return false;
      if(!chooseList_.Equals(other.chooseList_)) 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 (HasKeyItemId) hash ^= KeyItemId.GetHashCode();
      if (openLevel_ != null) hash ^= OpenLevel.GetHashCode();
      if (HasUseOnObtain) hash ^= UseOnObtain.GetHashCode();
      hash ^= dropIds_.GetHashCode();
      hash ^= chooseList_.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 (HasKeyItemId) {
        output.WriteRawTag(16);
        output.WriteInt32(KeyItemId);
      }
      if (openLevel_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(OpenLevel);
      }
      if (HasUseOnObtain) {
        output.WriteRawTag(32);
        output.WriteBool(UseOnObtain);
      }
      dropIds_.WriteTo(output, _repeated_dropIds_codec);
      chooseList_.WriteTo(output, _repeated_chooseList_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 (HasKeyItemId) {
        output.WriteRawTag(16);
        output.WriteInt32(KeyItemId);
      }
      if (openLevel_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(OpenLevel);
      }
      if (HasUseOnObtain) {
        output.WriteRawTag(32);
        output.WriteBool(UseOnObtain);
      }
      dropIds_.WriteTo(ref output, _repeated_dropIds_codec);
      chooseList_.WriteTo(ref output, _repeated_chooseList_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 (HasKeyItemId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(KeyItemId);
      }
      if (openLevel_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OpenLevel);
      }
      if (HasUseOnObtain) {
        size += 1 + 1;
      }
      size += dropIds_.CalculateSize(_repeated_dropIds_codec);
      size += chooseList_.CalculateSize(_repeated_chooseList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemTreasureBox other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasKeyItemId) {
        KeyItemId = other.KeyItemId;
      }
      if (other.openLevel_ != null) {
        if (openLevel_ == null) {
          OpenLevel = new global::Cfg.ConditionMinLevel();
        }
        OpenLevel.MergeFrom(other.OpenLevel);
      }
      if (other.HasUseOnObtain) {
        UseOnObtain = other.UseOnObtain;
      }
      dropIds_.Add(other.dropIds_);
      chooseList_.Add(other.chooseList_);
      _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: {
            KeyItemId = input.ReadInt32();
            break;
          }
          case 26: {
            if (openLevel_ == null) {
              OpenLevel = new global::Cfg.ConditionMinLevel();
            }
            input.ReadMessage(OpenLevel);
            break;
          }
          case 32: {
            UseOnObtain = input.ReadBool();
            break;
          }
          case 42:
          case 40: {
            dropIds_.AddEntriesFrom(input, _repeated_dropIds_codec);
            break;
          }
          case 50: {
            chooseList_.AddEntriesFrom(input, _repeated_chooseList_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: {
            KeyItemId = input.ReadInt32();
            break;
          }
          case 26: {
            if (openLevel_ == null) {
              OpenLevel = new global::Cfg.ConditionMinLevel();
            }
            input.ReadMessage(OpenLevel);
            break;
          }
          case 32: {
            UseOnObtain = input.ReadBool();
            break;
          }
          case 42:
          case 40: {
            dropIds_.AddEntriesFrom(ref input, _repeated_dropIds_codec);
            break;
          }
          case 50: {
            chooseList_.AddEntriesFrom(ref input, _repeated_chooseList_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ConditionCondition(ConditionCondition other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.TimeRange:
          TimeRange = other.TimeRange.Clone();
          break;
        case ValueOneofCase.MultiRoleCondition:
          MultiRoleCondition = other.MultiRoleCondition.Clone();
          break;
        case ValueOneofCase.GenderLimit:
          GenderLimit = other.GenderLimit.Clone();
          break;
        case ValueOneofCase.MinLevel:
          MinLevel = other.MinLevel.Clone();
          break;
        case ValueOneofCase.MaxLevel:
          MaxLevel = other.MaxLevel.Clone();
          break;
        case ValueOneofCase.MinMaxLevel:
          MinMaxLevel = other.MinMaxLevel.Clone();
          break;
        case ValueOneofCase.ClothesPropertyScoreGreaterThan:
          ClothesPropertyScoreGreaterThan = other.ClothesPropertyScoreGreaterThan.Clone();
          break;
        case ValueOneofCase.ContainsItem:
          ContainsItem = other.ContainsItem.Clone();
          break;
      }

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

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

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

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

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      TimeRange = 1,
      MultiRoleCondition = 2,
      GenderLimit = 3,
      MinLevel = 4,
      MaxLevel = 5,
      MinMaxLevel = 6,
      ClothesPropertyScoreGreaterThan = 7,
      ContainsItem = 8,
    }
    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 ConditionCondition);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ConditionCondition other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(TimeRange, other.TimeRange)) return false;
      if (!object.Equals(MultiRoleCondition, other.MultiRoleCondition)) return false;
      if (!object.Equals(GenderLimit, other.GenderLimit)) return false;
      if (!object.Equals(MinLevel, other.MinLevel)) return false;
      if (!object.Equals(MaxLevel, other.MaxLevel)) return false;
      if (!object.Equals(MinMaxLevel, other.MinMaxLevel)) return false;
      if (!object.Equals(ClothesPropertyScoreGreaterThan, other.ClothesPropertyScoreGreaterThan)) return false;
      if (!object.Equals(ContainsItem, other.ContainsItem)) 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.TimeRange) hash ^= TimeRange.GetHashCode();
      if (valueCase_ == ValueOneofCase.MultiRoleCondition) hash ^= MultiRoleCondition.GetHashCode();
      if (valueCase_ == ValueOneofCase.GenderLimit) hash ^= GenderLimit.GetHashCode();
      if (valueCase_ == ValueOneofCase.MinLevel) hash ^= MinLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.MaxLevel) hash ^= MaxLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.MinMaxLevel) hash ^= MinMaxLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) hash ^= ClothesPropertyScoreGreaterThan.GetHashCode();
      if (valueCase_ == ValueOneofCase.ContainsItem) hash ^= ContainsItem.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.TimeRange) {
        output.WriteRawTag(10);
        output.WriteMessage(TimeRange);
      }
      if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
        output.WriteRawTag(18);
        output.WriteMessage(MultiRoleCondition);
      }
      if (valueCase_ == ValueOneofCase.GenderLimit) {
        output.WriteRawTag(26);
        output.WriteMessage(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        output.WriteRawTag(34);
        output.WriteMessage(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        output.WriteRawTag(42);
        output.WriteMessage(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        output.WriteRawTag(50);
        output.WriteMessage(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        output.WriteRawTag(58);
        output.WriteMessage(ClothesPropertyScoreGreaterThan);
      }
      if (valueCase_ == ValueOneofCase.ContainsItem) {
        output.WriteRawTag(66);
        output.WriteMessage(ContainsItem);
      }
      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.TimeRange) {
        output.WriteRawTag(10);
        output.WriteMessage(TimeRange);
      }
      if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
        output.WriteRawTag(18);
        output.WriteMessage(MultiRoleCondition);
      }
      if (valueCase_ == ValueOneofCase.GenderLimit) {
        output.WriteRawTag(26);
        output.WriteMessage(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        output.WriteRawTag(34);
        output.WriteMessage(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        output.WriteRawTag(42);
        output.WriteMessage(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        output.WriteRawTag(50);
        output.WriteMessage(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        output.WriteRawTag(58);
        output.WriteMessage(ClothesPropertyScoreGreaterThan);
      }
      if (valueCase_ == ValueOneofCase.ContainsItem) {
        output.WriteRawTag(66);
        output.WriteMessage(ContainsItem);
      }
      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.TimeRange) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimeRange);
      }
      if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MultiRoleCondition);
      }
      if (valueCase_ == ValueOneofCase.GenderLimit) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ClothesPropertyScoreGreaterThan);
      }
      if (valueCase_ == ValueOneofCase.ContainsItem) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ContainsItem);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionCondition other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.TimeRange:
          if (TimeRange == null) {
            TimeRange = new global::Cfg.ConditionTimeRange();
          }
          TimeRange.MergeFrom(other.TimeRange);
          break;
        case ValueOneofCase.MultiRoleCondition:
          if (MultiRoleCondition == null) {
            MultiRoleCondition = new global::Cfg.ConditionMultiRoleCondition();
          }
          MultiRoleCondition.MergeFrom(other.MultiRoleCondition);
          break;
        case ValueOneofCase.GenderLimit:
          if (GenderLimit == null) {
            GenderLimit = new global::Cfg.ConditionGenderLimit();
          }
          GenderLimit.MergeFrom(other.GenderLimit);
          break;
        case ValueOneofCase.MinLevel:
          if (MinLevel == null) {
            MinLevel = new global::Cfg.ConditionMinLevel();
          }
          MinLevel.MergeFrom(other.MinLevel);
          break;
        case ValueOneofCase.MaxLevel:
          if (MaxLevel == null) {
            MaxLevel = new global::Cfg.ConditionMaxLevel();
          }
          MaxLevel.MergeFrom(other.MaxLevel);
          break;
        case ValueOneofCase.MinMaxLevel:
          if (MinMaxLevel == null) {
            MinMaxLevel = new global::Cfg.ConditionMinMaxLevel();
          }
          MinMaxLevel.MergeFrom(other.MinMaxLevel);
          break;
        case ValueOneofCase.ClothesPropertyScoreGreaterThan:
          if (ClothesPropertyScoreGreaterThan == null) {
            ClothesPropertyScoreGreaterThan = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
          }
          ClothesPropertyScoreGreaterThan.MergeFrom(other.ClothesPropertyScoreGreaterThan);
          break;
        case ValueOneofCase.ContainsItem:
          if (ContainsItem == null) {
            ContainsItem = new global::Cfg.ConditionContainsItem();
          }
          ContainsItem.MergeFrom(other.ContainsItem);
          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.ConditionTimeRange subBuilder = new global::Cfg.ConditionTimeRange();
            if (valueCase_ == ValueOneofCase.TimeRange) {
              subBuilder.MergeFrom(TimeRange);
            }
            input.ReadMessage(subBuilder);
            TimeRange = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.ConditionMultiRoleCondition subBuilder = new global::Cfg.ConditionMultiRoleCondition();
            if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
              subBuilder.MergeFrom(MultiRoleCondition);
            }
            input.ReadMessage(subBuilder);
            MultiRoleCondition = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ConditionGenderLimit subBuilder = new global::Cfg.ConditionGenderLimit();
            if (valueCase_ == ValueOneofCase.GenderLimit) {
              subBuilder.MergeFrom(GenderLimit);
            }
            input.ReadMessage(subBuilder);
            GenderLimit = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ConditionMinLevel subBuilder = new global::Cfg.ConditionMinLevel();
            if (valueCase_ == ValueOneofCase.MinLevel) {
              subBuilder.MergeFrom(MinLevel);
            }
            input.ReadMessage(subBuilder);
            MinLevel = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ConditionMaxLevel subBuilder = new global::Cfg.ConditionMaxLevel();
            if (valueCase_ == ValueOneofCase.MaxLevel) {
              subBuilder.MergeFrom(MaxLevel);
            }
            input.ReadMessage(subBuilder);
            MaxLevel = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.ConditionMinMaxLevel subBuilder = new global::Cfg.ConditionMinMaxLevel();
            if (valueCase_ == ValueOneofCase.MinMaxLevel) {
              subBuilder.MergeFrom(MinMaxLevel);
            }
            input.ReadMessage(subBuilder);
            MinMaxLevel = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.ConditionClothesPropertyScoreGreaterThan subBuilder = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
            if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
              subBuilder.MergeFrom(ClothesPropertyScoreGreaterThan);
            }
            input.ReadMessage(subBuilder);
            ClothesPropertyScoreGreaterThan = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.ConditionContainsItem subBuilder = new global::Cfg.ConditionContainsItem();
            if (valueCase_ == ValueOneofCase.ContainsItem) {
              subBuilder.MergeFrom(ContainsItem);
            }
            input.ReadMessage(subBuilder);
            ContainsItem = 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.ConditionTimeRange subBuilder = new global::Cfg.ConditionTimeRange();
            if (valueCase_ == ValueOneofCase.TimeRange) {
              subBuilder.MergeFrom(TimeRange);
            }
            input.ReadMessage(subBuilder);
            TimeRange = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.ConditionMultiRoleCondition subBuilder = new global::Cfg.ConditionMultiRoleCondition();
            if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
              subBuilder.MergeFrom(MultiRoleCondition);
            }
            input.ReadMessage(subBuilder);
            MultiRoleCondition = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ConditionGenderLimit subBuilder = new global::Cfg.ConditionGenderLimit();
            if (valueCase_ == ValueOneofCase.GenderLimit) {
              subBuilder.MergeFrom(GenderLimit);
            }
            input.ReadMessage(subBuilder);
            GenderLimit = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ConditionMinLevel subBuilder = new global::Cfg.ConditionMinLevel();
            if (valueCase_ == ValueOneofCase.MinLevel) {
              subBuilder.MergeFrom(MinLevel);
            }
            input.ReadMessage(subBuilder);
            MinLevel = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ConditionMaxLevel subBuilder = new global::Cfg.ConditionMaxLevel();
            if (valueCase_ == ValueOneofCase.MaxLevel) {
              subBuilder.MergeFrom(MaxLevel);
            }
            input.ReadMessage(subBuilder);
            MaxLevel = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.ConditionMinMaxLevel subBuilder = new global::Cfg.ConditionMinMaxLevel();
            if (valueCase_ == ValueOneofCase.MinMaxLevel) {
              subBuilder.MergeFrom(MinMaxLevel);
            }
            input.ReadMessage(subBuilder);
            MinMaxLevel = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.ConditionClothesPropertyScoreGreaterThan subBuilder = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
            if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
              subBuilder.MergeFrom(ClothesPropertyScoreGreaterThan);
            }
            input.ReadMessage(subBuilder);
            ClothesPropertyScoreGreaterThan = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.ConditionContainsItem subBuilder = new global::Cfg.ConditionContainsItem();
            if (valueCase_ == ValueOneofCase.ContainsItem) {
              subBuilder.MergeFrom(ContainsItem);
            }
            input.ReadMessage(subBuilder);
            ContainsItem = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "date_time_range" field.</summary>
    public const int DateTimeRangeFieldNumber = 1;
    private global::Cfg.CommonDateTimeRange dateTimeRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.CommonDateTimeRange DateTimeRange {
      get { return dateTimeRange_; }
      set {
        dateTimeRange_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionTimeRange other) {
      if (other == null) {
        return;
      }
      if (other.dateTimeRange_ != null) {
        if (dateTimeRange_ == null) {
          DateTimeRange = new global::Cfg.CommonDateTimeRange();
        }
        DateTimeRange.MergeFrom(other.DateTimeRange);
      }
      _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 (dateTimeRange_ == null) {
              DateTimeRange = new global::Cfg.CommonDateTimeRange();
            }
            input.ReadMessage(DateTimeRange);
            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 (dateTimeRange_ == null) {
              DateTimeRange = new global::Cfg.CommonDateTimeRange();
            }
            input.ReadMessage(DateTimeRange);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CommonDateTimeRange(CommonDateTimeRange 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 CommonDateTimeRange Clone() {
      return new CommonDateTimeRange(this);
    }

    /// <summary>Field number for the "start_time" field.</summary>
    public const int StartTimeFieldNumber = 1;
    private readonly static int StartTimeDefaultValue = 0;

    private int startTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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 int EndTimeDefaultValue = 0;

    private int endTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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 CommonDateTimeRange);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CommonDateTimeRange 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.WriteInt32(StartTime);
      }
      if (HasEndTime) {
        output.WriteRawTag(16);
        output.WriteInt32(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.WriteInt32(StartTime);
      }
      if (HasEndTime) {
        output.WriteRawTag(16);
        output.WriteInt32(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.ComputeInt32Size(StartTime);
      }
      if (HasEndTime) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EndTime);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CommonDateTimeRange 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.ReadInt32();
            break;
          }
          case 16: {
            EndTime = 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: {
            StartTime = input.ReadInt32();
            break;
          }
          case 16: {
            EndTime = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ConditionRoleCondition(ConditionRoleCondition other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.MultiRoleCondition:
          MultiRoleCondition = other.MultiRoleCondition.Clone();
          break;
        case ValueOneofCase.GenderLimit:
          GenderLimit = other.GenderLimit.Clone();
          break;
        case ValueOneofCase.MinLevel:
          MinLevel = other.MinLevel.Clone();
          break;
        case ValueOneofCase.MaxLevel:
          MaxLevel = other.MaxLevel.Clone();
          break;
        case ValueOneofCase.MinMaxLevel:
          MinMaxLevel = other.MinMaxLevel.Clone();
          break;
        case ValueOneofCase.ClothesPropertyScoreGreaterThan:
          ClothesPropertyScoreGreaterThan = other.ClothesPropertyScoreGreaterThan.Clone();
          break;
        case ValueOneofCase.ContainsItem:
          ContainsItem = other.ContainsItem.Clone();
          break;
      }

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

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

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

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      MultiRoleCondition = 2,
      GenderLimit = 3,
      MinLevel = 4,
      MaxLevel = 5,
      MinMaxLevel = 6,
      ClothesPropertyScoreGreaterThan = 7,
      ContainsItem = 8,
    }
    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 ConditionRoleCondition);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ConditionRoleCondition other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(MultiRoleCondition, other.MultiRoleCondition)) return false;
      if (!object.Equals(GenderLimit, other.GenderLimit)) return false;
      if (!object.Equals(MinLevel, other.MinLevel)) return false;
      if (!object.Equals(MaxLevel, other.MaxLevel)) return false;
      if (!object.Equals(MinMaxLevel, other.MinMaxLevel)) return false;
      if (!object.Equals(ClothesPropertyScoreGreaterThan, other.ClothesPropertyScoreGreaterThan)) return false;
      if (!object.Equals(ContainsItem, other.ContainsItem)) 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.MultiRoleCondition) hash ^= MultiRoleCondition.GetHashCode();
      if (valueCase_ == ValueOneofCase.GenderLimit) hash ^= GenderLimit.GetHashCode();
      if (valueCase_ == ValueOneofCase.MinLevel) hash ^= MinLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.MaxLevel) hash ^= MaxLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.MinMaxLevel) hash ^= MinMaxLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) hash ^= ClothesPropertyScoreGreaterThan.GetHashCode();
      if (valueCase_ == ValueOneofCase.ContainsItem) hash ^= ContainsItem.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.MultiRoleCondition) {
        output.WriteRawTag(18);
        output.WriteMessage(MultiRoleCondition);
      }
      if (valueCase_ == ValueOneofCase.GenderLimit) {
        output.WriteRawTag(26);
        output.WriteMessage(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        output.WriteRawTag(34);
        output.WriteMessage(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        output.WriteRawTag(42);
        output.WriteMessage(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        output.WriteRawTag(50);
        output.WriteMessage(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        output.WriteRawTag(58);
        output.WriteMessage(ClothesPropertyScoreGreaterThan);
      }
      if (valueCase_ == ValueOneofCase.ContainsItem) {
        output.WriteRawTag(66);
        output.WriteMessage(ContainsItem);
      }
      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.MultiRoleCondition) {
        output.WriteRawTag(18);
        output.WriteMessage(MultiRoleCondition);
      }
      if (valueCase_ == ValueOneofCase.GenderLimit) {
        output.WriteRawTag(26);
        output.WriteMessage(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        output.WriteRawTag(34);
        output.WriteMessage(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        output.WriteRawTag(42);
        output.WriteMessage(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        output.WriteRawTag(50);
        output.WriteMessage(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        output.WriteRawTag(58);
        output.WriteMessage(ClothesPropertyScoreGreaterThan);
      }
      if (valueCase_ == ValueOneofCase.ContainsItem) {
        output.WriteRawTag(66);
        output.WriteMessage(ContainsItem);
      }
      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.MultiRoleCondition) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MultiRoleCondition);
      }
      if (valueCase_ == ValueOneofCase.GenderLimit) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ClothesPropertyScoreGreaterThan);
      }
      if (valueCase_ == ValueOneofCase.ContainsItem) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ContainsItem);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionRoleCondition other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.MultiRoleCondition:
          if (MultiRoleCondition == null) {
            MultiRoleCondition = new global::Cfg.ConditionMultiRoleCondition();
          }
          MultiRoleCondition.MergeFrom(other.MultiRoleCondition);
          break;
        case ValueOneofCase.GenderLimit:
          if (GenderLimit == null) {
            GenderLimit = new global::Cfg.ConditionGenderLimit();
          }
          GenderLimit.MergeFrom(other.GenderLimit);
          break;
        case ValueOneofCase.MinLevel:
          if (MinLevel == null) {
            MinLevel = new global::Cfg.ConditionMinLevel();
          }
          MinLevel.MergeFrom(other.MinLevel);
          break;
        case ValueOneofCase.MaxLevel:
          if (MaxLevel == null) {
            MaxLevel = new global::Cfg.ConditionMaxLevel();
          }
          MaxLevel.MergeFrom(other.MaxLevel);
          break;
        case ValueOneofCase.MinMaxLevel:
          if (MinMaxLevel == null) {
            MinMaxLevel = new global::Cfg.ConditionMinMaxLevel();
          }
          MinMaxLevel.MergeFrom(other.MinMaxLevel);
          break;
        case ValueOneofCase.ClothesPropertyScoreGreaterThan:
          if (ClothesPropertyScoreGreaterThan == null) {
            ClothesPropertyScoreGreaterThan = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
          }
          ClothesPropertyScoreGreaterThan.MergeFrom(other.ClothesPropertyScoreGreaterThan);
          break;
        case ValueOneofCase.ContainsItem:
          if (ContainsItem == null) {
            ContainsItem = new global::Cfg.ConditionContainsItem();
          }
          ContainsItem.MergeFrom(other.ContainsItem);
          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.ConditionMultiRoleCondition subBuilder = new global::Cfg.ConditionMultiRoleCondition();
            if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
              subBuilder.MergeFrom(MultiRoleCondition);
            }
            input.ReadMessage(subBuilder);
            MultiRoleCondition = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ConditionGenderLimit subBuilder = new global::Cfg.ConditionGenderLimit();
            if (valueCase_ == ValueOneofCase.GenderLimit) {
              subBuilder.MergeFrom(GenderLimit);
            }
            input.ReadMessage(subBuilder);
            GenderLimit = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ConditionMinLevel subBuilder = new global::Cfg.ConditionMinLevel();
            if (valueCase_ == ValueOneofCase.MinLevel) {
              subBuilder.MergeFrom(MinLevel);
            }
            input.ReadMessage(subBuilder);
            MinLevel = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ConditionMaxLevel subBuilder = new global::Cfg.ConditionMaxLevel();
            if (valueCase_ == ValueOneofCase.MaxLevel) {
              subBuilder.MergeFrom(MaxLevel);
            }
            input.ReadMessage(subBuilder);
            MaxLevel = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.ConditionMinMaxLevel subBuilder = new global::Cfg.ConditionMinMaxLevel();
            if (valueCase_ == ValueOneofCase.MinMaxLevel) {
              subBuilder.MergeFrom(MinMaxLevel);
            }
            input.ReadMessage(subBuilder);
            MinMaxLevel = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.ConditionClothesPropertyScoreGreaterThan subBuilder = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
            if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
              subBuilder.MergeFrom(ClothesPropertyScoreGreaterThan);
            }
            input.ReadMessage(subBuilder);
            ClothesPropertyScoreGreaterThan = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.ConditionContainsItem subBuilder = new global::Cfg.ConditionContainsItem();
            if (valueCase_ == ValueOneofCase.ContainsItem) {
              subBuilder.MergeFrom(ContainsItem);
            }
            input.ReadMessage(subBuilder);
            ContainsItem = 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.ConditionMultiRoleCondition subBuilder = new global::Cfg.ConditionMultiRoleCondition();
            if (valueCase_ == ValueOneofCase.MultiRoleCondition) {
              subBuilder.MergeFrom(MultiRoleCondition);
            }
            input.ReadMessage(subBuilder);
            MultiRoleCondition = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.ConditionGenderLimit subBuilder = new global::Cfg.ConditionGenderLimit();
            if (valueCase_ == ValueOneofCase.GenderLimit) {
              subBuilder.MergeFrom(GenderLimit);
            }
            input.ReadMessage(subBuilder);
            GenderLimit = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ConditionMinLevel subBuilder = new global::Cfg.ConditionMinLevel();
            if (valueCase_ == ValueOneofCase.MinLevel) {
              subBuilder.MergeFrom(MinLevel);
            }
            input.ReadMessage(subBuilder);
            MinLevel = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ConditionMaxLevel subBuilder = new global::Cfg.ConditionMaxLevel();
            if (valueCase_ == ValueOneofCase.MaxLevel) {
              subBuilder.MergeFrom(MaxLevel);
            }
            input.ReadMessage(subBuilder);
            MaxLevel = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.ConditionMinMaxLevel subBuilder = new global::Cfg.ConditionMinMaxLevel();
            if (valueCase_ == ValueOneofCase.MinMaxLevel) {
              subBuilder.MergeFrom(MinMaxLevel);
            }
            input.ReadMessage(subBuilder);
            MinMaxLevel = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.ConditionClothesPropertyScoreGreaterThan subBuilder = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
            if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
              subBuilder.MergeFrom(ClothesPropertyScoreGreaterThan);
            }
            input.ReadMessage(subBuilder);
            ClothesPropertyScoreGreaterThan = subBuilder;
            break;
          }
          case 66: {
            global::Cfg.ConditionContainsItem subBuilder = new global::Cfg.ConditionContainsItem();
            if (valueCase_ == ValueOneofCase.ContainsItem) {
              subBuilder.MergeFrom(ContainsItem);
            }
            input.ReadMessage(subBuilder);
            ContainsItem = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "conditions" field.</summary>
    public const int ConditionsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.ConditionRoleCondition> _repeated_conditions_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.ConditionRoleCondition.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ConditionRoleCondition> conditions_ = new pbc::RepeatedField<global::Cfg.ConditionRoleCondition>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ConditionRoleCondition> Conditions {
      get { return conditions_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ConditionMultiRoleCondition other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!conditions_.Equals(other.conditions_)) 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 ^= conditions_.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
      conditions_.WriteTo(output, _repeated_conditions_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) {
      conditions_.WriteTo(ref output, _repeated_conditions_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 += conditions_.CalculateSize(_repeated_conditions_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionMultiRoleCondition other) {
      if (other == null) {
        return;
      }
      conditions_.Add(other.conditions_);
      _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: {
            conditions_.AddEntriesFrom(input, _repeated_conditions_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: {
            conditions_.AddEntriesFrom(ref input, _repeated_conditions_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ConditionBoolRoleCondition(ConditionBoolRoleCondition other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.GenderLimit:
          GenderLimit = other.GenderLimit.Clone();
          break;
        case ValueOneofCase.MinLevel:
          MinLevel = other.MinLevel.Clone();
          break;
        case ValueOneofCase.MaxLevel:
          MaxLevel = other.MaxLevel.Clone();
          break;
        case ValueOneofCase.MinMaxLevel:
          MinMaxLevel = other.MinMaxLevel.Clone();
          break;
        case ValueOneofCase.ClothesPropertyScoreGreaterThan:
          ClothesPropertyScoreGreaterThan = other.ClothesPropertyScoreGreaterThan.Clone();
          break;
      }

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

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      GenderLimit = 3,
      MinLevel = 4,
      MaxLevel = 5,
      MinMaxLevel = 6,
      ClothesPropertyScoreGreaterThan = 7,
    }
    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 ConditionBoolRoleCondition);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ConditionBoolRoleCondition other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(GenderLimit, other.GenderLimit)) return false;
      if (!object.Equals(MinLevel, other.MinLevel)) return false;
      if (!object.Equals(MaxLevel, other.MaxLevel)) return false;
      if (!object.Equals(MinMaxLevel, other.MinMaxLevel)) return false;
      if (!object.Equals(ClothesPropertyScoreGreaterThan, other.ClothesPropertyScoreGreaterThan)) 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.GenderLimit) hash ^= GenderLimit.GetHashCode();
      if (valueCase_ == ValueOneofCase.MinLevel) hash ^= MinLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.MaxLevel) hash ^= MaxLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.MinMaxLevel) hash ^= MinMaxLevel.GetHashCode();
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) hash ^= ClothesPropertyScoreGreaterThan.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.GenderLimit) {
        output.WriteRawTag(26);
        output.WriteMessage(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        output.WriteRawTag(34);
        output.WriteMessage(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        output.WriteRawTag(42);
        output.WriteMessage(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        output.WriteRawTag(50);
        output.WriteMessage(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        output.WriteRawTag(58);
        output.WriteMessage(ClothesPropertyScoreGreaterThan);
      }
      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.GenderLimit) {
        output.WriteRawTag(26);
        output.WriteMessage(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        output.WriteRawTag(34);
        output.WriteMessage(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        output.WriteRawTag(42);
        output.WriteMessage(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        output.WriteRawTag(50);
        output.WriteMessage(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        output.WriteRawTag(58);
        output.WriteMessage(ClothesPropertyScoreGreaterThan);
      }
      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.GenderLimit) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GenderLimit);
      }
      if (valueCase_ == ValueOneofCase.MinLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinLevel);
      }
      if (valueCase_ == ValueOneofCase.MaxLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MaxLevel);
      }
      if (valueCase_ == ValueOneofCase.MinMaxLevel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinMaxLevel);
      }
      if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ClothesPropertyScoreGreaterThan);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionBoolRoleCondition other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.GenderLimit:
          if (GenderLimit == null) {
            GenderLimit = new global::Cfg.ConditionGenderLimit();
          }
          GenderLimit.MergeFrom(other.GenderLimit);
          break;
        case ValueOneofCase.MinLevel:
          if (MinLevel == null) {
            MinLevel = new global::Cfg.ConditionMinLevel();
          }
          MinLevel.MergeFrom(other.MinLevel);
          break;
        case ValueOneofCase.MaxLevel:
          if (MaxLevel == null) {
            MaxLevel = new global::Cfg.ConditionMaxLevel();
          }
          MaxLevel.MergeFrom(other.MaxLevel);
          break;
        case ValueOneofCase.MinMaxLevel:
          if (MinMaxLevel == null) {
            MinMaxLevel = new global::Cfg.ConditionMinMaxLevel();
          }
          MinMaxLevel.MergeFrom(other.MinMaxLevel);
          break;
        case ValueOneofCase.ClothesPropertyScoreGreaterThan:
          if (ClothesPropertyScoreGreaterThan == null) {
            ClothesPropertyScoreGreaterThan = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
          }
          ClothesPropertyScoreGreaterThan.MergeFrom(other.ClothesPropertyScoreGreaterThan);
          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 26: {
            global::Cfg.ConditionGenderLimit subBuilder = new global::Cfg.ConditionGenderLimit();
            if (valueCase_ == ValueOneofCase.GenderLimit) {
              subBuilder.MergeFrom(GenderLimit);
            }
            input.ReadMessage(subBuilder);
            GenderLimit = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ConditionMinLevel subBuilder = new global::Cfg.ConditionMinLevel();
            if (valueCase_ == ValueOneofCase.MinLevel) {
              subBuilder.MergeFrom(MinLevel);
            }
            input.ReadMessage(subBuilder);
            MinLevel = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ConditionMaxLevel subBuilder = new global::Cfg.ConditionMaxLevel();
            if (valueCase_ == ValueOneofCase.MaxLevel) {
              subBuilder.MergeFrom(MaxLevel);
            }
            input.ReadMessage(subBuilder);
            MaxLevel = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.ConditionMinMaxLevel subBuilder = new global::Cfg.ConditionMinMaxLevel();
            if (valueCase_ == ValueOneofCase.MinMaxLevel) {
              subBuilder.MergeFrom(MinMaxLevel);
            }
            input.ReadMessage(subBuilder);
            MinMaxLevel = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.ConditionClothesPropertyScoreGreaterThan subBuilder = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
            if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
              subBuilder.MergeFrom(ClothesPropertyScoreGreaterThan);
            }
            input.ReadMessage(subBuilder);
            ClothesPropertyScoreGreaterThan = 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 26: {
            global::Cfg.ConditionGenderLimit subBuilder = new global::Cfg.ConditionGenderLimit();
            if (valueCase_ == ValueOneofCase.GenderLimit) {
              subBuilder.MergeFrom(GenderLimit);
            }
            input.ReadMessage(subBuilder);
            GenderLimit = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.ConditionMinLevel subBuilder = new global::Cfg.ConditionMinLevel();
            if (valueCase_ == ValueOneofCase.MinLevel) {
              subBuilder.MergeFrom(MinLevel);
            }
            input.ReadMessage(subBuilder);
            MinLevel = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.ConditionMaxLevel subBuilder = new global::Cfg.ConditionMaxLevel();
            if (valueCase_ == ValueOneofCase.MaxLevel) {
              subBuilder.MergeFrom(MaxLevel);
            }
            input.ReadMessage(subBuilder);
            MaxLevel = subBuilder;
            break;
          }
          case 50: {
            global::Cfg.ConditionMinMaxLevel subBuilder = new global::Cfg.ConditionMinMaxLevel();
            if (valueCase_ == ValueOneofCase.MinMaxLevel) {
              subBuilder.MergeFrom(MinMaxLevel);
            }
            input.ReadMessage(subBuilder);
            MinMaxLevel = subBuilder;
            break;
          }
          case 58: {
            global::Cfg.ConditionClothesPropertyScoreGreaterThan subBuilder = new global::Cfg.ConditionClothesPropertyScoreGreaterThan();
            if (valueCase_ == ValueOneofCase.ClothesPropertyScoreGreaterThan) {
              subBuilder.MergeFrom(ClothesPropertyScoreGreaterThan);
            }
            input.ReadMessage(subBuilder);
            ClothesPropertyScoreGreaterThan = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "gender" field.</summary>
    public const int GenderFieldNumber = 1;
    private readonly static global::Cfg.RoleEGenderType GenderDefaultValue = global::Cfg.RoleEGenderType.Male;

    private global::Cfg.RoleEGenderType gender_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.RoleEGenderType Gender {
      get { if ((_hasBits0 & 1) != 0) { return gender_; } else { return GenderDefaultValue; } }
      set {
        _hasBits0 |= 1;
        gender_ = value;
      }
    }
    /// <summary>Gets whether the "gender" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasGender {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "gender" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearGender() {
      _hasBits0 &= ~1;
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionGenderLimit other) {
      if (other == null) {
        return;
      }
      if (other.HasGender) {
        Gender = other.Gender;
      }
      _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: {
            Gender = (global::Cfg.RoleEGenderType) 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: {
            Gender = (global::Cfg.RoleEGenderType) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "level" field.</summary>
    public const int LevelFieldNumber = 1;
    private readonly static int LevelDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionMinLevel other) {
      if (other == null) {
        return;
      }
      if (other.HasLevel) {
        Level = other.Level;
      }
      _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: {
            Level = 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: {
            Level = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "level" field.</summary>
    public const int LevelFieldNumber = 1;
    private readonly static int LevelDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionMaxLevel other) {
      if (other == null) {
        return;
      }
      if (other.HasLevel) {
        Level = other.Level;
      }
      _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: {
            Level = 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: {
            Level = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "min" field.</summary>
    public const int MinFieldNumber = 1;
    private readonly static int MinDefaultValue = 0;

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

    /// <summary>Field number for the "max" field.</summary>
    public const int MaxFieldNumber = 2;
    private readonly static int MaxDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ConditionMinMaxLevel other) {
      if (other == null) {
        return;
      }
      if (other.HasMin) {
        Min = other.Min;
      }
      if (other.HasMax) {
        Max = other.Max;
      }
      _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: {
            Min = input.ReadInt32();
            break;
          }
          case 16: {
            Max = 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: {
            Min = input.ReadInt32();
            break;
          }
          case 16: {
            Max = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "prop" field.</summary>
    public const int PropFieldNumber = 1;
    private readonly static global::Cfg.ItemEClothesPropertyType PropDefaultValue = global::Cfg.ItemEClothesPropertyType.JianYue;

    private global::Cfg.ItemEClothesPropertyType prop_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemEClothesPropertyType Prop {
      get { if ((_hasBits0 & 1) != 0) { return prop_; } else { return PropDefaultValue; } }
      set {
        _hasBits0 |= 1;
        prop_ = value;
      }
    }
    /// <summary>Gets whether the "prop" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasProp {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "prop" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearProp() {
      _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 ConditionClothesPropertyScoreGreaterThan);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ConditionClothesPropertyScoreGreaterThan other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Prop != other.Prop) 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 (HasProp) hash ^= Prop.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 (HasProp) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Prop);
      }
      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 (HasProp) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Prop);
      }
      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 (HasProp) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Prop);
      }
      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(ConditionClothesPropertyScoreGreaterThan other) {
      if (other == null) {
        return;
      }
      if (other.HasProp) {
        Prop = other.Prop;
      }
      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: {
            Prop = (global::Cfg.ItemEClothesPropertyType) input.ReadEnum();
            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: {
            Prop = (global::Cfg.ItemEClothesPropertyType) input.ReadEnum();
            break;
          }
          case 16: {
            Value = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 2;
    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 "reverse" field.</summary>
    public const int ReverseFieldNumber = 3;
    private readonly static bool ReverseDefaultValue = false;

    private bool reverse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Reverse {
      get { if ((_hasBits0 & 4) != 0) { return reverse_; } else { return ReverseDefaultValue; } }
      set {
        _hasBits0 |= 4;
        reverse_ = value;
      }
    }
    /// <summary>Gets whether the "reverse" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasReverse {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "reverse" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearReverse() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ConditionContainsItem other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemId != other.ItemId) return false;
      if (Num != other.Num) return false;
      if (Reverse != other.Reverse) 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 (HasItemId) hash ^= ItemId.GetHashCode();
      if (HasNum) hash ^= Num.GetHashCode();
      if (HasReverse) hash ^= Reverse.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 (HasItemId) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemId);
      }
      if (HasNum) {
        output.WriteRawTag(16);
        output.WriteInt32(Num);
      }
      if (HasReverse) {
        output.WriteRawTag(24);
        output.WriteBool(Reverse);
      }
      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 (HasItemId) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemId);
      }
      if (HasNum) {
        output.WriteRawTag(16);
        output.WriteInt32(Num);
      }
      if (HasReverse) {
        output.WriteRawTag(24);
        output.WriteBool(Reverse);
      }
      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 (HasItemId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemId);
      }
      if (HasNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Num);
      }
      if (HasReverse) {
        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(ConditionContainsItem other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      if (other.HasReverse) {
        Reverse = other.Reverse;
      }
      _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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
          case 24: {
            Reverse = 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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
          case 24: {
            Reverse = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "drop_id" field.</summary>
    public const int DropIdFieldNumber = 1;
    private readonly static int DropIdDefaultValue = 0;

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

    /// <summary>Field number for the "is_unique" field.</summary>
    public const int IsUniqueFieldNumber = 2;
    private readonly static bool IsUniqueDefaultValue = false;

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemChooseOneBonus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (DropId != other.DropId) return false;
      if (IsUnique != other.IsUnique) 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 (HasDropId) hash ^= DropId.GetHashCode();
      if (HasIsUnique) hash ^= IsUnique.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 (HasDropId) {
        output.WriteRawTag(8);
        output.WriteInt32(DropId);
      }
      if (HasIsUnique) {
        output.WriteRawTag(16);
        output.WriteBool(IsUnique);
      }
      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 (HasDropId) {
        output.WriteRawTag(8);
        output.WriteInt32(DropId);
      }
      if (HasIsUnique) {
        output.WriteRawTag(16);
        output.WriteBool(IsUnique);
      }
      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 (HasDropId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DropId);
      }
      if (HasIsUnique) {
        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(ItemChooseOneBonus other) {
      if (other == null) {
        return;
      }
      if (other.HasDropId) {
        DropId = other.DropId;
      }
      if (other.HasIsUnique) {
        IsUnique = other.IsUnique;
      }
      _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: {
            DropId = input.ReadInt32();
            break;
          }
          case 16: {
            IsUnique = 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: {
            DropId = input.ReadInt32();
            break;
          }
          case 16: {
            IsUnique = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemInteractionItem Clone() {
      return new ItemInteractionItem(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 "attack_num" field.</summary>
    public const int AttackNumFieldNumber = 2;
    private readonly static int AttackNumDefaultValue = 0;

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

    /// <summary>Field number for the "holding_static_mesh" field.</summary>
    public const int HoldingStaticMeshFieldNumber = 3;
    private readonly static string HoldingStaticMeshDefaultValue = "";

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

    /// <summary>Field number for the "holding_static_mesh_mat" field.</summary>
    public const int HoldingStaticMeshMatFieldNumber = 4;
    private readonly static string HoldingStaticMeshMatDefaultValue = "";

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemInteractionItem other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (AttackNum != other.AttackNum) return false;
      if (HoldingStaticMesh != other.HoldingStaticMesh) return false;
      if (HoldingStaticMeshMat != other.HoldingStaticMeshMat) 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 (HasAttackNum) hash ^= AttackNum.GetHashCode();
      if (HasHoldingStaticMesh) hash ^= HoldingStaticMesh.GetHashCode();
      if (HasHoldingStaticMeshMat) hash ^= HoldingStaticMeshMat.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 (HasAttackNum) {
        output.WriteRawTag(16);
        output.WriteInt32(AttackNum);
      }
      if (HasHoldingStaticMesh) {
        output.WriteRawTag(26);
        output.WriteString(HoldingStaticMesh);
      }
      if (HasHoldingStaticMeshMat) {
        output.WriteRawTag(34);
        output.WriteString(HoldingStaticMeshMat);
      }
      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 (HasAttackNum) {
        output.WriteRawTag(16);
        output.WriteInt32(AttackNum);
      }
      if (HasHoldingStaticMesh) {
        output.WriteRawTag(26);
        output.WriteString(HoldingStaticMesh);
      }
      if (HasHoldingStaticMeshMat) {
        output.WriteRawTag(34);
        output.WriteString(HoldingStaticMeshMat);
      }
      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 (HasAttackNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(AttackNum);
      }
      if (HasHoldingStaticMesh) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(HoldingStaticMesh);
      }
      if (HasHoldingStaticMeshMat) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(HoldingStaticMeshMat);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemInteractionItem other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasAttackNum) {
        AttackNum = other.AttackNum;
      }
      if (other.HasHoldingStaticMesh) {
        HoldingStaticMesh = other.HoldingStaticMesh;
      }
      if (other.HasHoldingStaticMeshMat) {
        HoldingStaticMeshMat = other.HoldingStaticMeshMat;
      }
      _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: {
            AttackNum = input.ReadInt32();
            break;
          }
          case 26: {
            HoldingStaticMesh = input.ReadString();
            break;
          }
          case 34: {
            HoldingStaticMeshMat = 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: {
            AttackNum = input.ReadInt32();
            break;
          }
          case 26: {
            HoldingStaticMesh = input.ReadString();
            break;
          }
          case 34: {
            HoldingStaticMeshMat = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemClothes Clone() {
      return new ItemClothes(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 "attack" field.</summary>
    public const int AttackFieldNumber = 2;
    private readonly static int AttackDefaultValue = 0;

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

    /// <summary>Field number for the "hp" field.</summary>
    public const int HpFieldNumber = 3;
    private readonly static long HpDefaultValue = 0L;

    private long hp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Hp {
      get { if ((_hasBits0 & 4) != 0) { return hp_; } else { return HpDefaultValue; } }
      set {
        _hasBits0 |= 4;
        hp_ = value;
      }
    }
    /// <summary>Gets whether the "hp" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHp {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "hp" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHp() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "energy_limit" field.</summary>
    public const int EnergyLimitFieldNumber = 4;
    private readonly static int EnergyLimitDefaultValue = 0;

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

    /// <summary>Field number for the "energy_resume" field.</summary>
    public const int EnergyResumeFieldNumber = 5;
    private readonly static int EnergyResumeDefaultValue = 0;

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemClothes other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Attack != other.Attack) return false;
      if (Hp != other.Hp) return false;
      if (EnergyLimit != other.EnergyLimit) return false;
      if (EnergyResume != other.EnergyResume) 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 (HasAttack) hash ^= Attack.GetHashCode();
      if (HasHp) hash ^= Hp.GetHashCode();
      if (HasEnergyLimit) hash ^= EnergyLimit.GetHashCode();
      if (HasEnergyResume) hash ^= EnergyResume.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 (HasAttack) {
        output.WriteRawTag(16);
        output.WriteInt32(Attack);
      }
      if (HasHp) {
        output.WriteRawTag(24);
        output.WriteInt64(Hp);
      }
      if (HasEnergyLimit) {
        output.WriteRawTag(32);
        output.WriteInt32(EnergyLimit);
      }
      if (HasEnergyResume) {
        output.WriteRawTag(40);
        output.WriteInt32(EnergyResume);
      }
      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 (HasAttack) {
        output.WriteRawTag(16);
        output.WriteInt32(Attack);
      }
      if (HasHp) {
        output.WriteRawTag(24);
        output.WriteInt64(Hp);
      }
      if (HasEnergyLimit) {
        output.WriteRawTag(32);
        output.WriteInt32(EnergyLimit);
      }
      if (HasEnergyResume) {
        output.WriteRawTag(40);
        output.WriteInt32(EnergyResume);
      }
      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 (HasAttack) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Attack);
      }
      if (HasHp) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Hp);
      }
      if (HasEnergyLimit) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EnergyLimit);
      }
      if (HasEnergyResume) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EnergyResume);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemClothes other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasAttack) {
        Attack = other.Attack;
      }
      if (other.HasHp) {
        Hp = other.Hp;
      }
      if (other.HasEnergyLimit) {
        EnergyLimit = other.EnergyLimit;
      }
      if (other.HasEnergyResume) {
        EnergyResume = other.EnergyResume;
      }
      _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: {
            Attack = input.ReadInt32();
            break;
          }
          case 24: {
            Hp = input.ReadInt64();
            break;
          }
          case 32: {
            EnergyLimit = input.ReadInt32();
            break;
          }
          case 40: {
            EnergyResume = 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: {
            Attack = input.ReadInt32();
            break;
          }
          case 24: {
            Hp = input.ReadInt64();
            break;
          }
          case 32: {
            EnergyLimit = input.ReadInt32();
            break;
          }
          case 40: {
            EnergyResume = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemDesignDrawing Clone() {
      return new ItemDesignDrawing(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 "learn_component_id" field.</summary>
    public const int LearnComponentIdFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_learnComponentId_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> learnComponentId_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> LearnComponentId {
      get { return learnComponentId_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemDesignDrawing other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if(!learnComponentId_.Equals(other.learnComponentId_)) 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 ^= learnComponentId_.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);
      }
      learnComponentId_.WriteTo(output, _repeated_learnComponentId_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);
      }
      learnComponentId_.WriteTo(ref output, _repeated_learnComponentId_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 += learnComponentId_.CalculateSize(_repeated_learnComponentId_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemDesignDrawing other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      learnComponentId_.Add(other.learnComponentId_);
      _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: {
            learnComponentId_.AddEntriesFrom(input, _repeated_learnComponentId_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: {
            learnComponentId_.AddEntriesFrom(ref input, _repeated_learnComponentId_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ItemDymmy Clone() {
      return new ItemDymmy(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 "cost" field.</summary>
    public const int CostFieldNumber = 2;
    private global::Cfg.CostCost cost_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.CostCost Cost {
      get { return cost_; }
      set {
        cost_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemDymmy other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (!object.Equals(Cost, other.Cost)) 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 (cost_ != null) hash ^= Cost.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 (cost_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Cost);
      }
      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 (cost_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Cost);
      }
      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 (cost_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Cost);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ItemDymmy other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.cost_ != null) {
        if (cost_ == null) {
          Cost = new global::Cfg.CostCost();
        }
        Cost.MergeFrom(other.Cost);
      }
      _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 (cost_ == null) {
              Cost = new global::Cfg.CostCost();
            }
            input.ReadMessage(Cost);
            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 (cost_ == null) {
              Cost = new global::Cfg.CostCost();
            }
            input.ReadMessage(Cost);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CostCost(CostCost other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.CostCurrency:
          CostCurrency = other.CostCurrency.Clone();
          break;
        case ValueOneofCase.CostCurrencies:
          CostCurrencies = other.CostCurrencies.Clone();
          break;
        case ValueOneofCase.CostOneItem:
          CostOneItem = other.CostOneItem.Clone();
          break;
        case ValueOneofCase.CostItem:
          CostItem = other.CostItem.Clone();
          break;
        case ValueOneofCase.CostItems:
          CostItems = other.CostItems.Clone();
          break;
      }

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

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

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

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

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

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

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

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      CostCurrency = 1,
      CostCurrencies = 2,
      CostOneItem = 3,
      CostItem = 4,
      CostItems = 5,
    }
    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 CostCost);
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CostCost other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.CostCurrency:
          if (CostCurrency == null) {
            CostCurrency = new global::Cfg.CostCostCurrency();
          }
          CostCurrency.MergeFrom(other.CostCurrency);
          break;
        case ValueOneofCase.CostCurrencies:
          if (CostCurrencies == null) {
            CostCurrencies = new global::Cfg.CostCostCurrencies();
          }
          CostCurrencies.MergeFrom(other.CostCurrencies);
          break;
        case ValueOneofCase.CostOneItem:
          if (CostOneItem == null) {
            CostOneItem = new global::Cfg.CostCostOneItem();
          }
          CostOneItem.MergeFrom(other.CostOneItem);
          break;
        case ValueOneofCase.CostItem:
          if (CostItem == null) {
            CostItem = new global::Cfg.CostCostItem();
          }
          CostItem.MergeFrom(other.CostItem);
          break;
        case ValueOneofCase.CostItems:
          if (CostItems == null) {
            CostItems = new global::Cfg.CostCostItems();
          }
          CostItems.MergeFrom(other.CostItems);
          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.CostCostCurrency subBuilder = new global::Cfg.CostCostCurrency();
            if (valueCase_ == ValueOneofCase.CostCurrency) {
              subBuilder.MergeFrom(CostCurrency);
            }
            input.ReadMessage(subBuilder);
            CostCurrency = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.CostCostCurrencies subBuilder = new global::Cfg.CostCostCurrencies();
            if (valueCase_ == ValueOneofCase.CostCurrencies) {
              subBuilder.MergeFrom(CostCurrencies);
            }
            input.ReadMessage(subBuilder);
            CostCurrencies = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.CostCostOneItem subBuilder = new global::Cfg.CostCostOneItem();
            if (valueCase_ == ValueOneofCase.CostOneItem) {
              subBuilder.MergeFrom(CostOneItem);
            }
            input.ReadMessage(subBuilder);
            CostOneItem = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.CostCostItem subBuilder = new global::Cfg.CostCostItem();
            if (valueCase_ == ValueOneofCase.CostItem) {
              subBuilder.MergeFrom(CostItem);
            }
            input.ReadMessage(subBuilder);
            CostItem = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.CostCostItems subBuilder = new global::Cfg.CostCostItems();
            if (valueCase_ == ValueOneofCase.CostItems) {
              subBuilder.MergeFrom(CostItems);
            }
            input.ReadMessage(subBuilder);
            CostItems = 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.CostCostCurrency subBuilder = new global::Cfg.CostCostCurrency();
            if (valueCase_ == ValueOneofCase.CostCurrency) {
              subBuilder.MergeFrom(CostCurrency);
            }
            input.ReadMessage(subBuilder);
            CostCurrency = subBuilder;
            break;
          }
          case 18: {
            global::Cfg.CostCostCurrencies subBuilder = new global::Cfg.CostCostCurrencies();
            if (valueCase_ == ValueOneofCase.CostCurrencies) {
              subBuilder.MergeFrom(CostCurrencies);
            }
            input.ReadMessage(subBuilder);
            CostCurrencies = subBuilder;
            break;
          }
          case 26: {
            global::Cfg.CostCostOneItem subBuilder = new global::Cfg.CostCostOneItem();
            if (valueCase_ == ValueOneofCase.CostOneItem) {
              subBuilder.MergeFrom(CostOneItem);
            }
            input.ReadMessage(subBuilder);
            CostOneItem = subBuilder;
            break;
          }
          case 34: {
            global::Cfg.CostCostItem subBuilder = new global::Cfg.CostCostItem();
            if (valueCase_ == ValueOneofCase.CostItem) {
              subBuilder.MergeFrom(CostItem);
            }
            input.ReadMessage(subBuilder);
            CostItem = subBuilder;
            break;
          }
          case 42: {
            global::Cfg.CostCostItems subBuilder = new global::Cfg.CostCostItems();
            if (valueCase_ == ValueOneofCase.CostItems) {
              subBuilder.MergeFrom(CostItems);
            }
            input.ReadMessage(subBuilder);
            CostItems = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

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

    private global::Cfg.ItemECurrencyType type_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemECurrencyType Type {
      get { if ((_hasBits0 & 1) != 0) { return type_; } else { return TypeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        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 & 1) != 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 &= ~1;
    }

    /// <summary>Field number for the "num" field.</summary>
    public const int NumFieldNumber = 2;
    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;
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CostCostCurrency other) {
      if (other == null) {
        return;
      }
      if (other.HasType) {
        Type = other.Type;
      }
      if (other.HasNum) {
        Num = other.Num;
      }
      _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: {
            Type = (global::Cfg.ItemECurrencyType) input.ReadEnum();
            break;
          }
          case 16: {
            Num = 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: {
            Type = (global::Cfg.ItemECurrencyType) input.ReadEnum();
            break;
          }
          case 16: {
            Num = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "currencies" field.</summary>
    public const int CurrenciesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.CostCostCurrency> _repeated_currencies_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.CostCostCurrency.Parser);
    private readonly pbc::RepeatedField<global::Cfg.CostCostCurrency> currencies_ = new pbc::RepeatedField<global::Cfg.CostCostCurrency>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.CostCostCurrency> Currencies {
      get { return currencies_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CostCostCurrencies other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!currencies_.Equals(other.currencies_)) 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 ^= currencies_.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
      currencies_.WriteTo(output, _repeated_currencies_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) {
      currencies_.WriteTo(ref output, _repeated_currencies_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 += currencies_.CalculateSize(_repeated_currencies_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CostCostCurrencies other) {
      if (other == null) {
        return;
      }
      currencies_.Add(other.currencies_);
      _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: {
            currencies_.AddEntriesFrom(input, _repeated_currencies_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: {
            currencies_.AddEntriesFrom(ref input, _repeated_currencies_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CostCostOneItem other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      _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: {
            ItemId = 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: {
            ItemId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_id" field.</summary>
    public const int ItemIdFieldNumber = 1;
    private readonly static int ItemIdDefaultValue = 0;

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

    /// <summary>Field number for the "amount" field.</summary>
    public const int AmountFieldNumber = 2;
    private readonly static int AmountDefaultValue = 0;

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CostCostItem other) {
      if (other == null) {
        return;
      }
      if (other.HasItemId) {
        ItemId = other.ItemId;
      }
      if (other.HasAmount) {
        Amount = other.Amount;
      }
      _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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Amount = 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: {
            ItemId = input.ReadInt32();
            break;
          }
          case 16: {
            Amount = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "item_list" field.</summary>
    public const int ItemListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.CostCostItem> _repeated_itemList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.CostCostItem.Parser);
    private readonly pbc::RepeatedField<global::Cfg.CostCostItem> itemList_ = new pbc::RepeatedField<global::Cfg.CostCostItem>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.CostCostItem> ItemList {
      get { return itemList_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CostCostItems other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!itemList_.Equals(other.itemList_)) 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 ^= itemList_.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
      itemList_.WriteTo(output, _repeated_itemList_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) {
      itemList_.WriteTo(ref output, _repeated_itemList_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 += itemList_.CalculateSize(_repeated_itemList_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CostCostItems other) {
      if (other == null) {
        return;
      }
      itemList_.Add(other.itemList_);
      _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: {
            itemList_.AddEntriesFrom(input, _repeated_itemList_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: {
            itemList_.AddEntriesFrom(ref input, _repeated_itemList_codec);
            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.ConfigReflection.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 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.ConfigReflection.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 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 MailSystemMail : pb::IMessage<MailSystemMail>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MailSystemMail> _parser = new pb::MessageParser<MailSystemMail>(() => new MailSystemMail());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MailSystemMail> Parser { get { return _parser; } }

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MailSystemMail Clone() {
      return new MailSystemMail(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 "title" field.</summary>
    public const int TitleFieldNumber = 2;
    private readonly static string TitleDefaultValue = "";

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

    /// <summary>Field number for the "sender" field.</summary>
    public const int SenderFieldNumber = 3;
    private readonly static string SenderDefaultValue = "";

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

    /// <summary>Field number for the "content" field.</summary>
    public const int ContentFieldNumber = 4;
    private readonly static string ContentDefaultValue = "";

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

    /// <summary>Field number for the "award" field.</summary>
    public const int AwardFieldNumber = 5;
    private static readonly pb::FieldCodec<int> _repeated_award_codec
        = pb::FieldCodec.ForInt32(42);
    private readonly pbc::RepeatedField<int> award_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Award {
      get { return award_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MailSystemMail other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Title != other.Title) return false;
      if (Sender != other.Sender) return false;
      if (Content != other.Content) return false;
      if(!award_.Equals(other.award_)) 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 (HasTitle) hash ^= Title.GetHashCode();
      if (HasSender) hash ^= Sender.GetHashCode();
      if (HasContent) hash ^= Content.GetHashCode();
      hash ^= award_.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 (HasTitle) {
        output.WriteRawTag(18);
        output.WriteString(Title);
      }
      if (HasSender) {
        output.WriteRawTag(26);
        output.WriteString(Sender);
      }
      if (HasContent) {
        output.WriteRawTag(34);
        output.WriteString(Content);
      }
      award_.WriteTo(output, _repeated_award_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 (HasTitle) {
        output.WriteRawTag(18);
        output.WriteString(Title);
      }
      if (HasSender) {
        output.WriteRawTag(26);
        output.WriteString(Sender);
      }
      if (HasContent) {
        output.WriteRawTag(34);
        output.WriteString(Content);
      }
      award_.WriteTo(ref output, _repeated_award_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 (HasTitle) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Title);
      }
      if (HasSender) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Sender);
      }
      if (HasContent) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Content);
      }
      size += award_.CalculateSize(_repeated_award_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MailSystemMail other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasTitle) {
        Title = other.Title;
      }
      if (other.HasSender) {
        Sender = other.Sender;
      }
      if (other.HasContent) {
        Content = other.Content;
      }
      award_.Add(other.award_);
      _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: {
            Title = input.ReadString();
            break;
          }
          case 26: {
            Sender = input.ReadString();
            break;
          }
          case 34: {
            Content = input.ReadString();
            break;
          }
          case 42:
          case 40: {
            award_.AddEntriesFrom(input, _repeated_award_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: {
            Title = input.ReadString();
            break;
          }
          case 26: {
            Sender = input.ReadString();
            break;
          }
          case 34: {
            Content = input.ReadString();
            break;
          }
          case 42:
          case 40: {
            award_.AddEntriesFrom(ref input, _repeated_award_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MailGlobalMail(MailGlobalMail other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      title_ = other.title_;
      sender_ = other.sender_;
      content_ = other.content_;
      award_ = other.award_.Clone();
      allServer_ = other.allServer_;
      serverList_ = other.serverList_.Clone();
      platform_ = other.platform_;
      channel_ = other.channel_;
      minMaxLevel_ = other.minMaxLevel_ != null ? other.minMaxLevel_.Clone() : null;
      registerTime_ = other.registerTime_ != null ? other.registerTime_.Clone() : null;
      mailTime_ = other.mailTime_ != null ? other.mailTime_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MailGlobalMail Clone() {
      return new MailGlobalMail(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 "title" field.</summary>
    public const int TitleFieldNumber = 2;
    private readonly static string TitleDefaultValue = "";

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

    /// <summary>Field number for the "sender" field.</summary>
    public const int SenderFieldNumber = 3;
    private readonly static string SenderDefaultValue = "";

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

    /// <summary>Field number for the "content" field.</summary>
    public const int ContentFieldNumber = 4;
    private readonly static string ContentDefaultValue = "";

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

    /// <summary>Field number for the "award" field.</summary>
    public const int AwardFieldNumber = 5;
    private static readonly pb::FieldCodec<int> _repeated_award_codec
        = pb::FieldCodec.ForInt32(42);
    private readonly pbc::RepeatedField<int> award_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Award {
      get { return award_; }
    }

    /// <summary>Field number for the "all_server" field.</summary>
    public const int AllServerFieldNumber = 6;
    private readonly static bool AllServerDefaultValue = false;

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

    /// <summary>Field number for the "server_list" field.</summary>
    public const int ServerListFieldNumber = 7;
    private static readonly pb::FieldCodec<int> _repeated_serverList_codec
        = pb::FieldCodec.ForInt32(58);
    private readonly pbc::RepeatedField<int> serverList_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> ServerList {
      get { return serverList_; }
    }

    /// <summary>Field number for the "platform" field.</summary>
    public const int PlatformFieldNumber = 8;
    private readonly static string PlatformDefaultValue = "";

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

    /// <summary>Field number for the "channel" field.</summary>
    public const int ChannelFieldNumber = 9;
    private readonly static string ChannelDefaultValue = "";

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

    /// <summary>Field number for the "min_max_level" field.</summary>
    public const int MinMaxLevelFieldNumber = 10;
    private global::Cfg.ConditionMinMaxLevel minMaxLevel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ConditionMinMaxLevel MinMaxLevel {
      get { return minMaxLevel_; }
      set {
        minMaxLevel_ = value;
      }
    }

    /// <summary>Field number for the "register_time" field.</summary>
    public const int RegisterTimeFieldNumber = 11;
    private global::Cfg.ConditionTimeRange registerTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ConditionTimeRange RegisterTime {
      get { return registerTime_; }
      set {
        registerTime_ = value;
      }
    }

    /// <summary>Field number for the "mail_time" field.</summary>
    public const int MailTimeFieldNumber = 12;
    private global::Cfg.ConditionTimeRange mailTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ConditionTimeRange MailTime {
      get { return mailTime_; }
      set {
        mailTime_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MailGlobalMail other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Title != other.Title) return false;
      if (Sender != other.Sender) return false;
      if (Content != other.Content) return false;
      if(!award_.Equals(other.award_)) return false;
      if (AllServer != other.AllServer) return false;
      if(!serverList_.Equals(other.serverList_)) return false;
      if (Platform != other.Platform) return false;
      if (Channel != other.Channel) return false;
      if (!object.Equals(MinMaxLevel, other.MinMaxLevel)) return false;
      if (!object.Equals(RegisterTime, other.RegisterTime)) return false;
      if (!object.Equals(MailTime, other.MailTime)) 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 (HasTitle) hash ^= Title.GetHashCode();
      if (HasSender) hash ^= Sender.GetHashCode();
      if (HasContent) hash ^= Content.GetHashCode();
      hash ^= award_.GetHashCode();
      if (HasAllServer) hash ^= AllServer.GetHashCode();
      hash ^= serverList_.GetHashCode();
      if (HasPlatform) hash ^= Platform.GetHashCode();
      if (HasChannel) hash ^= Channel.GetHashCode();
      if (minMaxLevel_ != null) hash ^= MinMaxLevel.GetHashCode();
      if (registerTime_ != null) hash ^= RegisterTime.GetHashCode();
      if (mailTime_ != null) hash ^= MailTime.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 (HasTitle) {
        output.WriteRawTag(18);
        output.WriteString(Title);
      }
      if (HasSender) {
        output.WriteRawTag(26);
        output.WriteString(Sender);
      }
      if (HasContent) {
        output.WriteRawTag(34);
        output.WriteString(Content);
      }
      award_.WriteTo(output, _repeated_award_codec);
      if (HasAllServer) {
        output.WriteRawTag(48);
        output.WriteBool(AllServer);
      }
      serverList_.WriteTo(output, _repeated_serverList_codec);
      if (HasPlatform) {
        output.WriteRawTag(66);
        output.WriteString(Platform);
      }
      if (HasChannel) {
        output.WriteRawTag(74);
        output.WriteString(Channel);
      }
      if (minMaxLevel_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(MinMaxLevel);
      }
      if (registerTime_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(RegisterTime);
      }
      if (mailTime_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(MailTime);
      }
      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 (HasTitle) {
        output.WriteRawTag(18);
        output.WriteString(Title);
      }
      if (HasSender) {
        output.WriteRawTag(26);
        output.WriteString(Sender);
      }
      if (HasContent) {
        output.WriteRawTag(34);
        output.WriteString(Content);
      }
      award_.WriteTo(ref output, _repeated_award_codec);
      if (HasAllServer) {
        output.WriteRawTag(48);
        output.WriteBool(AllServer);
      }
      serverList_.WriteTo(ref output, _repeated_serverList_codec);
      if (HasPlatform) {
        output.WriteRawTag(66);
        output.WriteString(Platform);
      }
      if (HasChannel) {
        output.WriteRawTag(74);
        output.WriteString(Channel);
      }
      if (minMaxLevel_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(MinMaxLevel);
      }
      if (registerTime_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(RegisterTime);
      }
      if (mailTime_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(MailTime);
      }
      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 (HasTitle) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Title);
      }
      if (HasSender) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Sender);
      }
      if (HasContent) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Content);
      }
      size += award_.CalculateSize(_repeated_award_codec);
      if (HasAllServer) {
        size += 1 + 1;
      }
      size += serverList_.CalculateSize(_repeated_serverList_codec);
      if (HasPlatform) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Platform);
      }
      if (HasChannel) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Channel);
      }
      if (minMaxLevel_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MinMaxLevel);
      }
      if (registerTime_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RegisterTime);
      }
      if (mailTime_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MailTime);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MailGlobalMail other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasTitle) {
        Title = other.Title;
      }
      if (other.HasSender) {
        Sender = other.Sender;
      }
      if (other.HasContent) {
        Content = other.Content;
      }
      award_.Add(other.award_);
      if (other.HasAllServer) {
        AllServer = other.AllServer;
      }
      serverList_.Add(other.serverList_);
      if (other.HasPlatform) {
        Platform = other.Platform;
      }
      if (other.HasChannel) {
        Channel = other.Channel;
      }
      if (other.minMaxLevel_ != null) {
        if (minMaxLevel_ == null) {
          MinMaxLevel = new global::Cfg.ConditionMinMaxLevel();
        }
        MinMaxLevel.MergeFrom(other.MinMaxLevel);
      }
      if (other.registerTime_ != null) {
        if (registerTime_ == null) {
          RegisterTime = new global::Cfg.ConditionTimeRange();
        }
        RegisterTime.MergeFrom(other.RegisterTime);
      }
      if (other.mailTime_ != null) {
        if (mailTime_ == null) {
          MailTime = new global::Cfg.ConditionTimeRange();
        }
        MailTime.MergeFrom(other.MailTime);
      }
      _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: {
            Title = input.ReadString();
            break;
          }
          case 26: {
            Sender = input.ReadString();
            break;
          }
          case 34: {
            Content = input.ReadString();
            break;
          }
          case 42:
          case 40: {
            award_.AddEntriesFrom(input, _repeated_award_codec);
            break;
          }
          case 48: {
            AllServer = input.ReadBool();
            break;
          }
          case 58:
          case 56: {
            serverList_.AddEntriesFrom(input, _repeated_serverList_codec);
            break;
          }
          case 66: {
            Platform = input.ReadString();
            break;
          }
          case 74: {
            Channel = input.ReadString();
            break;
          }
          case 82: {
            if (minMaxLevel_ == null) {
              MinMaxLevel = new global::Cfg.ConditionMinMaxLevel();
            }
            input.ReadMessage(MinMaxLevel);
            break;
          }
          case 90: {
            if (registerTime_ == null) {
              RegisterTime = new global::Cfg.ConditionTimeRange();
            }
            input.ReadMessage(RegisterTime);
            break;
          }
          case 98: {
            if (mailTime_ == null) {
              MailTime = new global::Cfg.ConditionTimeRange();
            }
            input.ReadMessage(MailTime);
            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: {
            Title = input.ReadString();
            break;
          }
          case 26: {
            Sender = input.ReadString();
            break;
          }
          case 34: {
            Content = input.ReadString();
            break;
          }
          case 42:
          case 40: {
            award_.AddEntriesFrom(ref input, _repeated_award_codec);
            break;
          }
          case 48: {
            AllServer = input.ReadBool();
            break;
          }
          case 58:
          case 56: {
            serverList_.AddEntriesFrom(ref input, _repeated_serverList_codec);
            break;
          }
          case 66: {
            Platform = input.ReadString();
            break;
          }
          case 74: {
            Channel = input.ReadString();
            break;
          }
          case 82: {
            if (minMaxLevel_ == null) {
              MinMaxLevel = new global::Cfg.ConditionMinMaxLevel();
            }
            input.ReadMessage(MinMaxLevel);
            break;
          }
          case 90: {
            if (registerTime_ == null) {
              RegisterTime = new global::Cfg.ConditionTimeRange();
            }
            input.ReadMessage(RegisterTime);
            break;
          }
          case 98: {
            if (mailTime_ == null) {
              MailTime = new global::Cfg.ConditionTimeRange();
            }
            input.ReadMessage(MailTime);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "level" field.</summary>
    public const int LevelFieldNumber = 1;
    private readonly static int LevelDefaultValue = 0;

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

    /// <summary>Field number for the "need_exp" field.</summary>
    public const int NeedExpFieldNumber = 2;
    private readonly static long NeedExpDefaultValue = 0L;

    private long needExp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long NeedExp {
      get { if ((_hasBits0 & 2) != 0) { return needExp_; } else { return NeedExpDefaultValue; } }
      set {
        _hasBits0 |= 2;
        needExp_ = value;
      }
    }
    /// <summary>Gets whether the "need_exp" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasNeedExp {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "need_exp" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearNeedExp() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "clothes_attrs" field.</summary>
    public const int ClothesAttrsFieldNumber = 3;
    private static readonly pb::FieldCodec<int> _repeated_clothesAttrs_codec
        = pb::FieldCodec.ForInt32(26);
    private readonly pbc::RepeatedField<int> clothesAttrs_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> ClothesAttrs {
      get { return clothesAttrs_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RoleLevelExpAttr other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Level != other.Level) return false;
      if (NeedExp != other.NeedExp) return false;
      if(!clothesAttrs_.Equals(other.clothesAttrs_)) 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 (HasLevel) hash ^= Level.GetHashCode();
      if (HasNeedExp) hash ^= NeedExp.GetHashCode();
      hash ^= clothesAttrs_.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 (HasLevel) {
        output.WriteRawTag(8);
        output.WriteInt32(Level);
      }
      if (HasNeedExp) {
        output.WriteRawTag(16);
        output.WriteInt64(NeedExp);
      }
      clothesAttrs_.WriteTo(output, _repeated_clothesAttrs_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 (HasLevel) {
        output.WriteRawTag(8);
        output.WriteInt32(Level);
      }
      if (HasNeedExp) {
        output.WriteRawTag(16);
        output.WriteInt64(NeedExp);
      }
      clothesAttrs_.WriteTo(ref output, _repeated_clothesAttrs_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 (HasLevel) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
      }
      if (HasNeedExp) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(NeedExp);
      }
      size += clothesAttrs_.CalculateSize(_repeated_clothesAttrs_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RoleLevelExpAttr other) {
      if (other == null) {
        return;
      }
      if (other.HasLevel) {
        Level = other.Level;
      }
      if (other.HasNeedExp) {
        NeedExp = other.NeedExp;
      }
      clothesAttrs_.Add(other.clothesAttrs_);
      _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: {
            Level = input.ReadInt32();
            break;
          }
          case 16: {
            NeedExp = input.ReadInt64();
            break;
          }
          case 26:
          case 24: {
            clothesAttrs_.AddEntriesFrom(input, _repeated_clothesAttrs_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: {
            Level = input.ReadInt32();
            break;
          }
          case 16: {
            NeedExp = input.ReadInt64();
            break;
          }
          case 26:
          case 24: {
            clothesAttrs_.AddEntriesFrom(ref input, _repeated_clothesAttrs_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RoleLevelBonus Clone() {
      return new RoleLevelBonus(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 "distinct_bonus_infos" field.</summary>
    public const int DistinctBonusInfosFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Cfg.RoleDistinctBonusInfos> _repeated_distinctBonusInfos_codec
        = pb::FieldCodec.ForMessage(18, global::Cfg.RoleDistinctBonusInfos.Parser);
    private readonly pbc::RepeatedField<global::Cfg.RoleDistinctBonusInfos> distinctBonusInfos_ = new pbc::RepeatedField<global::Cfg.RoleDistinctBonusInfos>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.RoleDistinctBonusInfos> DistinctBonusInfos {
      get { return distinctBonusInfos_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RoleLevelBonus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if(!distinctBonusInfos_.Equals(other.distinctBonusInfos_)) 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 ^= distinctBonusInfos_.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);
      }
      distinctBonusInfos_.WriteTo(output, _repeated_distinctBonusInfos_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);
      }
      distinctBonusInfos_.WriteTo(ref output, _repeated_distinctBonusInfos_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 += distinctBonusInfos_.CalculateSize(_repeated_distinctBonusInfos_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RoleLevelBonus other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      distinctBonusInfos_.Add(other.distinctBonusInfos_);
      _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: {
            distinctBonusInfos_.AddEntriesFrom(input, _repeated_distinctBonusInfos_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: {
            distinctBonusInfos_.AddEntriesFrom(ref input, _repeated_distinctBonusInfos_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "effective_level" field.</summary>
    public const int EffectiveLevelFieldNumber = 1;
    private readonly static int EffectiveLevelDefaultValue = 0;

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

    /// <summary>Field number for the "bonus_info" field.</summary>
    public const int BonusInfoFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Cfg.RoleBonusInfo> _repeated_bonusInfo_codec
        = pb::FieldCodec.ForMessage(18, global::Cfg.RoleBonusInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.RoleBonusInfo> bonusInfo_ = new pbc::RepeatedField<global::Cfg.RoleBonusInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.RoleBonusInfo> BonusInfo {
      get { return bonusInfo_; }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RoleDistinctBonusInfos other) {
      if (other == null) {
        return;
      }
      if (other.HasEffectiveLevel) {
        EffectiveLevel = other.EffectiveLevel;
      }
      bonusInfo_.Add(other.bonusInfo_);
      _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: {
            EffectiveLevel = input.ReadInt32();
            break;
          }
          case 18: {
            bonusInfo_.AddEntriesFrom(input, _repeated_bonusInfo_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: {
            EffectiveLevel = input.ReadInt32();
            break;
          }
          case 18: {
            bonusInfo_.AddEntriesFrom(ref input, _repeated_bonusInfo_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    partial void OnConstruction();

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

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

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

    private global::Cfg.ItemECurrencyType type_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.ItemECurrencyType Type {
      get { if ((_hasBits0 & 1) != 0) { return type_; } else { return TypeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        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 & 1) != 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 &= ~1;
    }

    /// <summary>Field number for the "coefficient" field.</summary>
    public const int CoefficientFieldNumber = 2;
    private readonly static float CoefficientDefaultValue = 0F;

    private float coefficient_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Coefficient {
      get { if ((_hasBits0 & 2) != 0) { return coefficient_; } else { return CoefficientDefaultValue; } }
      set {
        _hasBits0 |= 2;
        coefficient_ = value;
      }
    }
    /// <summary>Gets whether the "coefficient" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCoefficient {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "coefficient" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCoefficient() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RoleBonusInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Type != other.Type) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Coefficient, other.Coefficient)) 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 (HasType) hash ^= Type.GetHashCode();
      if (HasCoefficient) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Coefficient);
      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 (HasType) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Type);
      }
      if (HasCoefficient) {
        output.WriteRawTag(21);
        output.WriteFloat(Coefficient);
      }
      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 (HasType) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Type);
      }
      if (HasCoefficient) {
        output.WriteRawTag(21);
        output.WriteFloat(Coefficient);
      }
      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 (HasType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
      }
      if (HasCoefficient) {
        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(RoleBonusInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasType) {
        Type = other.Type;
      }
      if (other.HasCoefficient) {
        Coefficient = other.Coefficient;
      }
      _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: {
            Type = (global::Cfg.ItemECurrencyType) input.ReadEnum();
            break;
          }
          case 21: {
            Coefficient = 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: {
            Type = (global::Cfg.ItemECurrencyType) input.ReadEnum();
            break;
          }
          case 21: {
            Coefficient = input.ReadFloat();
            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.ConfigReflection.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 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.ConfigReflection.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 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_;
      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_;
      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.A;

    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 "v2" field.</summary>
    public const int V2FieldNumber = 16;
    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 = 17;
    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 = 18;
    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 = 19;
    private readonly static int T1DefaultValue = 0;

    private int t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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 = 20;
    private static readonly pb::FieldCodec<int> _repeated_k1_codec
        = pb::FieldCodec.ForInt32(162);
    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 = 21;
    private static readonly pb::FieldCodec<int> _repeated_k2_codec
        = pb::FieldCodec.ForInt32(170);
    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 = 22;
    private static readonly pb::FieldCodec<int> _repeated_k5_codec
        = pb::FieldCodec.ForInt32(178);
    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 = 23;
    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), 186);
    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 = 24;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoE2> _repeated_k9_codec
        = pb::FieldCodec.ForMessage(194, 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 = 25;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoDynamic> _repeated_k15_codec
        = pb::FieldCodec.ForMessage(202, 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 (!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;
      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 (v2_ != null) hash ^= V2.GetHashCode();
      if (v3_ != null) hash ^= V3.GetHashCode();
      if (v4_ != null) hash ^= V4.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(77);
        output.WriteSFixed32(X8);
      }
      if (HasX9) {
        output.WriteRawTag(81);
        output.WriteSFixed64(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 (v2_ != null) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(V4);
      }
      if (HasT1) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(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(77);
        output.WriteSFixed32(X8);
      }
      if (HasX9) {
        output.WriteRawTag(81);
        output.WriteSFixed64(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 (v2_ != null) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(V4);
      }
      if (HasT1) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(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 + 4;
      }
      if (HasX9) {
        size += 1 + 8;
      }
      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 (v2_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (v3_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(V3);
      }
      if (v4_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(V4);
      }
      if (HasT1) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(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.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;
      }
      k1_.Add(other.k1_);
      k2_.Add(other.k2_);
      k5_.Add(other.k5_);
      k8_.Add(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 77: {
            X8 = input.ReadSFixed32();
            break;
          }
          case 81: {
            X9 = input.ReadSFixed64();
            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 130: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 138: {
            if (v3_ == null) {
              V3 = new global::Cfg.Vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 146: {
            if (v4_ == null) {
              V4 = new global::Cfg.Vector4();
            }
            input.ReadMessage(V4);
            break;
          }
          case 152: {
            T1 = input.ReadInt32();
            break;
          }
          case 162:
          case 160: {
            k1_.AddEntriesFrom(input, _repeated_k1_codec);
            break;
          }
          case 170:
          case 168: {
            k2_.AddEntriesFrom(input, _repeated_k2_codec);
            break;
          }
          case 178:
          case 176: {
            k5_.AddEntriesFrom(input, _repeated_k5_codec);
            break;
          }
          case 186: {
            k8_.AddEntriesFrom(input, _map_k8_codec);
            break;
          }
          case 194: {
            k9_.AddEntriesFrom(input, _repeated_k9_codec);
            break;
          }
          case 202: {
            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 77: {
            X8 = input.ReadSFixed32();
            break;
          }
          case 81: {
            X9 = input.ReadSFixed64();
            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 130: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 138: {
            if (v3_ == null) {
              V3 = new global::Cfg.Vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 146: {
            if (v4_ == null) {
              V4 = new global::Cfg.Vector4();
            }
            input.ReadMessage(V4);
            break;
          }
          case 152: {
            T1 = input.ReadInt32();
            break;
          }
          case 162:
          case 160: {
            k1_.AddEntriesFrom(ref input, _repeated_k1_codec);
            break;
          }
          case 170:
          case 168: {
            k2_.AddEntriesFrom(ref input, _repeated_k2_codec);
            break;
          }
          case 178:
          case 176: {
            k5_.AddEntriesFrom(ref input, _repeated_k5_codec);
            break;
          }
          case 186: {
            k8_.AddEntriesFrom(ref input, _map_k8_codec);
            break;
          }
          case 194: {
            k9_.AddEntriesFrom(ref input, _repeated_k9_codec);
            break;
          }
          case 202: {
            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.ConfigReflection.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 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.ConfigReflection.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 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.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 "DemoD5" field.</summary>
    public const int DemoD5FieldNumber = 3;
    [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,
      DemoD5 = 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 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(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.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.DemoD5) {
        output.WriteRawTag(26);
        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.DemoD5) {
        output.WriteRawTag(26);
        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.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.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.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.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.ConfigReflection.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 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.ConfigReflection.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 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;
      }

      _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;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      DemoE1 = 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 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 (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();
      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 (_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 (_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 (_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;
      }

      _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;
          }
        }
      }
    #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;
          }
        }
      }
    }
    #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.ConfigReflection.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 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 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.ConfigReflection.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 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.ConfigReflection.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 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 int StartTimeDefaultValue = 0;

    private int startTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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 int EndTimeDefaultValue = 0;

    private int endTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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.WriteInt32(StartTime);
      }
      if (HasEndTime) {
        output.WriteRawTag(16);
        output.WriteInt32(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.WriteInt32(StartTime);
      }
      if (HasEndTime) {
        output.WriteRawTag(16);
        output.WriteInt32(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.ComputeInt32Size(StartTime);
      }
      if (HasEndTime) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(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.ReadInt32();
            break;
          }
          case 16: {
            EndTime = 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: {
            StartTime = input.ReadInt32();
            break;
          }
          case 16: {
            EndTime = input.ReadInt32();
            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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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_.Add(other.multiRows4_);
      multiRows5_.Add(other.multiRows5_);
      multiRows6_.Add(other.multiRows6_);
      multiRows7_.Add(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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.A;

    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.ConfigReflection.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 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 int T1DefaultValue = 0;

    private int t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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.WriteInt32(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.WriteInt32(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.ComputeInt32Size(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.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.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.ReadInt32();
            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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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.ConfigReflection.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 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_;
      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_;
      _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 "a1" field.</summary>
    public const int A1FieldNumber = 6;
    private static readonly pb::FieldCodec<int> _repeated_a1_codec
        = pb::FieldCodec.ForInt32(50);
    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 = 7;
    private static readonly pb::FieldCodec<int> _repeated_a2_codec
        = pb::FieldCodec.ForInt32(58);
    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 = 8;
    private static readonly pb::FieldCodec<int> _repeated_b1_codec
        = pb::FieldCodec.ForInt32(66);
    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 = 9;
    private static readonly pb::FieldCodec<int> _repeated_b2_codec
        = pb::FieldCodec.ForInt32(74);
    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 = 10;
    private static readonly pb::FieldCodec<int> _repeated_c1_codec
        = pb::FieldCodec.ForInt32(82);
    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 = 11;
    private static readonly pb::FieldCodec<int> _repeated_c2_codec
        = pb::FieldCodec.ForInt32(90);
    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 = 12;
    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), 98);
    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 = 13;
    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), 106);
    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 = 14;
    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 & 32) != 0) { return e1_; } else { return E1DefaultValue; } }
      set {
        _hasBits0 |= 32;
        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 & 32) != 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 &= ~32;
    }

    /// <summary>Field number for the "e2" field.</summary>
    public const int E2FieldNumber = 15;
    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 & 64) != 0) { return e2_; } else { return E2DefaultValue; } }
      set {
        _hasBits0 |= 64;
        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 & 64) != 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 &= ~64;
    }

    /// <summary>Field number for the "e3" field.</summary>
    public const int E3FieldNumber = 16;
    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 = 17;
    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 & 128) != 0) { return f1_; } else { return F1DefaultValue; } }
      set {
        _hasBits0 |= 128;
        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 & 128) != 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 &= ~128;
    }

    /// <summary>Field number for the "f2" field.</summary>
    public const int F2FieldNumber = 18;
    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 & 256) != 0) { return f2_; } else { return F2DefaultValue; } }
      set {
        _hasBits0 |= 256;
        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 & 256) != 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 &= ~256;
    }

    /// <summary>Field number for the "f3" field.</summary>
    public const int F3FieldNumber = 19;
    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;
    }

    [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(!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;
      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();
      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 (_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);
      }
      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(112);
        output.WriteInt32(E1);
      }
      if (HasE2) {
        output.WriteRawTag(120);
        output.WriteInt64(E2);
      }
      if (HasE3) {
        output.WriteRawTag(130, 1);
        output.WriteString(E3);
      }
      if (HasF1) {
        output.WriteRawTag(136, 1);
        output.WriteInt32(F1);
      }
      if (HasF2) {
        output.WriteRawTag(144, 1);
        output.WriteInt64(F2);
      }
      if (HasF3) {
        output.WriteRawTag(154, 1);
        output.WriteString(F3);
      }
      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);
      }
      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(112);
        output.WriteInt32(E1);
      }
      if (HasE2) {
        output.WriteRawTag(120);
        output.WriteInt64(E2);
      }
      if (HasE3) {
        output.WriteRawTag(130, 1);
        output.WriteString(E3);
      }
      if (HasF1) {
        output.WriteRawTag(136, 1);
        output.WriteInt32(F1);
      }
      if (HasF2) {
        output.WriteRawTag(144, 1);
        output.WriteInt64(F2);
      }
      if (HasF3) {
        output.WriteRawTag(154, 1);
        output.WriteString(F3);
      }
      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);
      }
      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 += 1 + 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 (_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;
      }
      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_.Add(other.d1_);
      d2_.Add(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;
      }
      _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 50:
          case 48: {
            a1_.AddEntriesFrom(input, _repeated_a1_codec);
            break;
          }
          case 58:
          case 56: {
            a2_.AddEntriesFrom(input, _repeated_a2_codec);
            break;
          }
          case 66:
          case 64: {
            b1_.AddEntriesFrom(input, _repeated_b1_codec);
            break;
          }
          case 74:
          case 72: {
            b2_.AddEntriesFrom(input, _repeated_b2_codec);
            break;
          }
          case 82:
          case 80: {
            c1_.AddEntriesFrom(input, _repeated_c1_codec);
            break;
          }
          case 90:
          case 88: {
            c2_.AddEntriesFrom(input, _repeated_c2_codec);
            break;
          }
          case 98: {
            d1_.AddEntriesFrom(input, _map_d1_codec);
            break;
          }
          case 106: {
            d2_.AddEntriesFrom(input, _map_d2_codec);
            break;
          }
          case 112: {
            E1 = input.ReadInt32();
            break;
          }
          case 120: {
            E2 = input.ReadInt64();
            break;
          }
          case 130: {
            E3 = input.ReadString();
            break;
          }
          case 136: {
            F1 = input.ReadInt32();
            break;
          }
          case 144: {
            F2 = input.ReadInt64();
            break;
          }
          case 154: {
            F3 = 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: {
            X12 = input.ReadInt32();
            break;
          }
          case 32: {
            X2 = input.ReadInt32();
            break;
          }
          case 40: {
            X3 = input.ReadInt32();
            break;
          }
          case 50:
          case 48: {
            a1_.AddEntriesFrom(ref input, _repeated_a1_codec);
            break;
          }
          case 58:
          case 56: {
            a2_.AddEntriesFrom(ref input, _repeated_a2_codec);
            break;
          }
          case 66:
          case 64: {
            b1_.AddEntriesFrom(ref input, _repeated_b1_codec);
            break;
          }
          case 74:
          case 72: {
            b2_.AddEntriesFrom(ref input, _repeated_b2_codec);
            break;
          }
          case 82:
          case 80: {
            c1_.AddEntriesFrom(ref input, _repeated_c1_codec);
            break;
          }
          case 90:
          case 88: {
            c2_.AddEntriesFrom(ref input, _repeated_c2_codec);
            break;
          }
          case 98: {
            d1_.AddEntriesFrom(ref input, _map_d1_codec);
            break;
          }
          case 106: {
            d2_.AddEntriesFrom(ref input, _map_d2_codec);
            break;
          }
          case 112: {
            E1 = input.ReadInt32();
            break;
          }
          case 120: {
            E2 = input.ReadInt64();
            break;
          }
          case 130: {
            E3 = input.ReadString();
            break;
          }
          case 136: {
            F1 = input.ReadInt32();
            break;
          }
          case 144: {
            F2 = input.ReadInt64();
            break;
          }
          case 154: {
            F3 = input.ReadString();
            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.ConfigReflection.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 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_.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:
          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.ConfigReflection.Descriptor.MessageTypes[147]; }
    }

    [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_;
      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 "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<long> _repeated_x2_codec
        = pb::FieldCodec.ForInt64(26);
    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 = 4;
    private static readonly pb::FieldCodec<string> _repeated_x3_codec
        = pb::FieldCodec.ForString(34);
    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 = 5;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoEnum> _repeated_x4_codec
        = pb::FieldCodec.ForEnum(40, 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(!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, _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);
      }
      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);
      }
      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;
      }
      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:
          case 16: {
            x1_.AddEntriesFrom(input, _repeated_x1_codec);
            break;
          }
          case 26:
          case 24: {
            x2_.AddEntriesFrom(input, _repeated_x2_codec);
            break;
          }
          case 34: {
            x3_.AddEntriesFrom(input, _repeated_x3_codec);
            break;
          }
          case 42:
          case 40: {
            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:
          case 16: {
            x1_.AddEntriesFrom(ref input, _repeated_x1_codec);
            break;
          }
          case 26:
          case 24: {
            x2_.AddEntriesFrom(ref input, _repeated_x2_codec);
            break;
          }
          case 34: {
            x3_.AddEntriesFrom(ref input, _repeated_x3_codec);
            break;
          }
          case 42:
          case 40: {
            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.ConfigReflection.Descriptor.MessageTypes[148]; }
    }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDefineFromExcel(TestDefineFromExcel 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_;
      x14_ = other.x14_ != null ? other.x14_.Clone() : null;
      v2_ = other.v2_ != null ? other.v2_.Clone() : null;
      t1_ = other.t1_;
      k1_ = other.k1_.Clone();
      k8_ = other.k8_.Clone();
      k9_ = other.k9_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDefineFromExcel Clone() {
      return new TestDefineFromExcel(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.TestETestQuality X13DefaultValue = global::Cfg.TestETestQuality.A;

    private global::Cfg.TestETestQuality x13_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestETestQuality 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 = 8;
    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 "v2" field.</summary>
    public const int V2FieldNumber = 9;
    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 = 10;
    private readonly static int T1DefaultValue = 0;

    private int t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int T1 {
      get { if ((_hasBits0 & 64) != 0) { return t1_; } else { return T1DefaultValue; } }
      set {
        _hasBits0 |= 64;
        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 & 64) != 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 &= ~64;
    }

    /// <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_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDefineFromExcel 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 (!object.Equals(X14, other.X14)) return false;
      if (!object.Equals(V2, other.V2)) return false;
      if (T1 != other.T1) return false;
      if(!k1_.Equals(other.k1_)) return false;
      if (!K8.Equals(other.K8)) return false;
      if(!k9_.Equals(other.k9_)) 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 (x14_ != null) hash ^= X14.GetHashCode();
      if (v2_ != null) hash ^= V2.GetHashCode();
      if (HasT1) hash ^= T1.GetHashCode();
      hash ^= k1_.GetHashCode();
      hash ^= K8.GetHashCode();
      hash ^= k9_.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 (x14_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(X14);
      }
      if (v2_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(V2);
      }
      if (HasT1) {
        output.WriteRawTag(80);
        output.WriteInt32(T1);
      }
      k1_.WriteTo(output, _repeated_k1_codec);
      k8_.WriteTo(output, _map_k8_codec);
      k9_.WriteTo(output, _repeated_k9_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 (x14_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(X14);
      }
      if (v2_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(V2);
      }
      if (HasT1) {
        output.WriteRawTag(80);
        output.WriteInt32(T1);
      }
      k1_.WriteTo(ref output, _repeated_k1_codec);
      k8_.WriteTo(ref output, _map_k8_codec);
      k9_.WriteTo(ref output, _repeated_k9_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 (x14_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X14);
      }
      if (v2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (HasT1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(T1);
      }
      size += k1_.CalculateSize(_repeated_k1_codec);
      size += k8_.CalculateSize(_map_k8_codec);
      size += k9_.CalculateSize(_repeated_k9_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDefineFromExcel 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.x14_ != null) {
        if (x14_ == null) {
          X14 = new global::Cfg.TestDemoDynamic();
        }
        X14.MergeFrom(other.X14);
      }
      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_);
      k8_.Add(other.k8_);
      k9_.Add(other.k9_);
      _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.TestETestQuality) input.ReadEnum();
            break;
          }
          case 66: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 74: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 80: {
            T1 = input.ReadInt32();
            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;
          }
        }
      }
    #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.TestETestQuality) input.ReadEnum();
            break;
          }
          case 66: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 74: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 80: {
            T1 = input.ReadInt32();
            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;
          }
        }
      }
    }
    #endif

  }

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

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDefineFromExcelOne Clone() {
      return new TestDefineFromExcelOne(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;
    }

    /// <summary>Field number for the "default_avatar" field.</summary>
    public const int DefaultAvatarFieldNumber = 3;
    private readonly static string DefaultAvatarDefaultValue = "";

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

    /// <summary>Field number for the "default_item" field.</summary>
    public const int DefaultItemFieldNumber = 4;
    private readonly static string DefaultItemDefaultValue = "";

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDefineFromExcelOne 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;
      if (DefaultAvatar != other.DefaultAvatar) return false;
      if (DefaultItem != other.DefaultItem) 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 (HasDefaultAvatar) hash ^= DefaultAvatar.GetHashCode();
      if (HasDefaultItem) hash ^= DefaultItem.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 (HasDefaultAvatar) {
        output.WriteRawTag(26);
        output.WriteString(DefaultAvatar);
      }
      if (HasDefaultItem) {
        output.WriteRawTag(34);
        output.WriteString(DefaultItem);
      }
      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 (HasDefaultAvatar) {
        output.WriteRawTag(26);
        output.WriteString(DefaultAvatar);
      }
      if (HasDefaultItem) {
        output.WriteRawTag(34);
        output.WriteString(DefaultItem);
      }
      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 (HasDefaultAvatar) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DefaultAvatar);
      }
      if (HasDefaultItem) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DefaultItem);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDefineFromExcelOne other) {
      if (other == null) {
        return;
      }
      if (other.HasUnlockEquip) {
        UnlockEquip = other.UnlockEquip;
      }
      if (other.HasUnlockHero) {
        UnlockHero = other.UnlockHero;
      }
      if (other.HasDefaultAvatar) {
        DefaultAvatar = other.DefaultAvatar;
      }
      if (other.HasDefaultItem) {
        DefaultItem = other.DefaultItem;
      }
      _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;
          }
          case 26: {
            DefaultAvatar = input.ReadString();
            break;
          }
          case 34: {
            DefaultItem = 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: {
            UnlockEquip = input.ReadInt32();
            break;
          }
          case 16: {
            UnlockHero = input.ReadInt32();
            break;
          }
          case 26: {
            DefaultAvatar = input.ReadString();
            break;
          }
          case 34: {
            DefaultItem = input.ReadString();
            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.ConfigReflection.Descriptor.MessageTypes[151]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[152]; }
    }

    [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_.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: {
            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.ConfigReflection.Descriptor.MessageTypes[153]; }
    }

    [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_;
      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_;
      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 "v2" field.</summary>
    public const int V2FieldNumber = 7;
    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 = 8;
    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 = 9;
    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 = 10;
    private readonly static int T1DefaultValue = 0;

    private int t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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 = 11;
    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 = 12;
    private readonly static global::Cfg.TestDemoEnum X13DefaultValue = global::Cfg.TestDemoEnum.A;

    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 = 13;
    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 = 14;
    private static readonly pb::FieldCodec<int> _repeated_k1_codec
        = pb::FieldCodec.ForInt32(114);
    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 = 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 "k15" field.</summary>
    public const int K15FieldNumber = 17;
    private static readonly pb::FieldCodec<global::Cfg.TestDemoDynamic> _repeated_k15_codec
        = pb::FieldCodec.ForMessage(138, 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 (!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;
      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 (v2_ != null) hash ^= V2.GetHashCode();
      if (v3_ != null) hash ^= V3.GetHashCode();
      if (v4_ != null) hash ^= V4.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 (v2_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(V4);
      }
      if (HasT1) {
        output.WriteRawTag(80);
        output.WriteInt32(T1);
      }
      if (x12_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(X12);
      }
      if (HasX13) {
        output.WriteRawTag(96);
        output.WriteEnum((int) X13);
      }
      if (x14_ != null) {
        output.WriteRawTag(106);
        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 (v2_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(V2);
      }
      if (v3_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(V3);
      }
      if (v4_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(V4);
      }
      if (HasT1) {
        output.WriteRawTag(80);
        output.WriteInt32(T1);
      }
      if (x12_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(X12);
      }
      if (HasX13) {
        output.WriteRawTag(96);
        output.WriteEnum((int) X13);
      }
      if (x14_ != null) {
        output.WriteRawTag(106);
        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 (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.ComputeInt32Size(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.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;
      }
      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_.Add(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 58: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 66: {
            if (v3_ == null) {
              V3 = new global::Cfg.Vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 74: {
            if (v4_ == null) {
              V4 = new global::Cfg.Vector4();
            }
            input.ReadMessage(V4);
            break;
          }
          case 80: {
            T1 = input.ReadInt32();
            break;
          }
          case 90: {
            if (x12_ == null) {
              X12 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X12);
            break;
          }
          case 96: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 106: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 114:
          case 112: {
            k1_.AddEntriesFrom(input, _repeated_k1_codec);
            break;
          }
          case 122: {
            k8_.AddEntriesFrom(input, _map_k8_codec);
            break;
          }
          case 130: {
            k9_.AddEntriesFrom(input, _repeated_k9_codec);
            break;
          }
          case 138: {
            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 58: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 66: {
            if (v3_ == null) {
              V3 = new global::Cfg.Vector3();
            }
            input.ReadMessage(V3);
            break;
          }
          case 74: {
            if (v4_ == null) {
              V4 = new global::Cfg.Vector4();
            }
            input.ReadMessage(V4);
            break;
          }
          case 80: {
            T1 = input.ReadInt32();
            break;
          }
          case 90: {
            if (x12_ == null) {
              X12 = new global::Cfg.TestDemoType1();
            }
            input.ReadMessage(X12);
            break;
          }
          case 96: {
            X13 = (global::Cfg.TestDemoEnum) input.ReadEnum();
            break;
          }
          case 106: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 114:
          case 112: {
            k1_.AddEntriesFrom(ref input, _repeated_k1_codec);
            break;
          }
          case 122: {
            k8_.AddEntriesFrom(ref input, _map_k8_codec);
            break;
          }
          case 130: {
            k9_.AddEntriesFrom(ref input, _repeated_k9_codec);
            break;
          }
          case 138: {
            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.ConfigReflection.Descriptor.MessageTypes[154]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[155]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[156]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[157]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[158]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[159]; }
    }

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

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestSep Clone() {
      return new TestTestSep(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 string X1DefaultValue = "";

    private string x1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string X1 {
      get { return x1_ ?? X1DefaultValue; }
      set {
        x1_ = pb::ProtoPreconditions.CheckNotNull(value, "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 x1_ != null; }
    }
    /// <summary>Clears the value of the "x1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearX1() {
      x1_ = null;
    }

    /// <summary>Field number for the "x2" field.</summary>
    public const int X2FieldNumber = 3;
    private global::Cfg.TestSepBean1 x2_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestSepBean1 X2 {
      get { return x2_; }
      set {
        x2_ = value;
      }
    }

    /// <summary>Field number for the "x3" field.</summary>
    public const int X3FieldNumber = 4;
    private global::Cfg.TestSepVector x3_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestSepVector X3 {
      get { return x3_; }
      set {
        x3_ = value;
      }
    }

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

    /// <summary>Field number for the "x5" field.</summary>
    public const int X5FieldNumber = 6;
    private static readonly pb::FieldCodec<global::Cfg.TestSepBean1> _repeated_x5_codec
        = pb::FieldCodec.ForMessage(50, global::Cfg.TestSepBean1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestSepBean1> x5_ = new pbc::RepeatedField<global::Cfg.TestSepBean1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestSepBean1> X5 {
      get { return x5_; }
    }

    /// <summary>Field number for the "x6" field.</summary>
    public const int X6FieldNumber = 7;
    private static readonly pb::FieldCodec<global::Cfg.TestSepBean1> _repeated_x6_codec
        = pb::FieldCodec.ForMessage(58, global::Cfg.TestSepBean1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestSepBean1> x6_ = new pbc::RepeatedField<global::Cfg.TestSepBean1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestSepBean1> X6 {
      get { return x6_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestSep 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 (!object.Equals(X2, other.X2)) return false;
      if (!object.Equals(X3, other.X3)) return false;
      if(!x4_.Equals(other.x4_)) return false;
      if(!x5_.Equals(other.x5_)) return false;
      if(!x6_.Equals(other.x6_)) 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 (x2_ != null) hash ^= X2.GetHashCode();
      if (x3_ != null) hash ^= X3.GetHashCode();
      hash ^= x4_.GetHashCode();
      hash ^= x5_.GetHashCode();
      hash ^= x6_.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(18);
        output.WriteString(X1);
      }
      if (x2_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(X2);
      }
      if (x3_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(X3);
      }
      x4_.WriteTo(output, _repeated_x4_codec);
      x5_.WriteTo(output, _repeated_x5_codec);
      x6_.WriteTo(output, _repeated_x6_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(18);
        output.WriteString(X1);
      }
      if (x2_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(X2);
      }
      if (x3_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(X3);
      }
      x4_.WriteTo(ref output, _repeated_x4_codec);
      x5_.WriteTo(ref output, _repeated_x5_codec);
      x6_.WriteTo(ref output, _repeated_x6_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 + pb::CodedOutputStream.ComputeStringSize(X1);
      }
      if (x2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X2);
      }
      if (x3_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X3);
      }
      size += x4_.CalculateSize(_repeated_x4_codec);
      size += x5_.CalculateSize(_repeated_x5_codec);
      size += x6_.CalculateSize(_repeated_x6_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestSep other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasX1) {
        X1 = other.X1;
      }
      if (other.x2_ != null) {
        if (x2_ == null) {
          X2 = new global::Cfg.TestSepBean1();
        }
        X2.MergeFrom(other.X2);
      }
      if (other.x3_ != null) {
        if (x3_ == null) {
          X3 = new global::Cfg.TestSepVector();
        }
        X3.MergeFrom(other.X3);
      }
      x4_.Add(other.x4_);
      x5_.Add(other.x5_);
      x6_.Add(other.x6_);
      _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 = input.ReadString();
            break;
          }
          case 26: {
            if (x2_ == null) {
              X2 = new global::Cfg.TestSepBean1();
            }
            input.ReadMessage(X2);
            break;
          }
          case 34: {
            if (x3_ == null) {
              X3 = new global::Cfg.TestSepVector();
            }
            input.ReadMessage(X3);
            break;
          }
          case 42: {
            x4_.AddEntriesFrom(input, _repeated_x4_codec);
            break;
          }
          case 50: {
            x5_.AddEntriesFrom(input, _repeated_x5_codec);
            break;
          }
          case 58: {
            x6_.AddEntriesFrom(input, _repeated_x6_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 = input.ReadString();
            break;
          }
          case 26: {
            if (x2_ == null) {
              X2 = new global::Cfg.TestSepBean1();
            }
            input.ReadMessage(X2);
            break;
          }
          case 34: {
            if (x3_ == null) {
              X3 = new global::Cfg.TestSepVector();
            }
            input.ReadMessage(X3);
            break;
          }
          case 42: {
            x4_.AddEntriesFrom(ref input, _repeated_x4_codec);
            break;
          }
          case 50: {
            x5_.AddEntriesFrom(ref input, _repeated_x5_codec);
            break;
          }
          case 58: {
            x6_.AddEntriesFrom(ref input, _repeated_x6_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestSepBean1 Clone() {
      return new TestSepBean1(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;
    }

    /// <summary>Field number for the "c" field.</summary>
    public const int CFieldNumber = 3;
    private readonly static string CDefaultValue = "";

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestSepBean1 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;
      if (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 (HasA) hash ^= A.GetHashCode();
      if (HasB) hash ^= B.GetHashCode();
      if (HasC) 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 (HasA) {
        output.WriteRawTag(8);
        output.WriteInt32(A);
      }
      if (HasB) {
        output.WriteRawTag(16);
        output.WriteInt32(B);
      }
      if (HasC) {
        output.WriteRawTag(26);
        output.WriteString(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 (HasA) {
        output.WriteRawTag(8);
        output.WriteInt32(A);
      }
      if (HasB) {
        output.WriteRawTag(16);
        output.WriteInt32(B);
      }
      if (HasC) {
        output.WriteRawTag(26);
        output.WriteString(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 (HasA) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(A);
      }
      if (HasB) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(B);
      }
      if (HasC) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(C);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestSepBean1 other) {
      if (other == null) {
        return;
      }
      if (other.HasA) {
        A = other.A;
      }
      if (other.HasB) {
        B = other.B;
      }
      if (other.HasC) {
        C = 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: {
            A = input.ReadInt32();
            break;
          }
          case 16: {
            B = input.ReadInt32();
            break;
          }
          case 26: {
            C = 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: {
            A = input.ReadInt32();
            break;
          }
          case 16: {
            B = input.ReadInt32();
            break;
          }
          case 26: {
            C = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestSepVector(TestSepVector 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 TestSepVector Clone() {
      return new TestSepVector(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;
    }

    /// <summary>Field number for the "z" field.</summary>
    public const int ZFieldNumber = 3;
    private readonly static int ZDefaultValue = 0;

    private int z_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int 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 TestSepVector);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestSepVector 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;
      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 (_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 (HasZ) {
        output.WriteRawTag(24);
        output.WriteInt32(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(8);
        output.WriteInt32(X);
      }
      if (HasY) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      if (HasZ) {
        output.WriteRawTag(24);
        output.WriteInt32(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 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (HasY) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y);
      }
      if (HasZ) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Z);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestSepVector 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 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
          case 24: {
            Z = 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;
          }
          case 24: {
            Z = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestExternalType Clone() {
      return new TestTestExternalType(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.TestAudioType AudioTypeDefaultValue = global::Cfg.TestAudioType.Unknown;

    private global::Cfg.TestAudioType audioType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestAudioType 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 "color" field.</summary>
    public const int ColorFieldNumber = 3;
    private global::Cfg.TestColor color_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestColor Color {
      get { return color_; }
      set {
        color_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestExternalType 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(Color, other.Color)) 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 (color_ != null) hash ^= Color.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 (color_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Color);
      }
      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 (color_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Color);
      }
      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 (color_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Color);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestExternalType other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasAudioType) {
        AudioType = other.AudioType;
      }
      if (other.color_ != null) {
        if (color_ == null) {
          Color = new global::Cfg.TestColor();
        }
        Color.MergeFrom(other.Color);
      }
      _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.TestAudioType) input.ReadEnum();
            break;
          }
          case 26: {
            if (color_ == null) {
              Color = new global::Cfg.TestColor();
            }
            input.ReadMessage(Color);
            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.TestAudioType) input.ReadEnum();
            break;
          }
          case 26: {
            if (color_ == null) {
              Color = new global::Cfg.TestColor();
            }
            input.ReadMessage(Color);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "r" field.</summary>
    public const int RFieldNumber = 1;
    private readonly static float RDefaultValue = 0F;

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

    /// <summary>Field number for the "g" field.</summary>
    public const int GFieldNumber = 2;
    private readonly static float GDefaultValue = 0F;

    private float g_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float G {
      get { if ((_hasBits0 & 2) != 0) { return g_; } else { return GDefaultValue; } }
      set {
        _hasBits0 |= 2;
        g_ = value;
      }
    }
    /// <summary>Gets whether the "g" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasG {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "g" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearG() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "b" field.</summary>
    public const int BFieldNumber = 3;
    private readonly static float BDefaultValue = 0F;

    private float b_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float B {
      get { if ((_hasBits0 & 4) != 0) { return b_; } else { return BDefaultValue; } }
      set {
        _hasBits0 |= 4;
        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 & 4) != 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 &= ~4;
    }

    /// <summary>Field number for the "a" field.</summary>
    public const int AFieldNumber = 4;
    private readonly static float ADefaultValue = 0F;

    private float a_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float A {
      get { if ((_hasBits0 & 8) != 0) { return a_; } else { return ADefaultValue; } }
      set {
        _hasBits0 |= 8;
        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 & 8) != 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 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestColor other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(R, other.R)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(G, other.G)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(B, other.B)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(A, other.A)) 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 (HasR) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(R);
      if (HasG) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(G);
      if (HasB) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(B);
      if (HasA) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(A);
      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 (HasR) {
        output.WriteRawTag(13);
        output.WriteFloat(R);
      }
      if (HasG) {
        output.WriteRawTag(21);
        output.WriteFloat(G);
      }
      if (HasB) {
        output.WriteRawTag(29);
        output.WriteFloat(B);
      }
      if (HasA) {
        output.WriteRawTag(37);
        output.WriteFloat(A);
      }
      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 (HasR) {
        output.WriteRawTag(13);
        output.WriteFloat(R);
      }
      if (HasG) {
        output.WriteRawTag(21);
        output.WriteFloat(G);
      }
      if (HasB) {
        output.WriteRawTag(29);
        output.WriteFloat(B);
      }
      if (HasA) {
        output.WriteRawTag(37);
        output.WriteFloat(A);
      }
      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 (HasR) {
        size += 1 + 4;
      }
      if (HasG) {
        size += 1 + 4;
      }
      if (HasB) {
        size += 1 + 4;
      }
      if (HasA) {
        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(TestColor other) {
      if (other == null) {
        return;
      }
      if (other.HasR) {
        R = other.R;
      }
      if (other.HasG) {
        G = other.G;
      }
      if (other.HasB) {
        B = other.B;
      }
      if (other.HasA) {
        A = other.A;
      }
      _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: {
            R = input.ReadFloat();
            break;
          }
          case 21: {
            G = input.ReadFloat();
            break;
          }
          case 29: {
            B = input.ReadFloat();
            break;
          }
          case 37: {
            A = 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: {
            R = input.ReadFloat();
            break;
          }
          case 21: {
            G = input.ReadFloat();
            break;
          }
          case 29: {
            B = input.ReadFloat();
            break;
          }
          case 37: {
            A = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDefineFromExcel2(TestDefineFromExcel2 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_;
      x14_ = other.x14_ != null ? other.x14_.Clone() : null;
      v2_ = other.v2_ != null ? other.v2_.Clone() : null;
      t1_ = other.t1_;
      k1_ = other.k1_.Clone();
      k8_ = other.k8_.Clone();
      k9_ = other.k9_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestDefineFromExcel2 Clone() {
      return new TestDefineFromExcel2(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.TestETestQuality X13DefaultValue = global::Cfg.TestETestQuality.A;

    private global::Cfg.TestETestQuality x13_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Cfg.TestETestQuality 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 = 8;
    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 "v2" field.</summary>
    public const int V2FieldNumber = 9;
    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 = 10;
    private readonly static int T1DefaultValue = 0;

    private int t1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int T1 {
      get { if ((_hasBits0 & 64) != 0) { return t1_; } else { return T1DefaultValue; } }
      set {
        _hasBits0 |= 64;
        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 & 64) != 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 &= ~64;
    }

    /// <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_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestDefineFromExcel2 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 (!object.Equals(X14, other.X14)) return false;
      if (!object.Equals(V2, other.V2)) return false;
      if (T1 != other.T1) return false;
      if(!k1_.Equals(other.k1_)) return false;
      if (!K8.Equals(other.K8)) return false;
      if(!k9_.Equals(other.k9_)) 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 (x14_ != null) hash ^= X14.GetHashCode();
      if (v2_ != null) hash ^= V2.GetHashCode();
      if (HasT1) hash ^= T1.GetHashCode();
      hash ^= k1_.GetHashCode();
      hash ^= K8.GetHashCode();
      hash ^= k9_.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 (x14_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(X14);
      }
      if (v2_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(V2);
      }
      if (HasT1) {
        output.WriteRawTag(80);
        output.WriteInt32(T1);
      }
      k1_.WriteTo(output, _repeated_k1_codec);
      k8_.WriteTo(output, _map_k8_codec);
      k9_.WriteTo(output, _repeated_k9_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 (x14_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(X14);
      }
      if (v2_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(V2);
      }
      if (HasT1) {
        output.WriteRawTag(80);
        output.WriteInt32(T1);
      }
      k1_.WriteTo(ref output, _repeated_k1_codec);
      k8_.WriteTo(ref output, _map_k8_codec);
      k9_.WriteTo(ref output, _repeated_k9_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 (x14_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X14);
      }
      if (v2_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(V2);
      }
      if (HasT1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(T1);
      }
      size += k1_.CalculateSize(_repeated_k1_codec);
      size += k8_.CalculateSize(_map_k8_codec);
      size += k9_.CalculateSize(_repeated_k9_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestDefineFromExcel2 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.x14_ != null) {
        if (x14_ == null) {
          X14 = new global::Cfg.TestDemoDynamic();
        }
        X14.MergeFrom(other.X14);
      }
      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_);
      k8_.Add(other.k8_);
      k9_.Add(other.k9_);
      _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.TestETestQuality) input.ReadEnum();
            break;
          }
          case 66: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 74: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 80: {
            T1 = input.ReadInt32();
            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;
          }
        }
      }
    #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.TestETestQuality) input.ReadEnum();
            break;
          }
          case 66: {
            if (x14_ == null) {
              X14 = new global::Cfg.TestDemoDynamic();
            }
            input.ReadMessage(X14);
            break;
          }
          case 74: {
            if (v2_ == null) {
              V2 = new global::Cfg.Vector2();
            }
            input.ReadMessage(V2);
            break;
          }
          case 80: {
            T1 = input.ReadInt32();
            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;
          }
        }
      }
    }
    #endif

  }

  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.ConfigReflection.Descriptor.MessageTypes[166]; }
    }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestDesc(TestTestDesc other) : this() {
      _hasBits0 = other._hasBits0;
      id_ = other.id_;
      name_ = other.name_;
      a1_ = other.a1_;
      a2_ = other.a2_;
      x1_ = other.x1_ != null ? other.x1_.Clone() : null;
      x2_ = other.x2_.Clone();
      x3_ = other.x3_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTestDesc Clone() {
      return new TestTestDesc(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 "a1" field.</summary>
    public const int A1FieldNumber = 3;
    private readonly static int A1DefaultValue = 0;

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

    /// <summary>Field number for the "a2" field.</summary>
    public const int A2FieldNumber = 4;
    private readonly static int A2DefaultValue = 0;

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

    /// <summary>Field number for the "x1" field.</summary>
    public const int X1FieldNumber = 5;
    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" field.</summary>
    public const int X2FieldNumber = 6;
    private static readonly pb::FieldCodec<global::Cfg.TestH2> _repeated_x2_codec
        = pb::FieldCodec.ForMessage(50, 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 = 7;
    private static readonly pb::FieldCodec<global::Cfg.TestH2> _repeated_x3_codec
        = pb::FieldCodec.ForMessage(58, 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_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTestDesc 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 (A1 != other.A1) return false;
      if (A2 != other.A2) return false;
      if (!object.Equals(X1, other.X1)) return false;
      if(!x2_.Equals(other.x2_)) return false;
      if(!x3_.Equals(other.x3_)) 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 (HasA1) hash ^= A1.GetHashCode();
      if (HasA2) hash ^= A2.GetHashCode();
      if (x1_ != null) hash ^= X1.GetHashCode();
      hash ^= x2_.GetHashCode();
      hash ^= x3_.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 (HasA1) {
        output.WriteRawTag(24);
        output.WriteInt32(A1);
      }
      if (HasA2) {
        output.WriteRawTag(32);
        output.WriteInt32(A2);
      }
      if (x1_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(X1);
      }
      x2_.WriteTo(output, _repeated_x2_codec);
      x3_.WriteTo(output, _repeated_x3_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 (HasA1) {
        output.WriteRawTag(24);
        output.WriteInt32(A1);
      }
      if (HasA2) {
        output.WriteRawTag(32);
        output.WriteInt32(A2);
      }
      if (x1_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(X1);
      }
      x2_.WriteTo(ref output, _repeated_x2_codec);
      x3_.WriteTo(ref output, _repeated_x3_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 (HasA1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(A1);
      }
      if (HasA2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(A2);
      }
      if (x1_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(X1);
      }
      size += x2_.CalculateSize(_repeated_x2_codec);
      size += x3_.CalculateSize(_repeated_x3_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TestTestDesc other) {
      if (other == null) {
        return;
      }
      if (other.HasId) {
        Id = other.Id;
      }
      if (other.HasName) {
        Name = other.Name;
      }
      if (other.HasA1) {
        A1 = other.A1;
      }
      if (other.HasA2) {
        A2 = other.A2;
      }
      if (other.x1_ != null) {
        if (x1_ == null) {
          X1 = new global::Cfg.TestH1();
        }
        X1.MergeFrom(other.X1);
      }
      x2_.Add(other.x2_);
      x3_.Add(other.x3_);
      _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: {
            A1 = input.ReadInt32();
            break;
          }
          case 32: {
            A2 = input.ReadInt32();
            break;
          }
          case 42: {
            if (x1_ == null) {
              X1 = new global::Cfg.TestH1();
            }
            input.ReadMessage(X1);
            break;
          }
          case 50: {
            x2_.AddEntriesFrom(input, _repeated_x2_codec);
            break;
          }
          case 58: {
            x3_.AddEntriesFrom(input, _repeated_x3_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 24: {
            A1 = input.ReadInt32();
            break;
          }
          case 32: {
            A2 = input.ReadInt32();
            break;
          }
          case 42: {
            if (x1_ == null) {
              X1 = new global::Cfg.TestH1();
            }
            input.ReadMessage(X1);
            break;
          }
          case 50: {
            x2_.AddEntriesFrom(ref input, _repeated_x2_codec);
            break;
          }
          case 58: {
            x3_.AddEntriesFrom(ref input, _repeated_x3_codec);
            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.ConfigReflection.Descriptor.MessageTypes[168]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[169]; }
    }

    [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 BlueprintTbClazz : pb::IMessage<BlueprintTbClazz>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BlueprintTbClazz> _parser = new pb::MessageParser<BlueprintTbClazz>(() => new BlueprintTbClazz());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BlueprintTbClazz> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BlueprintClazz> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BlueprintClazz.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BlueprintClazz> dataList_ = new pbc::RepeatedField<global::Cfg.BlueprintClazz>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BlueprintClazz> 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 BlueprintTbClazz);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BlueprintTbClazz 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(BlueprintTbClazz 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 BonusTbDrop : pb::IMessage<BonusTbDrop>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BonusTbDrop> _parser = new pb::MessageParser<BonusTbDrop>(() => new BonusTbDrop());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BonusTbDrop> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.BonusDropInfo> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.BonusDropInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.BonusDropInfo> dataList_ = new pbc::RepeatedField<global::Cfg.BonusDropInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.BonusDropInfo> 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 BonusTbDrop);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BonusTbDrop 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(BonusTbDrop 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.ConfigReflection.Descriptor.MessageTypes[172]; }
    }

    [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 ErrorTbErrorInfo : pb::IMessage<ErrorTbErrorInfo>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ErrorTbErrorInfo> _parser = new pb::MessageParser<ErrorTbErrorInfo>(() => new ErrorTbErrorInfo());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ErrorTbErrorInfo> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.ErrorErrorInfo> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.ErrorErrorInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ErrorErrorInfo> dataList_ = new pbc::RepeatedField<global::Cfg.ErrorErrorInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ErrorErrorInfo> 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 ErrorTbErrorInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ErrorTbErrorInfo 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(ErrorTbErrorInfo 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 ErrorTbCodeInfo : pb::IMessage<ErrorTbCodeInfo>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ErrorTbCodeInfo> _parser = new pb::MessageParser<ErrorTbCodeInfo>(() => new ErrorTbCodeInfo());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ErrorTbCodeInfo> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.ErrorCodeInfo> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.ErrorCodeInfo.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ErrorCodeInfo> dataList_ = new pbc::RepeatedField<global::Cfg.ErrorCodeInfo>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ErrorCodeInfo> 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 ErrorTbCodeInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ErrorTbCodeInfo 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(ErrorTbCodeInfo 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.ConfigReflection.Descriptor.MessageTypes[175]; }
    }

    [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 ItemTbItemFunc : pb::IMessage<ItemTbItemFunc>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ItemTbItemFunc> _parser = new pb::MessageParser<ItemTbItemFunc>(() => new ItemTbItemFunc());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ItemTbItemFunc> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.ItemItemFunction> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.ItemItemFunction.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ItemItemFunction> dataList_ = new pbc::RepeatedField<global::Cfg.ItemItemFunction>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ItemItemFunction> 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 ItemTbItemFunc);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemTbItemFunc 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(ItemTbItemFunc 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 ItemTbItemExtra : pb::IMessage<ItemTbItemExtra>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ItemTbItemExtra> _parser = new pb::MessageParser<ItemTbItemExtra>(() => new ItemTbItemExtra());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ItemTbItemExtra> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.ItemItemExtra> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.ItemItemExtra.Parser);
    private readonly pbc::RepeatedField<global::Cfg.ItemItemExtra> dataList_ = new pbc::RepeatedField<global::Cfg.ItemItemExtra>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.ItemItemExtra> 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 ItemTbItemExtra);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ItemTbItemExtra 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(ItemTbItemExtra 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.ConfigReflection.Descriptor.MessageTypes[178]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[179]; }
    }

    [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 MailTbSystemMail : pb::IMessage<MailTbSystemMail>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MailTbSystemMail> _parser = new pb::MessageParser<MailTbSystemMail>(() => new MailTbSystemMail());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MailTbSystemMail> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.MailSystemMail> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.MailSystemMail.Parser);
    private readonly pbc::RepeatedField<global::Cfg.MailSystemMail> dataList_ = new pbc::RepeatedField<global::Cfg.MailSystemMail>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.MailSystemMail> 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 MailTbSystemMail);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MailTbSystemMail 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(MailTbSystemMail 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 MailTbGlobalMail : pb::IMessage<MailTbGlobalMail>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MailTbGlobalMail> _parser = new pb::MessageParser<MailTbGlobalMail>(() => new MailTbGlobalMail());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MailTbGlobalMail> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.MailGlobalMail> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.MailGlobalMail.Parser);
    private readonly pbc::RepeatedField<global::Cfg.MailGlobalMail> dataList_ = new pbc::RepeatedField<global::Cfg.MailGlobalMail>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.MailGlobalMail> 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 MailTbGlobalMail);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MailTbGlobalMail 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(MailTbGlobalMail 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 RoleTbRoleLevelExpAttr : pb::IMessage<RoleTbRoleLevelExpAttr>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RoleTbRoleLevelExpAttr> _parser = new pb::MessageParser<RoleTbRoleLevelExpAttr>(() => new RoleTbRoleLevelExpAttr());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RoleTbRoleLevelExpAttr> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.RoleLevelExpAttr> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.RoleLevelExpAttr.Parser);
    private readonly pbc::RepeatedField<global::Cfg.RoleLevelExpAttr> dataList_ = new pbc::RepeatedField<global::Cfg.RoleLevelExpAttr>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.RoleLevelExpAttr> 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 RoleTbRoleLevelExpAttr);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RoleTbRoleLevelExpAttr 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(RoleTbRoleLevelExpAttr 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 RoleTbRoleLevelBonusCoefficient : pb::IMessage<RoleTbRoleLevelBonusCoefficient>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RoleTbRoleLevelBonusCoefficient> _parser = new pb::MessageParser<RoleTbRoleLevelBonusCoefficient>(() => new RoleTbRoleLevelBonusCoefficient());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RoleTbRoleLevelBonusCoefficient> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.RoleLevelBonus> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.RoleLevelBonus.Parser);
    private readonly pbc::RepeatedField<global::Cfg.RoleLevelBonus> dataList_ = new pbc::RepeatedField<global::Cfg.RoleLevelBonus>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.RoleLevelBonus> 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 RoleTbRoleLevelBonusCoefficient);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RoleTbRoleLevelBonusCoefficient 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(RoleTbRoleLevelBonusCoefficient 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.ConfigReflection.Descriptor.MessageTypes[184]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[185]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[186]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[187]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[188]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[189]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[190]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[191]; }
    }

    [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 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.ConfigReflection.Descriptor.MessageTypes[192]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[193]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[194]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[195]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[196]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[197]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[198]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[199]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[200]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[201]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[202]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[203]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[204]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[205]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[206]; }
    }

    [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 TestTbDefineFromExcel : pb::IMessage<TestTbDefineFromExcel>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestTbDefineFromExcel> _parser = new pb::MessageParser<TestTbDefineFromExcel>(() => new TestTbDefineFromExcel());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestTbDefineFromExcel> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDefineFromExcel> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDefineFromExcel.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDefineFromExcel> dataList_ = new pbc::RepeatedField<global::Cfg.TestDefineFromExcel>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDefineFromExcel> 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 TestTbDefineFromExcel);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDefineFromExcel 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(TestTbDefineFromExcel 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 TestTbDefineFromExcelOne : pb::IMessage<TestTbDefineFromExcelOne>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestTbDefineFromExcelOne> _parser = new pb::MessageParser<TestTbDefineFromExcelOne>(() => new TestTbDefineFromExcelOne());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestTbDefineFromExcelOne> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestDefineFromExcelOne> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDefineFromExcelOne.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDefineFromExcelOne> dataList_ = new pbc::RepeatedField<global::Cfg.TestDefineFromExcelOne>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDefineFromExcelOne> 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 TestTbDefineFromExcelOne);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDefineFromExcelOne 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(TestTbDefineFromExcelOne 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.ConfigReflection.Descriptor.MessageTypes[209]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[210]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[211]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[212]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[213]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[214]; }
    }

    [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.ConfigReflection.Descriptor.MessageTypes[215]; }
    }

    [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 TestTbTestSep : pb::IMessage<TestTbTestSep>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestTbTestSep> _parser = new pb::MessageParser<TestTbTestSep>(() => new TestTbTestSep());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestTbTestSep> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestSep> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestSep.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestSep> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestSep>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestSep> 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 TestTbTestSep);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestSep 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(TestTbTestSep 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 TestTbTestExternalType : pb::IMessage<TestTbTestExternalType>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestTbTestExternalType> _parser = new pb::MessageParser<TestTbTestExternalType>(() => new TestTbTestExternalType());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestTbTestExternalType> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestExternalType> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestExternalType.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestExternalType> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestExternalType>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestExternalType> 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 TestTbTestExternalType);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestExternalType 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(TestTbTestExternalType 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 TestTbDemoGroupDefineFromExcel : pb::IMessage<TestTbDemoGroupDefineFromExcel>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestTbDemoGroupDefineFromExcel> _parser = new pb::MessageParser<TestTbDemoGroupDefineFromExcel>(() => new TestTbDemoGroupDefineFromExcel());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestTbDemoGroupDefineFromExcel> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TestTbDemoGroupDefineFromExcel Clone() {
      return new TestTbDemoGroupDefineFromExcel(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 TestTbDemoGroupDefineFromExcel);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbDemoGroupDefineFromExcel 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(TestTbDemoGroupDefineFromExcel 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.ConfigReflection.Descriptor.MessageTypes[219]; }
    }

    [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.TestDefineFromExcel2> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestDefineFromExcel2.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestDefineFromExcel2> dataList_ = new pbc::RepeatedField<global::Cfg.TestDefineFromExcel2>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestDefineFromExcel2> 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

  }

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

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestExcelBean1> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestExcelBean1.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestExcelBean1> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestExcelBean1>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestExcelBean1> 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 TestTbTestExcelBean);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestExcelBean 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(TestTbTestExcelBean 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 TestTbTestDesc : pb::IMessage<TestTbTestDesc>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TestTbTestDesc> _parser = new pb::MessageParser<TestTbTestDesc>(() => new TestTbTestDesc());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TestTbTestDesc> Parser { get { return _parser; } }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "data_list" field.</summary>
    public const int DataListFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Cfg.TestTestDesc> _repeated_dataList_codec
        = pb::FieldCodec.ForMessage(10, global::Cfg.TestTestDesc.Parser);
    private readonly pbc::RepeatedField<global::Cfg.TestTestDesc> dataList_ = new pbc::RepeatedField<global::Cfg.TestTestDesc>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Cfg.TestTestDesc> 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 TestTbTestDesc);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TestTbTestDesc 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(TestTbTestDesc 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