// // Copyright 2022 The Dragonfly Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.6 // source: pkg/apis/dfdaemon/v2/dfdaemon.proto package dfdaemon import ( v2 "d7y.io/api/v2/pkg/apis/common/v2" _ "github.com/envoyproxy/protoc-gen-validate/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" emptypb "google.golang.org/protobuf/types/known/emptypb" 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) ) // DownloadTaskRequest represents request of DownloadTask. type DownloadTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Download information. Download *v2.Download `protobuf:"bytes,1,opt,name=download,proto3" json:"download,omitempty"` } func (x *DownloadTaskRequest) Reset() { *x = DownloadTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadTaskRequest) ProtoMessage() {} func (x *DownloadTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadTaskRequest.ProtoReflect.Descriptor instead. func (*DownloadTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{0} } func (x *DownloadTaskRequest) GetDownload() *v2.Download { if x != nil { return x.Download } return nil } // DownloadTaskStartedResponse represents task download started response of DownloadTaskResponse. type DownloadTaskStartedResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task content length. ContentLength uint64 `protobuf:"varint,1,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` // Range is url range of request. If protocol is http, range // is parsed from http header. If other protocol, range comes // from download range field. Range *v2.Range `protobuf:"bytes,2,opt,name=range,proto3,oneof" json:"range,omitempty"` // Task response headers. ResponseHeader map[string]string `protobuf:"bytes,3,rep,name=response_header,json=responseHeader,proto3" json:"response_header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Need to download pieces. Pieces []*v2.Piece `protobuf:"bytes,4,rep,name=pieces,proto3" json:"pieces,omitempty"` } func (x *DownloadTaskStartedResponse) Reset() { *x = DownloadTaskStartedResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadTaskStartedResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadTaskStartedResponse) ProtoMessage() {} func (x *DownloadTaskStartedResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadTaskStartedResponse.ProtoReflect.Descriptor instead. func (*DownloadTaskStartedResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{1} } func (x *DownloadTaskStartedResponse) GetContentLength() uint64 { if x != nil { return x.ContentLength } return 0 } func (x *DownloadTaskStartedResponse) GetRange() *v2.Range { if x != nil { return x.Range } return nil } func (x *DownloadTaskStartedResponse) GetResponseHeader() map[string]string { if x != nil { return x.ResponseHeader } return nil } func (x *DownloadTaskStartedResponse) GetPieces() []*v2.Piece { if x != nil { return x.Pieces } return nil } // DownloadPieceFinishedResponse represents piece download finished response of DownloadTaskResponse. type DownloadPieceFinishedResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Finished piece of task. Piece *v2.Piece `protobuf:"bytes,1,opt,name=piece,proto3" json:"piece,omitempty"` } func (x *DownloadPieceFinishedResponse) Reset() { *x = DownloadPieceFinishedResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadPieceFinishedResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadPieceFinishedResponse) ProtoMessage() {} func (x *DownloadPieceFinishedResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadPieceFinishedResponse.ProtoReflect.Descriptor instead. func (*DownloadPieceFinishedResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{2} } func (x *DownloadPieceFinishedResponse) GetPiece() *v2.Piece { if x != nil { return x.Piece } return nil } // DownloadTaskResponse represents response of DownloadTask. type DownloadTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Host id. HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // Task id. TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Peer id. PeerId string `protobuf:"bytes,3,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` // Types that are assignable to Response: // // *DownloadTaskResponse_DownloadTaskStartedResponse // *DownloadTaskResponse_DownloadPieceFinishedResponse Response isDownloadTaskResponse_Response `protobuf_oneof:"response"` } func (x *DownloadTaskResponse) Reset() { *x = DownloadTaskResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadTaskResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadTaskResponse) ProtoMessage() {} func (x *DownloadTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadTaskResponse.ProtoReflect.Descriptor instead. func (*DownloadTaskResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{3} } func (x *DownloadTaskResponse) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *DownloadTaskResponse) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *DownloadTaskResponse) GetPeerId() string { if x != nil { return x.PeerId } return "" } func (m *DownloadTaskResponse) GetResponse() isDownloadTaskResponse_Response { if m != nil { return m.Response } return nil } func (x *DownloadTaskResponse) GetDownloadTaskStartedResponse() *DownloadTaskStartedResponse { if x, ok := x.GetResponse().(*DownloadTaskResponse_DownloadTaskStartedResponse); ok { return x.DownloadTaskStartedResponse } return nil } func (x *DownloadTaskResponse) GetDownloadPieceFinishedResponse() *DownloadPieceFinishedResponse { if x, ok := x.GetResponse().(*DownloadTaskResponse_DownloadPieceFinishedResponse); ok { return x.DownloadPieceFinishedResponse } return nil } type isDownloadTaskResponse_Response interface { isDownloadTaskResponse_Response() } type DownloadTaskResponse_DownloadTaskStartedResponse struct { DownloadTaskStartedResponse *DownloadTaskStartedResponse `protobuf:"bytes,4,opt,name=download_task_started_response,json=downloadTaskStartedResponse,proto3,oneof"` } type DownloadTaskResponse_DownloadPieceFinishedResponse struct { DownloadPieceFinishedResponse *DownloadPieceFinishedResponse `protobuf:"bytes,5,opt,name=download_piece_finished_response,json=downloadPieceFinishedResponse,proto3,oneof"` } func (*DownloadTaskResponse_DownloadTaskStartedResponse) isDownloadTaskResponse_Response() {} func (*DownloadTaskResponse_DownloadPieceFinishedResponse) isDownloadTaskResponse_Response() {} // SyncPiecesRequest represents request of SyncPieces. type SyncPiecesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Host id. HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // Task id. TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Interested piece numbers. InterestedPieceNumbers []uint32 `protobuf:"varint,3,rep,packed,name=interested_piece_numbers,json=interestedPieceNumbers,proto3" json:"interested_piece_numbers,omitempty"` } func (x *SyncPiecesRequest) Reset() { *x = SyncPiecesRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SyncPiecesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SyncPiecesRequest) ProtoMessage() {} func (x *SyncPiecesRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 SyncPiecesRequest.ProtoReflect.Descriptor instead. func (*SyncPiecesRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{4} } func (x *SyncPiecesRequest) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *SyncPiecesRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *SyncPiecesRequest) GetInterestedPieceNumbers() []uint32 { if x != nil { return x.InterestedPieceNumbers } return nil } // SyncPiecesResponse represents response of SyncPieces. type SyncPiecesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Exist piece number. Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` // Piece offset. Offset uint64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` // Piece length. Length uint64 `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"` } func (x *SyncPiecesResponse) Reset() { *x = SyncPiecesResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SyncPiecesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SyncPiecesResponse) ProtoMessage() {} func (x *SyncPiecesResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 SyncPiecesResponse.ProtoReflect.Descriptor instead. func (*SyncPiecesResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{5} } func (x *SyncPiecesResponse) GetNumber() uint32 { if x != nil { return x.Number } return 0 } func (x *SyncPiecesResponse) GetOffset() uint64 { if x != nil { return x.Offset } return 0 } func (x *SyncPiecesResponse) GetLength() uint64 { if x != nil { return x.Length } return 0 } // DownloadPieceRequest represents request of DownloadPiece. type DownloadPieceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Host id. HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // Task id. TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Piece number. PieceNumber uint32 `protobuf:"varint,3,opt,name=piece_number,json=pieceNumber,proto3" json:"piece_number,omitempty"` } func (x *DownloadPieceRequest) Reset() { *x = DownloadPieceRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadPieceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadPieceRequest) ProtoMessage() {} func (x *DownloadPieceRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadPieceRequest.ProtoReflect.Descriptor instead. func (*DownloadPieceRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{6} } func (x *DownloadPieceRequest) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *DownloadPieceRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *DownloadPieceRequest) GetPieceNumber() uint32 { if x != nil { return x.PieceNumber } return 0 } // DownloadPieceResponse represents response of DownloadPieces. type DownloadPieceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Piece information. Piece *v2.Piece `protobuf:"bytes,1,opt,name=piece,proto3" json:"piece,omitempty"` } func (x *DownloadPieceResponse) Reset() { *x = DownloadPieceResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadPieceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadPieceResponse) ProtoMessage() {} func (x *DownloadPieceResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadPieceResponse.ProtoReflect.Descriptor instead. func (*DownloadPieceResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{7} } func (x *DownloadPieceResponse) GetPiece() *v2.Piece { if x != nil { return x.Piece } return nil } // UploadTaskRequest represents request of UploadTask. type UploadTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task metadata. Task *v2.Task `protobuf:"bytes,1,opt,name=task,proto3" json:"task,omitempty"` } func (x *UploadTaskRequest) Reset() { *x = UploadTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UploadTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UploadTaskRequest) ProtoMessage() {} func (x *UploadTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 UploadTaskRequest.ProtoReflect.Descriptor instead. func (*UploadTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{8} } func (x *UploadTaskRequest) GetTask() *v2.Task { if x != nil { return x.Task } return nil } // StatTaskRequest represents request of StatTask. type StatTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task id. TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` } func (x *StatTaskRequest) Reset() { *x = StatTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatTaskRequest) ProtoMessage() {} func (x *StatTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 StatTaskRequest.ProtoReflect.Descriptor instead. func (*StatTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{9} } func (x *StatTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } // DeleteTaskRequest represents request of DeleteTask. type DeleteTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task id. TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` } func (x *DeleteTaskRequest) Reset() { *x = DeleteTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteTaskRequest) ProtoMessage() {} func (x *DeleteTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DeleteTaskRequest.ProtoReflect.Descriptor instead. func (*DeleteTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{10} } func (x *DeleteTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } // DownloadPersistentCacheTaskRequest represents request of DownloadPersistentCacheTask. type DownloadPersistentCacheTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task id. TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Persistent represents whether the persistent cache task is persistent. // If the persistent cache task is persistent, the persistent cache peer will // not be deleted when dfdaemon runs garbage collection. Persistent bool `protobuf:"varint,2,opt,name=persistent,proto3" json:"persistent,omitempty"` // Tag is used to distinguish different persistent cache tasks. Tag *string `protobuf:"bytes,3,opt,name=tag,proto3,oneof" json:"tag,omitempty"` // Application of task. Application *string `protobuf:"bytes,4,opt,name=application,proto3,oneof" json:"application,omitempty"` // File path to be exported. OutputPath string `protobuf:"bytes,5,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty"` // Download timeout. Timeout *durationpb.Duration `protobuf:"bytes,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` } func (x *DownloadPersistentCacheTaskRequest) Reset() { *x = DownloadPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadPersistentCacheTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadPersistentCacheTaskRequest) ProtoMessage() {} func (x *DownloadPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DownloadPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{11} } func (x *DownloadPersistentCacheTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *DownloadPersistentCacheTaskRequest) GetPersistent() bool { if x != nil { return x.Persistent } return false } func (x *DownloadPersistentCacheTaskRequest) GetTag() string { if x != nil && x.Tag != nil { return *x.Tag } return "" } func (x *DownloadPersistentCacheTaskRequest) GetApplication() string { if x != nil && x.Application != nil { return *x.Application } return "" } func (x *DownloadPersistentCacheTaskRequest) GetOutputPath() string { if x != nil { return x.OutputPath } return "" } func (x *DownloadPersistentCacheTaskRequest) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } // DownloadPersistentCacheTaskStartedResponse represents task download started response of DownloadPersistentCacheTaskResponse. type DownloadPersistentCacheTaskStartedResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task content length. ContentLength uint64 `protobuf:"varint,1,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"` } func (x *DownloadPersistentCacheTaskStartedResponse) Reset() { *x = DownloadPersistentCacheTaskStartedResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadPersistentCacheTaskStartedResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadPersistentCacheTaskStartedResponse) ProtoMessage() {} func (x *DownloadPersistentCacheTaskStartedResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadPersistentCacheTaskStartedResponse.ProtoReflect.Descriptor instead. func (*DownloadPersistentCacheTaskStartedResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{12} } func (x *DownloadPersistentCacheTaskStartedResponse) GetContentLength() uint64 { if x != nil { return x.ContentLength } return 0 } // DownloadPersistentCacheTaskResponse represents response of DownloadPersistentCacheTask. type DownloadPersistentCacheTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Host id. HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // Task id. TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Peer id. PeerId string `protobuf:"bytes,3,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` // Types that are assignable to Response: // // *DownloadPersistentCacheTaskResponse_DownloadPersistentCacheTaskStartedResponse // *DownloadPersistentCacheTaskResponse_DownloadPieceFinishedResponse Response isDownloadPersistentCacheTaskResponse_Response `protobuf_oneof:"response"` } func (x *DownloadPersistentCacheTaskResponse) Reset() { *x = DownloadPersistentCacheTaskResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadPersistentCacheTaskResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadPersistentCacheTaskResponse) ProtoMessage() {} func (x *DownloadPersistentCacheTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DownloadPersistentCacheTaskResponse.ProtoReflect.Descriptor instead. func (*DownloadPersistentCacheTaskResponse) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{13} } func (x *DownloadPersistentCacheTaskResponse) GetHostId() string { if x != nil { return x.HostId } return "" } func (x *DownloadPersistentCacheTaskResponse) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *DownloadPersistentCacheTaskResponse) GetPeerId() string { if x != nil { return x.PeerId } return "" } func (m *DownloadPersistentCacheTaskResponse) GetResponse() isDownloadPersistentCacheTaskResponse_Response { if m != nil { return m.Response } return nil } func (x *DownloadPersistentCacheTaskResponse) GetDownloadPersistentCacheTaskStartedResponse() *DownloadPersistentCacheTaskStartedResponse { if x, ok := x.GetResponse().(*DownloadPersistentCacheTaskResponse_DownloadPersistentCacheTaskStartedResponse); ok { return x.DownloadPersistentCacheTaskStartedResponse } return nil } func (x *DownloadPersistentCacheTaskResponse) GetDownloadPieceFinishedResponse() *DownloadPieceFinishedResponse { if x, ok := x.GetResponse().(*DownloadPersistentCacheTaskResponse_DownloadPieceFinishedResponse); ok { return x.DownloadPieceFinishedResponse } return nil } type isDownloadPersistentCacheTaskResponse_Response interface { isDownloadPersistentCacheTaskResponse_Response() } type DownloadPersistentCacheTaskResponse_DownloadPersistentCacheTaskStartedResponse struct { DownloadPersistentCacheTaskStartedResponse *DownloadPersistentCacheTaskStartedResponse `protobuf:"bytes,4,opt,name=download_persistent_cache_task_started_response,json=downloadPersistentCacheTaskStartedResponse,proto3,oneof"` } type DownloadPersistentCacheTaskResponse_DownloadPieceFinishedResponse struct { DownloadPieceFinishedResponse *DownloadPieceFinishedResponse `protobuf:"bytes,5,opt,name=download_piece_finished_response,json=downloadPieceFinishedResponse,proto3,oneof"` } func (*DownloadPersistentCacheTaskResponse_DownloadPersistentCacheTaskStartedResponse) isDownloadPersistentCacheTaskResponse_Response() { } func (*DownloadPersistentCacheTaskResponse_DownloadPieceFinishedResponse) isDownloadPersistentCacheTaskResponse_Response() { } // UploadPersistentCacheTaskRequest represents request of UploadPersistentCacheTask. type UploadPersistentCacheTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Upload file path of persistent cache task. Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // Replica count of the persistent persistent cache task. PersistentReplicaCount uint64 `protobuf:"varint,2,opt,name=persistent_replica_count,json=persistentReplicaCount,proto3" json:"persistent_replica_count,omitempty"` // Tag is used to distinguish different persistent cache tasks. Tag *string `protobuf:"bytes,3,opt,name=tag,proto3,oneof" json:"tag,omitempty"` // Application of task. Application *string `protobuf:"bytes,4,opt,name=application,proto3,oneof" json:"application,omitempty"` // TTL of the persistent cache task. Ttl *durationpb.Duration `protobuf:"bytes,5,opt,name=ttl,proto3" json:"ttl,omitempty"` // Upload timeout. Timeout *durationpb.Duration `protobuf:"bytes,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` } func (x *UploadPersistentCacheTaskRequest) Reset() { *x = UploadPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UploadPersistentCacheTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UploadPersistentCacheTaskRequest) ProtoMessage() {} func (x *UploadPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 UploadPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*UploadPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{14} } func (x *UploadPersistentCacheTaskRequest) GetPath() string { if x != nil { return x.Path } return "" } func (x *UploadPersistentCacheTaskRequest) GetPersistentReplicaCount() uint64 { if x != nil { return x.PersistentReplicaCount } return 0 } func (x *UploadPersistentCacheTaskRequest) GetTag() string { if x != nil && x.Tag != nil { return *x.Tag } return "" } func (x *UploadPersistentCacheTaskRequest) GetApplication() string { if x != nil && x.Application != nil { return *x.Application } return "" } func (x *UploadPersistentCacheTaskRequest) GetTtl() *durationpb.Duration { if x != nil { return x.Ttl } return nil } func (x *UploadPersistentCacheTaskRequest) GetTimeout() *durationpb.Duration { if x != nil { return x.Timeout } return nil } // StatPersistentCacheTaskRequest represents request of StatPersistentCacheTask. type StatPersistentCacheTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task id. TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` } func (x *StatPersistentCacheTaskRequest) Reset() { *x = StatPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatPersistentCacheTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatPersistentCacheTaskRequest) ProtoMessage() {} func (x *StatPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 StatPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*StatPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{15} } func (x *StatPersistentCacheTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } // DeletePersistentCacheTaskRequest represents request of DeletePersistentCacheTask. type DeletePersistentCacheTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Task id. TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` } func (x *DeletePersistentCacheTaskRequest) Reset() { *x = DeletePersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeletePersistentCacheTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeletePersistentCacheTaskRequest) ProtoMessage() {} func (x *DeletePersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DeletePersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DeletePersistentCacheTaskRequest) Descriptor() ([]byte, []int) { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{16} } func (x *DeletePersistentCacheTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } var File_pkg_apis_dfdaemon_v2_dfdaemon_proto protoreflect.FileDescriptor var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDesc = []byte{ 0x0a, 0x23, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x1a, 0x1f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x50, 0x0a, 0x13, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xcf, 0x02, 0x0a, 0x1b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2b, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x69, 0x65, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x06, 0x70, 0x69, 0x65, 0x63, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x1d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x69, 0x65, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x70, 0x69, 0x65, 0x63, 0x65, 0x22, 0xf5, 0x02, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x6f, 0x0a, 0x1e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x65, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x5c, 0x0a, 0x12, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x7d, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x15, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x69, 0x65, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x70, 0x69, 0x65, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x33, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0xac, 0x02, 0x0a, 0x22, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x53, 0x0a, 0x2a, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb4, 0x03, 0x0a, 0x23, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x9e, 0x01, 0x0a, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x2a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x41, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0xaa, 0x01, 0x0a, 0x22, 0x04, 0x08, 0x80, 0xf5, 0x24, 0x32, 0x02, 0x08, 0x3c, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x42, 0x0a, 0x1e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x32, 0xe2, 0x05, 0x0a, 0x0e, 0x44, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x55, 0x0a, 0x0c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x44, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2f, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2b, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x62, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xab, 0x06, 0x0a, 0x10, 0x44, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x55, 0x0a, 0x0c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x44, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x82, 0x01, 0x0a, 0x1b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2f, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x66, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2b, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x62, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2d, 0x5a, 0x2b, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescOnce sync.Once file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescData = file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDesc ) func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP() []byte { file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescOnce.Do(func() { file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescData) }) return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescData } var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_goTypes = []interface{}{ (*DownloadTaskRequest)(nil), // 0: dfdaemon.v2.DownloadTaskRequest (*DownloadTaskStartedResponse)(nil), // 1: dfdaemon.v2.DownloadTaskStartedResponse (*DownloadPieceFinishedResponse)(nil), // 2: dfdaemon.v2.DownloadPieceFinishedResponse (*DownloadTaskResponse)(nil), // 3: dfdaemon.v2.DownloadTaskResponse (*SyncPiecesRequest)(nil), // 4: dfdaemon.v2.SyncPiecesRequest (*SyncPiecesResponse)(nil), // 5: dfdaemon.v2.SyncPiecesResponse (*DownloadPieceRequest)(nil), // 6: dfdaemon.v2.DownloadPieceRequest (*DownloadPieceResponse)(nil), // 7: dfdaemon.v2.DownloadPieceResponse (*UploadTaskRequest)(nil), // 8: dfdaemon.v2.UploadTaskRequest (*StatTaskRequest)(nil), // 9: dfdaemon.v2.StatTaskRequest (*DeleteTaskRequest)(nil), // 10: dfdaemon.v2.DeleteTaskRequest (*DownloadPersistentCacheTaskRequest)(nil), // 11: dfdaemon.v2.DownloadPersistentCacheTaskRequest (*DownloadPersistentCacheTaskStartedResponse)(nil), // 12: dfdaemon.v2.DownloadPersistentCacheTaskStartedResponse (*DownloadPersistentCacheTaskResponse)(nil), // 13: dfdaemon.v2.DownloadPersistentCacheTaskResponse (*UploadPersistentCacheTaskRequest)(nil), // 14: dfdaemon.v2.UploadPersistentCacheTaskRequest (*StatPersistentCacheTaskRequest)(nil), // 15: dfdaemon.v2.StatPersistentCacheTaskRequest (*DeletePersistentCacheTaskRequest)(nil), // 16: dfdaemon.v2.DeletePersistentCacheTaskRequest nil, // 17: dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry (*v2.Download)(nil), // 18: common.v2.Download (*v2.Range)(nil), // 19: common.v2.Range (*v2.Piece)(nil), // 20: common.v2.Piece (*v2.Task)(nil), // 21: common.v2.Task (*durationpb.Duration)(nil), // 22: google.protobuf.Duration (*emptypb.Empty)(nil), // 23: google.protobuf.Empty (*v2.PersistentCacheTask)(nil), // 24: common.v2.PersistentCacheTask } var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_depIdxs = []int32{ 18, // 0: dfdaemon.v2.DownloadTaskRequest.download:type_name -> common.v2.Download 19, // 1: dfdaemon.v2.DownloadTaskStartedResponse.range:type_name -> common.v2.Range 17, // 2: dfdaemon.v2.DownloadTaskStartedResponse.response_header:type_name -> dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry 20, // 3: dfdaemon.v2.DownloadTaskStartedResponse.pieces:type_name -> common.v2.Piece 20, // 4: dfdaemon.v2.DownloadPieceFinishedResponse.piece:type_name -> common.v2.Piece 1, // 5: dfdaemon.v2.DownloadTaskResponse.download_task_started_response:type_name -> dfdaemon.v2.DownloadTaskStartedResponse 2, // 6: dfdaemon.v2.DownloadTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse 20, // 7: dfdaemon.v2.DownloadPieceResponse.piece:type_name -> common.v2.Piece 21, // 8: dfdaemon.v2.UploadTaskRequest.task:type_name -> common.v2.Task 22, // 9: dfdaemon.v2.DownloadPersistentCacheTaskRequest.timeout:type_name -> google.protobuf.Duration 12, // 10: dfdaemon.v2.DownloadPersistentCacheTaskResponse.download_persistent_cache_task_started_response:type_name -> dfdaemon.v2.DownloadPersistentCacheTaskStartedResponse 2, // 11: dfdaemon.v2.DownloadPersistentCacheTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse 22, // 12: dfdaemon.v2.UploadPersistentCacheTaskRequest.ttl:type_name -> google.protobuf.Duration 22, // 13: dfdaemon.v2.UploadPersistentCacheTaskRequest.timeout:type_name -> google.protobuf.Duration 0, // 14: dfdaemon.v2.DfdaemonUpload.DownloadTask:input_type -> dfdaemon.v2.DownloadTaskRequest 9, // 15: dfdaemon.v2.DfdaemonUpload.StatTask:input_type -> dfdaemon.v2.StatTaskRequest 10, // 16: dfdaemon.v2.DfdaemonUpload.DeleteTask:input_type -> dfdaemon.v2.DeleteTaskRequest 4, // 17: dfdaemon.v2.DfdaemonUpload.SyncPieces:input_type -> dfdaemon.v2.SyncPiecesRequest 6, // 18: dfdaemon.v2.DfdaemonUpload.DownloadPiece:input_type -> dfdaemon.v2.DownloadPieceRequest 11, // 19: dfdaemon.v2.DfdaemonUpload.DownloadPersistentCacheTask:input_type -> dfdaemon.v2.DownloadPersistentCacheTaskRequest 15, // 20: dfdaemon.v2.DfdaemonUpload.StatPersistentCacheTask:input_type -> dfdaemon.v2.StatPersistentCacheTaskRequest 16, // 21: dfdaemon.v2.DfdaemonUpload.DeletePersistentCacheTask:input_type -> dfdaemon.v2.DeletePersistentCacheTaskRequest 0, // 22: dfdaemon.v2.DfdaemonDownload.DownloadTask:input_type -> dfdaemon.v2.DownloadTaskRequest 8, // 23: dfdaemon.v2.DfdaemonDownload.UploadTask:input_type -> dfdaemon.v2.UploadTaskRequest 9, // 24: dfdaemon.v2.DfdaemonDownload.StatTask:input_type -> dfdaemon.v2.StatTaskRequest 10, // 25: dfdaemon.v2.DfdaemonDownload.DeleteTask:input_type -> dfdaemon.v2.DeleteTaskRequest 23, // 26: dfdaemon.v2.DfdaemonDownload.DeleteHost:input_type -> google.protobuf.Empty 11, // 27: dfdaemon.v2.DfdaemonDownload.DownloadPersistentCacheTask:input_type -> dfdaemon.v2.DownloadPersistentCacheTaskRequest 14, // 28: dfdaemon.v2.DfdaemonDownload.UploadPersistentCacheTask:input_type -> dfdaemon.v2.UploadPersistentCacheTaskRequest 15, // 29: dfdaemon.v2.DfdaemonDownload.StatPersistentCacheTask:input_type -> dfdaemon.v2.StatPersistentCacheTaskRequest 16, // 30: dfdaemon.v2.DfdaemonDownload.DeletePersistentCacheTask:input_type -> dfdaemon.v2.DeletePersistentCacheTaskRequest 3, // 31: dfdaemon.v2.DfdaemonUpload.DownloadTask:output_type -> dfdaemon.v2.DownloadTaskResponse 21, // 32: dfdaemon.v2.DfdaemonUpload.StatTask:output_type -> common.v2.Task 23, // 33: dfdaemon.v2.DfdaemonUpload.DeleteTask:output_type -> google.protobuf.Empty 5, // 34: dfdaemon.v2.DfdaemonUpload.SyncPieces:output_type -> dfdaemon.v2.SyncPiecesResponse 7, // 35: dfdaemon.v2.DfdaemonUpload.DownloadPiece:output_type -> dfdaemon.v2.DownloadPieceResponse 13, // 36: dfdaemon.v2.DfdaemonUpload.DownloadPersistentCacheTask:output_type -> dfdaemon.v2.DownloadPersistentCacheTaskResponse 24, // 37: dfdaemon.v2.DfdaemonUpload.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask 23, // 38: dfdaemon.v2.DfdaemonUpload.DeletePersistentCacheTask:output_type -> google.protobuf.Empty 3, // 39: dfdaemon.v2.DfdaemonDownload.DownloadTask:output_type -> dfdaemon.v2.DownloadTaskResponse 23, // 40: dfdaemon.v2.DfdaemonDownload.UploadTask:output_type -> google.protobuf.Empty 21, // 41: dfdaemon.v2.DfdaemonDownload.StatTask:output_type -> common.v2.Task 23, // 42: dfdaemon.v2.DfdaemonDownload.DeleteTask:output_type -> google.protobuf.Empty 23, // 43: dfdaemon.v2.DfdaemonDownload.DeleteHost:output_type -> google.protobuf.Empty 13, // 44: dfdaemon.v2.DfdaemonDownload.DownloadPersistentCacheTask:output_type -> dfdaemon.v2.DownloadPersistentCacheTaskResponse 24, // 45: dfdaemon.v2.DfdaemonDownload.UploadPersistentCacheTask:output_type -> common.v2.PersistentCacheTask 24, // 46: dfdaemon.v2.DfdaemonDownload.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask 23, // 47: dfdaemon.v2.DfdaemonDownload.DeletePersistentCacheTask:output_type -> google.protobuf.Empty 31, // [31:48] is the sub-list for method output_type 14, // [14:31] is the sub-list for method input_type 14, // [14:14] is the sub-list for extension type_name 14, // [14:14] is the sub-list for extension extendee 0, // [0:14] is the sub-list for field type_name } func init() { file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() } func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { if File_pkg_apis_dfdaemon_v2_dfdaemon_proto != nil { return } if !protoimpl.UnsafeEnabled { file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadTaskStartedResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadPieceFinishedResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadTaskResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncPiecesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncPiecesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadPieceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadPieceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadPersistentCacheTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadPersistentCacheTaskStartedResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadPersistentCacheTaskResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UploadPersistentCacheTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatPersistentCacheTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeletePersistentCacheTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[1].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[3].OneofWrappers = []interface{}{ (*DownloadTaskResponse_DownloadTaskStartedResponse)(nil), (*DownloadTaskResponse_DownloadPieceFinishedResponse)(nil), } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[11].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[13].OneofWrappers = []interface{}{ (*DownloadPersistentCacheTaskResponse_DownloadPersistentCacheTaskStartedResponse)(nil), (*DownloadPersistentCacheTaskResponse_DownloadPieceFinishedResponse)(nil), } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[14].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDesc, NumEnums: 0, NumMessages: 18, NumExtensions: 0, NumServices: 2, }, GoTypes: file_pkg_apis_dfdaemon_v2_dfdaemon_proto_goTypes, DependencyIndexes: file_pkg_apis_dfdaemon_v2_dfdaemon_proto_depIdxs, MessageInfos: file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes, }.Build() File_pkg_apis_dfdaemon_v2_dfdaemon_proto = out.File file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDesc = nil file_pkg_apis_dfdaemon_v2_dfdaemon_proto_goTypes = nil file_pkg_apis_dfdaemon_v2_dfdaemon_proto_depIdxs = nil }