// Copyright (c) 2025 Gitpod GmbH. All rights reserved. // Licensed under the GNU Affero General Public License (AGPL). // See License.AGPL.txt in the project root for license information. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc (unknown) // source: gitpod/v1/user.proto package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type RoleOrPermission int32 const ( RoleOrPermission_ROLE_OR_PERMISSION_UNSPECIFIED RoleOrPermission = 0 RoleOrPermission_ROLE_OR_PERMISSION_DEVOPS RoleOrPermission = 1 RoleOrPermission_ROLE_OR_PERMISSION_VIEWER RoleOrPermission = 2 RoleOrPermission_ROLE_OR_PERMISSION_ADMIN RoleOrPermission = 3 RoleOrPermission_ROLE_OR_PERMISSION_DEVELOPER RoleOrPermission = 4 RoleOrPermission_ROLE_OR_PERMISSION_REGISTRY_ACCESS RoleOrPermission = 5 RoleOrPermission_ROLE_OR_PERMISSION_ADMIN_PERMISSIONS RoleOrPermission = 6 RoleOrPermission_ROLE_OR_PERMISSION_ADMIN_USERS RoleOrPermission = 7 RoleOrPermission_ROLE_OR_PERMISSION_ADMIN_WORKSPACE_CONTENT RoleOrPermission = 8 RoleOrPermission_ROLE_OR_PERMISSION_ADMIN_WORKSPACES RoleOrPermission = 9 RoleOrPermission_ROLE_OR_PERMISSION_ADMIN_PROJECTS RoleOrPermission = 10 RoleOrPermission_ROLE_OR_PERMISSION_NEW_WORKSPACE_CLUSTER RoleOrPermission = 11 ) // Enum value maps for RoleOrPermission. var ( RoleOrPermission_name = map[int32]string{ 0: "ROLE_OR_PERMISSION_UNSPECIFIED", 1: "ROLE_OR_PERMISSION_DEVOPS", 2: "ROLE_OR_PERMISSION_VIEWER", 3: "ROLE_OR_PERMISSION_ADMIN", 4: "ROLE_OR_PERMISSION_DEVELOPER", 5: "ROLE_OR_PERMISSION_REGISTRY_ACCESS", 6: "ROLE_OR_PERMISSION_ADMIN_PERMISSIONS", 7: "ROLE_OR_PERMISSION_ADMIN_USERS", 8: "ROLE_OR_PERMISSION_ADMIN_WORKSPACE_CONTENT", 9: "ROLE_OR_PERMISSION_ADMIN_WORKSPACES", 10: "ROLE_OR_PERMISSION_ADMIN_PROJECTS", 11: "ROLE_OR_PERMISSION_NEW_WORKSPACE_CLUSTER", } RoleOrPermission_value = map[string]int32{ "ROLE_OR_PERMISSION_UNSPECIFIED": 0, "ROLE_OR_PERMISSION_DEVOPS": 1, "ROLE_OR_PERMISSION_VIEWER": 2, "ROLE_OR_PERMISSION_ADMIN": 3, "ROLE_OR_PERMISSION_DEVELOPER": 4, "ROLE_OR_PERMISSION_REGISTRY_ACCESS": 5, "ROLE_OR_PERMISSION_ADMIN_PERMISSIONS": 6, "ROLE_OR_PERMISSION_ADMIN_USERS": 7, "ROLE_OR_PERMISSION_ADMIN_WORKSPACE_CONTENT": 8, "ROLE_OR_PERMISSION_ADMIN_WORKSPACES": 9, "ROLE_OR_PERMISSION_ADMIN_PROJECTS": 10, "ROLE_OR_PERMISSION_NEW_WORKSPACE_CLUSTER": 11, } ) func (x RoleOrPermission) Enum() *RoleOrPermission { p := new(RoleOrPermission) *p = x return p } func (x RoleOrPermission) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RoleOrPermission) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_user_proto_enumTypes[0].Descriptor() } func (RoleOrPermission) Type() protoreflect.EnumType { return &file_gitpod_v1_user_proto_enumTypes[0] } func (x RoleOrPermission) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RoleOrPermission.Descriptor instead. func (RoleOrPermission) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{0} } type User_UserFeatureFlag int32 const ( User_USER_FEATURE_FLAG_UNSPECIFIED User_UserFeatureFlag = 0 User_USER_FEATURE_FLAG_FULL_WORKSPACE_BACKUP User_UserFeatureFlag = 1 User_USER_FEATURE_FLAG_WORKSPACE_CLASS_LIMITING User_UserFeatureFlag = 2 User_USER_FEATURE_FLAG_WORKSPACE_CONNECTION_LIMITING User_UserFeatureFlag = 3 User_USER_FEATURE_FLAG_WORKSPACE_PSI User_UserFeatureFlag = 4 ) // Enum value maps for User_UserFeatureFlag. var ( User_UserFeatureFlag_name = map[int32]string{ 0: "USER_FEATURE_FLAG_UNSPECIFIED", 1: "USER_FEATURE_FLAG_FULL_WORKSPACE_BACKUP", 2: "USER_FEATURE_FLAG_WORKSPACE_CLASS_LIMITING", 3: "USER_FEATURE_FLAG_WORKSPACE_CONNECTION_LIMITING", 4: "USER_FEATURE_FLAG_WORKSPACE_PSI", } User_UserFeatureFlag_value = map[string]int32{ "USER_FEATURE_FLAG_UNSPECIFIED": 0, "USER_FEATURE_FLAG_FULL_WORKSPACE_BACKUP": 1, "USER_FEATURE_FLAG_WORKSPACE_CLASS_LIMITING": 2, "USER_FEATURE_FLAG_WORKSPACE_CONNECTION_LIMITING": 3, "USER_FEATURE_FLAG_WORKSPACE_PSI": 4, } ) func (x User_UserFeatureFlag) Enum() *User_UserFeatureFlag { p := new(User_UserFeatureFlag) *p = x return p } func (x User_UserFeatureFlag) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (User_UserFeatureFlag) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_user_proto_enumTypes[1].Descriptor() } func (User_UserFeatureFlag) Type() protoreflect.EnumType { return &file_gitpod_v1_user_proto_enumTypes[1] } func (x User_UserFeatureFlag) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use User_UserFeatureFlag.Descriptor instead. func (User_UserFeatureFlag) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{18, 0} } type GetAuthenticatedUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetAuthenticatedUserRequest) Reset() { *x = GetAuthenticatedUserRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAuthenticatedUserRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAuthenticatedUserRequest) ProtoMessage() {} func (x *GetAuthenticatedUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAuthenticatedUserRequest.ProtoReflect.Descriptor instead. func (*GetAuthenticatedUserRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{0} } type GetAuthenticatedUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } func (x *GetAuthenticatedUserResponse) Reset() { *x = GetAuthenticatedUserResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAuthenticatedUserResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAuthenticatedUserResponse) ProtoMessage() {} func (x *GetAuthenticatedUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetAuthenticatedUserResponse.ProtoReflect.Descriptor instead. func (*GetAuthenticatedUserResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{1} } func (x *GetAuthenticatedUserResponse) GetUser() *User { if x != nil { return x.User } return nil } type SetWorkspaceAutoStartOptionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` WorkspaceAutostartOptions []*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption `protobuf:"bytes,2,rep,name=workspace_autostart_options,json=workspaceAutostartOptions,proto3" json:"workspace_autostart_options,omitempty"` } func (x *SetWorkspaceAutoStartOptionsRequest) Reset() { *x = SetWorkspaceAutoStartOptionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetWorkspaceAutoStartOptionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetWorkspaceAutoStartOptionsRequest) ProtoMessage() {} func (x *SetWorkspaceAutoStartOptionsRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetWorkspaceAutoStartOptionsRequest.ProtoReflect.Descriptor instead. func (*SetWorkspaceAutoStartOptionsRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2} } func (x *SetWorkspaceAutoStartOptionsRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SetWorkspaceAutoStartOptionsRequest) GetWorkspaceAutostartOptions() []*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption { if x != nil { return x.WorkspaceAutostartOptions } return nil } type SetWorkspaceAutoStartOptionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetWorkspaceAutoStartOptionsResponse) Reset() { *x = SetWorkspaceAutoStartOptionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetWorkspaceAutoStartOptionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetWorkspaceAutoStartOptionsResponse) ProtoMessage() {} func (x *SetWorkspaceAutoStartOptionsResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetWorkspaceAutoStartOptionsResponse.ProtoReflect.Descriptor instead. func (*SetWorkspaceAutoStartOptionsResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{3} } type UpdateUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` AcceptedPrivacyPolicyDate *string `protobuf:"bytes,3,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3,oneof" json:"accepted_privacy_policy_date,omitempty"` Profile *UpdateUserRequest_ProfileDetails `protobuf:"bytes,4,opt,name=profile,proto3,oneof" json:"profile,omitempty"` EmailAddress *string `protobuf:"bytes,5,opt,name=email_address,json=emailAddress,proto3,oneof" json:"email_address,omitempty"` EditorSettings *EditorReference `protobuf:"bytes,6,opt,name=editor_settings,json=editorSettings,proto3,oneof" json:"editor_settings,omitempty"` EmailNotificationSettings *UpdateUserRequest_EmailNotificationSettings `protobuf:"bytes,7,opt,name=email_notification_settings,json=emailNotificationSettings,proto3,oneof" json:"email_notification_settings,omitempty"` WorkspaceTimeoutSettings *UpdateUserRequest_WorkspaceTimeoutSettings `protobuf:"bytes,8,opt,name=workspace_timeout_settings,json=workspaceTimeoutSettings,proto3,oneof" json:"workspace_timeout_settings,omitempty"` DotfileRepo *string `protobuf:"bytes,9,opt,name=dotfile_repo,json=dotfileRepo,proto3,oneof" json:"dotfile_repo,omitempty"` } func (x *UpdateUserRequest) Reset() { *x = UpdateUserRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserRequest) ProtoMessage() {} func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. func (*UpdateUserRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4} } func (x *UpdateUserRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *UpdateUserRequest) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *UpdateUserRequest) GetAcceptedPrivacyPolicyDate() string { if x != nil && x.AcceptedPrivacyPolicyDate != nil { return *x.AcceptedPrivacyPolicyDate } return "" } func (x *UpdateUserRequest) GetProfile() *UpdateUserRequest_ProfileDetails { if x != nil { return x.Profile } return nil } func (x *UpdateUserRequest) GetEmailAddress() string { if x != nil && x.EmailAddress != nil { return *x.EmailAddress } return "" } func (x *UpdateUserRequest) GetEditorSettings() *EditorReference { if x != nil { return x.EditorSettings } return nil } func (x *UpdateUserRequest) GetEmailNotificationSettings() *UpdateUserRequest_EmailNotificationSettings { if x != nil { return x.EmailNotificationSettings } return nil } func (x *UpdateUserRequest) GetWorkspaceTimeoutSettings() *UpdateUserRequest_WorkspaceTimeoutSettings { if x != nil { return x.WorkspaceTimeoutSettings } return nil } func (x *UpdateUserRequest) GetDotfileRepo() string { if x != nil && x.DotfileRepo != nil { return *x.DotfileRepo } return "" } type UpdateUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } func (x *UpdateUserResponse) Reset() { *x = UpdateUserResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserResponse) ProtoMessage() {} func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserResponse.ProtoReflect.Descriptor instead. func (*UpdateUserResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{5} } func (x *UpdateUserResponse) GetUser() *User { if x != nil { return x.User } return nil } type DeleteUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteUserRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. func (*DeleteUserRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6} } func (x *DeleteUserRequest) GetUserId() string { if x != nil { return x.UserId } return "" } type DeleteUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteUserResponse) Reset() { *x = DeleteUserResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteUserResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteUserResponse) ProtoMessage() {} func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteUserResponse.ProtoReflect.Descriptor instead. func (*DeleteUserResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{7} } type VerifyUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *VerifyUserRequest) Reset() { *x = VerifyUserRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VerifyUserRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*VerifyUserRequest) ProtoMessage() {} func (x *VerifyUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VerifyUserRequest.ProtoReflect.Descriptor instead. func (*VerifyUserRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{8} } func (x *VerifyUserRequest) GetUserId() string { if x != nil { return x.UserId } return "" } type VerifyUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } func (x *VerifyUserResponse) Reset() { *x = VerifyUserResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VerifyUserResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*VerifyUserResponse) ProtoMessage() {} func (x *VerifyUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VerifyUserResponse.ProtoReflect.Descriptor instead. func (*VerifyUserResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{9} } func (x *VerifyUserResponse) GetUser() *User { if x != nil { return x.User } return nil } type BlockUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Blocked bool `protobuf:"varint,2,opt,name=blocked,proto3" json:"blocked,omitempty"` } func (x *BlockUserRequest) Reset() { *x = BlockUserRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlockUserRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlockUserRequest) ProtoMessage() {} func (x *BlockUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BlockUserRequest.ProtoReflect.Descriptor instead. func (*BlockUserRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{10} } func (x *BlockUserRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *BlockUserRequest) GetBlocked() bool { if x != nil { return x.Blocked } return false } type BlockUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } func (x *BlockUserResponse) Reset() { *x = BlockUserResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlockUserResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlockUserResponse) ProtoMessage() {} func (x *BlockUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BlockUserResponse.ProtoReflect.Descriptor instead. func (*BlockUserResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{11} } func (x *BlockUserResponse) GetUser() *User { if x != nil { return x.User } return nil } type ListUsersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SearchTerm string `protobuf:"bytes,1,opt,name=search_term,json=searchTerm,proto3" json:"search_term,omitempty"` Pagination *PaginationRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // Users can be sorted by "creationDate" Sort []*Sort `protobuf:"bytes,3,rep,name=sort,proto3" json:"sort,omitempty"` } func (x *ListUsersRequest) Reset() { *x = ListUsersRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListUsersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListUsersRequest) ProtoMessage() {} func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListUsersRequest.ProtoReflect.Descriptor instead. func (*ListUsersRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{12} } func (x *ListUsersRequest) GetSearchTerm() string { if x != nil { return x.SearchTerm } return "" } func (x *ListUsersRequest) GetPagination() *PaginationRequest { if x != nil { return x.Pagination } return nil } func (x *ListUsersRequest) GetSort() []*Sort { if x != nil { return x.Sort } return nil } type ListUsersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *ListUsersResponse) Reset() { *x = ListUsersResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListUsersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListUsersResponse) ProtoMessage() {} func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListUsersResponse.ProtoReflect.Descriptor instead. func (*ListUsersResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{13} } func (x *ListUsersResponse) GetUsers() []*User { if x != nil { return x.Users } return nil } func (x *ListUsersResponse) GetPagination() *PaginationResponse { if x != nil { return x.Pagination } return nil } type GetUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *GetUserRequest) Reset() { *x = GetUserRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. func (*GetUserRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{14} } func (x *GetUserRequest) GetUserId() string { if x != nil { return x.UserId } return "" } type GetUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } func (x *GetUserResponse) Reset() { *x = GetUserResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserResponse) ProtoMessage() {} func (x *GetUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetUserResponse.ProtoReflect.Descriptor instead. func (*GetUserResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{15} } func (x *GetUserResponse) GetUser() *User { if x != nil { return x.User } return nil } type SetRolesOrPermissionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` RolesOrPermissions []RoleOrPermission `protobuf:"varint,2,rep,packed,name=roles_or_permissions,json=rolesOrPermissions,proto3,enum=gitpod.v1.RoleOrPermission" json:"roles_or_permissions,omitempty"` ResetMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=reset_mask,json=resetMask,proto3" json:"reset_mask,omitempty"` } func (x *SetRolesOrPermissionsRequest) Reset() { *x = SetRolesOrPermissionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetRolesOrPermissionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetRolesOrPermissionsRequest) ProtoMessage() {} func (x *SetRolesOrPermissionsRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetRolesOrPermissionsRequest.ProtoReflect.Descriptor instead. func (*SetRolesOrPermissionsRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{16} } func (x *SetRolesOrPermissionsRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SetRolesOrPermissionsRequest) GetRolesOrPermissions() []RoleOrPermission { if x != nil { return x.RolesOrPermissions } return nil } func (x *SetRolesOrPermissionsRequest) GetResetMask() *fieldmaskpb.FieldMask { if x != nil { return x.ResetMask } return nil } type SetRolesOrPermissionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` } func (x *SetRolesOrPermissionsResponse) Reset() { *x = SetRolesOrPermissionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetRolesOrPermissionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetRolesOrPermissionsResponse) ProtoMessage() {} func (x *SetRolesOrPermissionsResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetRolesOrPermissionsResponse.ProtoReflect.Descriptor instead. func (*SetRolesOrPermissionsResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{17} } func (x *SetRolesOrPermissionsResponse) GetUser() *User { if x != nil { return x.User } return nil } type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // id is a UUID of the user Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // organization_id is the id of the organization this account is owned by. // // +optional if not set, this account is owned by the installation. OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // name is the full name of the user Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // avatar_url is a link to the user avatar AvatarUrl string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` // created_at is the creation time CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Identities []*Identity `protobuf:"bytes,6,rep,name=identities,proto3" json:"identities,omitempty"` // blocked indicates whether the account is blocked, e.g. due to vialoation of ToS. Blocked bool `protobuf:"varint,7,opt,name=blocked,proto3" json:"blocked,omitempty"` // last_verification_time is the last time this account was verified. // // +optional if not set, this account is not verified. LastVerificationTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_verification_time,json=lastVerificationTime,proto3" json:"last_verification_time,omitempty"` // verification_phone_number is the phone number used for the last verification. VerificationPhoneNumber string `protobuf:"bytes,9,opt,name=verification_phone_number,json=verificationPhoneNumber,proto3" json:"verification_phone_number,omitempty"` // user global workspace timeout settings // // +optional WorkspaceTimeoutSettings *User_WorkspaceTimeoutSettings `protobuf:"bytes,10,opt,name=workspace_timeout_settings,json=workspaceTimeoutSettings,proto3" json:"workspace_timeout_settings,omitempty"` // +optional EmailNotificationSettings *User_EmailNotificationSettings `protobuf:"bytes,11,opt,name=email_notification_settings,json=emailNotificationSettings,proto3" json:"email_notification_settings,omitempty"` // +optional EditorSettings *EditorReference `protobuf:"bytes,12,opt,name=editor_settings,json=editorSettings,proto3" json:"editor_settings,omitempty"` // Git clone URL pointing to the user's dotfile repo // // // +optional DotfileRepo string `protobuf:"bytes,13,opt,name=dotfile_repo,json=dotfileRepo,proto3" json:"dotfile_repo,omitempty"` // preferred workspace class // // +optional WorkspaceClass string `protobuf:"bytes,14,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"` // additional user profile data // // +optional Profile *User_ProfileDetails `protobuf:"bytes,15,opt,name=profile,proto3" json:"profile,omitempty"` // remembered workspace auto start options // // +optional WorkspaceAutostartOptions []*User_WorkspaceAutostartOption `protobuf:"bytes,16,rep,name=workspace_autostart_options,json=workspaceAutostartOptions,proto3" json:"workspace_autostart_options,omitempty"` // usage_attribution_id specifies the organization or account to which all of the // user's workspace usage is attributed to, e.g. for billing purposes UsageAttributionId string `protobuf:"bytes,17,opt,name=usage_attribution_id,json=usageAttributionId,proto3" json:"usage_attribution_id,omitempty"` // per-user settings to control workspace behavior WorkspaceFeatureFlags []User_UserFeatureFlag `protobuf:"varint,18,rep,packed,name=workspace_feature_flags,json=workspaceFeatureFlags,proto3,enum=gitpod.v1.User_UserFeatureFlag" json:"workspace_feature_flags,omitempty"` // specifies the permissions and/or roles the user has RolesOrPermissions []RoleOrPermission `protobuf:"varint,19,rep,packed,name=roles_or_permissions,json=rolesOrPermissions,proto3,enum=gitpod.v1.RoleOrPermission" json:"roles_or_permissions,omitempty"` } func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User) String() string { return protoimpl.X.MessageStringOf(x) } func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{18} } func (x *User) GetId() string { if x != nil { return x.Id } return "" } func (x *User) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *User) GetName() string { if x != nil { return x.Name } return "" } func (x *User) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *User) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *User) GetIdentities() []*Identity { if x != nil { return x.Identities } return nil } func (x *User) GetBlocked() bool { if x != nil { return x.Blocked } return false } func (x *User) GetLastVerificationTime() *timestamppb.Timestamp { if x != nil { return x.LastVerificationTime } return nil } func (x *User) GetVerificationPhoneNumber() string { if x != nil { return x.VerificationPhoneNumber } return "" } func (x *User) GetWorkspaceTimeoutSettings() *User_WorkspaceTimeoutSettings { if x != nil { return x.WorkspaceTimeoutSettings } return nil } func (x *User) GetEmailNotificationSettings() *User_EmailNotificationSettings { if x != nil { return x.EmailNotificationSettings } return nil } func (x *User) GetEditorSettings() *EditorReference { if x != nil { return x.EditorSettings } return nil } func (x *User) GetDotfileRepo() string { if x != nil { return x.DotfileRepo } return "" } func (x *User) GetWorkspaceClass() string { if x != nil { return x.WorkspaceClass } return "" } func (x *User) GetProfile() *User_ProfileDetails { if x != nil { return x.Profile } return nil } func (x *User) GetWorkspaceAutostartOptions() []*User_WorkspaceAutostartOption { if x != nil { return x.WorkspaceAutostartOptions } return nil } func (x *User) GetUsageAttributionId() string { if x != nil { return x.UsageAttributionId } return "" } func (x *User) GetWorkspaceFeatureFlags() []User_UserFeatureFlag { if x != nil { return x.WorkspaceFeatureFlags } return nil } func (x *User) GetRolesOrPermissions() []RoleOrPermission { if x != nil { return x.RolesOrPermissions } return nil } type Identity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The id of the auth provider this identity was created with. AuthProviderId string `protobuf:"bytes,1,opt,name=auth_provider_id,json=authProviderId,proto3" json:"auth_provider_id,omitempty"` // The external account id this identity was created for. AuthId string `protobuf:"bytes,2,opt,name=auth_id,json=authId,proto3" json:"auth_id,omitempty"` // The external account name this identity was created for. AuthName string `protobuf:"bytes,3,opt,name=auth_name,json=authName,proto3" json:"auth_name,omitempty"` // The primary email of the external account. PrimaryEmail string `protobuf:"bytes,4,opt,name=primary_email,json=primaryEmail,proto3" json:"primary_email,omitempty"` // The time of last signin. // // +optional LastSigninTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_signin_time,json=lastSigninTime,proto3" json:"last_signin_time,omitempty"` } func (x *Identity) Reset() { *x = Identity{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Identity) String() string { return protoimpl.X.MessageStringOf(x) } func (*Identity) ProtoMessage() {} func (x *Identity) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Identity.ProtoReflect.Descriptor instead. func (*Identity) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{19} } func (x *Identity) GetAuthProviderId() string { if x != nil { return x.AuthProviderId } return "" } func (x *Identity) GetAuthId() string { if x != nil { return x.AuthId } return "" } func (x *Identity) GetAuthName() string { if x != nil { return x.AuthName } return "" } func (x *Identity) GetPrimaryEmail() string { if x != nil { return x.PrimaryEmail } return "" } func (x *Identity) GetLastSigninTime() *timestamppb.Timestamp { if x != nil { return x.LastSigninTime } return nil } type SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` WorkspaceClass *string `protobuf:"bytes,3,opt,name=workspace_class,json=workspaceClass,proto3,oneof" json:"workspace_class,omitempty"` EditorSettings *EditorReference `protobuf:"bytes,4,opt,name=editor_settings,json=editorSettings,proto3,oneof" json:"editor_settings,omitempty"` Region *string `protobuf:"bytes,5,opt,name=region,proto3,oneof" json:"region,omitempty"` } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) Reset() { *x = SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) ProtoMessage() {} func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. func (*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 0} } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetCloneUrl() string { if x != nil { return x.CloneUrl } return "" } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetWorkspaceClass() string { if x != nil && x.WorkspaceClass != nil { return *x.WorkspaceClass } return "" } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetEditorSettings() *EditorReference { if x != nil { return x.EditorSettings } return nil } func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetRegion() string { if x != nil && x.Region != nil { return *x.Region } return "" } type UpdateUserRequest_ProfileDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LastUpdatedDetailsNudge *string `protobuf:"bytes,1,opt,name=last_updated_details_nudge,json=lastUpdatedDetailsNudge,proto3,oneof" json:"last_updated_details_nudge,omitempty"` AcceptedPrivacyPolicyDate *string `protobuf:"bytes,2,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3,oneof" json:"accepted_privacy_policy_date,omitempty"` CompanyName *string `protobuf:"bytes,3,opt,name=company_name,json=companyName,proto3,oneof" json:"company_name,omitempty"` EmailAddress *string `protobuf:"bytes,4,opt,name=email_address,json=emailAddress,proto3,oneof" json:"email_address,omitempty"` JobRole *string `protobuf:"bytes,5,opt,name=job_role,json=jobRole,proto3,oneof" json:"job_role,omitempty"` JobRoleOther *string `protobuf:"bytes,6,opt,name=job_role_other,json=jobRoleOther,proto3,oneof" json:"job_role_other,omitempty"` ExplorationReasons []string `protobuf:"bytes,7,rep,name=exploration_reasons,json=explorationReasons,proto3" json:"exploration_reasons,omitempty"` SignupGoals []string `protobuf:"bytes,8,rep,name=signup_goals,json=signupGoals,proto3" json:"signup_goals,omitempty"` SignupGoalsOther *string `protobuf:"bytes,10,opt,name=signup_goals_other,json=signupGoalsOther,proto3,oneof" json:"signup_goals_other,omitempty"` OnboardedTimestamp *string `protobuf:"bytes,11,opt,name=onboarded_timestamp,json=onboardedTimestamp,proto3,oneof" json:"onboarded_timestamp,omitempty"` CompanySize *string `protobuf:"bytes,12,opt,name=company_size,json=companySize,proto3,oneof" json:"company_size,omitempty"` CoachmarksDismissals map[string]string `protobuf:"bytes,13,rep,name=coachmarks_dismissals,json=coachmarksDismissals,proto3" json:"coachmarks_dismissals,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *UpdateUserRequest_ProfileDetails) Reset() { *x = UpdateUserRequest_ProfileDetails{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserRequest_ProfileDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserRequest_ProfileDetails) ProtoMessage() {} func (x *UpdateUserRequest_ProfileDetails) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserRequest_ProfileDetails.ProtoReflect.Descriptor instead. func (*UpdateUserRequest_ProfileDetails) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 0} } func (x *UpdateUserRequest_ProfileDetails) GetLastUpdatedDetailsNudge() string { if x != nil && x.LastUpdatedDetailsNudge != nil { return *x.LastUpdatedDetailsNudge } return "" } func (x *UpdateUserRequest_ProfileDetails) GetAcceptedPrivacyPolicyDate() string { if x != nil && x.AcceptedPrivacyPolicyDate != nil { return *x.AcceptedPrivacyPolicyDate } return "" } func (x *UpdateUserRequest_ProfileDetails) GetCompanyName() string { if x != nil && x.CompanyName != nil { return *x.CompanyName } return "" } func (x *UpdateUserRequest_ProfileDetails) GetEmailAddress() string { if x != nil && x.EmailAddress != nil { return *x.EmailAddress } return "" } func (x *UpdateUserRequest_ProfileDetails) GetJobRole() string { if x != nil && x.JobRole != nil { return *x.JobRole } return "" } func (x *UpdateUserRequest_ProfileDetails) GetJobRoleOther() string { if x != nil && x.JobRoleOther != nil { return *x.JobRoleOther } return "" } func (x *UpdateUserRequest_ProfileDetails) GetExplorationReasons() []string { if x != nil { return x.ExplorationReasons } return nil } func (x *UpdateUserRequest_ProfileDetails) GetSignupGoals() []string { if x != nil { return x.SignupGoals } return nil } func (x *UpdateUserRequest_ProfileDetails) GetSignupGoalsOther() string { if x != nil && x.SignupGoalsOther != nil { return *x.SignupGoalsOther } return "" } func (x *UpdateUserRequest_ProfileDetails) GetOnboardedTimestamp() string { if x != nil && x.OnboardedTimestamp != nil { return *x.OnboardedTimestamp } return "" } func (x *UpdateUserRequest_ProfileDetails) GetCompanySize() string { if x != nil && x.CompanySize != nil { return *x.CompanySize } return "" } func (x *UpdateUserRequest_ProfileDetails) GetCoachmarksDismissals() map[string]string { if x != nil { return x.CoachmarksDismissals } return nil } type UpdateUserRequest_EmailNotificationSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AllowsChangelogMail *bool `protobuf:"varint,1,opt,name=allows_changelog_mail,json=allowsChangelogMail,proto3,oneof" json:"allows_changelog_mail,omitempty"` AllowsDevxMail *bool `protobuf:"varint,2,opt,name=allows_devx_mail,json=allowsDevxMail,proto3,oneof" json:"allows_devx_mail,omitempty"` AllowsOnboardingMail *bool `protobuf:"varint,3,opt,name=allows_onboarding_mail,json=allowsOnboardingMail,proto3,oneof" json:"allows_onboarding_mail,omitempty"` } func (x *UpdateUserRequest_EmailNotificationSettings) Reset() { *x = UpdateUserRequest_EmailNotificationSettings{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserRequest_EmailNotificationSettings) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserRequest_EmailNotificationSettings) ProtoMessage() {} func (x *UpdateUserRequest_EmailNotificationSettings) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserRequest_EmailNotificationSettings.ProtoReflect.Descriptor instead. func (*UpdateUserRequest_EmailNotificationSettings) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 1} } func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsChangelogMail() bool { if x != nil && x.AllowsChangelogMail != nil { return *x.AllowsChangelogMail } return false } func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsDevxMail() bool { if x != nil && x.AllowsDevxMail != nil { return *x.AllowsDevxMail } return false } func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsOnboardingMail() bool { if x != nil && x.AllowsOnboardingMail != nil { return *x.AllowsOnboardingMail } return false } type UpdateUserRequest_WorkspaceTimeoutSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3,oneof" json:"inactivity,omitempty"` DisabledDisconnected *bool `protobuf:"varint,2,opt,name=disabled_disconnected,json=disabledDisconnected,proto3,oneof" json:"disabled_disconnected,omitempty"` } func (x *UpdateUserRequest_WorkspaceTimeoutSettings) Reset() { *x = UpdateUserRequest_WorkspaceTimeoutSettings{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserRequest_WorkspaceTimeoutSettings) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserRequest_WorkspaceTimeoutSettings) ProtoMessage() {} func (x *UpdateUserRequest_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateUserRequest_WorkspaceTimeoutSettings.ProtoReflect.Descriptor instead. func (*UpdateUserRequest_WorkspaceTimeoutSettings) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 2} } func (x *UpdateUserRequest_WorkspaceTimeoutSettings) GetInactivity() *durationpb.Duration { if x != nil { return x.Inactivity } return nil } func (x *UpdateUserRequest_WorkspaceTimeoutSettings) GetDisabledDisconnected() bool { if x != nil && x.DisabledDisconnected != nil { return *x.DisabledDisconnected } return false } type User_WorkspaceTimeoutSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // inacitivity is the maximum time of inactivity before the workspace is stopped or paused Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3" json:"inactivity,omitempty"` // control whether to enable the closed timeout of a workspace, i.e. close web ide, disconnect ssh connection // // +optional DisabledDisconnected bool `protobuf:"varint,2,opt,name=disabled_disconnected,json=disabledDisconnected,proto3" json:"disabled_disconnected,omitempty"` } func (x *User_WorkspaceTimeoutSettings) Reset() { *x = User_WorkspaceTimeoutSettings{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User_WorkspaceTimeoutSettings) String() string { return protoimpl.X.MessageStringOf(x) } func (*User_WorkspaceTimeoutSettings) ProtoMessage() {} func (x *User_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use User_WorkspaceTimeoutSettings.ProtoReflect.Descriptor instead. func (*User_WorkspaceTimeoutSettings) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{18, 0} } func (x *User_WorkspaceTimeoutSettings) GetInactivity() *durationpb.Duration { if x != nil { return x.Inactivity } return nil } func (x *User_WorkspaceTimeoutSettings) GetDisabledDisconnected() bool { if x != nil { return x.DisabledDisconnected } return false } type User_EmailNotificationSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // +optional AllowsChangelogMail bool `protobuf:"varint,1,opt,name=allows_changelog_mail,json=allowsChangelogMail,proto3" json:"allows_changelog_mail,omitempty"` // +optional AllowsDevxMail bool `protobuf:"varint,2,opt,name=allows_devx_mail,json=allowsDevxMail,proto3" json:"allows_devx_mail,omitempty"` // +optional AllowsOnboardingMail bool `protobuf:"varint,3,opt,name=allows_onboarding_mail,json=allowsOnboardingMail,proto3" json:"allows_onboarding_mail,omitempty"` } func (x *User_EmailNotificationSettings) Reset() { *x = User_EmailNotificationSettings{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User_EmailNotificationSettings) String() string { return protoimpl.X.MessageStringOf(x) } func (*User_EmailNotificationSettings) ProtoMessage() {} func (x *User_EmailNotificationSettings) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use User_EmailNotificationSettings.ProtoReflect.Descriptor instead. func (*User_EmailNotificationSettings) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{18, 1} } func (x *User_EmailNotificationSettings) GetAllowsChangelogMail() bool { if x != nil { return x.AllowsChangelogMail } return false } func (x *User_EmailNotificationSettings) GetAllowsDevxMail() bool { if x != nil { return x.AllowsDevxMail } return false } func (x *User_EmailNotificationSettings) GetAllowsOnboardingMail() bool { if x != nil { return x.AllowsOnboardingMail } return false } type User_ProfileDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // when was the last time the user updated their profile information or has been nudged to do so. // // +optional LastUpdatedDetailsNudge string `protobuf:"bytes,1,opt,name=last_updated_details_nudge,json=lastUpdatedDetailsNudge,proto3" json:"last_updated_details_nudge,omitempty"` // when was the last time the user has accepted our privacy policy // // +optional AcceptedPrivacyPolicyDate string `protobuf:"bytes,2,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3" json:"accepted_privacy_policy_date,omitempty"` // the user's company name // // +optional CompanyName string `protobuf:"bytes,3,opt,name=company_name,json=companyName,proto3" json:"company_name,omitempty"` // the user's email // // +optional EmailAddress string `protobuf:"bytes,4,opt,name=email_address,json=emailAddress,proto3" json:"email_address,omitempty"` // type of role user has in their job // // +optional JobRole string `protobuf:"bytes,5,opt,name=job_role,json=jobRole,proto3" json:"job_role,omitempty"` // freeform entry for job role user works in (when jobRole is "other") // // +optional JobRoleOther string `protobuf:"bytes,6,opt,name=job_role_other,json=jobRoleOther,proto3" json:"job_role_other,omitempty"` // Reasons user is exploring Gitpod when they signed up // // +optional ExplorationReasons []string `protobuf:"bytes,7,rep,name=exploration_reasons,json=explorationReasons,proto3" json:"exploration_reasons,omitempty"` // what user hopes to accomplish when they signed up // // +optional SignupGoals []string `protobuf:"bytes,8,rep,name=signup_goals,json=signupGoals,proto3" json:"signup_goals,omitempty"` // freeform entry for signup goals (when signupGoals is "other") // // +optional SignupGoalsOther string `protobuf:"bytes,10,opt,name=signup_goals_other,json=signupGoalsOther,proto3" json:"signup_goals_other,omitempty"` // Set after a user completes the onboarding flow // // +optional OnboardedTimestamp string `protobuf:"bytes,11,opt,name=onboarded_timestamp,json=onboardedTimestamp,proto3" json:"onboarded_timestamp,omitempty"` // Onboarding question about a user's company size // // +optional CompanySize string `protobuf:"bytes,12,opt,name=company_size,json=companySize,proto3" json:"company_size,omitempty"` // key-value pairs of dialogs in the UI which should only appear once. The value usually is a timestamp of the last dismissal // // +optional CoachmarksDismissals map[string]string `protobuf:"bytes,13,rep,name=coachmarks_dismissals,json=coachmarksDismissals,proto3" json:"coachmarks_dismissals,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *User_ProfileDetails) Reset() { *x = User_ProfileDetails{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User_ProfileDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*User_ProfileDetails) ProtoMessage() {} func (x *User_ProfileDetails) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use User_ProfileDetails.ProtoReflect.Descriptor instead. func (*User_ProfileDetails) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{18, 2} } func (x *User_ProfileDetails) GetLastUpdatedDetailsNudge() string { if x != nil { return x.LastUpdatedDetailsNudge } return "" } func (x *User_ProfileDetails) GetAcceptedPrivacyPolicyDate() string { if x != nil { return x.AcceptedPrivacyPolicyDate } return "" } func (x *User_ProfileDetails) GetCompanyName() string { if x != nil { return x.CompanyName } return "" } func (x *User_ProfileDetails) GetEmailAddress() string { if x != nil { return x.EmailAddress } return "" } func (x *User_ProfileDetails) GetJobRole() string { if x != nil { return x.JobRole } return "" } func (x *User_ProfileDetails) GetJobRoleOther() string { if x != nil { return x.JobRoleOther } return "" } func (x *User_ProfileDetails) GetExplorationReasons() []string { if x != nil { return x.ExplorationReasons } return nil } func (x *User_ProfileDetails) GetSignupGoals() []string { if x != nil { return x.SignupGoals } return nil } func (x *User_ProfileDetails) GetSignupGoalsOther() string { if x != nil { return x.SignupGoalsOther } return "" } func (x *User_ProfileDetails) GetOnboardedTimestamp() string { if x != nil { return x.OnboardedTimestamp } return "" } func (x *User_ProfileDetails) GetCompanySize() string { if x != nil { return x.CompanySize } return "" } func (x *User_ProfileDetails) GetCoachmarksDismissals() map[string]string { if x != nil { return x.CoachmarksDismissals } return nil } type User_WorkspaceAutostartOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` WorkspaceClass string `protobuf:"bytes,3,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"` // +optional EditorSettings *EditorReference `protobuf:"bytes,4,opt,name=editor_settings,json=editorSettings,proto3" json:"editor_settings,omitempty"` // +optional Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` } func (x *User_WorkspaceAutostartOption) Reset() { *x = User_WorkspaceAutostartOption{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_user_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User_WorkspaceAutostartOption) String() string { return protoimpl.X.MessageStringOf(x) } func (*User_WorkspaceAutostartOption) ProtoMessage() {} func (x *User_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_user_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use User_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. func (*User_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { return file_gitpod_v1_user_proto_rawDescGZIP(), []int{18, 3} } func (x *User_WorkspaceAutostartOption) GetCloneUrl() string { if x != nil { return x.CloneUrl } return "" } func (x *User_WorkspaceAutostartOption) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *User_WorkspaceAutostartOption) GetWorkspaceClass() string { if x != nil { return x.WorkspaceClass } return "" } func (x *User_WorkspaceAutostartOption) GetEditorSettings() *EditorReference { if x != nil { return x.EditorSettings } return nil } func (x *User_WorkspaceAutostartOption) GetRegion() string { if x != nil { return x.Region } return "" } var File_gitpod_v1_user_proto protoreflect.FileDescriptor var file_gitpod_v1_user_proto_rawDesc = []byte{ 0x0a, 0x14, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xf3, 0x03, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x87, 0x01, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa8, 0x02, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x24, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x86, 0x11, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x04, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x06, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0b, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x88, 0x01, 0x01, 0x1a, 0xa2, 0x07, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x15, 0x63, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x63, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x1a, 0x47, 0x0a, 0x19, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x88, 0x02, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0xbd, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x39, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x45, 0x0a, 0x10, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x11, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x96, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x79, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xc1, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x44, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xaa, 0x14, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x66, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x69, 0x0a, 0x1b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0xaf, 0x01, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x1a, 0xa5, 0x05, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x6d, 0x0a, 0x15, 0x63, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x63, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x1a, 0x47, 0x0a, 0x19, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x21, 0x0a, 0x1d, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x53, 0x49, 0x10, 0x04, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x2a, 0xd8, 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x4f, 0x50, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x52, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x07, 0x12, 0x2e, 0x0a, 0x2a, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x0b, 0x32, 0xa9, 0x06, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_gitpod_v1_user_proto_rawDescOnce sync.Once file_gitpod_v1_user_proto_rawDescData = file_gitpod_v1_user_proto_rawDesc ) func file_gitpod_v1_user_proto_rawDescGZIP() []byte { file_gitpod_v1_user_proto_rawDescOnce.Do(func() { file_gitpod_v1_user_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_v1_user_proto_rawDescData) }) return file_gitpod_v1_user_proto_rawDescData } var file_gitpod_v1_user_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_gitpod_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_gitpod_v1_user_proto_goTypes = []interface{}{ (RoleOrPermission)(0), // 0: gitpod.v1.RoleOrPermission (User_UserFeatureFlag)(0), // 1: gitpod.v1.User.UserFeatureFlag (*GetAuthenticatedUserRequest)(nil), // 2: gitpod.v1.GetAuthenticatedUserRequest (*GetAuthenticatedUserResponse)(nil), // 3: gitpod.v1.GetAuthenticatedUserResponse (*SetWorkspaceAutoStartOptionsRequest)(nil), // 4: gitpod.v1.SetWorkspaceAutoStartOptionsRequest (*SetWorkspaceAutoStartOptionsResponse)(nil), // 5: gitpod.v1.SetWorkspaceAutoStartOptionsResponse (*UpdateUserRequest)(nil), // 6: gitpod.v1.UpdateUserRequest (*UpdateUserResponse)(nil), // 7: gitpod.v1.UpdateUserResponse (*DeleteUserRequest)(nil), // 8: gitpod.v1.DeleteUserRequest (*DeleteUserResponse)(nil), // 9: gitpod.v1.DeleteUserResponse (*VerifyUserRequest)(nil), // 10: gitpod.v1.VerifyUserRequest (*VerifyUserResponse)(nil), // 11: gitpod.v1.VerifyUserResponse (*BlockUserRequest)(nil), // 12: gitpod.v1.BlockUserRequest (*BlockUserResponse)(nil), // 13: gitpod.v1.BlockUserResponse (*ListUsersRequest)(nil), // 14: gitpod.v1.ListUsersRequest (*ListUsersResponse)(nil), // 15: gitpod.v1.ListUsersResponse (*GetUserRequest)(nil), // 16: gitpod.v1.GetUserRequest (*GetUserResponse)(nil), // 17: gitpod.v1.GetUserResponse (*SetRolesOrPermissionsRequest)(nil), // 18: gitpod.v1.SetRolesOrPermissionsRequest (*SetRolesOrPermissionsResponse)(nil), // 19: gitpod.v1.SetRolesOrPermissionsResponse (*User)(nil), // 20: gitpod.v1.User (*Identity)(nil), // 21: gitpod.v1.Identity (*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption)(nil), // 22: gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption (*UpdateUserRequest_ProfileDetails)(nil), // 23: gitpod.v1.UpdateUserRequest.ProfileDetails (*UpdateUserRequest_EmailNotificationSettings)(nil), // 24: gitpod.v1.UpdateUserRequest.EmailNotificationSettings (*UpdateUserRequest_WorkspaceTimeoutSettings)(nil), // 25: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings nil, // 26: gitpod.v1.UpdateUserRequest.ProfileDetails.CoachmarksDismissalsEntry (*User_WorkspaceTimeoutSettings)(nil), // 27: gitpod.v1.User.WorkspaceTimeoutSettings (*User_EmailNotificationSettings)(nil), // 28: gitpod.v1.User.EmailNotificationSettings (*User_ProfileDetails)(nil), // 29: gitpod.v1.User.ProfileDetails (*User_WorkspaceAutostartOption)(nil), // 30: gitpod.v1.User.WorkspaceAutostartOption nil, // 31: gitpod.v1.User.ProfileDetails.CoachmarksDismissalsEntry (*EditorReference)(nil), // 32: gitpod.v1.EditorReference (*PaginationRequest)(nil), // 33: gitpod.v1.PaginationRequest (*Sort)(nil), // 34: gitpod.v1.Sort (*PaginationResponse)(nil), // 35: gitpod.v1.PaginationResponse (*fieldmaskpb.FieldMask)(nil), // 36: google.protobuf.FieldMask (*timestamppb.Timestamp)(nil), // 37: google.protobuf.Timestamp (*durationpb.Duration)(nil), // 38: google.protobuf.Duration } var file_gitpod_v1_user_proto_depIdxs = []int32{ 20, // 0: gitpod.v1.GetAuthenticatedUserResponse.user:type_name -> gitpod.v1.User 22, // 1: gitpod.v1.SetWorkspaceAutoStartOptionsRequest.workspace_autostart_options:type_name -> gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption 23, // 2: gitpod.v1.UpdateUserRequest.profile:type_name -> gitpod.v1.UpdateUserRequest.ProfileDetails 32, // 3: gitpod.v1.UpdateUserRequest.editor_settings:type_name -> gitpod.v1.EditorReference 24, // 4: gitpod.v1.UpdateUserRequest.email_notification_settings:type_name -> gitpod.v1.UpdateUserRequest.EmailNotificationSettings 25, // 5: gitpod.v1.UpdateUserRequest.workspace_timeout_settings:type_name -> gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings 20, // 6: gitpod.v1.UpdateUserResponse.user:type_name -> gitpod.v1.User 20, // 7: gitpod.v1.VerifyUserResponse.user:type_name -> gitpod.v1.User 20, // 8: gitpod.v1.BlockUserResponse.user:type_name -> gitpod.v1.User 33, // 9: gitpod.v1.ListUsersRequest.pagination:type_name -> gitpod.v1.PaginationRequest 34, // 10: gitpod.v1.ListUsersRequest.sort:type_name -> gitpod.v1.Sort 20, // 11: gitpod.v1.ListUsersResponse.users:type_name -> gitpod.v1.User 35, // 12: gitpod.v1.ListUsersResponse.pagination:type_name -> gitpod.v1.PaginationResponse 20, // 13: gitpod.v1.GetUserResponse.user:type_name -> gitpod.v1.User 0, // 14: gitpod.v1.SetRolesOrPermissionsRequest.roles_or_permissions:type_name -> gitpod.v1.RoleOrPermission 36, // 15: gitpod.v1.SetRolesOrPermissionsRequest.reset_mask:type_name -> google.protobuf.FieldMask 20, // 16: gitpod.v1.SetRolesOrPermissionsResponse.user:type_name -> gitpod.v1.User 37, // 17: gitpod.v1.User.created_at:type_name -> google.protobuf.Timestamp 21, // 18: gitpod.v1.User.identities:type_name -> gitpod.v1.Identity 37, // 19: gitpod.v1.User.last_verification_time:type_name -> google.protobuf.Timestamp 27, // 20: gitpod.v1.User.workspace_timeout_settings:type_name -> gitpod.v1.User.WorkspaceTimeoutSettings 28, // 21: gitpod.v1.User.email_notification_settings:type_name -> gitpod.v1.User.EmailNotificationSettings 32, // 22: gitpod.v1.User.editor_settings:type_name -> gitpod.v1.EditorReference 29, // 23: gitpod.v1.User.profile:type_name -> gitpod.v1.User.ProfileDetails 30, // 24: gitpod.v1.User.workspace_autostart_options:type_name -> gitpod.v1.User.WorkspaceAutostartOption 1, // 25: gitpod.v1.User.workspace_feature_flags:type_name -> gitpod.v1.User.UserFeatureFlag 0, // 26: gitpod.v1.User.roles_or_permissions:type_name -> gitpod.v1.RoleOrPermission 37, // 27: gitpod.v1.Identity.last_signin_time:type_name -> google.protobuf.Timestamp 32, // 28: gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference 26, // 29: gitpod.v1.UpdateUserRequest.ProfileDetails.coachmarks_dismissals:type_name -> gitpod.v1.UpdateUserRequest.ProfileDetails.CoachmarksDismissalsEntry 38, // 30: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration 38, // 31: gitpod.v1.User.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration 31, // 32: gitpod.v1.User.ProfileDetails.coachmarks_dismissals:type_name -> gitpod.v1.User.ProfileDetails.CoachmarksDismissalsEntry 32, // 33: gitpod.v1.User.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference 2, // 34: gitpod.v1.UserService.GetAuthenticatedUser:input_type -> gitpod.v1.GetAuthenticatedUserRequest 6, // 35: gitpod.v1.UserService.UpdateUser:input_type -> gitpod.v1.UpdateUserRequest 4, // 36: gitpod.v1.UserService.SetWorkspaceAutoStartOptions:input_type -> gitpod.v1.SetWorkspaceAutoStartOptionsRequest 8, // 37: gitpod.v1.UserService.DeleteUser:input_type -> gitpod.v1.DeleteUserRequest 10, // 38: gitpod.v1.UserService.VerifyUser:input_type -> gitpod.v1.VerifyUserRequest 12, // 39: gitpod.v1.UserService.BlockUser:input_type -> gitpod.v1.BlockUserRequest 14, // 40: gitpod.v1.UserService.ListUsers:input_type -> gitpod.v1.ListUsersRequest 16, // 41: gitpod.v1.UserService.GetUser:input_type -> gitpod.v1.GetUserRequest 18, // 42: gitpod.v1.UserService.SetRolesOrPermissions:input_type -> gitpod.v1.SetRolesOrPermissionsRequest 3, // 43: gitpod.v1.UserService.GetAuthenticatedUser:output_type -> gitpod.v1.GetAuthenticatedUserResponse 7, // 44: gitpod.v1.UserService.UpdateUser:output_type -> gitpod.v1.UpdateUserResponse 5, // 45: gitpod.v1.UserService.SetWorkspaceAutoStartOptions:output_type -> gitpod.v1.SetWorkspaceAutoStartOptionsResponse 9, // 46: gitpod.v1.UserService.DeleteUser:output_type -> gitpod.v1.DeleteUserResponse 11, // 47: gitpod.v1.UserService.VerifyUser:output_type -> gitpod.v1.VerifyUserResponse 13, // 48: gitpod.v1.UserService.BlockUser:output_type -> gitpod.v1.BlockUserResponse 15, // 49: gitpod.v1.UserService.ListUsers:output_type -> gitpod.v1.ListUsersResponse 17, // 50: gitpod.v1.UserService.GetUser:output_type -> gitpod.v1.GetUserResponse 19, // 51: gitpod.v1.UserService.SetRolesOrPermissions:output_type -> gitpod.v1.SetRolesOrPermissionsResponse 43, // [43:52] is the sub-list for method output_type 34, // [34:43] is the sub-list for method input_type 34, // [34:34] is the sub-list for extension type_name 34, // [34:34] is the sub-list for extension extendee 0, // [0:34] is the sub-list for field type_name } func init() { file_gitpod_v1_user_proto_init() } func file_gitpod_v1_user_proto_init() { if File_gitpod_v1_user_proto != nil { return } file_gitpod_v1_editor_proto_init() file_gitpod_v1_pagination_proto_init() file_gitpod_v1_sorting_proto_init() if !protoimpl.UnsafeEnabled { file_gitpod_v1_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAuthenticatedUserRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAuthenticatedUserResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetWorkspaceAutoStartOptionsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetWorkspaceAutoStartOptionsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteUserRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteUserResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifyUserRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VerifyUserResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListUsersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListUsersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetRolesOrPermissionsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetRolesOrPermissionsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Identity); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserRequest_ProfileDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserRequest_EmailNotificationSettings); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserRequest_WorkspaceTimeoutSettings); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User_WorkspaceTimeoutSettings); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User_EmailNotificationSettings); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User_ProfileDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_user_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User_WorkspaceAutostartOption); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_gitpod_v1_user_proto_msgTypes[4].OneofWrappers = []interface{}{} file_gitpod_v1_user_proto_msgTypes[20].OneofWrappers = []interface{}{} file_gitpod_v1_user_proto_msgTypes[21].OneofWrappers = []interface{}{} file_gitpod_v1_user_proto_msgTypes[22].OneofWrappers = []interface{}{} file_gitpod_v1_user_proto_msgTypes[23].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_user_proto_rawDesc, NumEnums: 2, NumMessages: 30, NumExtensions: 0, NumServices: 1, }, GoTypes: file_gitpod_v1_user_proto_goTypes, DependencyIndexes: file_gitpod_v1_user_proto_depIdxs, EnumInfos: file_gitpod_v1_user_proto_enumTypes, MessageInfos: file_gitpod_v1_user_proto_msgTypes, }.Build() File_gitpod_v1_user_proto = out.File file_gitpod_v1_user_proto_rawDesc = nil file_gitpod_v1_user_proto_goTypes = nil file_gitpod_v1_user_proto_depIdxs = nil }