// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/multiapp/v1/keyapis_multiapp_notification_template_v1.proto

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers_RuntimeSupport.h>
#else
 #import "GPBProtocolBuffers_RuntimeSupport.h"
#endif

#if GOOGLE_PROTOBUF_OBJC_VERSION < 30007
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
#if 30007 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
#endif

#import <stdatomic.h>

#import "keyapis/multiapp/v1/KeyapisMultiappNotificationTemplateV1.pbobjc.h"
#import "google/api/Annotations.pbobjc.h"
#import "google/api/FieldBehavior.pbobjc.h"
#import "google/protobuf/Descriptor.pbobjc.h"
#import "keyapis/multiapp/v1/KeyapisMultiappAppV1.pbobjc.h"
#import "google/api/Visibility.pbobjc.h"
// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdirect-ivar-access"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"

#pragma mark - Objective-C Class declarations
// Forward declarations of Objective-C classes that we can use as
// static values in struct initializers.
// We don't use [Foo class] because it is not a static value.
GPBObjCClassDeclaration(GPBBoolValue);
GPBObjCClassDeclaration(GPBStringValue);
GPBObjCClassDeclaration(GPBTimestamp);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateListRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplate);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplateFilter);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplatePaging);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplatePartner);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplate_SavingError);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostNotificationTemplateRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostNotificationTemplateResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1ValidationError);

#pragma mark - KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root

@implementation KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root

+ (GPBExtensionRegistry*)extensionRegistry {
  // This is called by +initialize so there is no need to worry
  // about thread safety and initialization of registry.
  static GPBExtensionRegistry* registry = nil;
  if (!registry) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    registry = [[GPBExtensionRegistry alloc] init];
    // Merge in the imports (direct or indirect) that defined extensions.
    [registry addExtensions:[GAPIAnnotationsRoot extensionRegistry]];
    [registry addExtensions:[GAPIFieldBehaviorRoot extensionRegistry]];
    [registry addExtensions:[GAPIVisibilityRoot extensionRegistry]];
  }
  return registry;
}

@end

static GPBFileDescription KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription = {
  .package = "keyapis.multiapp.v1",
  .prefix = "KEYAPISMULTIAPPV1",
  .syntax = GPBFileSyntaxProto3
};

#pragma mark - Enum KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType

GPBEnumDescriptor *KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "OrderByTypeUnknown\000ChangedAt\000CreatedAt\000R"
        "ank\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_OrderByTypeUnknown,
        KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_ChangedAt,
        KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_CreatedAt,
        KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_Rank,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_OrderByTypeUnknown:
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_ChangedAt:
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_CreatedAt:
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_Rank:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType

GPBEnumDescriptor *KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "DirectionTypeUnknown\000Desc\000Asc\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_DirectionTypeUnknown,
        KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_Desc,
        KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_Asc,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_DirectionTypeUnknown:
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_Desc:
    case KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_Asc:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - KEYAPISMULTIAPPV1NotificationTemplate

@implementation KEYAPISMULTIAPPV1NotificationTemplate

@dynamic id_p;
@dynamic templateHeader;
@dynamic templateText;
@dynamic hasCreatedAt, createdAt;
@dynamic hasChangedAt, changedAt;
@dynamic hasDeletedAt, deletedAt;
@dynamic title;

typedef struct KEYAPISMULTIAPPV1NotificationTemplate__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
  NSString *templateHeader;
  NSString *templateText;
  GPBTimestamp *createdAt;
  GPBTimestamp *changedAt;
  GPBTimestamp *deletedAt;
  NSString *title;
} KEYAPISMULTIAPPV1NotificationTemplate__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "templateHeader",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_TemplateHeader,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, templateHeader),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "templateText",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_TemplateText,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, templateText),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "createdAt",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBTimestamp),
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_CreatedAt,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, createdAt),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "changedAt",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBTimestamp),
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_ChangedAt,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, changedAt),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "deletedAt",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBTimestamp),
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_DeletedAt,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, deletedAt),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "title",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplate_FieldNumber_Title,
        .hasIndex = 6,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate__storage_, title),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate)
                                   messageName:@"NotificationTemplate"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplate__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1NotificationTemplate_SavingError

@implementation KEYAPISMULTIAPPV1NotificationTemplate_SavingError

@dynamic reasonOneOfCase;
@dynamic conflict;

typedef struct KEYAPISMULTIAPPV1NotificationTemplate_SavingError__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict *conflict;
} KEYAPISMULTIAPPV1NotificationTemplate_SavingError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "conflict",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict),
        .number = KEYAPISMULTIAPPV1NotificationTemplate_SavingError_FieldNumber_Conflict,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplate_SavingError__storage_, conflict),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate_SavingError)
                                   messageName:@"SavingError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplate_SavingError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1NotificationTemplate_SavingError_ClearReasonOneOfCase(KEYAPISMULTIAPPV1NotificationTemplate_SavingError *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1NotificationTemplate_SavingError descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict

@implementation KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict


typedef struct KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict)
                                   messageName:@"Conflict"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplate_SavingError_Conflict__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate_SavingError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1NotificationTemplatePartner

@implementation KEYAPISMULTIAPPV1NotificationTemplatePartner

@dynamic notificationTemplateId;
@dynamic partnerId;

typedef struct KEYAPISMULTIAPPV1NotificationTemplatePartner__storage_ {
  uint32_t _has_storage_[1];
  NSString *notificationTemplateId;
  NSString *partnerId;
} KEYAPISMULTIAPPV1NotificationTemplatePartner__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "notificationTemplateId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplatePartner_FieldNumber_NotificationTemplateId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePartner__storage_, notificationTemplateId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "partnerId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplatePartner_FieldNumber_PartnerId,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePartner__storage_, partnerId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner)
                                   messageName:@"NotificationTemplatePartner"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplatePartner__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError

@implementation KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError

@dynamic reasonOneOfCase;
@dynamic partnerIsDeleted;
@dynamic templateIsDeleted;

typedef struct KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted *partnerIsDeleted;
  KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted *templateIsDeleted;
} KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "partnerIsDeleted",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted),
        .number = KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_FieldNumber_PartnerIsDeleted,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError__storage_, partnerIsDeleted),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "templateIsDeleted",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted),
        .number = KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_FieldNumber_TemplateIsDeleted,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError__storage_, templateIsDeleted),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError)
                                   messageName:@"SavingError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_ClearReasonOneOfCase(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted

@implementation KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted


typedef struct KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted)
                                   messageName:@"PartnerIsDeleted"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_PartnerIsDeleted__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted

@implementation KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted


typedef struct KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted)
                                   messageName:@"TemplateIsDeleted"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError_TemplateIsDeleted__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1PostNotificationTemplateRequest

@implementation KEYAPISMULTIAPPV1PostNotificationTemplateRequest

@dynamic hasData_p, data_p;

typedef struct KEYAPISMULTIAPPV1PostNotificationTemplateRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1NotificationTemplate *data_p;
} KEYAPISMULTIAPPV1PostNotificationTemplateRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateRequest_FieldNumber_Data_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateRequest__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateRequest)
                                   messageName:@"PostNotificationTemplateRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostNotificationTemplateRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1PostNotificationTemplateResponse

@implementation KEYAPISMULTIAPPV1PostNotificationTemplateResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1PostNotificationTemplateResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1NotificationTemplate *data_p;
  KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error *error;
} KEYAPISMULTIAPPV1PostNotificationTemplateResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse)
                                   messageName:@"PostNotificationTemplateResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1PostNotificationTemplateResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1PostNotificationTemplateResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PostNotificationTemplateResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error

@implementation KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;
@dynamic saving;
@dynamic incorrectDataType;
@dynamic incorrectVariableNameError;
@dynamic incorrectTagFormatError;

typedef struct KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
  KEYAPISMULTIAPPV1NotificationTemplate_SavingError *saving;
  KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError *incorrectDataType;
  KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError *incorrectVariableNameError;
  KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError *incorrectTagFormatError;
} KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "saving",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate_SavingError),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_FieldNumber_Saving,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_, saving),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "incorrectDataType",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_FieldNumber_IncorrectDataType,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_, incorrectDataType),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "incorrectVariableNameError",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_FieldNumber_IncorrectVariableNameError,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_, incorrectVariableNameError),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "incorrectTagFormatError",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError),
        .number = KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_FieldNumber_IncorrectTagFormatError,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_, incorrectTagFormatError),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError

@implementation KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError


typedef struct KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError)
                                   messageName:@"IncorrectDataTypeError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectDataTypeError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError

@implementation KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError


typedef struct KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError)
                                   messageName:@"IncorrectVariableNameError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectVariableNameError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError

@implementation KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError


typedef struct KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError)
                                   messageName:@"IncorrectTagFormatError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error_IncorrectTagFormatError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1PostNotificationTemplateResponse_Error)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateRequest

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateRequest

@dynamic id_p;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISMULTIAPPV1GetNotificationTemplateRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateRequest)
                                   messageName:@"GetNotificationTemplateRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateResponse

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1NotificationTemplate *data_p;
  KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error *error;
} KEYAPISMULTIAPPV1GetNotificationTemplateResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateResponse)
                                   messageName:@"GetNotificationTemplateResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateListRequest

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateListRequest

@dynamic paginationOneOfCase;
@dynamic hasFilter, filter;
@dynamic paging;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateListRequest__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1NotificationTemplateFilter *filter;
  KEYAPISMULTIAPPV1NotificationTemplatePaging *paging;
} KEYAPISMULTIAPPV1GetNotificationTemplateListRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplateFilter),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateListRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateListRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "paging",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePaging),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateListRequest_FieldNumber_Paging,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateListRequest__storage_, paging),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateListRequest)
                                   messageName:@"GetNotificationTemplateListRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateListRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "pagination",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateListRequest_ClearPaginationOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateListRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateListRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateListResponse

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateListResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateListResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1NotificationTemplate *data_p;
  KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error *error;
} KEYAPISMULTIAPPV1GetNotificationTemplateListResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplate),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse)
                                   messageName:@"GetNotificationTemplateListResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateListResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateListResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1NotificationTemplateFilter *filter;
} KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplateFilter),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest)
                                   messageName:@"GetNotificationTemplateCountRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateCountRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse__storage_ {
  uint32_t _has_storage_[2];
  int32_t data_p;
  KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error *error;
} KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse)
                                   messageName:@"GetNotificationTemplateCountResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error

@implementation KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetNotificationTemplateCountResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest

@implementation KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest

@dynamic hasNotificationTemplatePartner, notificationTemplatePartner;

typedef struct KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1NotificationTemplatePartner *notificationTemplatePartner;
} KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "notificationTemplatePartner",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest_FieldNumber_NotificationTemplatePartner,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest__storage_, notificationTemplatePartner),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest)
                                   messageName:@"PutNotificationTemplatePartnerAttachRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse

@implementation KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error *error;
} KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse)
                                   messageName:@"PutNotificationTemplatePartnerAttachResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error

@implementation KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;
@dynamic saving;

typedef struct KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
  KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError *saving;
} KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "saving",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner_SavingError),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error_FieldNumber_Saving,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error__storage_, saving),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PutNotificationTemplatePartnerAttachResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest

@implementation KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest

@dynamic hasNotificationTemplatePartner, notificationTemplatePartner;

typedef struct KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1NotificationTemplatePartner *notificationTemplatePartner;
} KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "notificationTemplatePartner",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePartner),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest_FieldNumber_NotificationTemplatePartner,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest__storage_, notificationTemplatePartner),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest)
                                   messageName:@"PutNotificationTemplatePartnerDetachRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse

@implementation KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error *error;
} KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse)
                                   messageName:@"PutNotificationTemplatePartnerDetachResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error

@implementation KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PutNotificationTemplatePartnerDetachResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest

@implementation KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest

@dynamic id_p;

typedef struct KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest)
                                   messageName:@"DeleteNotificationTemplateRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1DeleteNotificationTemplateRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse

@implementation KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error *error;
} KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error),
        .number = KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse)
                                   messageName:@"DeleteNotificationTemplateResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error

@implementation KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error_ClearReasonOneOfCase(KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1DeleteNotificationTemplateResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1NotificationTemplateFilter

@implementation KEYAPISMULTIAPPV1NotificationTemplateFilter

@dynamic hasText, text;
@dynamic partnerIdsArray, partnerIdsArray_Count;
@dynamic hasIsShowDeleted, isShowDeleted;

typedef struct KEYAPISMULTIAPPV1NotificationTemplateFilter__storage_ {
  uint32_t _has_storage_[1];
  GPBStringValue *text;
  NSMutableArray *partnerIdsArray;
  GPBBoolValue *isShowDeleted;
} KEYAPISMULTIAPPV1NotificationTemplateFilter__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "text",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1NotificationTemplateFilter_FieldNumber_Text,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplateFilter__storage_, text),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "partnerIdsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplateFilter_FieldNumber_PartnerIdsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplateFilter__storage_, partnerIdsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "isShowDeleted",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBBoolValue),
        .number = KEYAPISMULTIAPPV1NotificationTemplateFilter_FieldNumber_IsShowDeleted,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplateFilter__storage_, isShowDeleted),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplateFilter)
                                   messageName:@"NotificationTemplateFilter"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplateFilter__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1NotificationTemplatePaging

@implementation KEYAPISMULTIAPPV1NotificationTemplatePaging

@dynamic orderByType;
@dynamic directionType;
@dynamic limit;
@dynamic offset;

typedef struct KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType orderByType;
  KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType directionType;
  int32_t limit;
  int32_t offset;
} KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "orderByType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_OrderByType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_, orderByType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "directionType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_DirectionType,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_, directionType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "limit",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_Limit,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_, limit),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "offset",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_Offset,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_, offset),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1NotificationTemplatePaging)
                                   messageName:@"NotificationTemplatePaging"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappNotificationTemplateV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1NotificationTemplatePaging__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_RawValue(KEYAPISMULTIAPPV1NotificationTemplatePaging *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1NotificationTemplatePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_OrderByType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1NotificationTemplatePaging_OrderByType_RawValue(KEYAPISMULTIAPPV1NotificationTemplatePaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1NotificationTemplatePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_OrderByType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_RawValue(KEYAPISMULTIAPPV1NotificationTemplatePaging *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1NotificationTemplatePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_DirectionType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1NotificationTemplatePaging_DirectionType_RawValue(KEYAPISMULTIAPPV1NotificationTemplatePaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1NotificationTemplatePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1NotificationTemplatePaging_FieldNumber_DirectionType];
  GPBSetMessageRawEnumField(message, field, value);
}


#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
