// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 // protoc v4.23.1 // source: operations.proto package gitalypb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" 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) ) // CreateTreeError represents an error which happened when computing the // revert. type UserRevertResponse_CreateTreeError int32 const ( // NONE denotes that no error occurred. UserRevertResponse_NONE UserRevertResponse_CreateTreeError = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // EMPTY denotes that the revert would've resulted in an empty commit, // typically because it has already been applied to the target branch. UserRevertResponse_EMPTY UserRevertResponse_CreateTreeError = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // CONFLICT denotes that the revert resulted in a conflict. UserRevertResponse_CONFLICT UserRevertResponse_CreateTreeError = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ) // Enum value maps for UserRevertResponse_CreateTreeError. var ( UserRevertResponse_CreateTreeError_name = map[int32]string{ 0: "NONE", 1: "EMPTY", 2: "CONFLICT", } UserRevertResponse_CreateTreeError_value = map[string]int32{ "NONE": 0, "EMPTY": 1, "CONFLICT": 2, } ) func (x UserRevertResponse_CreateTreeError) Enum() *UserRevertResponse_CreateTreeError { p := new(UserRevertResponse_CreateTreeError) *p = x return p } func (x UserRevertResponse_CreateTreeError) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (UserRevertResponse_CreateTreeError) Descriptor() protoreflect.EnumDescriptor { return file_operations_proto_enumTypes[0].Descriptor() } func (UserRevertResponse_CreateTreeError) Type() protoreflect.EnumType { return &file_operations_proto_enumTypes[0] } func (x UserRevertResponse_CreateTreeError) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use UserRevertResponse_CreateTreeError.Descriptor instead. func (UserRevertResponse_CreateTreeError) EnumDescriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{27, 0} } // ActionType is the type of action to perform. type UserCommitFilesActionHeader_ActionType int32 const ( // CREATE creates a new file. UserCommitFilesActionHeader_CREATE UserCommitFilesActionHeader_ActionType = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH // CREATE_DIR creates a new directory. UserCommitFilesActionHeader_CREATE_DIR UserCommitFilesActionHeader_ActionType = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // UPDATE updates an existing file. UserCommitFilesActionHeader_UPDATE UserCommitFilesActionHeader_ActionType = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // MOVE moves an existing file to a new path. UserCommitFilesActionHeader_MOVE UserCommitFilesActionHeader_ActionType = 3 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // DELETE deletes an existing file. UserCommitFilesActionHeader_DELETE UserCommitFilesActionHeader_ActionType = 4 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // CHMOD changes the permissions of an existing file. UserCommitFilesActionHeader_CHMOD UserCommitFilesActionHeader_ActionType = 5 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ) // Enum value maps for UserCommitFilesActionHeader_ActionType. var ( UserCommitFilesActionHeader_ActionType_name = map[int32]string{ 0: "CREATE", 1: "CREATE_DIR", 2: "UPDATE", 3: "MOVE", 4: "DELETE", 5: "CHMOD", } UserCommitFilesActionHeader_ActionType_value = map[string]int32{ "CREATE": 0, "CREATE_DIR": 1, "UPDATE": 2, "MOVE": 3, "DELETE": 4, "CHMOD": 5, } ) func (x UserCommitFilesActionHeader_ActionType) Enum() *UserCommitFilesActionHeader_ActionType { p := new(UserCommitFilesActionHeader_ActionType) *p = x return p } func (x UserCommitFilesActionHeader_ActionType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (UserCommitFilesActionHeader_ActionType) Descriptor() protoreflect.EnumDescriptor { return file_operations_proto_enumTypes[1].Descriptor() } func (UserCommitFilesActionHeader_ActionType) Type() protoreflect.EnumType { return &file_operations_proto_enumTypes[1] } func (x UserCommitFilesActionHeader_ActionType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use UserCommitFilesActionHeader_ActionType.Descriptor instead. func (UserCommitFilesActionHeader_ActionType) EnumDescriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{29, 0} } // UserCreateBranchRequest is a request for the UserCreateBranch RPC. type UserCreateBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the branch should be created. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // branch_name is the name of the branch to create. BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // start_point is the Git revision to start the branch at. See the gitrevisions(1) // man pages for supported syntax. StartPoint []byte `protobuf:"bytes,4,opt,name=start_point,json=startPoint,proto3" json:"start_point,omitempty"` } func (x *UserCreateBranchRequest) Reset() { *x = UserCreateBranchRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCreateBranchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCreateBranchRequest) ProtoMessage() {} func (x *UserCreateBranchRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCreateBranchRequest.ProtoReflect.Descriptor instead. func (*UserCreateBranchRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{0} } func (x *UserCreateBranchRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserCreateBranchRequest) GetBranchName() []byte { if x != nil { return x.BranchName } return nil } func (x *UserCreateBranchRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserCreateBranchRequest) GetStartPoint() []byte { if x != nil { return x.StartPoint } return nil } // UserCreateBranchResponse is a response for the UserCreateBranch RPC. type UserCreateBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch is the branch that was created. Branch *Branch `protobuf:"bytes,1,opt,name=branch,proto3" json:"branch,omitempty"` } func (x *UserCreateBranchResponse) Reset() { *x = UserCreateBranchResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCreateBranchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCreateBranchResponse) ProtoMessage() {} func (x *UserCreateBranchResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCreateBranchResponse.ProtoReflect.Descriptor instead. func (*UserCreateBranchResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{1} } func (x *UserCreateBranchResponse) GetBranch() *Branch { if x != nil { return x.Branch } return nil } // UserCreateBranchError is an error returned by the UserCreateBranch RPC in some specific well // defined error cases. type UserCreateBranchError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserCreateBranchError_CustomHook Error isUserCreateBranchError_Error `protobuf_oneof:"error"` } func (x *UserCreateBranchError) Reset() { *x = UserCreateBranchError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCreateBranchError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCreateBranchError) ProtoMessage() {} func (x *UserCreateBranchError) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCreateBranchError.ProtoReflect.Descriptor instead. func (*UserCreateBranchError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{2} } func (m *UserCreateBranchError) GetError() isUserCreateBranchError_Error { if m != nil { return m.Error } return nil } func (x *UserCreateBranchError) GetCustomHook() *CustomHookError { if x, ok := x.GetError().(*UserCreateBranchError_CustomHook); ok { return x.CustomHook } return nil } type isUserCreateBranchError_Error interface { isUserCreateBranchError_Error() } type UserCreateBranchError_CustomHook struct { // custom_hookError is set if any custom hook which has running as part of // this RPC call has returned a non-zero exit code. CustomHook *CustomHookError `protobuf:"bytes,1,opt,name=custom_hook,json=customHook,proto3,oneof"` } func (*UserCreateBranchError_CustomHook) isUserCreateBranchError_Error() {} // UserUpdateBranchRequest is a request for the UserUpdateBranch RPC. type UserUpdateBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository to update the branch in. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // branch_name is the name of the branch to update. BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // newrev is the Git revision which the branch will point to. Newrev []byte `protobuf:"bytes,4,opt,name=newrev,proto3" json:"newrev,omitempty"` // oldrev is the Git revision which the branch currently points to. Oldrev []byte `protobuf:"bytes,5,opt,name=oldrev,proto3" json:"oldrev,omitempty"` } func (x *UserUpdateBranchRequest) Reset() { *x = UserUpdateBranchRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserUpdateBranchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserUpdateBranchRequest) ProtoMessage() {} func (x *UserUpdateBranchRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserUpdateBranchRequest.ProtoReflect.Descriptor instead. func (*UserUpdateBranchRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{3} } func (x *UserUpdateBranchRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserUpdateBranchRequest) GetBranchName() []byte { if x != nil { return x.BranchName } return nil } func (x *UserUpdateBranchRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserUpdateBranchRequest) GetNewrev() []byte { if x != nil { return x.Newrev } return nil } func (x *UserUpdateBranchRequest) GetOldrev() []byte { if x != nil { return x.Oldrev } return nil } // UserUpdateBranchResponse is a response for the UserUpdateBranch RPC. type UserUpdateBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // pre_receive_error indicates an error that occurred while executing custom hooks. PreReceiveError string `protobuf:"bytes,1,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } func (x *UserUpdateBranchResponse) Reset() { *x = UserUpdateBranchResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserUpdateBranchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserUpdateBranchResponse) ProtoMessage() {} func (x *UserUpdateBranchResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserUpdateBranchResponse.ProtoReflect.Descriptor instead. func (*UserUpdateBranchResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{4} } func (x *UserUpdateBranchResponse) GetPreReceiveError() string { if x != nil { return x.PreReceiveError } return "" } // UserDeleteBranchRequest is a request for the UserDeleteBranch RPC. type UserDeleteBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository to delete the branch in. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // branch_name is the name of the branch that shall be deleted. This is expected to be the branch // name only, e.g. in case you want to delete `refs/heads/main` the request needs to only contain // `main` as the branch name. BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. // // If unset, the target branch will be deleted regardless of its current // state. If set, it must either contain a valid, full object ID. Otherwise, this // RPC will return an error. ExpectedOldOid string `protobuf:"bytes,4,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserDeleteBranchRequest) Reset() { *x = UserDeleteBranchRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserDeleteBranchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserDeleteBranchRequest) ProtoMessage() {} func (x *UserDeleteBranchRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserDeleteBranchRequest.ProtoReflect.Descriptor instead. func (*UserDeleteBranchRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{5} } func (x *UserDeleteBranchRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserDeleteBranchRequest) GetBranchName() []byte { if x != nil { return x.BranchName } return nil } func (x *UserDeleteBranchRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserDeleteBranchRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserDeleteBranchResponse is a response for the UserDeleteBranch RPC. type UserDeleteBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UserDeleteBranchResponse) Reset() { *x = UserDeleteBranchResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserDeleteBranchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserDeleteBranchResponse) ProtoMessage() {} func (x *UserDeleteBranchResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserDeleteBranchResponse.ProtoReflect.Descriptor instead. func (*UserDeleteBranchResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{6} } // UserDeleteBranchError is an error returned by the UserDeleteBranch RPC in some specific well // defined error cases. type UserDeleteBranchError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserDeleteBranchError_AccessCheck // *UserDeleteBranchError_ReferenceUpdate // *UserDeleteBranchError_CustomHook Error isUserDeleteBranchError_Error `protobuf_oneof:"error"` } func (x *UserDeleteBranchError) Reset() { *x = UserDeleteBranchError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserDeleteBranchError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserDeleteBranchError) ProtoMessage() {} func (x *UserDeleteBranchError) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserDeleteBranchError.ProtoReflect.Descriptor instead. func (*UserDeleteBranchError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{7} } func (m *UserDeleteBranchError) GetError() isUserDeleteBranchError_Error { if m != nil { return m.Error } return nil } func (x *UserDeleteBranchError) GetAccessCheck() *AccessCheckError { if x, ok := x.GetError().(*UserDeleteBranchError_AccessCheck); ok { return x.AccessCheck } return nil } func (x *UserDeleteBranchError) GetReferenceUpdate() *ReferenceUpdateError { if x, ok := x.GetError().(*UserDeleteBranchError_ReferenceUpdate); ok { return x.ReferenceUpdate } return nil } func (x *UserDeleteBranchError) GetCustomHook() *CustomHookError { if x, ok := x.GetError().(*UserDeleteBranchError_CustomHook); ok { return x.CustomHook } return nil } type isUserDeleteBranchError_Error interface { isUserDeleteBranchError_Error() } type UserDeleteBranchError_AccessCheck struct { // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } type UserDeleteBranchError_ReferenceUpdate struct { // reference_updateError is set if the RPC failed because updating the // reference to the new object ID has failed. ReferenceUpdate *ReferenceUpdateError `protobuf:"bytes,2,opt,name=reference_update,json=referenceUpdate,proto3,oneof"` } type UserDeleteBranchError_CustomHook struct { // custom_hook is set if any custom hook which has running as part of this RPC call has returned // a non-zero exit code. CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"` } func (*UserDeleteBranchError_AccessCheck) isUserDeleteBranchError_Error() {} func (*UserDeleteBranchError_ReferenceUpdate) isUserDeleteBranchError_Error() {} func (*UserDeleteBranchError_CustomHook) isUserDeleteBranchError_Error() {} // UserDeleteTagRequest is a request for the UserDeleteTag RPC. type UserDeleteTagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository from which the tag should be deleted. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // tag_name is the name of the tag to delete. TagName []byte `protobuf:"bytes,2,opt,name=tag_name,json=tagName,proto3" json:"tag_name,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // expected_old_oid is the object ID which tag is expected to point to. // This is used as a safety guard to avoid races when tag has been // updated meanwhile to point to a different object ID. // // If unset, the target tag will be deleted regardless of its current // state. If set, it must either contain a valid, full object ID. Otherwise, // this RPC will return an error. ExpectedOldOid string `protobuf:"bytes,4,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserDeleteTagRequest) Reset() { *x = UserDeleteTagRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserDeleteTagRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserDeleteTagRequest) ProtoMessage() {} func (x *UserDeleteTagRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserDeleteTagRequest.ProtoReflect.Descriptor instead. func (*UserDeleteTagRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{8} } func (x *UserDeleteTagRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserDeleteTagRequest) GetTagName() []byte { if x != nil { return x.TagName } return nil } func (x *UserDeleteTagRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserDeleteTagRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserDeleteTagResponse is a response for the UserDeleteTag RPC. type UserDeleteTagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // pre_receive_error indicates an error that occurred while executing custom hooks. PreReceiveError string `protobuf:"bytes,1,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } func (x *UserDeleteTagResponse) Reset() { *x = UserDeleteTagResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserDeleteTagResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserDeleteTagResponse) ProtoMessage() {} func (x *UserDeleteTagResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserDeleteTagResponse.ProtoReflect.Descriptor instead. func (*UserDeleteTagResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{9} } func (x *UserDeleteTagResponse) GetPreReceiveError() string { if x != nil { return x.PreReceiveError } return "" } // UserCreateTagRequest is a request for the UserCreateTag RPC. type UserCreateTagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the tag shall be created. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // tag_name is the name of the tag that shall be created. Note that this should be set to the name // only: if you want to create a tag `refs/heads/v1.0`, you need to pass `v1.0` as TagName. TagName []byte `protobuf:"bytes,2,opt,name=tag_name,json=tagName,proto3" json:"tag_name,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // target_revision is the revision that the newly created tag should be pointing to. Note that if // the revision points to a tag, that tag will be peeled to the commit it is pointing to. If the // target_revision does not point to a commit then the RPC will return an error. TargetRevision []byte `protobuf:"bytes,4,opt,name=target_revision,json=targetRevision,proto3" json:"target_revision,omitempty"` // message is the message of the tag. If it is empty, a lightweight tag is created. Otherwise, an // annotated tag is created. Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // timestamp is the optional timestamp to use for the created tag tags. If it's not set, the // current time will be used. It's only used if an annotated tag is being created. Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (x *UserCreateTagRequest) Reset() { *x = UserCreateTagRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCreateTagRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCreateTagRequest) ProtoMessage() {} func (x *UserCreateTagRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCreateTagRequest.ProtoReflect.Descriptor instead. func (*UserCreateTagRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{10} } func (x *UserCreateTagRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserCreateTagRequest) GetTagName() []byte { if x != nil { return x.TagName } return nil } func (x *UserCreateTagRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserCreateTagRequest) GetTargetRevision() []byte { if x != nil { return x.TargetRevision } return nil } func (x *UserCreateTagRequest) GetMessage() []byte { if x != nil { return x.Message } return nil } func (x *UserCreateTagRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } // UserCreateTagResponse is a response for the UserCreateTag RPC. type UserCreateTagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // tag is the newly created tag. Tag *Tag `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` } func (x *UserCreateTagResponse) Reset() { *x = UserCreateTagResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCreateTagResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCreateTagResponse) ProtoMessage() {} func (x *UserCreateTagResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCreateTagResponse.ProtoReflect.Descriptor instead. func (*UserCreateTagResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{11} } func (x *UserCreateTagResponse) GetTag() *Tag { if x != nil { return x.Tag } return nil } // UserCreateTagError includes error descriptions which may be set as error details in case // userCreateTag fails. type UserCreateTagError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserCreateTagError_AccessCheck // *UserCreateTagError_ReferenceUpdate // *UserCreateTagError_CustomHook // *UserCreateTagError_ReferenceExists Error isUserCreateTagError_Error `protobuf_oneof:"error"` } func (x *UserCreateTagError) Reset() { *x = UserCreateTagError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCreateTagError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCreateTagError) ProtoMessage() {} func (x *UserCreateTagError) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCreateTagError.ProtoReflect.Descriptor instead. func (*UserCreateTagError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{12} } func (m *UserCreateTagError) GetError() isUserCreateTagError_Error { if m != nil { return m.Error } return nil } func (x *UserCreateTagError) GetAccessCheck() *AccessCheckError { if x, ok := x.GetError().(*UserCreateTagError_AccessCheck); ok { return x.AccessCheck } return nil } func (x *UserCreateTagError) GetReferenceUpdate() *ReferenceUpdateError { if x, ok := x.GetError().(*UserCreateTagError_ReferenceUpdate); ok { return x.ReferenceUpdate } return nil } func (x *UserCreateTagError) GetCustomHook() *CustomHookError { if x, ok := x.GetError().(*UserCreateTagError_CustomHook); ok { return x.CustomHook } return nil } func (x *UserCreateTagError) GetReferenceExists() *ReferenceExistsError { if x, ok := x.GetError().(*UserCreateTagError_ReferenceExists); ok { return x.ReferenceExists } return nil } type isUserCreateTagError_Error interface { isUserCreateTagError_Error() } type UserCreateTagError_AccessCheck struct { // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } type UserCreateTagError_ReferenceUpdate struct { // reference_updateError is set if the RPC failed because updating the // reference to the new object ID has failed. ReferenceUpdate *ReferenceUpdateError `protobuf:"bytes,2,opt,name=reference_update,json=referenceUpdate,proto3,oneof"` } type UserCreateTagError_CustomHook struct { // custom_hook is set if any custom hook which has running as part of this RPC call has returned // a non-zero exit code. CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"` } type UserCreateTagError_ReferenceExists struct { // reference_existsError is set if the tag reference exists already. ReferenceExists *ReferenceExistsError `protobuf:"bytes,4,opt,name=reference_exists,json=referenceExists,proto3,oneof"` } func (*UserCreateTagError_AccessCheck) isUserCreateTagError_Error() {} func (*UserCreateTagError_ReferenceUpdate) isUserCreateTagError_Error() {} func (*UserCreateTagError_CustomHook) isUserCreateTagError_Error() {} func (*UserCreateTagError_ReferenceExists) isUserCreateTagError_Error() {} // UserMergeBranchRequest is a request for the UserMergeBranch RPC. // All mandatory parameters except for `apply` should be set in the first // message. type UserMergeBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository to compute the merge for. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit_id is the object ID (hash) of the object that shall be merged into // the target branch. CommitId string `protobuf:"bytes,3,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` // branch is the branch into which the given commit shall be merged and whose // reference is going to be updated. Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` // message is the message to use for the merge commit. Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // timestamp is the optional timestamp to use for the merge commit. If it's // not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,8,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` // apply is used in the second message. Setting it to true will proceed with // the merge. Setting it to false will abort the merge. Apply bool `protobuf:"varint,6,opt,name=apply,proto3" json:"apply,omitempty"` } func (x *UserMergeBranchRequest) Reset() { *x = UserMergeBranchRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserMergeBranchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserMergeBranchRequest) ProtoMessage() {} func (x *UserMergeBranchRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserMergeBranchRequest.ProtoReflect.Descriptor instead. func (*UserMergeBranchRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{13} } func (x *UserMergeBranchRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserMergeBranchRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserMergeBranchRequest) GetCommitId() string { if x != nil { return x.CommitId } return "" } func (x *UserMergeBranchRequest) GetBranch() []byte { if x != nil { return x.Branch } return nil } func (x *UserMergeBranchRequest) GetMessage() []byte { if x != nil { return x.Message } return nil } func (x *UserMergeBranchRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserMergeBranchRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } func (x *UserMergeBranchRequest) GetApply() bool { if x != nil { return x.Apply } return false } // UserMergeBranchResponse is a response for the UserMergeBranch RPC. type UserMergeBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // commit_id is the merge commit the branch will be updated to. This is sent // as the response to the first request. CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` // branch_update contains the commit ID of the merge commit if the merge has // been applied to the branch. This is sent as the response to the second // request. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,3,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` } func (x *UserMergeBranchResponse) Reset() { *x = UserMergeBranchResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserMergeBranchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserMergeBranchResponse) ProtoMessage() {} func (x *UserMergeBranchResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserMergeBranchResponse.ProtoReflect.Descriptor instead. func (*UserMergeBranchResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{14} } func (x *UserMergeBranchResponse) GetCommitId() string { if x != nil { return x.CommitId } return "" } func (x *UserMergeBranchResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } // UserMergeBranchError includes error descriptions which may be set as error // details in case UserMergeBranch fails. type UserMergeBranchError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserMergeBranchError_AccessCheck // *UserMergeBranchError_ReferenceUpdate // *UserMergeBranchError_CustomHook // *UserMergeBranchError_MergeConflict Error isUserMergeBranchError_Error `protobuf_oneof:"error"` } func (x *UserMergeBranchError) Reset() { *x = UserMergeBranchError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserMergeBranchError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserMergeBranchError) ProtoMessage() {} func (x *UserMergeBranchError) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserMergeBranchError.ProtoReflect.Descriptor instead. func (*UserMergeBranchError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{15} } func (m *UserMergeBranchError) GetError() isUserMergeBranchError_Error { if m != nil { return m.Error } return nil } func (x *UserMergeBranchError) GetAccessCheck() *AccessCheckError { if x, ok := x.GetError().(*UserMergeBranchError_AccessCheck); ok { return x.AccessCheck } return nil } func (x *UserMergeBranchError) GetReferenceUpdate() *ReferenceUpdateError { if x, ok := x.GetError().(*UserMergeBranchError_ReferenceUpdate); ok { return x.ReferenceUpdate } return nil } func (x *UserMergeBranchError) GetCustomHook() *CustomHookError { if x, ok := x.GetError().(*UserMergeBranchError_CustomHook); ok { return x.CustomHook } return nil } func (x *UserMergeBranchError) GetMergeConflict() *MergeConflictError { if x, ok := x.GetError().(*UserMergeBranchError_MergeConflict); ok { return x.MergeConflict } return nil } type isUserMergeBranchError_Error interface { isUserMergeBranchError_Error() } type UserMergeBranchError_AccessCheck struct { // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } type UserMergeBranchError_ReferenceUpdate struct { // reference_updateError is set if the RPC failed because updating the // reference to the new object ID has failed. ReferenceUpdate *ReferenceUpdateError `protobuf:"bytes,2,opt,name=reference_update,json=referenceUpdate,proto3,oneof"` } type UserMergeBranchError_CustomHook struct { // custom_hook is set if any custom hook which has running as part of this RPC call has returned // a non-zero exit code. CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"` } type UserMergeBranchError_MergeConflict struct { // merge_conflictError is set if merging the revisions has resulted in conflicting files. MergeConflict *MergeConflictError `protobuf:"bytes,4,opt,name=merge_conflict,json=mergeConflict,proto3,oneof"` } func (*UserMergeBranchError_AccessCheck) isUserMergeBranchError_Error() {} func (*UserMergeBranchError_ReferenceUpdate) isUserMergeBranchError_Error() {} func (*UserMergeBranchError_CustomHook) isUserMergeBranchError_Error() {} func (*UserMergeBranchError_MergeConflict) isUserMergeBranchError_Error() {} // UserMergeToRefRequest is a request for the UserMergeToRef RPC. type UserMergeToRefRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the merge shall be computed. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // source_sha is the object ID of the second parent of the computed merge. SourceSha string `protobuf:"bytes,3,opt,name=source_sha,json=sourceSha,proto3" json:"source_sha,omitempty"` // branch contains the name of the branch which should be used as the first // parent of the computed merge. It is deprecated in favor of // `first_parent_ref` and will be ignored in case it is set. // // Deprecated: Marked as deprecated in operations.proto. Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` // target_ref contains the fully qualified reference which should be updated // with the computed merge commit. TargetRef []byte `protobuf:"bytes,5,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"` // message is the message to use for the merge commit. Message []byte `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` // first_parent_ref is the name of the reference which should be used as the // first parent of the computed merge. Overrides `branch`. FirstParentRef []byte `protobuf:"bytes,7,opt,name=first_parent_ref,json=firstParentRef,proto3" json:"first_parent_ref,omitempty"` // allow_conflicts if set, used to allow the merge to go ahead when there were // conflicts. The code would simply write the conflict markers in the code. // This has since been deprecated in Rails and is no longer needed. // // Deprecated: Marked as deprecated in operations.proto. AllowConflicts bool `protobuf:"varint,8,opt,name=allow_conflicts,json=allowConflicts,proto3" json:"allow_conflicts,omitempty"` // timestamp is the optional timestamp to use for the merge commit. If it's // not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID that is expected to be at target_ref. It // is used as an optimistic lock on concurrent updates of target_ref: If // target_ref no longer points to this ID, then the update is rejected. // // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserMergeToRefRequest) Reset() { *x = UserMergeToRefRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserMergeToRefRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserMergeToRefRequest) ProtoMessage() {} func (x *UserMergeToRefRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserMergeToRefRequest.ProtoReflect.Descriptor instead. func (*UserMergeToRefRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{16} } func (x *UserMergeToRefRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserMergeToRefRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserMergeToRefRequest) GetSourceSha() string { if x != nil { return x.SourceSha } return "" } // Deprecated: Marked as deprecated in operations.proto. func (x *UserMergeToRefRequest) GetBranch() []byte { if x != nil { return x.Branch } return nil } func (x *UserMergeToRefRequest) GetTargetRef() []byte { if x != nil { return x.TargetRef } return nil } func (x *UserMergeToRefRequest) GetMessage() []byte { if x != nil { return x.Message } return nil } func (x *UserMergeToRefRequest) GetFirstParentRef() []byte { if x != nil { return x.FirstParentRef } return nil } // Deprecated: Marked as deprecated in operations.proto. func (x *UserMergeToRefRequest) GetAllowConflicts() bool { if x != nil { return x.AllowConflicts } return false } func (x *UserMergeToRefRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserMergeToRefRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserMergeToRefResponse is a response for the UserMergeToRef RPC. type UserMergeToRefResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // commit_id is the object ID of the computed merge commit. CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` } func (x *UserMergeToRefResponse) Reset() { *x = UserMergeToRefResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserMergeToRefResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserMergeToRefResponse) ProtoMessage() {} func (x *UserMergeToRefResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserMergeToRefResponse.ProtoReflect.Descriptor instead. func (*UserMergeToRefResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{17} } func (x *UserMergeToRefResponse) GetCommitId() string { if x != nil { return x.CommitId } return "" } // UserRebaseToRefRequest contains the request parameters for the UserRebaseToRef RPC type UserRebaseToRefRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the rebase shall be computed. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // source_sha is the object ID of the commit to be rebased. SourceSha string `protobuf:"bytes,3,opt,name=source_sha,json=sourceSha,proto3" json:"source_sha,omitempty"` // target_ref is the fully qualified reference that will be overwritten or created // with the rebased commits. TargetRef []byte `protobuf:"bytes,5,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"` // first_parent_ref is the name of the reference on top of which SourceSha // should be rebased. FirstParentRef []byte `protobuf:"bytes,7,opt,name=first_parent_ref,json=firstParentRef,proto3" json:"first_parent_ref,omitempty"` // timestamp is the optional timestamp to use for the rebased commits as // committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID to which TargetRef is expected to point. // This is used as a safety guard to avoid races when TargetRef has been // updated meanwhile to point to a different object ID. // // If unset, TargetRef will be overwritten regardless of its current state. // If set, it must either contain a valid, full object ID or the zero object // ID in case the ref should be created. Otherwise, this RPC will return an // error. ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserRebaseToRefRequest) Reset() { *x = UserRebaseToRefRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRebaseToRefRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRebaseToRefRequest) ProtoMessage() {} func (x *UserRebaseToRefRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserRebaseToRefRequest.ProtoReflect.Descriptor instead. func (*UserRebaseToRefRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{18} } func (x *UserRebaseToRefRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserRebaseToRefRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserRebaseToRefRequest) GetSourceSha() string { if x != nil { return x.SourceSha } return "" } func (x *UserRebaseToRefRequest) GetTargetRef() []byte { if x != nil { return x.TargetRef } return nil } func (x *UserRebaseToRefRequest) GetFirstParentRef() []byte { if x != nil { return x.FirstParentRef } return nil } func (x *UserRebaseToRefRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserRebaseToRefRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserRebaseToRefResponse contains the response data for the UserRebaseToRef RPC type UserRebaseToRefResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // commit_id is the object ID of the HEAD of the rebased ref. CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` } func (x *UserRebaseToRefResponse) Reset() { *x = UserRebaseToRefResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRebaseToRefResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRebaseToRefResponse) ProtoMessage() {} func (x *UserRebaseToRefResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserRebaseToRefResponse.ProtoReflect.Descriptor instead. func (*UserRebaseToRefResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{19} } func (x *UserRebaseToRefResponse) GetCommitId() string { if x != nil { return x.CommitId } return "" } // OperationBranchUpdate contains the details of a branch update. type OperationBranchUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // commit_id is set to the OID of the created commit if a branch was created or updated. CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` // repo_created indicates whether the branch created was the first one in the repository. // Used for cache invalidation in GitLab. RepoCreated bool `protobuf:"varint,2,opt,name=repo_created,json=repoCreated,proto3" json:"repo_created,omitempty"` // branch_created indicates whether the branch already existed in the repository // and was updated or whether it was created. Used for cache invalidation in GitLab. BranchCreated bool `protobuf:"varint,3,opt,name=branch_created,json=branchCreated,proto3" json:"branch_created,omitempty"` } func (x *OperationBranchUpdate) Reset() { *x = OperationBranchUpdate{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OperationBranchUpdate) String() string { return protoimpl.X.MessageStringOf(x) } func (*OperationBranchUpdate) ProtoMessage() {} func (x *OperationBranchUpdate) ProtoReflect() protoreflect.Message { mi := &file_operations_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 OperationBranchUpdate.ProtoReflect.Descriptor instead. func (*OperationBranchUpdate) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{20} } func (x *OperationBranchUpdate) GetCommitId() string { if x != nil { return x.CommitId } return "" } func (x *OperationBranchUpdate) GetRepoCreated() bool { if x != nil { return x.RepoCreated } return false } func (x *OperationBranchUpdate) GetBranchCreated() bool { if x != nil { return x.BranchCreated } return false } // UserFFBranchRequest is a request for the UserFFBranch RPC. type UserFFBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository for which to perform the fast-forward merge. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit_id is the commit ID to fast-forward the branch to. CommitId string `protobuf:"bytes,3,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` // branch is the name of the branch to fast-forward. This must be the // branch name only and not a fully qualified reference, e.g. "master" // instead of "refs/heads/master". Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,5,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserFFBranchRequest) Reset() { *x = UserFFBranchRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserFFBranchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserFFBranchRequest) ProtoMessage() {} func (x *UserFFBranchRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserFFBranchRequest.ProtoReflect.Descriptor instead. func (*UserFFBranchRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{21} } func (x *UserFFBranchRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserFFBranchRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserFFBranchRequest) GetCommitId() string { if x != nil { return x.CommitId } return "" } func (x *UserFFBranchRequest) GetBranch() []byte { if x != nil { return x.Branch } return nil } func (x *UserFFBranchRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserFFBranchResponse is a response for the UserFFBranch RPC. type UserFFBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch_update contains details of the fast-forwarded branch. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` // pre_receive_error is set in the case of an `Internal` error and contains // details of the failed custom hook. PreReceiveError string `protobuf:"bytes,2,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } func (x *UserFFBranchResponse) Reset() { *x = UserFFBranchResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserFFBranchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserFFBranchResponse) ProtoMessage() {} func (x *UserFFBranchResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserFFBranchResponse.ProtoReflect.Descriptor instead. func (*UserFFBranchResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{22} } func (x *UserFFBranchResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } func (x *UserFFBranchResponse) GetPreReceiveError() string { if x != nil { return x.PreReceiveError } return "" } // UserCherryPickRequest is a request for the UserCherryPick RPC. type UserCherryPickRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository into which the cherry-pick shall be // performed. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit is the commit to cherry-pick onto the given branch. Commit *GitCommit `protobuf:"bytes,3,opt,name=commit,proto3" json:"commit,omitempty"` // branch_name is the name of the branch onto which the cherry-pick shall be // executed. BranchName []byte `protobuf:"bytes,4,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // message is the message to use for the cherry-picked commit. Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // start_branch_name is is used in case the branch_name branch does not // exist. In that case, it will be created from the start_branch_name. StartBranchName []byte `protobuf:"bytes,6,opt,name=start_branch_name,json=startBranchName,proto3" json:"start_branch_name,omitempty"` // start_repository is used in case the branch_name branch does not exist. In // that case, it will be created from start_branch_name in the // start_repository. StartRepository *Repository `protobuf:"bytes,7,opt,name=start_repository,json=startRepository,proto3" json:"start_repository,omitempty"` // dry_run will compute the cherry-pick, but not update the target branch. DryRun bool `protobuf:"varint,8,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` // timestamp is the optional timestamp to use for the created cherry-picked // commit's committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. Only applicable when // branch_name is set. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserCherryPickRequest) Reset() { *x = UserCherryPickRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCherryPickRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCherryPickRequest) ProtoMessage() {} func (x *UserCherryPickRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCherryPickRequest.ProtoReflect.Descriptor instead. func (*UserCherryPickRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{23} } func (x *UserCherryPickRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserCherryPickRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserCherryPickRequest) GetCommit() *GitCommit { if x != nil { return x.Commit } return nil } func (x *UserCherryPickRequest) GetBranchName() []byte { if x != nil { return x.BranchName } return nil } func (x *UserCherryPickRequest) GetMessage() []byte { if x != nil { return x.Message } return nil } func (x *UserCherryPickRequest) GetStartBranchName() []byte { if x != nil { return x.StartBranchName } return nil } func (x *UserCherryPickRequest) GetStartRepository() *Repository { if x != nil { return x.StartRepository } return nil } func (x *UserCherryPickRequest) GetDryRun() bool { if x != nil { return x.DryRun } return false } func (x *UserCherryPickRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserCherryPickRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserCherryPickResponse is a response for the UserCherryPick RPC. type UserCherryPickResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch_update represents details about the updated branch. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` } func (x *UserCherryPickResponse) Reset() { *x = UserCherryPickResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCherryPickResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCherryPickResponse) ProtoMessage() {} func (x *UserCherryPickResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[24] 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 UserCherryPickResponse.ProtoReflect.Descriptor instead. func (*UserCherryPickResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{24} } func (x *UserCherryPickResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } // UserCherryPickError is an error returned by the UserCherryPick RPC. type UserCherryPickError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserCherryPickError_CherryPickConflict // *UserCherryPickError_TargetBranchDiverged // *UserCherryPickError_ChangesAlreadyApplied // *UserCherryPickError_AccessCheck Error isUserCherryPickError_Error `protobuf_oneof:"error"` } func (x *UserCherryPickError) Reset() { *x = UserCherryPickError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCherryPickError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCherryPickError) ProtoMessage() {} func (x *UserCherryPickError) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserCherryPickError.ProtoReflect.Descriptor instead. func (*UserCherryPickError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{25} } func (m *UserCherryPickError) GetError() isUserCherryPickError_Error { if m != nil { return m.Error } return nil } func (x *UserCherryPickError) GetCherryPickConflict() *MergeConflictError { if x, ok := x.GetError().(*UserCherryPickError_CherryPickConflict); ok { return x.CherryPickConflict } return nil } func (x *UserCherryPickError) GetTargetBranchDiverged() *NotAncestorError { if x, ok := x.GetError().(*UserCherryPickError_TargetBranchDiverged); ok { return x.TargetBranchDiverged } return nil } func (x *UserCherryPickError) GetChangesAlreadyApplied() *ChangesAlreadyAppliedError { if x, ok := x.GetError().(*UserCherryPickError_ChangesAlreadyApplied); ok { return x.ChangesAlreadyApplied } return nil } func (x *UserCherryPickError) GetAccessCheck() *AccessCheckError { if x, ok := x.GetError().(*UserCherryPickError_AccessCheck); ok { return x.AccessCheck } return nil } type isUserCherryPickError_Error interface { isUserCherryPickError_Error() } type UserCherryPickError_CherryPickConflict struct { // cherry_pick_conflict is returned if there is a conflict when applying the cherry // pick. CherryPickConflict *MergeConflictError `protobuf:"bytes,1,opt,name=cherry_pick_conflict,json=cherryPickConflict,proto3,oneof"` } type UserCherryPickError_TargetBranchDiverged struct { // target_branch_diverged is returned whenever the tip commit of the branch we're // about to apply the new commit on is not a direct ancestor of the newly created // cherry-picked commit. This may happen either due to a race where the reference // is modified while we compute the cherry-picked commit, or alternatively if the // commit fetched from the start branch of the remote repository is not an ancestor // of of the local target branch. TargetBranchDiverged *NotAncestorError `protobuf:"bytes,2,opt,name=target_branch_diverged,json=targetBranchDiverged,proto3,oneof"` } type UserCherryPickError_ChangesAlreadyApplied struct { // changes_already_applied is returned if the result after applying the cherry pick is empty. ChangesAlreadyApplied *ChangesAlreadyAppliedError `protobuf:"bytes,3,opt,name=changes_already_applied,json=changesAlreadyApplied,proto3,oneof"` } type UserCherryPickError_AccessCheck struct { // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,4,opt,name=access_check,json=accessCheck,proto3,oneof"` } func (*UserCherryPickError_CherryPickConflict) isUserCherryPickError_Error() {} func (*UserCherryPickError_TargetBranchDiverged) isUserCherryPickError_Error() {} func (*UserCherryPickError_ChangesAlreadyApplied) isUserCherryPickError_Error() {} func (*UserCherryPickError_AccessCheck) isUserCherryPickError_Error() {} // UserRevertRequest is a request for the UserRevert RPC. type UserRevertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the revert shall be applied. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit is the commit to revert. Only the `id` field is required. Commit *GitCommit `protobuf:"bytes,3,opt,name=commit,proto3" json:"commit,omitempty"` // branch_name is the name of the branch onto which the reverted commit shall // be committed. BranchName []byte `protobuf:"bytes,4,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // message is the message to use for the revert commit. Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // start_branch_name is is used in case the branch_name branch does not // exist. In that case, it will be created from the start_branch_name. StartBranchName []byte `protobuf:"bytes,6,opt,name=start_branch_name,json=startBranchName,proto3" json:"start_branch_name,omitempty"` // start_repository is used in case the branch_name branch does not exist. In // that case, it will be created from start_branch_name in the // start_repository. StartRepository *Repository `protobuf:"bytes,7,opt,name=start_repository,json=startRepository,proto3" json:"start_repository,omitempty"` // dry_run will compute the revert, but not update the target branch. DryRun bool `protobuf:"varint,8,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` // timestamp is the optional timestamp to use for the created cherry-picked // commit's committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. Only applicable when // branch_name is set. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserRevertRequest) Reset() { *x = UserRevertRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRevertRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRevertRequest) ProtoMessage() {} func (x *UserRevertRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserRevertRequest.ProtoReflect.Descriptor instead. func (*UserRevertRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{26} } func (x *UserRevertRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserRevertRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserRevertRequest) GetCommit() *GitCommit { if x != nil { return x.Commit } return nil } func (x *UserRevertRequest) GetBranchName() []byte { if x != nil { return x.BranchName } return nil } func (x *UserRevertRequest) GetMessage() []byte { if x != nil { return x.Message } return nil } func (x *UserRevertRequest) GetStartBranchName() []byte { if x != nil { return x.StartBranchName } return nil } func (x *UserRevertRequest) GetStartRepository() *Repository { if x != nil { return x.StartRepository } return nil } func (x *UserRevertRequest) GetDryRun() bool { if x != nil { return x.DryRun } return false } func (x *UserRevertRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserRevertRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserRevertResponse is a response for the UserRevert RPC. type UserRevertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch_update represents details about the updated branch. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` // create_tree_error contains the error message if creation of the tree // failed. CreateTreeError string `protobuf:"bytes,2,opt,name=create_tree_error,json=createTreeError,proto3" json:"create_tree_error,omitempty"` // commit_error contains the error message if updating the reference failed. CommitError string `protobuf:"bytes,3,opt,name=commit_error,json=commitError,proto3" json:"commit_error,omitempty"` // pre_receive_error contains the error message if the pre-receive hook // failed. PreReceiveError string `protobuf:"bytes,4,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` // create_tree_error_code contains the error code if creation of the tree // failed. CreateTreeErrorCode UserRevertResponse_CreateTreeError `protobuf:"varint,5,opt,name=create_tree_error_code,json=createTreeErrorCode,proto3,enum=gitaly.UserRevertResponse_CreateTreeError" json:"create_tree_error_code,omitempty"` } func (x *UserRevertResponse) Reset() { *x = UserRevertResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRevertResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRevertResponse) ProtoMessage() {} func (x *UserRevertResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserRevertResponse.ProtoReflect.Descriptor instead. func (*UserRevertResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{27} } func (x *UserRevertResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } func (x *UserRevertResponse) GetCreateTreeError() string { if x != nil { return x.CreateTreeError } return "" } func (x *UserRevertResponse) GetCommitError() string { if x != nil { return x.CommitError } return "" } func (x *UserRevertResponse) GetPreReceiveError() string { if x != nil { return x.PreReceiveError } return "" } func (x *UserRevertResponse) GetCreateTreeErrorCode() UserRevertResponse_CreateTreeError { if x != nil { return x.CreateTreeErrorCode } return UserRevertResponse_NONE } // UserRevertError is an error returned by the UserRevert RPC. type UserRevertError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserRevertError_MergeConflict // *UserRevertError_ChangesAlreadyApplied // *UserRevertError_CustomHook // *UserRevertError_NotAncestor Error isUserRevertError_Error `protobuf_oneof:"error"` } func (x *UserRevertError) Reset() { *x = UserRevertError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRevertError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRevertError) ProtoMessage() {} func (x *UserRevertError) ProtoReflect() protoreflect.Message { mi := &file_operations_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 UserRevertError.ProtoReflect.Descriptor instead. func (*UserRevertError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{28} } func (m *UserRevertError) GetError() isUserRevertError_Error { if m != nil { return m.Error } return nil } func (x *UserRevertError) GetMergeConflict() *MergeConflictError { if x, ok := x.GetError().(*UserRevertError_MergeConflict); ok { return x.MergeConflict } return nil } func (x *UserRevertError) GetChangesAlreadyApplied() *ChangesAlreadyAppliedError { if x, ok := x.GetError().(*UserRevertError_ChangesAlreadyApplied); ok { return x.ChangesAlreadyApplied } return nil } func (x *UserRevertError) GetCustomHook() *CustomHookError { if x, ok := x.GetError().(*UserRevertError_CustomHook); ok { return x.CustomHook } return nil } func (x *UserRevertError) GetNotAncestor() *NotAncestorError { if x, ok := x.GetError().(*UserRevertError_NotAncestor); ok { return x.NotAncestor } return nil } type isUserRevertError_Error interface { isUserRevertError_Error() } type UserRevertError_MergeConflict struct { // merge_conflict is returned if there is a conflict when applying the revert. MergeConflict *MergeConflictError `protobuf:"bytes,1,opt,name=merge_conflict,json=mergeConflict,proto3,oneof"` } type UserRevertError_ChangesAlreadyApplied struct { // changes_already_applied is returned if the result after applying the revert is empty. ChangesAlreadyApplied *ChangesAlreadyAppliedError `protobuf:"bytes,2,opt,name=changes_already_applied,json=changesAlreadyApplied,proto3,oneof"` } type UserRevertError_CustomHook struct { // custom_hook contains the error message if the pre-receive hook failed. CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"` } type UserRevertError_NotAncestor struct { // not_ancestor is returned if the old tip of the target branch is not an ancestor of the new commit. NotAncestor *NotAncestorError `protobuf:"bytes,4,opt,name=not_ancestor,json=notAncestor,proto3,oneof"` } func (*UserRevertError_MergeConflict) isUserRevertError_Error() {} func (*UserRevertError_ChangesAlreadyApplied) isUserRevertError_Error() {} func (*UserRevertError_CustomHook) isUserRevertError_Error() {} func (*UserRevertError_NotAncestor) isUserRevertError_Error() {} // UserCommitFilesActionHeader contains the details of the action to be performed. type UserCommitFilesActionHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // action is the type of the action taken to build a commit. Not all fields are // used for all of the actions. Action UserCommitFilesActionHeader_ActionType `protobuf:"varint,1,opt,name=action,proto3,enum=gitaly.UserCommitFilesActionHeader_ActionType" json:"action,omitempty"` // file_path refers to the file or directory being modified. The meaning differs for each // action: // 1. CREATE: path of the file to create // 2. CREATE_DIR: path of the directory to create // 3. UPDATE: path of the file to update // 4. MOVE: the new path of the moved file // 5. DELETE: path of the file to delete // 6. CHMOD: path of the file to modify permissions for FilePath []byte `protobuf:"bytes,2,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` // previous_path is used in MOVE action to specify the path of the file to move. PreviousPath []byte `protobuf:"bytes,3,opt,name=previous_path,json=previousPath,proto3" json:"previous_path,omitempty"` // base64_content indicates the content of the file is base64 encoded. The encoding // must be the standard base64 encoding defined in RFC 4648. Only used for CREATE and // UPDATE actions. Base64Content bool `protobuf:"varint,4,opt,name=base64_content,json=base64Content,proto3" json:"base64_content,omitempty"` // execute_filemode determines whether the file is created with execute permissions. // The field is only used in CREATE and CHMOD actions. ExecuteFilemode bool `protobuf:"varint,5,opt,name=execute_filemode,json=executeFilemode,proto3" json:"execute_filemode,omitempty"` // infer_content should be set to true for move actions that change the file path, but not // its content. It should be set instead of populating the content field. Ignored for // other action types. InferContent bool `protobuf:"varint,6,opt,name=infer_content,json=inferContent,proto3" json:"infer_content,omitempty"` } func (x *UserCommitFilesActionHeader) Reset() { *x = UserCommitFilesActionHeader{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCommitFilesActionHeader) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCommitFilesActionHeader) ProtoMessage() {} func (x *UserCommitFilesActionHeader) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[29] 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 UserCommitFilesActionHeader.ProtoReflect.Descriptor instead. func (*UserCommitFilesActionHeader) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{29} } func (x *UserCommitFilesActionHeader) GetAction() UserCommitFilesActionHeader_ActionType { if x != nil { return x.Action } return UserCommitFilesActionHeader_CREATE } func (x *UserCommitFilesActionHeader) GetFilePath() []byte { if x != nil { return x.FilePath } return nil } func (x *UserCommitFilesActionHeader) GetPreviousPath() []byte { if x != nil { return x.PreviousPath } return nil } func (x *UserCommitFilesActionHeader) GetBase64Content() bool { if x != nil { return x.Base64Content } return false } func (x *UserCommitFilesActionHeader) GetExecuteFilemode() bool { if x != nil { return x.ExecuteFilemode } return false } func (x *UserCommitFilesActionHeader) GetInferContent() bool { if x != nil { return x.InferContent } return false } // UserCommitFilesAction is the request message used to stream in the actions to build a commit. type UserCommitFilesAction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to UserCommitFilesActionPayload: // // *UserCommitFilesAction_Header // *UserCommitFilesAction_Content UserCommitFilesActionPayload isUserCommitFilesAction_UserCommitFilesActionPayload `protobuf_oneof:"user_commit_files_action_payload"` } func (x *UserCommitFilesAction) Reset() { *x = UserCommitFilesAction{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCommitFilesAction) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCommitFilesAction) ProtoMessage() {} func (x *UserCommitFilesAction) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[30] 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 UserCommitFilesAction.ProtoReflect.Descriptor instead. func (*UserCommitFilesAction) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{30} } func (m *UserCommitFilesAction) GetUserCommitFilesActionPayload() isUserCommitFilesAction_UserCommitFilesActionPayload { if m != nil { return m.UserCommitFilesActionPayload } return nil } func (x *UserCommitFilesAction) GetHeader() *UserCommitFilesActionHeader { if x, ok := x.GetUserCommitFilesActionPayload().(*UserCommitFilesAction_Header); ok { return x.Header } return nil } func (x *UserCommitFilesAction) GetContent() []byte { if x, ok := x.GetUserCommitFilesActionPayload().(*UserCommitFilesAction_Content); ok { return x.Content } return nil } type isUserCommitFilesAction_UserCommitFilesActionPayload interface { isUserCommitFilesAction_UserCommitFilesActionPayload() } type UserCommitFilesAction_Header struct { // header contains the details of action being performed. Header must be sent before the // content if content is used by the action. Header *UserCommitFilesActionHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } type UserCommitFilesAction_Content struct { // content is the content of the file streamed in one or more messages. Only used with CREATE // and UPDATE actions. Content []byte `protobuf:"bytes,2,opt,name=content,proto3,oneof"` } func (*UserCommitFilesAction_Header) isUserCommitFilesAction_UserCommitFilesActionPayload() {} func (*UserCommitFilesAction_Content) isUserCommitFilesAction_UserCommitFilesActionPayload() {} // UserCommitFilesRequestHeader is the header of the UserCommitFiles that defines the commit details, // parent and other information related to the call. type UserCommitFilesRequestHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the target repository where to apply the commit. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // branch_name is the name of the branch to point to the new commit. If start_sha and start_branch_name // are not defined, the commit of branch_name is used as the parent commit. BranchName []byte `protobuf:"bytes,3,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` // commit_message is the message to use in the commit. CommitMessage []byte `protobuf:"bytes,4,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"` // commit_author_name is the commit author's name. If not provided, the user's name is // used instead. CommitAuthorName []byte `protobuf:"bytes,5,opt,name=commit_author_name,json=commitAuthorName,proto3" json:"commit_author_name,omitempty"` // commit_author_email is the commit author's email. If not provided, the user's email is // used instead. CommitAuthorEmail []byte `protobuf:"bytes,6,opt,name=commit_author_email,json=commitAuthorEmail,proto3" json:"commit_author_email,omitempty"` // start_branch_name specifies the branch whose commit to use as the parent commit. Takes priority // over branch_name. Optional. StartBranchName []byte `protobuf:"bytes,7,opt,name=start_branch_name,json=startBranchName,proto3" json:"start_branch_name,omitempty"` // start_repository specifies which contains the parent commit. If not specified, repository itself // is used to look up the parent commit. Optional. StartRepository *Repository `protobuf:"bytes,8,opt,name=start_repository,json=startRepository,proto3" json:"start_repository,omitempty"` // force determines whether to force update the target branch specified by branch_name to // point to the new commit. Force bool `protobuf:"varint,9,opt,name=force,proto3" json:"force,omitempty"` // start_sha specifies the SHA of the commit to use as the parent of new commit. Takes priority // over start_branch_name and branch_name. Optional. StartSha string `protobuf:"bytes,10,opt,name=start_sha,json=startSha,proto3" json:"start_sha,omitempty"` // timestamp is the optional timestamp to use for the commits as author and // committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. Only applicable when // branch_name is set. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,12,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserCommitFilesRequestHeader) Reset() { *x = UserCommitFilesRequestHeader{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCommitFilesRequestHeader) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCommitFilesRequestHeader) ProtoMessage() {} func (x *UserCommitFilesRequestHeader) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[31] 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 UserCommitFilesRequestHeader.ProtoReflect.Descriptor instead. func (*UserCommitFilesRequestHeader) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{31} } func (x *UserCommitFilesRequestHeader) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserCommitFilesRequestHeader) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserCommitFilesRequestHeader) GetBranchName() []byte { if x != nil { return x.BranchName } return nil } func (x *UserCommitFilesRequestHeader) GetCommitMessage() []byte { if x != nil { return x.CommitMessage } return nil } func (x *UserCommitFilesRequestHeader) GetCommitAuthorName() []byte { if x != nil { return x.CommitAuthorName } return nil } func (x *UserCommitFilesRequestHeader) GetCommitAuthorEmail() []byte { if x != nil { return x.CommitAuthorEmail } return nil } func (x *UserCommitFilesRequestHeader) GetStartBranchName() []byte { if x != nil { return x.StartBranchName } return nil } func (x *UserCommitFilesRequestHeader) GetStartRepository() *Repository { if x != nil { return x.StartRepository } return nil } func (x *UserCommitFilesRequestHeader) GetForce() bool { if x != nil { return x.Force } return false } func (x *UserCommitFilesRequestHeader) GetStartSha() string { if x != nil { return x.StartSha } return "" } func (x *UserCommitFilesRequestHeader) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserCommitFilesRequestHeader) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserCommitFilesRequest is the request of UserCommitFiles. type UserCommitFilesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to UserCommitFilesRequestPayload: // // *UserCommitFilesRequest_Header // *UserCommitFilesRequest_Action UserCommitFilesRequestPayload isUserCommitFilesRequest_UserCommitFilesRequestPayload `protobuf_oneof:"user_commit_files_request_payload"` } func (x *UserCommitFilesRequest) Reset() { *x = UserCommitFilesRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCommitFilesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCommitFilesRequest) ProtoMessage() {} func (x *UserCommitFilesRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[32] 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 UserCommitFilesRequest.ProtoReflect.Descriptor instead. func (*UserCommitFilesRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{32} } func (m *UserCommitFilesRequest) GetUserCommitFilesRequestPayload() isUserCommitFilesRequest_UserCommitFilesRequestPayload { if m != nil { return m.UserCommitFilesRequestPayload } return nil } func (x *UserCommitFilesRequest) GetHeader() *UserCommitFilesRequestHeader { if x, ok := x.GetUserCommitFilesRequestPayload().(*UserCommitFilesRequest_Header); ok { return x.Header } return nil } func (x *UserCommitFilesRequest) GetAction() *UserCommitFilesAction { if x, ok := x.GetUserCommitFilesRequestPayload().(*UserCommitFilesRequest_Action); ok { return x.Action } return nil } type isUserCommitFilesRequest_UserCommitFilesRequestPayload interface { isUserCommitFilesRequest_UserCommitFilesRequestPayload() } type UserCommitFilesRequest_Header struct { // header defines the details of where to commit, the details and which commit to use as the parent. // header must always be sent as the first request of the stream. Header *UserCommitFilesRequestHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } type UserCommitFilesRequest_Action struct { // action contains an action to build a commit. There can be multiple actions per stream. Action *UserCommitFilesAction `protobuf:"bytes,2,opt,name=action,proto3,oneof"` } func (*UserCommitFilesRequest_Header) isUserCommitFilesRequest_UserCommitFilesRequestPayload() {} func (*UserCommitFilesRequest_Action) isUserCommitFilesRequest_UserCommitFilesRequestPayload() {} // UserCommitFilesResponse is the response object of UserCommitFiles. type UserCommitFilesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch_update contains the details of the commit and the branch update. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` // index_error is set to the error message when an invalid action was attempted, such as // trying to create a file that already existed. IndexError string `protobuf:"bytes,2,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"` // pre_receive_error is set when the pre-receive hook errored. PreReceiveError string `protobuf:"bytes,3,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } func (x *UserCommitFilesResponse) Reset() { *x = UserCommitFilesResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCommitFilesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCommitFilesResponse) ProtoMessage() {} func (x *UserCommitFilesResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[33] 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 UserCommitFilesResponse.ProtoReflect.Descriptor instead. func (*UserCommitFilesResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{33} } func (x *UserCommitFilesResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } func (x *UserCommitFilesResponse) GetIndexError() string { if x != nil { return x.IndexError } return "" } func (x *UserCommitFilesResponse) GetPreReceiveError() string { if x != nil { return x.PreReceiveError } return "" } // UserCommitFilesError is an error returned by the UserCommitFiles RPC in some specific well // defined error cases. type UserCommitFilesError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserCommitFilesError_AccessCheck // *UserCommitFilesError_IndexUpdate // *UserCommitFilesError_CustomHook Error isUserCommitFilesError_Error `protobuf_oneof:"error"` } func (x *UserCommitFilesError) Reset() { *x = UserCommitFilesError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCommitFilesError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCommitFilesError) ProtoMessage() {} func (x *UserCommitFilesError) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[34] 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 UserCommitFilesError.ProtoReflect.Descriptor instead. func (*UserCommitFilesError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{34} } func (m *UserCommitFilesError) GetError() isUserCommitFilesError_Error { if m != nil { return m.Error } return nil } func (x *UserCommitFilesError) GetAccessCheck() *AccessCheckError { if x, ok := x.GetError().(*UserCommitFilesError_AccessCheck); ok { return x.AccessCheck } return nil } func (x *UserCommitFilesError) GetIndexUpdate() *IndexError { if x, ok := x.GetError().(*UserCommitFilesError_IndexUpdate); ok { return x.IndexUpdate } return nil } func (x *UserCommitFilesError) GetCustomHook() *CustomHookError { if x, ok := x.GetError().(*UserCommitFilesError_CustomHook); ok { return x.CustomHook } return nil } type isUserCommitFilesError_Error interface { isUserCommitFilesError_Error() } type UserCommitFilesError_AccessCheck struct { // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } type UserCommitFilesError_IndexUpdate struct { // index_update is set to the error message when an operation conflicts with the repository // index, such as creating a file that already exists. IndexUpdate *IndexError `protobuf:"bytes,2,opt,name=index_update,json=indexUpdate,proto3,oneof"` } type UserCommitFilesError_CustomHook struct { // custom_hook is set if any custom hook which has running as part of this RPC call has returned // a non-zero exit code. CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"` } func (*UserCommitFilesError_AccessCheck) isUserCommitFilesError_Error() {} func (*UserCommitFilesError_IndexUpdate) isUserCommitFilesError_Error() {} func (*UserCommitFilesError_CustomHook) isUserCommitFilesError_Error() {} // UserRebaseConfirmableRequest is a request for the UserRebaseConfirmable RPC. type UserRebaseConfirmableRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to UserRebaseConfirmableRequestPayload: // // *UserRebaseConfirmableRequest_Header_ // *UserRebaseConfirmableRequest_Apply UserRebaseConfirmableRequestPayload isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload `protobuf_oneof:"user_rebase_confirmable_request_payload"` } func (x *UserRebaseConfirmableRequest) Reset() { *x = UserRebaseConfirmableRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRebaseConfirmableRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRebaseConfirmableRequest) ProtoMessage() {} func (x *UserRebaseConfirmableRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[35] 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 UserRebaseConfirmableRequest.ProtoReflect.Descriptor instead. func (*UserRebaseConfirmableRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{35} } func (m *UserRebaseConfirmableRequest) GetUserRebaseConfirmableRequestPayload() isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload { if m != nil { return m.UserRebaseConfirmableRequestPayload } return nil } func (x *UserRebaseConfirmableRequest) GetHeader() *UserRebaseConfirmableRequest_Header { if x, ok := x.GetUserRebaseConfirmableRequestPayload().(*UserRebaseConfirmableRequest_Header_); ok { return x.Header } return nil } func (x *UserRebaseConfirmableRequest) GetApply() bool { if x, ok := x.GetUserRebaseConfirmableRequestPayload().(*UserRebaseConfirmableRequest_Apply); ok { return x.Apply } return false } type isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload interface { isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload() } type UserRebaseConfirmableRequest_Header_ struct { // header must be the first request for each request stream // containing details about the rebase to perform. Header *UserRebaseConfirmableRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } type UserRebaseConfirmableRequest_Apply struct { // apply is the second request that must be made to confirm that // the rebase should be applied to the branch. Apply bool `protobuf:"varint,2,opt,name=apply,proto3,oneof"` } func (*UserRebaseConfirmableRequest_Header_) isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload() { } func (*UserRebaseConfirmableRequest_Apply) isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload() { } // UserRebaseConfirmableResponse is a response for the UserRebaseConfirmable RPC. type UserRebaseConfirmableResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to UserRebaseConfirmableResponsePayload: // // *UserRebaseConfirmableResponse_RebaseSha // *UserRebaseConfirmableResponse_RebaseApplied UserRebaseConfirmableResponsePayload isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload `protobuf_oneof:"user_rebase_confirmable_response_payload"` } func (x *UserRebaseConfirmableResponse) Reset() { *x = UserRebaseConfirmableResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRebaseConfirmableResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRebaseConfirmableResponse) ProtoMessage() {} func (x *UserRebaseConfirmableResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[36] 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 UserRebaseConfirmableResponse.ProtoReflect.Descriptor instead. func (*UserRebaseConfirmableResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{36} } func (m *UserRebaseConfirmableResponse) GetUserRebaseConfirmableResponsePayload() isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload { if m != nil { return m.UserRebaseConfirmableResponsePayload } return nil } func (x *UserRebaseConfirmableResponse) GetRebaseSha() string { if x, ok := x.GetUserRebaseConfirmableResponsePayload().(*UserRebaseConfirmableResponse_RebaseSha); ok { return x.RebaseSha } return "" } func (x *UserRebaseConfirmableResponse) GetRebaseApplied() bool { if x, ok := x.GetUserRebaseConfirmableResponsePayload().(*UserRebaseConfirmableResponse_RebaseApplied); ok { return x.RebaseApplied } return false } type isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload interface { isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() } type UserRebaseConfirmableResponse_RebaseSha struct { // rebase_sha is the commit the branch will be updated to, it will be present // in the first response. The caller can still abort the rebase. RebaseSha string `protobuf:"bytes,1,opt,name=rebase_sha,json=rebaseSha,proto3,oneof"` } type UserRebaseConfirmableResponse_RebaseApplied struct { // rebase_applied confirms that the rebase has been applied to the branch. // It is present in the second response. RebaseApplied bool `protobuf:"varint,2,opt,name=rebase_applied,json=rebaseApplied,proto3,oneof"` } func (*UserRebaseConfirmableResponse_RebaseSha) isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() { } func (*UserRebaseConfirmableResponse_RebaseApplied) isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() { } // UserSquashRequest is a request for the UserSquash RPC. type UserSquashRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository into which the squashed commit shall be // written. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // start_sha is the object ID of the start commit of the range which shall be // squashed. Must be an ancestor of end_sha. StartSha string `protobuf:"bytes,5,opt,name=start_sha,json=startSha,proto3" json:"start_sha,omitempty"` // end_sha is the object ID of the end commit of the range which shall be // squashed. EndSha string `protobuf:"bytes,6,opt,name=end_sha,json=endSha,proto3" json:"end_sha,omitempty"` // author will be used as the author of the squashed commit. Author *User `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` // commit_message is the message to be used for the squashed commit. CommitMessage []byte `protobuf:"bytes,8,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"` // timestamp is the optional timestamp to use for the squashed commit as // committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (x *UserSquashRequest) Reset() { *x = UserSquashRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserSquashRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserSquashRequest) ProtoMessage() {} func (x *UserSquashRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[37] 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 UserSquashRequest.ProtoReflect.Descriptor instead. func (*UserSquashRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{37} } func (x *UserSquashRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserSquashRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserSquashRequest) GetStartSha() string { if x != nil { return x.StartSha } return "" } func (x *UserSquashRequest) GetEndSha() string { if x != nil { return x.EndSha } return "" } func (x *UserSquashRequest) GetAuthor() *User { if x != nil { return x.Author } return nil } func (x *UserSquashRequest) GetCommitMessage() []byte { if x != nil { return x.CommitMessage } return nil } func (x *UserSquashRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } // UserSquashResponse is a response for the UserSquash RPC. type UserSquashResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // squash_sha is the object ID of the squashed commit. SquashSha string `protobuf:"bytes,1,opt,name=squash_sha,json=squashSha,proto3" json:"squash_sha,omitempty"` } func (x *UserSquashResponse) Reset() { *x = UserSquashResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserSquashResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserSquashResponse) ProtoMessage() {} func (x *UserSquashResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[38] 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 UserSquashResponse.ProtoReflect.Descriptor instead. func (*UserSquashResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{38} } func (x *UserSquashResponse) GetSquashSha() string { if x != nil { return x.SquashSha } return "" } // UserRebaseConfirmableError is a structured error for the UserRebaseConfirmable RPC. type UserRebaseConfirmableError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserRebaseConfirmableError_RebaseConflict // *UserRebaseConfirmableError_AccessCheck Error isUserRebaseConfirmableError_Error `protobuf_oneof:"error"` } func (x *UserRebaseConfirmableError) Reset() { *x = UserRebaseConfirmableError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRebaseConfirmableError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRebaseConfirmableError) ProtoMessage() {} func (x *UserRebaseConfirmableError) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[39] 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 UserRebaseConfirmableError.ProtoReflect.Descriptor instead. func (*UserRebaseConfirmableError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{39} } func (m *UserRebaseConfirmableError) GetError() isUserRebaseConfirmableError_Error { if m != nil { return m.Error } return nil } func (x *UserRebaseConfirmableError) GetRebaseConflict() *MergeConflictError { if x, ok := x.GetError().(*UserRebaseConfirmableError_RebaseConflict); ok { return x.RebaseConflict } return nil } func (x *UserRebaseConfirmableError) GetAccessCheck() *AccessCheckError { if x, ok := x.GetError().(*UserRebaseConfirmableError_AccessCheck); ok { return x.AccessCheck } return nil } type isUserRebaseConfirmableError_Error interface { isUserRebaseConfirmableError_Error() } type UserRebaseConfirmableError_RebaseConflict struct { // rebase_conflict is returned in case rebasing commits on top of the start // commit fails with a merge conflict and in case merge squashing commits // fails with a merge conflict. RebaseConflict *MergeConflictError `protobuf:"bytes,1,opt,name=rebase_conflict,json=rebaseConflict,proto3,oneof"` } type UserRebaseConfirmableError_AccessCheck struct { // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,2,opt,name=access_check,json=accessCheck,proto3,oneof"` } func (*UserRebaseConfirmableError_RebaseConflict) isUserRebaseConfirmableError_Error() {} func (*UserRebaseConfirmableError_AccessCheck) isUserRebaseConfirmableError_Error() {} // UserSquashError is an error that may be returned when the UserSquash RPC // fails. type UserSquashError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // // *UserSquashError_ResolveRevision // *UserSquashError_RebaseConflict Error isUserSquashError_Error `protobuf_oneof:"error"` } func (x *UserSquashError) Reset() { *x = UserSquashError{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserSquashError) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserSquashError) ProtoMessage() {} func (x *UserSquashError) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[40] 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 UserSquashError.ProtoReflect.Descriptor instead. func (*UserSquashError) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{40} } func (m *UserSquashError) GetError() isUserSquashError_Error { if m != nil { return m.Error } return nil } func (x *UserSquashError) GetResolveRevision() *ResolveRevisionError { if x, ok := x.GetError().(*UserSquashError_ResolveRevision); ok { return x.ResolveRevision } return nil } func (x *UserSquashError) GetRebaseConflict() *MergeConflictError { if x, ok := x.GetError().(*UserSquashError_RebaseConflict); ok { return x.RebaseConflict } return nil } type isUserSquashError_Error interface { isUserSquashError_Error() } type UserSquashError_ResolveRevision struct { // resolve_revision is returned in case resolving either the start or end // revision has failed. ResolveRevision *ResolveRevisionError `protobuf:"bytes,1,opt,name=resolve_revision,json=resolveRevision,proto3,oneof"` } type UserSquashError_RebaseConflict struct { // rebase_conflict is returned in case rebasing commits on top of the start // commit fails with a merge conflict. RebaseConflict *MergeConflictError `protobuf:"bytes,2,opt,name=rebase_conflict,json=rebaseConflict,proto3,oneof"` } func (*UserSquashError_ResolveRevision) isUserSquashError_Error() {} func (*UserSquashError_RebaseConflict) isUserSquashError_Error() {} // UserApplyPatchRequest is a request for the UserApplyPatch RPC. type UserApplyPatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to UserApplyPatchRequestPayload: // // *UserApplyPatchRequest_Header_ // *UserApplyPatchRequest_Patches UserApplyPatchRequestPayload isUserApplyPatchRequest_UserApplyPatchRequestPayload `protobuf_oneof:"user_apply_patch_request_payload"` } func (x *UserApplyPatchRequest) Reset() { *x = UserApplyPatchRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserApplyPatchRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserApplyPatchRequest) ProtoMessage() {} func (x *UserApplyPatchRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[41] 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 UserApplyPatchRequest.ProtoReflect.Descriptor instead. func (*UserApplyPatchRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{41} } func (m *UserApplyPatchRequest) GetUserApplyPatchRequestPayload() isUserApplyPatchRequest_UserApplyPatchRequestPayload { if m != nil { return m.UserApplyPatchRequestPayload } return nil } func (x *UserApplyPatchRequest) GetHeader() *UserApplyPatchRequest_Header { if x, ok := x.GetUserApplyPatchRequestPayload().(*UserApplyPatchRequest_Header_); ok { return x.Header } return nil } func (x *UserApplyPatchRequest) GetPatches() []byte { if x, ok := x.GetUserApplyPatchRequestPayload().(*UserApplyPatchRequest_Patches); ok { return x.Patches } return nil } type isUserApplyPatchRequest_UserApplyPatchRequestPayload interface { isUserApplyPatchRequest_UserApplyPatchRequestPayload() } type UserApplyPatchRequest_Header_ struct { // header must be sent as the first message and contains information about // how to apply the patches. Header *UserApplyPatchRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` } type UserApplyPatchRequest_Patches struct { // patches contains the patch data. Patches []byte `protobuf:"bytes,2,opt,name=patches,proto3,oneof"` } func (*UserApplyPatchRequest_Header_) isUserApplyPatchRequest_UserApplyPatchRequestPayload() {} func (*UserApplyPatchRequest_Patches) isUserApplyPatchRequest_UserApplyPatchRequestPayload() {} // UserApplyPatchResponse is a response for the UserApplyPatch RPC. type UserApplyPatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch_update contains information about the updated branch. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` } func (x *UserApplyPatchResponse) Reset() { *x = UserApplyPatchResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserApplyPatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserApplyPatchResponse) ProtoMessage() {} func (x *UserApplyPatchResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[42] 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 UserApplyPatchResponse.ProtoReflect.Descriptor instead. func (*UserApplyPatchResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{42} } func (x *UserApplyPatchResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } // UserUpdateSubmoduleRequest is a request for the UserUpdateSubmodule RPC. type UserUpdateSubmoduleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the submodule shall be updated. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit_sha is the object ID the submodule shall be updated to. CommitSha string `protobuf:"bytes,3,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` // branch is the branch which shall be updated. This is the unqualified name // of the branch, it must not have a "refs/heads/" prefix. Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` // submodule is the path to the submodule which shall be updated. Submodule []byte `protobuf:"bytes,5,opt,name=submodule,proto3" json:"submodule,omitempty"` // commit_message is the message updating the submodule. CommitMessage []byte `protobuf:"bytes,6,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"` // timestamp is the optional timestamp to use for the commit updating the // submodule as committer date. If it's not set, the current time will be // used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,8,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserUpdateSubmoduleRequest) Reset() { *x = UserUpdateSubmoduleRequest{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserUpdateSubmoduleRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserUpdateSubmoduleRequest) ProtoMessage() {} func (x *UserUpdateSubmoduleRequest) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[43] 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 UserUpdateSubmoduleRequest.ProtoReflect.Descriptor instead. func (*UserUpdateSubmoduleRequest) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{43} } func (x *UserUpdateSubmoduleRequest) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserUpdateSubmoduleRequest) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserUpdateSubmoduleRequest) GetCommitSha() string { if x != nil { return x.CommitSha } return "" } func (x *UserUpdateSubmoduleRequest) GetBranch() []byte { if x != nil { return x.Branch } return nil } func (x *UserUpdateSubmoduleRequest) GetSubmodule() []byte { if x != nil { return x.Submodule } return nil } func (x *UserUpdateSubmoduleRequest) GetCommitMessage() []byte { if x != nil { return x.CommitMessage } return nil } func (x *UserUpdateSubmoduleRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserUpdateSubmoduleRequest) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } // UserUpdateSubmoduleResponse is a response for the UserUpdateSubmodule RPC. type UserUpdateSubmoduleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch_update contains information about the updated branch. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` // pre_receive_error contains an error message if the pre-receive hook // rejects the update. PreReceiveError string `protobuf:"bytes,2,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` // commit_error contains an error message if committing the update fails. CommitError string `protobuf:"bytes,4,opt,name=commit_error,json=commitError,proto3" json:"commit_error,omitempty"` } func (x *UserUpdateSubmoduleResponse) Reset() { *x = UserUpdateSubmoduleResponse{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserUpdateSubmoduleResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserUpdateSubmoduleResponse) ProtoMessage() {} func (x *UserUpdateSubmoduleResponse) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[44] 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 UserUpdateSubmoduleResponse.ProtoReflect.Descriptor instead. func (*UserUpdateSubmoduleResponse) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{44} } func (x *UserUpdateSubmoduleResponse) GetBranchUpdate() *OperationBranchUpdate { if x != nil { return x.BranchUpdate } return nil } func (x *UserUpdateSubmoduleResponse) GetPreReceiveError() string { if x != nil { return x.PreReceiveError } return "" } func (x *UserUpdateSubmoduleResponse) GetCommitError() string { if x != nil { return x.CommitError } return "" } // Header contains information to compute the rebase and must be sent as // first message. type UserRebaseConfirmableRequest_Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which the rebase will be computed and // applied. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // rebase_id does nothing anymore. // // Deprecated: Marked as deprecated in operations.proto. RebaseId string `protobuf:"bytes,3,opt,name=rebase_id,json=rebaseId,proto3" json:"rebase_id,omitempty"` // branch is the branch onto which the rebase shall happen. Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` // branch_sha is the expected object ID which branch currently points to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile. BranchSha string `protobuf:"bytes,5,opt,name=branch_sha,json=branchSha,proto3" json:"branch_sha,omitempty"` // remote_repository is the repository which contains the branch which // shall be rebased onto the local branch. RemoteRepository *Repository `protobuf:"bytes,6,opt,name=remote_repository,json=remoteRepository,proto3" json:"remote_repository,omitempty"` // remote_branch contains the branch name which shall re rebased onto the // local branch. RemoteBranch []byte `protobuf:"bytes,7,opt,name=remote_branch,json=remoteBranch,proto3" json:"remote_branch,omitempty"` // git_push_options contain options which shall be passed to the git hooks // when the local branch gets updated. GitPushOptions []string `protobuf:"bytes,8,rep,name=git_push_options,json=gitPushOptions,proto3" json:"git_push_options,omitempty"` // timestamp is the optional timestamp to use for the rebased commits as // committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (x *UserRebaseConfirmableRequest_Header) Reset() { *x = UserRebaseConfirmableRequest_Header{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserRebaseConfirmableRequest_Header) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserRebaseConfirmableRequest_Header) ProtoMessage() {} func (x *UserRebaseConfirmableRequest_Header) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[45] 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 UserRebaseConfirmableRequest_Header.ProtoReflect.Descriptor instead. func (*UserRebaseConfirmableRequest_Header) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{35, 0} } func (x *UserRebaseConfirmableRequest_Header) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserRebaseConfirmableRequest_Header) GetUser() *User { if x != nil { return x.User } return nil } // Deprecated: Marked as deprecated in operations.proto. func (x *UserRebaseConfirmableRequest_Header) GetRebaseId() string { if x != nil { return x.RebaseId } return "" } func (x *UserRebaseConfirmableRequest_Header) GetBranch() []byte { if x != nil { return x.Branch } return nil } func (x *UserRebaseConfirmableRequest_Header) GetBranchSha() string { if x != nil { return x.BranchSha } return "" } func (x *UserRebaseConfirmableRequest_Header) GetRemoteRepository() *Repository { if x != nil { return x.RemoteRepository } return nil } func (x *UserRebaseConfirmableRequest_Header) GetRemoteBranch() []byte { if x != nil { return x.RemoteBranch } return nil } func (x *UserRebaseConfirmableRequest_Header) GetGitPushOptions() []string { if x != nil { return x.GitPushOptions } return nil } func (x *UserRebaseConfirmableRequest_Header) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } // Header contains information about how to apply the patches. type UserApplyPatchRequest_Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository to which the patches shall be applied to. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // user to execute the action as. Also used to perform authentication and // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // target_branch is the branch onto which the patches shall be applied. TargetBranch []byte `protobuf:"bytes,3,opt,name=target_branch,json=targetBranch,proto3" json:"target_branch,omitempty"` // timestamp is the optional timestamp to use for the squashed commit as // committer date. If it's not set, the current time will be used. Timestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been // updated meanwhile to point to a different object ID. // // If unset, the target branch will be overwritten regardless of its current // state. If set, it must either contain a valid, full object ID or the // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,5,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` } func (x *UserApplyPatchRequest_Header) Reset() { *x = UserApplyPatchRequest_Header{} if protoimpl.UnsafeEnabled { mi := &file_operations_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserApplyPatchRequest_Header) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserApplyPatchRequest_Header) ProtoMessage() {} func (x *UserApplyPatchRequest_Header) ProtoReflect() protoreflect.Message { mi := &file_operations_proto_msgTypes[46] 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 UserApplyPatchRequest_Header.ProtoReflect.Descriptor instead. func (*UserApplyPatchRequest_Header) Descriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{41, 0} } func (x *UserApplyPatchRequest_Header) GetRepository() *Repository { if x != nil { return x.Repository } return nil } func (x *UserApplyPatchRequest_Header) GetUser() *User { if x != nil { return x.User } return nil } func (x *UserApplyPatchRequest_Header) GetTargetBranch() []byte { if x != nil { return x.TargetBranch } return nil } func (x *UserApplyPatchRequest_Header) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *UserApplyPatchRequest_Header) GetExpectedOldOid() string { if x != nil { return x.ExpectedOldOid } return "" } var File_operations_proto protoreflect.FileDescriptor var file_operations_proto_rawDesc = []byte{ 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x1a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 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, 0x1a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc6, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x65, 0x77, 0x72, 0x65, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x72, 0x65, 0x76, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6c, 0x64, 0x72, 0x65, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x6c, 0x64, 0x72, 0x65, 0x76, 0x22, 0x46, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc0, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x33, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xe6, 0x01, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xb7, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x5d, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xae, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xbd, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xaa, 0x02, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x43, 0x0a, 0x0e, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa2, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x12, 0x1a, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc0, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x36, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x15, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0xd0, 0x01, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc1, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xc0, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xdd, 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x12, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x50, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4e, 0x6f, 0x74, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xbd, 0x03, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xea, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0x02, 0x22, 0xb8, 0x02, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x0e, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x5c, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x3d, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4e, 0x6f, 0x74, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x6f, 0x74, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xf5, 0x02, 0x0a, 0x1b, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x55, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x4d, 0x4f, 0x44, 0x10, 0x05, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xa2, 0x04, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x68, 0x61, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd3, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x37, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xb1, 0x04, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x1a, 0x86, 0x03, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x09, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x53, 0x68, 0x61, 0x12, 0x3f, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x53, 0x68, 0x61, 0x12, 0x27, 0x0a, 0x0e, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x42, 0x2a, 0x0a, 0x28, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x67, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc3, 0x02, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x68, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x61, 0x12, 0x24, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x09, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x53, 0x68, 0x61, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x67, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xab, 0x01, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x87, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x1a, 0xed, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x5c, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xd8, 0x02, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 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, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x1b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0xc9, 0x0b, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5e, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5c, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x70, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x66, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_operations_proto_rawDescOnce sync.Once file_operations_proto_rawDescData = file_operations_proto_rawDesc ) func file_operations_proto_rawDescGZIP() []byte { file_operations_proto_rawDescOnce.Do(func() { file_operations_proto_rawDescData = protoimpl.X.CompressGZIP(file_operations_proto_rawDescData) }) return file_operations_proto_rawDescData } var file_operations_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_operations_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_operations_proto_goTypes = []interface{}{ (UserRevertResponse_CreateTreeError)(0), // 0: gitaly.UserRevertResponse.CreateTreeError (UserCommitFilesActionHeader_ActionType)(0), // 1: gitaly.UserCommitFilesActionHeader.ActionType (*UserCreateBranchRequest)(nil), // 2: gitaly.UserCreateBranchRequest (*UserCreateBranchResponse)(nil), // 3: gitaly.UserCreateBranchResponse (*UserCreateBranchError)(nil), // 4: gitaly.UserCreateBranchError (*UserUpdateBranchRequest)(nil), // 5: gitaly.UserUpdateBranchRequest (*UserUpdateBranchResponse)(nil), // 6: gitaly.UserUpdateBranchResponse (*UserDeleteBranchRequest)(nil), // 7: gitaly.UserDeleteBranchRequest (*UserDeleteBranchResponse)(nil), // 8: gitaly.UserDeleteBranchResponse (*UserDeleteBranchError)(nil), // 9: gitaly.UserDeleteBranchError (*UserDeleteTagRequest)(nil), // 10: gitaly.UserDeleteTagRequest (*UserDeleteTagResponse)(nil), // 11: gitaly.UserDeleteTagResponse (*UserCreateTagRequest)(nil), // 12: gitaly.UserCreateTagRequest (*UserCreateTagResponse)(nil), // 13: gitaly.UserCreateTagResponse (*UserCreateTagError)(nil), // 14: gitaly.UserCreateTagError (*UserMergeBranchRequest)(nil), // 15: gitaly.UserMergeBranchRequest (*UserMergeBranchResponse)(nil), // 16: gitaly.UserMergeBranchResponse (*UserMergeBranchError)(nil), // 17: gitaly.UserMergeBranchError (*UserMergeToRefRequest)(nil), // 18: gitaly.UserMergeToRefRequest (*UserMergeToRefResponse)(nil), // 19: gitaly.UserMergeToRefResponse (*UserRebaseToRefRequest)(nil), // 20: gitaly.UserRebaseToRefRequest (*UserRebaseToRefResponse)(nil), // 21: gitaly.UserRebaseToRefResponse (*OperationBranchUpdate)(nil), // 22: gitaly.OperationBranchUpdate (*UserFFBranchRequest)(nil), // 23: gitaly.UserFFBranchRequest (*UserFFBranchResponse)(nil), // 24: gitaly.UserFFBranchResponse (*UserCherryPickRequest)(nil), // 25: gitaly.UserCherryPickRequest (*UserCherryPickResponse)(nil), // 26: gitaly.UserCherryPickResponse (*UserCherryPickError)(nil), // 27: gitaly.UserCherryPickError (*UserRevertRequest)(nil), // 28: gitaly.UserRevertRequest (*UserRevertResponse)(nil), // 29: gitaly.UserRevertResponse (*UserRevertError)(nil), // 30: gitaly.UserRevertError (*UserCommitFilesActionHeader)(nil), // 31: gitaly.UserCommitFilesActionHeader (*UserCommitFilesAction)(nil), // 32: gitaly.UserCommitFilesAction (*UserCommitFilesRequestHeader)(nil), // 33: gitaly.UserCommitFilesRequestHeader (*UserCommitFilesRequest)(nil), // 34: gitaly.UserCommitFilesRequest (*UserCommitFilesResponse)(nil), // 35: gitaly.UserCommitFilesResponse (*UserCommitFilesError)(nil), // 36: gitaly.UserCommitFilesError (*UserRebaseConfirmableRequest)(nil), // 37: gitaly.UserRebaseConfirmableRequest (*UserRebaseConfirmableResponse)(nil), // 38: gitaly.UserRebaseConfirmableResponse (*UserSquashRequest)(nil), // 39: gitaly.UserSquashRequest (*UserSquashResponse)(nil), // 40: gitaly.UserSquashResponse (*UserRebaseConfirmableError)(nil), // 41: gitaly.UserRebaseConfirmableError (*UserSquashError)(nil), // 42: gitaly.UserSquashError (*UserApplyPatchRequest)(nil), // 43: gitaly.UserApplyPatchRequest (*UserApplyPatchResponse)(nil), // 44: gitaly.UserApplyPatchResponse (*UserUpdateSubmoduleRequest)(nil), // 45: gitaly.UserUpdateSubmoduleRequest (*UserUpdateSubmoduleResponse)(nil), // 46: gitaly.UserUpdateSubmoduleResponse (*UserRebaseConfirmableRequest_Header)(nil), // 47: gitaly.UserRebaseConfirmableRequest.Header (*UserApplyPatchRequest_Header)(nil), // 48: gitaly.UserApplyPatchRequest.Header (*Repository)(nil), // 49: gitaly.Repository (*User)(nil), // 50: gitaly.User (*Branch)(nil), // 51: gitaly.Branch (*CustomHookError)(nil), // 52: gitaly.CustomHookError (*AccessCheckError)(nil), // 53: gitaly.AccessCheckError (*ReferenceUpdateError)(nil), // 54: gitaly.ReferenceUpdateError (*timestamppb.Timestamp)(nil), // 55: google.protobuf.Timestamp (*Tag)(nil), // 56: gitaly.Tag (*ReferenceExistsError)(nil), // 57: gitaly.ReferenceExistsError (*MergeConflictError)(nil), // 58: gitaly.MergeConflictError (*GitCommit)(nil), // 59: gitaly.GitCommit (*NotAncestorError)(nil), // 60: gitaly.NotAncestorError (*ChangesAlreadyAppliedError)(nil), // 61: gitaly.ChangesAlreadyAppliedError (*IndexError)(nil), // 62: gitaly.IndexError (*ResolveRevisionError)(nil), // 63: gitaly.ResolveRevisionError } var file_operations_proto_depIdxs = []int32{ 49, // 0: gitaly.UserCreateBranchRequest.repository:type_name -> gitaly.Repository 50, // 1: gitaly.UserCreateBranchRequest.user:type_name -> gitaly.User 51, // 2: gitaly.UserCreateBranchResponse.branch:type_name -> gitaly.Branch 52, // 3: gitaly.UserCreateBranchError.custom_hook:type_name -> gitaly.CustomHookError 49, // 4: gitaly.UserUpdateBranchRequest.repository:type_name -> gitaly.Repository 50, // 5: gitaly.UserUpdateBranchRequest.user:type_name -> gitaly.User 49, // 6: gitaly.UserDeleteBranchRequest.repository:type_name -> gitaly.Repository 50, // 7: gitaly.UserDeleteBranchRequest.user:type_name -> gitaly.User 53, // 8: gitaly.UserDeleteBranchError.access_check:type_name -> gitaly.AccessCheckError 54, // 9: gitaly.UserDeleteBranchError.reference_update:type_name -> gitaly.ReferenceUpdateError 52, // 10: gitaly.UserDeleteBranchError.custom_hook:type_name -> gitaly.CustomHookError 49, // 11: gitaly.UserDeleteTagRequest.repository:type_name -> gitaly.Repository 50, // 12: gitaly.UserDeleteTagRequest.user:type_name -> gitaly.User 49, // 13: gitaly.UserCreateTagRequest.repository:type_name -> gitaly.Repository 50, // 14: gitaly.UserCreateTagRequest.user:type_name -> gitaly.User 55, // 15: gitaly.UserCreateTagRequest.timestamp:type_name -> google.protobuf.Timestamp 56, // 16: gitaly.UserCreateTagResponse.tag:type_name -> gitaly.Tag 53, // 17: gitaly.UserCreateTagError.access_check:type_name -> gitaly.AccessCheckError 54, // 18: gitaly.UserCreateTagError.reference_update:type_name -> gitaly.ReferenceUpdateError 52, // 19: gitaly.UserCreateTagError.custom_hook:type_name -> gitaly.CustomHookError 57, // 20: gitaly.UserCreateTagError.reference_exists:type_name -> gitaly.ReferenceExistsError 49, // 21: gitaly.UserMergeBranchRequest.repository:type_name -> gitaly.Repository 50, // 22: gitaly.UserMergeBranchRequest.user:type_name -> gitaly.User 55, // 23: gitaly.UserMergeBranchRequest.timestamp:type_name -> google.protobuf.Timestamp 22, // 24: gitaly.UserMergeBranchResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 53, // 25: gitaly.UserMergeBranchError.access_check:type_name -> gitaly.AccessCheckError 54, // 26: gitaly.UserMergeBranchError.reference_update:type_name -> gitaly.ReferenceUpdateError 52, // 27: gitaly.UserMergeBranchError.custom_hook:type_name -> gitaly.CustomHookError 58, // 28: gitaly.UserMergeBranchError.merge_conflict:type_name -> gitaly.MergeConflictError 49, // 29: gitaly.UserMergeToRefRequest.repository:type_name -> gitaly.Repository 50, // 30: gitaly.UserMergeToRefRequest.user:type_name -> gitaly.User 55, // 31: gitaly.UserMergeToRefRequest.timestamp:type_name -> google.protobuf.Timestamp 49, // 32: gitaly.UserRebaseToRefRequest.repository:type_name -> gitaly.Repository 50, // 33: gitaly.UserRebaseToRefRequest.user:type_name -> gitaly.User 55, // 34: gitaly.UserRebaseToRefRequest.timestamp:type_name -> google.protobuf.Timestamp 49, // 35: gitaly.UserFFBranchRequest.repository:type_name -> gitaly.Repository 50, // 36: gitaly.UserFFBranchRequest.user:type_name -> gitaly.User 22, // 37: gitaly.UserFFBranchResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 49, // 38: gitaly.UserCherryPickRequest.repository:type_name -> gitaly.Repository 50, // 39: gitaly.UserCherryPickRequest.user:type_name -> gitaly.User 59, // 40: gitaly.UserCherryPickRequest.commit:type_name -> gitaly.GitCommit 49, // 41: gitaly.UserCherryPickRequest.start_repository:type_name -> gitaly.Repository 55, // 42: gitaly.UserCherryPickRequest.timestamp:type_name -> google.protobuf.Timestamp 22, // 43: gitaly.UserCherryPickResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 58, // 44: gitaly.UserCherryPickError.cherry_pick_conflict:type_name -> gitaly.MergeConflictError 60, // 45: gitaly.UserCherryPickError.target_branch_diverged:type_name -> gitaly.NotAncestorError 61, // 46: gitaly.UserCherryPickError.changes_already_applied:type_name -> gitaly.ChangesAlreadyAppliedError 53, // 47: gitaly.UserCherryPickError.access_check:type_name -> gitaly.AccessCheckError 49, // 48: gitaly.UserRevertRequest.repository:type_name -> gitaly.Repository 50, // 49: gitaly.UserRevertRequest.user:type_name -> gitaly.User 59, // 50: gitaly.UserRevertRequest.commit:type_name -> gitaly.GitCommit 49, // 51: gitaly.UserRevertRequest.start_repository:type_name -> gitaly.Repository 55, // 52: gitaly.UserRevertRequest.timestamp:type_name -> google.protobuf.Timestamp 22, // 53: gitaly.UserRevertResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 0, // 54: gitaly.UserRevertResponse.create_tree_error_code:type_name -> gitaly.UserRevertResponse.CreateTreeError 58, // 55: gitaly.UserRevertError.merge_conflict:type_name -> gitaly.MergeConflictError 61, // 56: gitaly.UserRevertError.changes_already_applied:type_name -> gitaly.ChangesAlreadyAppliedError 52, // 57: gitaly.UserRevertError.custom_hook:type_name -> gitaly.CustomHookError 60, // 58: gitaly.UserRevertError.not_ancestor:type_name -> gitaly.NotAncestorError 1, // 59: gitaly.UserCommitFilesActionHeader.action:type_name -> gitaly.UserCommitFilesActionHeader.ActionType 31, // 60: gitaly.UserCommitFilesAction.header:type_name -> gitaly.UserCommitFilesActionHeader 49, // 61: gitaly.UserCommitFilesRequestHeader.repository:type_name -> gitaly.Repository 50, // 62: gitaly.UserCommitFilesRequestHeader.user:type_name -> gitaly.User 49, // 63: gitaly.UserCommitFilesRequestHeader.start_repository:type_name -> gitaly.Repository 55, // 64: gitaly.UserCommitFilesRequestHeader.timestamp:type_name -> google.protobuf.Timestamp 33, // 65: gitaly.UserCommitFilesRequest.header:type_name -> gitaly.UserCommitFilesRequestHeader 32, // 66: gitaly.UserCommitFilesRequest.action:type_name -> gitaly.UserCommitFilesAction 22, // 67: gitaly.UserCommitFilesResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 53, // 68: gitaly.UserCommitFilesError.access_check:type_name -> gitaly.AccessCheckError 62, // 69: gitaly.UserCommitFilesError.index_update:type_name -> gitaly.IndexError 52, // 70: gitaly.UserCommitFilesError.custom_hook:type_name -> gitaly.CustomHookError 47, // 71: gitaly.UserRebaseConfirmableRequest.header:type_name -> gitaly.UserRebaseConfirmableRequest.Header 49, // 72: gitaly.UserSquashRequest.repository:type_name -> gitaly.Repository 50, // 73: gitaly.UserSquashRequest.user:type_name -> gitaly.User 50, // 74: gitaly.UserSquashRequest.author:type_name -> gitaly.User 55, // 75: gitaly.UserSquashRequest.timestamp:type_name -> google.protobuf.Timestamp 58, // 76: gitaly.UserRebaseConfirmableError.rebase_conflict:type_name -> gitaly.MergeConflictError 53, // 77: gitaly.UserRebaseConfirmableError.access_check:type_name -> gitaly.AccessCheckError 63, // 78: gitaly.UserSquashError.resolve_revision:type_name -> gitaly.ResolveRevisionError 58, // 79: gitaly.UserSquashError.rebase_conflict:type_name -> gitaly.MergeConflictError 48, // 80: gitaly.UserApplyPatchRequest.header:type_name -> gitaly.UserApplyPatchRequest.Header 22, // 81: gitaly.UserApplyPatchResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 49, // 82: gitaly.UserUpdateSubmoduleRequest.repository:type_name -> gitaly.Repository 50, // 83: gitaly.UserUpdateSubmoduleRequest.user:type_name -> gitaly.User 55, // 84: gitaly.UserUpdateSubmoduleRequest.timestamp:type_name -> google.protobuf.Timestamp 22, // 85: gitaly.UserUpdateSubmoduleResponse.branch_update:type_name -> gitaly.OperationBranchUpdate 49, // 86: gitaly.UserRebaseConfirmableRequest.Header.repository:type_name -> gitaly.Repository 50, // 87: gitaly.UserRebaseConfirmableRequest.Header.user:type_name -> gitaly.User 49, // 88: gitaly.UserRebaseConfirmableRequest.Header.remote_repository:type_name -> gitaly.Repository 55, // 89: gitaly.UserRebaseConfirmableRequest.Header.timestamp:type_name -> google.protobuf.Timestamp 49, // 90: gitaly.UserApplyPatchRequest.Header.repository:type_name -> gitaly.Repository 50, // 91: gitaly.UserApplyPatchRequest.Header.user:type_name -> gitaly.User 55, // 92: gitaly.UserApplyPatchRequest.Header.timestamp:type_name -> google.protobuf.Timestamp 2, // 93: gitaly.OperationService.UserCreateBranch:input_type -> gitaly.UserCreateBranchRequest 5, // 94: gitaly.OperationService.UserUpdateBranch:input_type -> gitaly.UserUpdateBranchRequest 7, // 95: gitaly.OperationService.UserDeleteBranch:input_type -> gitaly.UserDeleteBranchRequest 12, // 96: gitaly.OperationService.UserCreateTag:input_type -> gitaly.UserCreateTagRequest 10, // 97: gitaly.OperationService.UserDeleteTag:input_type -> gitaly.UserDeleteTagRequest 18, // 98: gitaly.OperationService.UserMergeToRef:input_type -> gitaly.UserMergeToRefRequest 20, // 99: gitaly.OperationService.UserRebaseToRef:input_type -> gitaly.UserRebaseToRefRequest 15, // 100: gitaly.OperationService.UserMergeBranch:input_type -> gitaly.UserMergeBranchRequest 23, // 101: gitaly.OperationService.UserFFBranch:input_type -> gitaly.UserFFBranchRequest 25, // 102: gitaly.OperationService.UserCherryPick:input_type -> gitaly.UserCherryPickRequest 34, // 103: gitaly.OperationService.UserCommitFiles:input_type -> gitaly.UserCommitFilesRequest 37, // 104: gitaly.OperationService.UserRebaseConfirmable:input_type -> gitaly.UserRebaseConfirmableRequest 28, // 105: gitaly.OperationService.UserRevert:input_type -> gitaly.UserRevertRequest 39, // 106: gitaly.OperationService.UserSquash:input_type -> gitaly.UserSquashRequest 43, // 107: gitaly.OperationService.UserApplyPatch:input_type -> gitaly.UserApplyPatchRequest 45, // 108: gitaly.OperationService.UserUpdateSubmodule:input_type -> gitaly.UserUpdateSubmoduleRequest 3, // 109: gitaly.OperationService.UserCreateBranch:output_type -> gitaly.UserCreateBranchResponse 6, // 110: gitaly.OperationService.UserUpdateBranch:output_type -> gitaly.UserUpdateBranchResponse 8, // 111: gitaly.OperationService.UserDeleteBranch:output_type -> gitaly.UserDeleteBranchResponse 13, // 112: gitaly.OperationService.UserCreateTag:output_type -> gitaly.UserCreateTagResponse 11, // 113: gitaly.OperationService.UserDeleteTag:output_type -> gitaly.UserDeleteTagResponse 19, // 114: gitaly.OperationService.UserMergeToRef:output_type -> gitaly.UserMergeToRefResponse 21, // 115: gitaly.OperationService.UserRebaseToRef:output_type -> gitaly.UserRebaseToRefResponse 16, // 116: gitaly.OperationService.UserMergeBranch:output_type -> gitaly.UserMergeBranchResponse 24, // 117: gitaly.OperationService.UserFFBranch:output_type -> gitaly.UserFFBranchResponse 26, // 118: gitaly.OperationService.UserCherryPick:output_type -> gitaly.UserCherryPickResponse 35, // 119: gitaly.OperationService.UserCommitFiles:output_type -> gitaly.UserCommitFilesResponse 38, // 120: gitaly.OperationService.UserRebaseConfirmable:output_type -> gitaly.UserRebaseConfirmableResponse 29, // 121: gitaly.OperationService.UserRevert:output_type -> gitaly.UserRevertResponse 40, // 122: gitaly.OperationService.UserSquash:output_type -> gitaly.UserSquashResponse 44, // 123: gitaly.OperationService.UserApplyPatch:output_type -> gitaly.UserApplyPatchResponse 46, // 124: gitaly.OperationService.UserUpdateSubmodule:output_type -> gitaly.UserUpdateSubmoduleResponse 109, // [109:125] is the sub-list for method output_type 93, // [93:109] is the sub-list for method input_type 93, // [93:93] is the sub-list for extension type_name 93, // [93:93] is the sub-list for extension extendee 0, // [0:93] is the sub-list for field type_name } func init() { file_operations_proto_init() } func file_operations_proto_init() { if File_operations_proto != nil { return } file_errors_proto_init() file_lint_proto_init() file_shared_proto_init() if !protoimpl.UnsafeEnabled { file_operations_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCreateBranchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCreateBranchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCreateBranchError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserUpdateBranchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserUpdateBranchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDeleteBranchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDeleteBranchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDeleteBranchError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDeleteTagRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserDeleteTagResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCreateTagRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCreateTagResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCreateTagError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserMergeBranchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserMergeBranchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserMergeBranchError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserMergeToRefRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserMergeToRefResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRebaseToRefRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRebaseToRefResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OperationBranchUpdate); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserFFBranchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserFFBranchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCherryPickRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCherryPickResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCherryPickError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRevertRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRevertResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRevertError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCommitFilesActionHeader); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCommitFilesAction); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCommitFilesRequestHeader); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCommitFilesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCommitFilesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCommitFilesError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRebaseConfirmableRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRebaseConfirmableResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserSquashRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserSquashResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRebaseConfirmableError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserSquashError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserApplyPatchRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserApplyPatchResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserUpdateSubmoduleRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserUpdateSubmoduleResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRebaseConfirmableRequest_Header); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_operations_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserApplyPatchRequest_Header); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_operations_proto_msgTypes[2].OneofWrappers = []interface{}{ (*UserCreateBranchError_CustomHook)(nil), } file_operations_proto_msgTypes[7].OneofWrappers = []interface{}{ (*UserDeleteBranchError_AccessCheck)(nil), (*UserDeleteBranchError_ReferenceUpdate)(nil), (*UserDeleteBranchError_CustomHook)(nil), } file_operations_proto_msgTypes[12].OneofWrappers = []interface{}{ (*UserCreateTagError_AccessCheck)(nil), (*UserCreateTagError_ReferenceUpdate)(nil), (*UserCreateTagError_CustomHook)(nil), (*UserCreateTagError_ReferenceExists)(nil), } file_operations_proto_msgTypes[15].OneofWrappers = []interface{}{ (*UserMergeBranchError_AccessCheck)(nil), (*UserMergeBranchError_ReferenceUpdate)(nil), (*UserMergeBranchError_CustomHook)(nil), (*UserMergeBranchError_MergeConflict)(nil), } file_operations_proto_msgTypes[25].OneofWrappers = []interface{}{ (*UserCherryPickError_CherryPickConflict)(nil), (*UserCherryPickError_TargetBranchDiverged)(nil), (*UserCherryPickError_ChangesAlreadyApplied)(nil), (*UserCherryPickError_AccessCheck)(nil), } file_operations_proto_msgTypes[28].OneofWrappers = []interface{}{ (*UserRevertError_MergeConflict)(nil), (*UserRevertError_ChangesAlreadyApplied)(nil), (*UserRevertError_CustomHook)(nil), (*UserRevertError_NotAncestor)(nil), } file_operations_proto_msgTypes[30].OneofWrappers = []interface{}{ (*UserCommitFilesAction_Header)(nil), (*UserCommitFilesAction_Content)(nil), } file_operations_proto_msgTypes[32].OneofWrappers = []interface{}{ (*UserCommitFilesRequest_Header)(nil), (*UserCommitFilesRequest_Action)(nil), } file_operations_proto_msgTypes[34].OneofWrappers = []interface{}{ (*UserCommitFilesError_AccessCheck)(nil), (*UserCommitFilesError_IndexUpdate)(nil), (*UserCommitFilesError_CustomHook)(nil), } file_operations_proto_msgTypes[35].OneofWrappers = []interface{}{ (*UserRebaseConfirmableRequest_Header_)(nil), (*UserRebaseConfirmableRequest_Apply)(nil), } file_operations_proto_msgTypes[36].OneofWrappers = []interface{}{ (*UserRebaseConfirmableResponse_RebaseSha)(nil), (*UserRebaseConfirmableResponse_RebaseApplied)(nil), } file_operations_proto_msgTypes[39].OneofWrappers = []interface{}{ (*UserRebaseConfirmableError_RebaseConflict)(nil), (*UserRebaseConfirmableError_AccessCheck)(nil), } file_operations_proto_msgTypes[40].OneofWrappers = []interface{}{ (*UserSquashError_ResolveRevision)(nil), (*UserSquashError_RebaseConflict)(nil), } file_operations_proto_msgTypes[41].OneofWrappers = []interface{}{ (*UserApplyPatchRequest_Header_)(nil), (*UserApplyPatchRequest_Patches)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_operations_proto_rawDesc, NumEnums: 2, NumMessages: 47, NumExtensions: 0, NumServices: 1, }, GoTypes: file_operations_proto_goTypes, DependencyIndexes: file_operations_proto_depIdxs, EnumInfos: file_operations_proto_enumTypes, MessageInfos: file_operations_proto_msgTypes, }.Build() File_operations_proto = out.File file_operations_proto_rawDesc = nil file_operations_proto_goTypes = nil file_operations_proto_depIdxs = nil }