// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/identity/v1/keyapis_identity_oauth2_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 "keyapis/identity/v1/KeyapisIdentityOauth2V1.pbobjc.h"
#import "google/api/Annotations.pbobjc.h"
#import "google/api/FieldBehavior.pbobjc.h"
#import "keyapis/identity/v1/KeyapisIdentityAuthorizationV1.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(KEYAPISIDENTITYV1AuthServiceError);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1AuthServiceError_AuthError);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1CaptchaAnswer);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1CaptchaAnswer_Error);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1GetOauth2ConsentRequest);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1GetOauth2ConsentResponse);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1KeyError);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1OtpCode_Error);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error);
GPBObjCClassDeclaration(KEYAPISIDENTITYV1SsoError);

#pragma mark - KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root

@implementation KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root

+ (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]];
  }
  return registry;
}

@end

static GPBFileDescription KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription = {
  .package = "keyapis.identity.v1",
  .prefix = "KEYAPISIDENTITYV1",
  .syntax = GPBFileSyntaxProto3
};

#pragma mark - KEYAPISIDENTITYV1AuthServiceError

@implementation KEYAPISIDENTITYV1AuthServiceError

@dynamic reasonOneOfCase;
@dynamic auth;

typedef struct KEYAPISIDENTITYV1AuthServiceError__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1AuthServiceError_AuthError *auth;
} KEYAPISIDENTITYV1AuthServiceError__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 = "auth",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1AuthServiceError_AuthError),
        .number = KEYAPISIDENTITYV1AuthServiceError_FieldNumber_Auth,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1AuthServiceError__storage_, auth),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1AuthServiceError)
                                   messageName:@"AuthServiceError"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1AuthServiceError__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];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISIDENTITYV1AuthServiceError_AuthError


typedef struct KEYAPISIDENTITYV1AuthServiceError_AuthError__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISIDENTITYV1AuthServiceError_AuthError__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(KEYAPISIDENTITYV1AuthServiceError_AuthError)
                                   messageName:@"AuthError"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISIDENTITYV1AuthServiceError_AuthError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISIDENTITYV1AuthServiceError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest

@implementation KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest

@dynamic codeId;
@dynamic code;
@dynamic loginChallenge;

typedef struct KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *codeId;
  NSString *code;
  NSString *loginChallenge;
} KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest__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 = "codeId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest_FieldNumber_CodeId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest__storage_, codeId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "code",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest_FieldNumber_Code,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest__storage_, code),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "loginChallenge",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest_FieldNumber_LoginChallenge,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest__storage_, loginChallenge),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest)
                                   messageName:@"PostOauth2LoginByCodeRequest"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1PostOauth2LoginByCodeRequest__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 - KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse

@implementation KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error *error;
} KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse__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(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse)
                                   messageName:@"PostOauth2LoginByCodeResponse"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse__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 KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_ClearTypeOneOfCase(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error

@implementation KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error

@dynamic reasonOneOfCase;
@dynamic otpCode;
@dynamic sso;
@dynamic key;
@dynamic authService;

typedef struct KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1OtpCode_Error *otpCode;
  KEYAPISIDENTITYV1SsoError *sso;
  KEYAPISIDENTITYV1KeyError *key;
  KEYAPISIDENTITYV1AuthServiceError *authService;
} KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_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 = "otpCode",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1OtpCode_Error),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error_FieldNumber_OtpCode,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error__storage_, otpCode),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "sso",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1SsoError),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error_FieldNumber_Sso,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error__storage_, sso),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "key",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1KeyError),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error_FieldNumber_Key,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error__storage_, key),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "authService",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1AuthServiceError),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error_FieldNumber_AuthService,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error__storage_, authService),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse_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(KEYAPISIDENTITYV1PostOauth2LoginByCodeResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest

@dynamic typeOneOfCase;
@dynamic phoneNumber;
@dynamic email;
@dynamic login;
@dynamic password;
@dynamic hasCaptchaAnswer, captchaAnswer;
@dynamic loginChallenge;

typedef struct KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_ {
  uint32_t _has_storage_[2];
  NSString *phoneNumber;
  NSString *email;
  NSString *login;
  NSString *password;
  KEYAPISIDENTITYV1CaptchaAnswer *captchaAnswer;
  NSString *loginChallenge;
} KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__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 = "phoneNumber",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_FieldNumber_PhoneNumber,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_, phoneNumber),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "email",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_FieldNumber_Email,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_, email),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "login",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_FieldNumber_Login,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_, login),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "password",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_FieldNumber_Password,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_, password),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "captchaAnswer",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1CaptchaAnswer),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_FieldNumber_CaptchaAnswer,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_, captchaAnswer),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "loginChallenge",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_FieldNumber_LoginChallenge,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__storage_, loginChallenge),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest)
                                   messageName:@"PostOauth2LoginByPasswordRequest"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest__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 KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest_ClearTypeOneOfCase(KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISIDENTITYV1PostOauth2LoginByPasswordRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse

@implementation KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error *error;
} KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse__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(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse)
                                   messageName:@"PostOauth2LoginByPasswordResponse"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse__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 KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_ClearTypeOneOfCase(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error

@implementation KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error

@dynamic reasonOneOfCase;
@dynamic captchaAnswer;
@dynamic sso;
@dynamic key;
@dynamic authService;

typedef struct KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1CaptchaAnswer_Error *captchaAnswer;
  KEYAPISIDENTITYV1SsoError *sso;
  KEYAPISIDENTITYV1KeyError *key;
  KEYAPISIDENTITYV1AuthServiceError *authService;
} KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_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 = "captchaAnswer",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1CaptchaAnswer_Error),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error_FieldNumber_CaptchaAnswer,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error__storage_, captchaAnswer),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "sso",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1SsoError),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error_FieldNumber_Sso,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error__storage_, sso),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "key",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1KeyError),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error_FieldNumber_Key,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error__storage_, key),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "authService",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1AuthServiceError),
        .number = KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error_FieldNumber_AuthService,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error__storage_, authService),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse_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(KEYAPISIDENTITYV1PostOauth2LoginByPasswordResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISIDENTITYV1GetOauth2ConsentRequest

@dynamic consentChallenge;

typedef struct KEYAPISIDENTITYV1GetOauth2ConsentRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *consentChallenge;
} KEYAPISIDENTITYV1GetOauth2ConsentRequest__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 = "consentChallenge",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISIDENTITYV1GetOauth2ConsentRequest_FieldNumber_ConsentChallenge,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1GetOauth2ConsentRequest__storage_, consentChallenge),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1GetOauth2ConsentRequest)
                                   messageName:@"GetOauth2ConsentRequest"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1GetOauth2ConsentRequest__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 - KEYAPISIDENTITYV1GetOauth2ConsentResponse

@implementation KEYAPISIDENTITYV1GetOauth2ConsentResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISIDENTITYV1GetOauth2ConsentResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error *error;
} KEYAPISIDENTITYV1GetOauth2ConsentResponse__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(KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error),
        .number = KEYAPISIDENTITYV1GetOauth2ConsentResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1GetOauth2ConsentResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1GetOauth2ConsentResponse)
                                   messageName:@"GetOauth2ConsentResponse"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1GetOauth2ConsentResponse__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 KEYAPISIDENTITYV1GetOauth2ConsentResponse_ClearTypeOneOfCase(KEYAPISIDENTITYV1GetOauth2ConsentResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISIDENTITYV1GetOauth2ConsentResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error

@implementation KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error

@dynamic reasonOneOfCase;
@dynamic authService;

typedef struct KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISIDENTITYV1AuthServiceError *authService;
} KEYAPISIDENTITYV1GetOauth2ConsentResponse_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 = "authService",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISIDENTITYV1AuthServiceError),
        .number = KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error_FieldNumber_AuthService,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error__storage_, authService),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISIDENTITYV1KeyapisIdentityOauth2V1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISIDENTITYV1GetOauth2ConsentResponse_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(KEYAPISIDENTITYV1GetOauth2ConsentResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error_ClearReasonOneOfCase(KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISIDENTITYV1GetOauth2ConsentResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
