diff --git a/Cargo.lock b/Cargo.lock index b230269d..c4674553 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "dragonfly-api" -version = "2.3.8" +version = "2.3.9" dependencies = [ "prost", "prost-types", diff --git a/Cargo.toml b/Cargo.toml index cffd17d3..7d3e9fe2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dragonfly-api" -version = "2.3.8" +version = "2.3.9" authors = ["Gaius "] edition = "2021" license = "Apache-2.0" diff --git a/pkg/apis/common/v2/common.pb.go b/pkg/apis/common/v2/common.pb.go index 6fa05497..9fde7e72 100644 --- a/pkg/apis/common/v2/common.pb.go +++ b/pkg/apis/common/v2/common.pb.go @@ -2777,6 +2777,10 @@ type Download struct { // Scheduling policy represents how the download interacts with the scheduler, // default is AUTO. SchedulingPolicy SchedulingPolicy `protobuf:"varint,35,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=common.v2.SchedulingPolicy" json:"scheduling_policy,omitempty"` + // Image is the OCI image that the task belongs to, such as the manifest, config or layer + // of the image. The peer records the task as referenced by the image, so deleting the + // image keeps the tasks still referenced by other images. + Image *Image `protobuf:"bytes,36,opt,name=image,proto3,oneof" json:"image,omitempty"` } func (x *Download) Reset() { @@ -3049,6 +3053,13 @@ func (x *Download) GetSchedulingPolicy() SchedulingPolicy { return SchedulingPolicy_AUTO } +func (x *Download) GetImage() *Image { + if x != nil { + return x.Image + } + return nil +} + // Object Storage related information. type ObjectStorage struct { state protoimpl.MessageState @@ -3423,6 +3434,65 @@ func (x *OpenCSG) GetBaseUrl() string { return "" } +// Image represents an OCI image. +type Image struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Reference is the canonical reference of the image, for example docker.io/library/nginx:latest + // or docker.io/library/nginx@sha256:xxx. The same image must use the same reference. + Reference string `protobuf:"bytes,1,opt,name=reference,proto3" json:"reference,omitempty"` + // Platform of the image in the format of os/arch, for example linux/amd64. + Platform string `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"` +} + +func (x *Image) Reset() { + *x = Image{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_apis_common_v2_common_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Image) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Image) ProtoMessage() {} + +func (x *Image) ProtoReflect() protoreflect.Message { + mi := &file_pkg_apis_common_v2_common_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 Image.ProtoReflect.Descriptor instead. +func (*Image) Descriptor() ([]byte, []int) { + return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{24} +} + +func (x *Image) GetReference() string { + if x != nil { + return x.Reference + } + return "" +} + +func (x *Image) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + // Range represents download range. type Range struct { state protoimpl.MessageState @@ -3438,7 +3508,7 @@ type Range struct { func (x *Range) Reset() { *x = Range{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_common_v2_common_proto_msgTypes[24] + mi := &file_pkg_apis_common_v2_common_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3451,7 +3521,7 @@ func (x *Range) String() string { func (*Range) ProtoMessage() {} func (x *Range) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_common_v2_common_proto_msgTypes[24] + mi := &file_pkg_apis_common_v2_common_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3464,7 +3534,7 @@ func (x *Range) ProtoReflect() protoreflect.Message { // Deprecated: Use Range.ProtoReflect.Descriptor instead. func (*Range) Descriptor() ([]byte, []int) { - return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{24} + return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{25} } func (x *Range) GetStart() uint64 { @@ -3510,7 +3580,7 @@ type Piece struct { func (x *Piece) Reset() { *x = Piece{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_common_v2_common_proto_msgTypes[25] + mi := &file_pkg_apis_common_v2_common_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3523,7 +3593,7 @@ func (x *Piece) String() string { func (*Piece) ProtoMessage() {} func (x *Piece) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_common_v2_common_proto_msgTypes[25] + mi := &file_pkg_apis_common_v2_common_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3536,7 +3606,7 @@ func (x *Piece) ProtoReflect() protoreflect.Message { // Deprecated: Use Piece.ProtoReflect.Descriptor instead. func (*Piece) Descriptor() ([]byte, []int) { - return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{25} + return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{26} } func (x *Piece) GetNumber() uint32 { @@ -4156,7 +4226,7 @@ var file_pkg_apis_common_v2_common_proto_rawDesc = []byte{ 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xe5, 0x11, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x9c, 0x12, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, @@ -4273,173 +4343,183 @@ var file_pkg_apis_common_v2_common_proto_rawDesc = []byte{ 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x40, 0x0a, 0x12, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x09, 0x0a, - 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, - 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, - 0x64, 0x66, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, - 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x5f, 0x69, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x65, 0x63, - 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, - 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x69, - 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x68, 0x75, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, - 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x73, 0x67, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x52, 0x0d, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x22, 0x8d, 0x05, 0x0a, - 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x27, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, - 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, - 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x03, 0x52, 0x0f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x34, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, - 0xd0, 0x01, 0x01, 0x48, 0x04, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x05, 0x52, 0x0e, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x36, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, - 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, - 0x01, 0xd0, 0x01, 0x01, 0x48, 0x06, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x64, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x07, 0x52, 0x0d, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, - 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, - 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, - 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x57, 0x0a, 0x04, - 0x48, 0x44, 0x46, 0x53, 0x12, 0x3a, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x46, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, - 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, - 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x9c, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, - 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, - 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x99, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x53, 0x47, - 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, - 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, - 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, - 0x22, 0x35, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbe, 0x04, 0x0a, 0x05, 0x50, 0x69, 0x65, 0x63, - 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, 0x2c, 0x0a, 0x09, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0xab, 0x01, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, 0x42, 0x8e, 0x01, 0x72, - 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, - 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x31, 0x3a, - 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x34, 0x30, 0x7d, 0x7c, - 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, - 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x3a, 0x5b, 0x61, - 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x38, 0x7d, 0x7c, 0x62, - 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, - 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, 0x5b, 0x61, 0x2d, 0x66, - 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x06, 0x64, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x01, 0x70, - 0x01, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x3e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, - 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x12, 0x52, 0x05, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 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, 0x09, 0x0a, 0x07, 0x5f, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, + 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, + 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, + 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x69, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x68, 0x75, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x65, 0x6e, + 0x5f, 0x63, 0x73, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4a, 0x04, + 0x08, 0x15, 0x10, 0x16, 0x52, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x22, 0x8d, 0x05, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x08, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x02, 0x52, 0x0b, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x11, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x48, 0x03, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x04, 0x52, 0x0c, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, + 0x01, 0x01, 0x48, 0x05, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x06, 0x52, 0x0d, 0x70, + 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x36, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, + 0xd0, 0x01, 0x01, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, + 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x22, 0x57, 0x0a, 0x04, 0x48, 0x44, 0x46, 0x53, 0x12, 0x3a, 0x0a, 0x10, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9d, 0x01, 0x0a, + 0x0b, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, + 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, + 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, + 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x9c, 0x01, 0x0a, + 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, + 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, + 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, + 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x99, 0x01, 0x0a, 0x07, + 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x53, 0x47, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, + 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, + 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, + 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x68, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x25, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0xfa, 0x42, 0x19, 0x72, 0x17, + 0x32, 0x15, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x2f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x22, 0x35, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbe, 0x04, 0x0a, 0x05, 0x50, 0x69, 0x65, + 0x63, 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, 0x2c, 0x0a, 0x09, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0xab, 0x01, 0x0a, 0x06, 0x64, 0x69, 0x67, + 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, 0x42, 0x8e, 0x01, + 0x72, 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, 0x61, 0x2d, 0x66, + 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x31, + 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x34, 0x30, 0x7d, + 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, + 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x3a, 0x5b, + 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x38, 0x7d, 0x7c, + 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, + 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, 0x5b, 0x61, 0x2d, + 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x06, + 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x01, + 0x70, 0x01, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, + 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x08, 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, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, + 0x02, 0x08, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, - 0x08, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, - 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x43, 0x0a, 0x09, 0x53, 0x69, 0x7a, 0x65, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x54, 0x49, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, - 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x10, 0x04, 0x2a, 0x49, 0x0a, - 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, - 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x45, 0x52, 0x53, 0x49, - 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x45, 0x52, 0x53, 0x49, - 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x03, 0x2a, 0x42, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x5f, - 0x54, 0x4f, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, - 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, - 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x5e, 0x0a, 0x08, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x30, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x31, 0x10, 0x01, - 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x32, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x33, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x35, 0x10, 0x05, - 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x36, 0x10, 0x06, 0x2a, 0x28, 0x0a, 0x10, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, - 0x57, 0x41, 0x59, 0x53, 0x10, 0x01, 0x42, 0x29, 0x5a, 0x27, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, + 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x43, 0x0a, 0x09, 0x53, 0x69, 0x7a, + 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x54, 0x49, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x10, 0x04, 0x2a, 0x49, + 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, + 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x45, 0x52, 0x53, + 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x45, 0x52, 0x53, + 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x02, 0x12, 0x09, + 0x0a, 0x05, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x03, 0x2a, 0x42, 0x0a, 0x0b, 0x54, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, + 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, + 0x0a, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x5e, 0x0a, + 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x30, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x31, 0x10, + 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x32, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x33, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x35, 0x10, + 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x36, 0x10, 0x06, 0x2a, 0x28, 0x0a, + 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, + 0x4c, 0x57, 0x41, 0x59, 0x53, 0x10, 0x01, 0x42, 0x29, 0x5a, 0x27, 0x64, 0x37, 0x79, 0x2e, 0x69, + 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4455,7 +4535,7 @@ func file_pkg_apis_common_v2_common_proto_rawDescGZIP() []byte { } var file_pkg_apis_common_v2_common_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_pkg_apis_common_v2_common_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_pkg_apis_common_v2_common_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_pkg_apis_common_v2_common_proto_goTypes = []interface{}{ (SizeScope)(0), // 0: common.v2.SizeScope (TaskType)(0), // 1: common.v2.TaskType @@ -4486,59 +4566,60 @@ var file_pkg_apis_common_v2_common_proto_goTypes = []interface{}{ (*HuggingFace)(nil), // 26: common.v2.HuggingFace (*ModelScope)(nil), // 27: common.v2.ModelScope (*OpenCSG)(nil), // 28: common.v2.OpenCSG - (*Range)(nil), // 29: common.v2.Range - (*Piece)(nil), // 30: common.v2.Piece - nil, // 31: common.v2.Task.RequestHeaderEntry - nil, // 32: common.v2.CacheTask.RequestHeaderEntry - nil, // 33: common.v2.Download.RequestHeaderEntry - (*durationpb.Duration)(nil), // 34: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp + (*Image)(nil), // 29: common.v2.Image + (*Range)(nil), // 30: common.v2.Range + (*Piece)(nil), // 31: common.v2.Piece + nil, // 32: common.v2.Task.RequestHeaderEntry + nil, // 33: common.v2.CacheTask.RequestHeaderEntry + nil, // 34: common.v2.Download.RequestHeaderEntry + (*durationpb.Duration)(nil), // 35: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 36: google.protobuf.Timestamp } var file_pkg_apis_common_v2_common_proto_depIdxs = []int32{ - 29, // 0: common.v2.Peer.range:type_name -> common.v2.Range + 30, // 0: common.v2.Peer.range:type_name -> common.v2.Range 3, // 1: common.v2.Peer.priority:type_name -> common.v2.Priority - 30, // 2: common.v2.Peer.pieces:type_name -> common.v2.Piece - 34, // 3: common.v2.Peer.cost:type_name -> google.protobuf.Duration + 31, // 2: common.v2.Peer.pieces:type_name -> common.v2.Piece + 35, // 3: common.v2.Peer.cost:type_name -> google.protobuf.Duration 9, // 4: common.v2.Peer.task:type_name -> common.v2.Task 13, // 5: common.v2.Peer.host:type_name -> common.v2.Host - 35, // 6: common.v2.Peer.created_at:type_name -> google.protobuf.Timestamp - 35, // 7: common.v2.Peer.updated_at:type_name -> google.protobuf.Timestamp - 29, // 8: common.v2.CachePeer.range:type_name -> common.v2.Range + 36, // 6: common.v2.Peer.created_at:type_name -> google.protobuf.Timestamp + 36, // 7: common.v2.Peer.updated_at:type_name -> google.protobuf.Timestamp + 30, // 8: common.v2.CachePeer.range:type_name -> common.v2.Range 3, // 9: common.v2.CachePeer.priority:type_name -> common.v2.Priority - 30, // 10: common.v2.CachePeer.pieces:type_name -> common.v2.Piece - 34, // 11: common.v2.CachePeer.cost:type_name -> google.protobuf.Duration + 31, // 10: common.v2.CachePeer.pieces:type_name -> common.v2.Piece + 35, // 11: common.v2.CachePeer.cost:type_name -> google.protobuf.Duration 10, // 12: common.v2.CachePeer.task:type_name -> common.v2.CacheTask 13, // 13: common.v2.CachePeer.host:type_name -> common.v2.Host - 35, // 14: common.v2.CachePeer.created_at:type_name -> google.protobuf.Timestamp - 35, // 15: common.v2.CachePeer.updated_at:type_name -> google.protobuf.Timestamp - 34, // 16: common.v2.PersistentPeer.cost:type_name -> google.protobuf.Duration + 36, // 14: common.v2.CachePeer.created_at:type_name -> google.protobuf.Timestamp + 36, // 15: common.v2.CachePeer.updated_at:type_name -> google.protobuf.Timestamp + 35, // 16: common.v2.PersistentPeer.cost:type_name -> google.protobuf.Duration 11, // 17: common.v2.PersistentPeer.task:type_name -> common.v2.PersistentTask 13, // 18: common.v2.PersistentPeer.host:type_name -> common.v2.Host - 35, // 19: common.v2.PersistentPeer.created_at:type_name -> google.protobuf.Timestamp - 35, // 20: common.v2.PersistentPeer.updated_at:type_name -> google.protobuf.Timestamp - 34, // 21: common.v2.PersistentCachePeer.cost:type_name -> google.protobuf.Duration + 36, // 19: common.v2.PersistentPeer.created_at:type_name -> google.protobuf.Timestamp + 36, // 20: common.v2.PersistentPeer.updated_at:type_name -> google.protobuf.Timestamp + 35, // 21: common.v2.PersistentCachePeer.cost:type_name -> google.protobuf.Duration 12, // 22: common.v2.PersistentCachePeer.task:type_name -> common.v2.PersistentCacheTask 13, // 23: common.v2.PersistentCachePeer.host:type_name -> common.v2.Host - 35, // 24: common.v2.PersistentCachePeer.created_at:type_name -> google.protobuf.Timestamp - 35, // 25: common.v2.PersistentCachePeer.updated_at:type_name -> google.protobuf.Timestamp + 36, // 24: common.v2.PersistentCachePeer.created_at:type_name -> google.protobuf.Timestamp + 36, // 25: common.v2.PersistentCachePeer.updated_at:type_name -> google.protobuf.Timestamp 1, // 26: common.v2.Task.type:type_name -> common.v2.TaskType - 31, // 27: common.v2.Task.request_header:type_name -> common.v2.Task.RequestHeaderEntry + 32, // 27: common.v2.Task.request_header:type_name -> common.v2.Task.RequestHeaderEntry 0, // 28: common.v2.Task.size_scope:type_name -> common.v2.SizeScope - 30, // 29: common.v2.Task.pieces:type_name -> common.v2.Piece - 35, // 30: common.v2.Task.created_at:type_name -> google.protobuf.Timestamp - 35, // 31: common.v2.Task.updated_at:type_name -> google.protobuf.Timestamp + 31, // 29: common.v2.Task.pieces:type_name -> common.v2.Piece + 36, // 30: common.v2.Task.created_at:type_name -> google.protobuf.Timestamp + 36, // 31: common.v2.Task.updated_at:type_name -> google.protobuf.Timestamp 1, // 32: common.v2.CacheTask.type:type_name -> common.v2.TaskType - 32, // 33: common.v2.CacheTask.request_header:type_name -> common.v2.CacheTask.RequestHeaderEntry + 33, // 33: common.v2.CacheTask.request_header:type_name -> common.v2.CacheTask.RequestHeaderEntry 0, // 34: common.v2.CacheTask.size_scope:type_name -> common.v2.SizeScope - 30, // 35: common.v2.CacheTask.pieces:type_name -> common.v2.Piece - 35, // 36: common.v2.CacheTask.created_at:type_name -> google.protobuf.Timestamp - 35, // 37: common.v2.CacheTask.updated_at:type_name -> google.protobuf.Timestamp - 34, // 38: common.v2.PersistentTask.ttl:type_name -> google.protobuf.Duration - 35, // 39: common.v2.PersistentTask.created_at:type_name -> google.protobuf.Timestamp - 35, // 40: common.v2.PersistentTask.updated_at:type_name -> google.protobuf.Timestamp - 34, // 41: common.v2.PersistentCacheTask.ttl:type_name -> google.protobuf.Duration - 35, // 42: common.v2.PersistentCacheTask.created_at:type_name -> google.protobuf.Timestamp - 35, // 43: common.v2.PersistentCacheTask.updated_at:type_name -> google.protobuf.Timestamp + 31, // 35: common.v2.CacheTask.pieces:type_name -> common.v2.Piece + 36, // 36: common.v2.CacheTask.created_at:type_name -> google.protobuf.Timestamp + 36, // 37: common.v2.CacheTask.updated_at:type_name -> google.protobuf.Timestamp + 35, // 38: common.v2.PersistentTask.ttl:type_name -> google.protobuf.Duration + 36, // 39: common.v2.PersistentTask.created_at:type_name -> google.protobuf.Timestamp + 36, // 40: common.v2.PersistentTask.updated_at:type_name -> google.protobuf.Timestamp + 35, // 41: common.v2.PersistentCacheTask.ttl:type_name -> google.protobuf.Duration + 36, // 42: common.v2.PersistentCacheTask.created_at:type_name -> google.protobuf.Timestamp + 36, // 43: common.v2.PersistentCacheTask.updated_at:type_name -> google.protobuf.Timestamp 14, // 44: common.v2.Host.cpu:type_name -> common.v2.CPU 17, // 45: common.v2.Host.memory:type_name -> common.v2.Memory 19, // 46: common.v2.Host.network:type_name -> common.v2.Network @@ -4548,25 +4629,26 @@ var file_pkg_apis_common_v2_common_proto_depIdxs = []int32{ 15, // 50: common.v2.CPU.cgroup:type_name -> common.v2.CgroupCPU 18, // 51: common.v2.Memory.cgroup:type_name -> common.v2.CgroupMemory 21, // 52: common.v2.Disk.cgroup:type_name -> common.v2.CgroupDisk - 29, // 53: common.v2.Download.range:type_name -> common.v2.Range + 30, // 53: common.v2.Download.range:type_name -> common.v2.Range 1, // 54: common.v2.Download.type:type_name -> common.v2.TaskType 3, // 55: common.v2.Download.priority:type_name -> common.v2.Priority - 33, // 56: common.v2.Download.request_header:type_name -> common.v2.Download.RequestHeaderEntry - 34, // 57: common.v2.Download.timeout:type_name -> google.protobuf.Duration + 34, // 56: common.v2.Download.request_header:type_name -> common.v2.Download.RequestHeaderEntry + 35, // 57: common.v2.Download.timeout:type_name -> google.protobuf.Duration 24, // 58: common.v2.Download.object_storage:type_name -> common.v2.ObjectStorage 25, // 59: common.v2.Download.hdfs:type_name -> common.v2.HDFS 26, // 60: common.v2.Download.hugging_face:type_name -> common.v2.HuggingFace 27, // 61: common.v2.Download.model_scope:type_name -> common.v2.ModelScope 28, // 62: common.v2.Download.open_csg:type_name -> common.v2.OpenCSG 4, // 63: common.v2.Download.scheduling_policy:type_name -> common.v2.SchedulingPolicy - 2, // 64: common.v2.Piece.traffic_type:type_name -> common.v2.TrafficType - 34, // 65: common.v2.Piece.cost:type_name -> google.protobuf.Duration - 35, // 66: common.v2.Piece.created_at:type_name -> google.protobuf.Timestamp - 67, // [67:67] is the sub-list for method output_type - 67, // [67:67] is the sub-list for method input_type - 67, // [67:67] is the sub-list for extension type_name - 67, // [67:67] is the sub-list for extension extendee - 0, // [0:67] is the sub-list for field type_name + 29, // 64: common.v2.Download.image:type_name -> common.v2.Image + 2, // 65: common.v2.Piece.traffic_type:type_name -> common.v2.TrafficType + 35, // 66: common.v2.Piece.cost:type_name -> google.protobuf.Duration + 36, // 67: common.v2.Piece.created_at:type_name -> google.protobuf.Timestamp + 68, // [68:68] is the sub-list for method output_type + 68, // [68:68] is the sub-list for method input_type + 68, // [68:68] is the sub-list for extension type_name + 68, // [68:68] is the sub-list for extension extendee + 0, // [0:68] is the sub-list for field type_name } func init() { file_pkg_apis_common_v2_common_proto_init() } @@ -4864,7 +4946,7 @@ func file_pkg_apis_common_v2_common_proto_init() { } } file_pkg_apis_common_v2_common_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Range); i { + switch v := v.(*Image); i { case 0: return &v.state case 1: @@ -4876,6 +4958,18 @@ func file_pkg_apis_common_v2_common_proto_init() { } } file_pkg_apis_common_v2_common_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Range); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_apis_common_v2_common_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Piece); i { case 0: return &v.state @@ -4905,14 +4999,14 @@ func file_pkg_apis_common_v2_common_proto_init() { file_pkg_apis_common_v2_common_proto_msgTypes[21].OneofWrappers = []interface{}{} file_pkg_apis_common_v2_common_proto_msgTypes[22].OneofWrappers = []interface{}{} file_pkg_apis_common_v2_common_proto_msgTypes[23].OneofWrappers = []interface{}{} - file_pkg_apis_common_v2_common_proto_msgTypes[25].OneofWrappers = []interface{}{} + file_pkg_apis_common_v2_common_proto_msgTypes[26].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_apis_common_v2_common_proto_rawDesc, NumEnums: 5, - NumMessages: 29, + NumMessages: 30, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/apis/common/v2/common.pb.validate.go b/pkg/apis/common/v2/common.pb.validate.go index d0e4d084..82a5e750 100644 --- a/pkg/apis/common/v2/common.pb.validate.go +++ b/pkg/apis/common/v2/common.pb.validate.go @@ -4132,6 +4132,39 @@ func (m *Download) validate(all bool) error { } + if m.Image != nil { + + if all { + switch v := interface{}(m.GetImage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DownloadValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DownloadValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImage()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DownloadValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + if len(errors) > 0 { return DownloadMultiError(errors) } @@ -5049,6 +5082,128 @@ var _ interface { ErrorName() string } = OpenCSGValidationError{} +// Validate checks the field values on Image with the rules defined in the +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *Image) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Image with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ImageMultiError, or nil if none found. +func (m *Image) ValidateAll() error { + return m.validate(true) +} + +func (m *Image) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetReference()) < 1 { + err := ImageValidationError{ + field: "Reference", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if !_Image_Platform_Pattern.MatchString(m.GetPlatform()) { + err := ImageValidationError{ + field: "Platform", + reason: "value does not match regex pattern \"^[a-z0-9]+/[a-z0-9]+$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ImageMultiError(errors) + } + + return nil +} + +// ImageMultiError is an error wrapping multiple validation errors returned by +// Image.ValidateAll() if the designated constraints aren't met. +type ImageMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImageMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImageMultiError) AllErrors() []error { return m } + +// ImageValidationError is the validation error returned by Image.Validate if +// the designated constraints aren't met. +type ImageValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ImageValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ImageValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ImageValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ImageValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ImageValidationError) ErrorName() string { return "ImageValidationError" } + +// Error satisfies the builtin error interface +func (e ImageValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sImage.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ImageValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ImageValidationError{} + +var _Image_Platform_Pattern = regexp.MustCompile("^[a-z0-9]+/[a-z0-9]+$") + // Validate checks the field values on Range with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/pkg/apis/common/v2/common.proto b/pkg/apis/common/v2/common.proto index 17223e19..62ba28b8 100644 --- a/pkg/apis/common/v2/common.proto +++ b/pkg/apis/common/v2/common.proto @@ -743,6 +743,10 @@ message Download { // Scheduling policy represents how the download interacts with the scheduler, // default is AUTO. SchedulingPolicy scheduling_policy = 35 [(validate.rules).enum.defined_only = true]; + // Image is the OCI image that the task belongs to, such as the manifest, config or layer + // of the image. The peer records the task as referenced by the image, so deleting the + // image keeps the tasks still referenced by other images. + optional Image image = 36; reserved 21; reserved "load_to_cache"; @@ -854,6 +858,15 @@ message OpenCSG { }]; } +// Image represents an OCI image. +message Image { + // Reference is the canonical reference of the image, for example docker.io/library/nginx:latest + // or docker.io/library/nginx@sha256:xxx. The same image must use the same reference. + string reference = 1 [(validate.rules).string.min_len = 1]; + // Platform of the image in the format of os/arch, for example linux/amd64. + string platform = 2 [(validate.rules).string.pattern = "^[a-z0-9]+/[a-z0-9]+$"]; +} + // Range represents download range. message Range { // Start of range. diff --git a/pkg/apis/dfdaemon/v2/dfdaemon.pb.go b/pkg/apis/dfdaemon/v2/dfdaemon.pb.go index 5945d6d1..28fce00b 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon.pb.go +++ b/pkg/apis/dfdaemon/v2/dfdaemon.pb.go @@ -1247,6 +1247,123 @@ func (x *DeleteLocalTaskRequest) GetRemoteIp() string { return "" } +// DeleteImageRequest represents request of DeleteImage. +type DeleteImageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Image to delete. + Image *v2.Image `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` + // Remote IP represents the IP address of the client initiating the delete request. + RemoteIp *string `protobuf:"bytes,2,opt,name=remote_ip,json=remoteIp,proto3,oneof" json:"remote_ip,omitempty"` +} + +func (x *DeleteImageRequest) Reset() { + *x = DeleteImageRequest{} + 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 *DeleteImageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteImageRequest) ProtoMessage() {} + +func (x *DeleteImageRequest) 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 DeleteImageRequest.ProtoReflect.Descriptor instead. +func (*DeleteImageRequest) Descriptor() ([]byte, []int) { + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{16} +} + +func (x *DeleteImageRequest) GetImage() *v2.Image { + if x != nil { + return x.Image + } + return nil +} + +func (x *DeleteImageRequest) GetRemoteIp() string { + if x != nil && x.RemoteIp != nil { + return *x.RemoteIp + } + return "" +} + +// DeleteImageResponse represents response of DeleteImage. +type DeleteImageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Deleted task ids, which are not referenced by other images in the peer. + DeletedTaskIds []string `protobuf:"bytes,1,rep,name=deleted_task_ids,json=deletedTaskIds,proto3" json:"deleted_task_ids,omitempty"` + // Retained task ids, which are still referenced by other images or still downloading + // in the peer. + RetainedTaskIds []string `protobuf:"bytes,2,rep,name=retained_task_ids,json=retainedTaskIds,proto3" json:"retained_task_ids,omitempty"` +} + +func (x *DeleteImageResponse) Reset() { + *x = DeleteImageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteImageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteImageResponse) ProtoMessage() {} + +func (x *DeleteImageResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_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 DeleteImageResponse.ProtoReflect.Descriptor instead. +func (*DeleteImageResponse) Descriptor() ([]byte, []int) { + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{17} +} + +func (x *DeleteImageResponse) GetDeletedTaskIds() []string { + if x != nil { + return x.DeletedTaskIds + } + return nil +} + +func (x *DeleteImageResponse) GetRetainedTaskIds() []string { + if x != nil { + return x.RetainedTaskIds + } + return nil +} + // DownloadCacheTaskRequest represents request of DownloadCacheTask. type DownloadCacheTaskRequest struct { state protoimpl.MessageState @@ -1317,7 +1434,7 @@ type DownloadCacheTaskRequest struct { func (x *DownloadCacheTaskRequest) Reset() { *x = DownloadCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[16] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1330,7 +1447,7 @@ func (x *DownloadCacheTaskRequest) String() string { func (*DownloadCacheTaskRequest) ProtoMessage() {} func (x *DownloadCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[16] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1343,7 +1460,7 @@ func (x *DownloadCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DownloadCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{16} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{18} } func (x *DownloadCacheTaskRequest) GetUrl() string { @@ -1530,7 +1647,7 @@ type DownloadCacheTaskStartedResponse struct { func (x *DownloadCacheTaskStartedResponse) Reset() { *x = DownloadCacheTaskStartedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[17] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1543,7 +1660,7 @@ func (x *DownloadCacheTaskStartedResponse) String() string { func (*DownloadCacheTaskStartedResponse) ProtoMessage() {} func (x *DownloadCacheTaskStartedResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[17] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1556,7 +1673,7 @@ func (x *DownloadCacheTaskStartedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCacheTaskStartedResponse.ProtoReflect.Descriptor instead. func (*DownloadCacheTaskStartedResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{17} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{19} } func (x *DownloadCacheTaskStartedResponse) GetContentLength() uint64 { @@ -1616,7 +1733,7 @@ type DownloadCacheTaskResponse struct { func (x *DownloadCacheTaskResponse) Reset() { *x = DownloadCacheTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1629,7 +1746,7 @@ func (x *DownloadCacheTaskResponse) String() string { func (*DownloadCacheTaskResponse) ProtoMessage() {} func (x *DownloadCacheTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1642,7 +1759,7 @@ func (x *DownloadCacheTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCacheTaskResponse.ProtoReflect.Descriptor instead. func (*DownloadCacheTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{18} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{20} } func (x *DownloadCacheTaskResponse) GetHostId() string { @@ -1722,7 +1839,7 @@ type SyncCachePiecesRequest struct { func (x *SyncCachePiecesRequest) Reset() { *x = SyncCachePiecesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[19] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1735,7 +1852,7 @@ func (x *SyncCachePiecesRequest) String() string { func (*SyncCachePiecesRequest) ProtoMessage() {} func (x *SyncCachePiecesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[19] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1748,7 +1865,7 @@ func (x *SyncCachePiecesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncCachePiecesRequest.ProtoReflect.Descriptor instead. func (*SyncCachePiecesRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{19} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{21} } func (x *SyncCachePiecesRequest) GetHostId() string { @@ -1789,7 +1906,7 @@ type SyncCachePiecesResponse struct { func (x *SyncCachePiecesResponse) Reset() { *x = SyncCachePiecesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[20] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1802,7 +1919,7 @@ func (x *SyncCachePiecesResponse) String() string { func (*SyncCachePiecesResponse) ProtoMessage() {} func (x *SyncCachePiecesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[20] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1815,7 +1932,7 @@ func (x *SyncCachePiecesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncCachePiecesResponse.ProtoReflect.Descriptor instead. func (*SyncCachePiecesResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{20} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{22} } func (x *SyncCachePiecesResponse) GetNumber() uint32 { @@ -1856,7 +1973,7 @@ type DownloadCachePieceRequest struct { func (x *DownloadCachePieceRequest) Reset() { *x = DownloadCachePieceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[21] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1869,7 +1986,7 @@ func (x *DownloadCachePieceRequest) String() string { func (*DownloadCachePieceRequest) ProtoMessage() {} func (x *DownloadCachePieceRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[21] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1882,7 +1999,7 @@ func (x *DownloadCachePieceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCachePieceRequest.ProtoReflect.Descriptor instead. func (*DownloadCachePieceRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{21} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{23} } func (x *DownloadCachePieceRequest) GetHostId() string { @@ -1921,7 +2038,7 @@ type DownloadCachePieceResponse struct { func (x *DownloadCachePieceResponse) Reset() { *x = DownloadCachePieceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[22] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1934,7 +2051,7 @@ func (x *DownloadCachePieceResponse) String() string { func (*DownloadCachePieceResponse) ProtoMessage() {} func (x *DownloadCachePieceResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[22] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1947,7 +2064,7 @@ func (x *DownloadCachePieceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCachePieceResponse.ProtoReflect.Descriptor instead. func (*DownloadCachePieceResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{22} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{24} } func (x *DownloadCachePieceResponse) GetPiece() *v2.Piece { @@ -1979,7 +2096,7 @@ type StatCacheTaskRequest struct { func (x *StatCacheTaskRequest) Reset() { *x = StatCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[23] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1992,7 +2109,7 @@ func (x *StatCacheTaskRequest) String() string { func (*StatCacheTaskRequest) ProtoMessage() {} func (x *StatCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[23] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2005,7 +2122,7 @@ func (x *StatCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatCacheTaskRequest.ProtoReflect.Descriptor instead. func (*StatCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{23} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{25} } func (x *StatCacheTaskRequest) GetTaskId() string { @@ -2037,7 +2154,7 @@ type DeleteCacheTaskRequest struct { func (x *DeleteCacheTaskRequest) Reset() { *x = DeleteCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[24] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2050,7 +2167,7 @@ func (x *DeleteCacheTaskRequest) String() string { func (*DeleteCacheTaskRequest) ProtoMessage() {} func (x *DeleteCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[24] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2063,7 +2180,7 @@ func (x *DeleteCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DeleteCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{24} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{26} } func (x *DeleteCacheTaskRequest) GetTaskId() string { @@ -2125,7 +2242,7 @@ type DownloadPersistentTaskRequest struct { func (x *DownloadPersistentTaskRequest) Reset() { *x = DownloadPersistentTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[25] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2138,7 +2255,7 @@ func (x *DownloadPersistentTaskRequest) String() string { func (*DownloadPersistentTaskRequest) ProtoMessage() {} func (x *DownloadPersistentTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[25] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2151,7 +2268,7 @@ func (x *DownloadPersistentTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadPersistentTaskRequest.ProtoReflect.Descriptor instead. func (*DownloadPersistentTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{25} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{27} } func (x *DownloadPersistentTaskRequest) GetUrl() string { @@ -2237,7 +2354,7 @@ type DownloadPersistentTaskStartedResponse struct { func (x *DownloadPersistentTaskStartedResponse) Reset() { *x = DownloadPersistentTaskStartedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[26] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2250,7 +2367,7 @@ func (x *DownloadPersistentTaskStartedResponse) String() string { func (*DownloadPersistentTaskStartedResponse) ProtoMessage() {} func (x *DownloadPersistentTaskStartedResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[26] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2263,7 +2380,7 @@ func (x *DownloadPersistentTaskStartedResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use DownloadPersistentTaskStartedResponse.ProtoReflect.Descriptor instead. func (*DownloadPersistentTaskStartedResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{26} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{28} } func (x *DownloadPersistentTaskStartedResponse) GetContentLength() uint64 { @@ -2295,7 +2412,7 @@ type DownloadPersistentTaskResponse struct { func (x *DownloadPersistentTaskResponse) Reset() { *x = DownloadPersistentTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2308,7 +2425,7 @@ func (x *DownloadPersistentTaskResponse) String() string { func (*DownloadPersistentTaskResponse) ProtoMessage() {} func (x *DownloadPersistentTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2321,7 +2438,7 @@ func (x *DownloadPersistentTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadPersistentTaskResponse.ProtoReflect.Descriptor instead. func (*DownloadPersistentTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{27} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{29} } func (x *DownloadPersistentTaskResponse) GetHostId() string { @@ -2412,7 +2529,7 @@ type UploadPersistentTaskRequest struct { func (x *UploadPersistentTaskRequest) Reset() { *x = UploadPersistentTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[28] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2425,7 +2542,7 @@ func (x *UploadPersistentTaskRequest) String() string { func (*UploadPersistentTaskRequest) ProtoMessage() {} func (x *UploadPersistentTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[28] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2438,7 +2555,7 @@ func (x *UploadPersistentTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadPersistentTaskRequest.ProtoReflect.Descriptor instead. func (*UploadPersistentTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{28} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{30} } func (x *UploadPersistentTaskRequest) GetUrl() string { @@ -2510,7 +2627,7 @@ type UpdatePersistentTaskRequest struct { func (x *UpdatePersistentTaskRequest) Reset() { *x = UpdatePersistentTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2523,7 +2640,7 @@ func (x *UpdatePersistentTaskRequest) String() string { func (*UpdatePersistentTaskRequest) ProtoMessage() {} func (x *UpdatePersistentTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2536,7 +2653,7 @@ func (x *UpdatePersistentTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePersistentTaskRequest.ProtoReflect.Descriptor instead. func (*UpdatePersistentTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{29} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{31} } func (x *UpdatePersistentTaskRequest) GetTaskId() string { @@ -2575,7 +2692,7 @@ type StatPersistentTaskRequest struct { func (x *StatPersistentTaskRequest) Reset() { *x = StatPersistentTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[30] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2588,7 +2705,7 @@ func (x *StatPersistentTaskRequest) String() string { func (*StatPersistentTaskRequest) ProtoMessage() {} func (x *StatPersistentTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[30] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2601,7 +2718,7 @@ func (x *StatPersistentTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPersistentTaskRequest.ProtoReflect.Descriptor instead. func (*StatPersistentTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{30} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{32} } func (x *StatPersistentTaskRequest) GetTaskId() string { @@ -2633,7 +2750,7 @@ type StatLocalPersistentTaskRequest struct { func (x *StatLocalPersistentTaskRequest) Reset() { *x = StatLocalPersistentTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[31] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2646,7 +2763,7 @@ func (x *StatLocalPersistentTaskRequest) String() string { func (*StatLocalPersistentTaskRequest) ProtoMessage() {} func (x *StatLocalPersistentTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[31] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2659,7 +2776,7 @@ func (x *StatLocalPersistentTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatLocalPersistentTaskRequest.ProtoReflect.Descriptor instead. func (*StatLocalPersistentTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{31} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{33} } func (x *StatLocalPersistentTaskRequest) GetTaskId() string { @@ -2711,7 +2828,7 @@ type StatLocalPersistentTaskResponse struct { func (x *StatLocalPersistentTaskResponse) Reset() { *x = StatLocalPersistentTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[32] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2724,7 +2841,7 @@ func (x *StatLocalPersistentTaskResponse) String() string { func (*StatLocalPersistentTaskResponse) ProtoMessage() {} func (x *StatLocalPersistentTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[32] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2737,7 +2854,7 @@ func (x *StatLocalPersistentTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatLocalPersistentTaskResponse.ProtoReflect.Descriptor instead. func (*StatLocalPersistentTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{32} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{34} } func (x *StatLocalPersistentTaskResponse) GetTaskId() string { @@ -2830,7 +2947,7 @@ type ListLocalPersistentTasksRequest struct { func (x *ListLocalPersistentTasksRequest) Reset() { *x = ListLocalPersistentTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[33] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2843,7 +2960,7 @@ func (x *ListLocalPersistentTasksRequest) String() string { func (*ListLocalPersistentTasksRequest) ProtoMessage() {} func (x *ListLocalPersistentTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[33] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2856,7 +2973,7 @@ func (x *ListLocalPersistentTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListLocalPersistentTasksRequest.ProtoReflect.Descriptor instead. func (*ListLocalPersistentTasksRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{33} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{35} } func (x *ListLocalPersistentTasksRequest) GetRemoteIp() string { @@ -2879,7 +2996,7 @@ type ListLocalPersistentTasksResponse struct { func (x *ListLocalPersistentTasksResponse) Reset() { *x = ListLocalPersistentTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[34] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2892,7 +3009,7 @@ func (x *ListLocalPersistentTasksResponse) String() string { func (*ListLocalPersistentTasksResponse) ProtoMessage() {} func (x *ListLocalPersistentTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[34] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2905,7 +3022,7 @@ func (x *ListLocalPersistentTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListLocalPersistentTasksResponse.ProtoReflect.Descriptor instead. func (*ListLocalPersistentTasksResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{34} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{36} } func (x *ListLocalPersistentTasksResponse) GetTasks() []*StatLocalPersistentTaskResponse { @@ -2930,7 +3047,7 @@ type DeletePersistentTaskRequest struct { func (x *DeletePersistentTaskRequest) Reset() { *x = DeletePersistentTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[35] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2943,7 +3060,7 @@ func (x *DeletePersistentTaskRequest) String() string { func (*DeletePersistentTaskRequest) ProtoMessage() {} func (x *DeletePersistentTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[35] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2956,7 +3073,7 @@ func (x *DeletePersistentTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePersistentTaskRequest.ProtoReflect.Descriptor instead. func (*DeletePersistentTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{35} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{37} } func (x *DeletePersistentTaskRequest) GetTaskId() string { @@ -2990,7 +3107,7 @@ type SyncPersistentPiecesRequest struct { func (x *SyncPersistentPiecesRequest) Reset() { *x = SyncPersistentPiecesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[36] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3003,7 +3120,7 @@ func (x *SyncPersistentPiecesRequest) String() string { func (*SyncPersistentPiecesRequest) ProtoMessage() {} func (x *SyncPersistentPiecesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[36] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3016,7 +3133,7 @@ func (x *SyncPersistentPiecesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncPersistentPiecesRequest.ProtoReflect.Descriptor instead. func (*SyncPersistentPiecesRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{36} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{38} } func (x *SyncPersistentPiecesRequest) GetHostId() string { @@ -3064,7 +3181,7 @@ type SyncPersistentPiecesResponse struct { func (x *SyncPersistentPiecesResponse) Reset() { *x = SyncPersistentPiecesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[37] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3077,7 +3194,7 @@ func (x *SyncPersistentPiecesResponse) String() string { func (*SyncPersistentPiecesResponse) ProtoMessage() {} func (x *SyncPersistentPiecesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[37] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3090,7 +3207,7 @@ func (x *SyncPersistentPiecesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncPersistentPiecesResponse.ProtoReflect.Descriptor instead. func (*SyncPersistentPiecesResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{37} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{39} } func (x *SyncPersistentPiecesResponse) GetNumber() uint32 { @@ -3179,7 +3296,7 @@ type DownloadPersistentCacheTaskRequest struct { func (x *DownloadPersistentCacheTaskRequest) Reset() { *x = DownloadPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[38] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3192,7 +3309,7 @@ func (x *DownloadPersistentCacheTaskRequest) String() string { func (*DownloadPersistentCacheTaskRequest) ProtoMessage() {} func (x *DownloadPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[38] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3205,7 +3322,7 @@ func (x *DownloadPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message // Deprecated: Use DownloadPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DownloadPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{38} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{40} } func (x *DownloadPersistentCacheTaskRequest) GetTaskId() string { @@ -3298,7 +3415,7 @@ type DownloadPersistentCacheTaskStartedResponse struct { func (x *DownloadPersistentCacheTaskStartedResponse) Reset() { *x = DownloadPersistentCacheTaskStartedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[39] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3311,7 +3428,7 @@ func (x *DownloadPersistentCacheTaskStartedResponse) String() string { func (*DownloadPersistentCacheTaskStartedResponse) ProtoMessage() {} func (x *DownloadPersistentCacheTaskStartedResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[39] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3324,7 +3441,7 @@ func (x *DownloadPersistentCacheTaskStartedResponse) ProtoReflect() protoreflect // Deprecated: Use DownloadPersistentCacheTaskStartedResponse.ProtoReflect.Descriptor instead. func (*DownloadPersistentCacheTaskStartedResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{39} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{41} } func (x *DownloadPersistentCacheTaskStartedResponse) GetContentLength() uint64 { @@ -3356,7 +3473,7 @@ type DownloadPersistentCacheTaskResponse struct { func (x *DownloadPersistentCacheTaskResponse) Reset() { *x = DownloadPersistentCacheTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3369,7 +3486,7 @@ func (x *DownloadPersistentCacheTaskResponse) String() string { func (*DownloadPersistentCacheTaskResponse) ProtoMessage() {} func (x *DownloadPersistentCacheTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3382,7 +3499,7 @@ func (x *DownloadPersistentCacheTaskResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use DownloadPersistentCacheTaskResponse.ProtoReflect.Descriptor instead. func (*DownloadPersistentCacheTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{40} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{42} } func (x *DownloadPersistentCacheTaskResponse) GetHostId() string { @@ -3476,7 +3593,7 @@ type UploadPersistentCacheTaskRequest struct { func (x *UploadPersistentCacheTaskRequest) Reset() { *x = UploadPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[41] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3489,7 +3606,7 @@ func (x *UploadPersistentCacheTaskRequest) String() string { func (*UploadPersistentCacheTaskRequest) ProtoMessage() {} func (x *UploadPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[41] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3502,7 +3619,7 @@ func (x *UploadPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*UploadPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{41} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{43} } func (x *UploadPersistentCacheTaskRequest) GetContentForCalculatingTaskId() string { @@ -3588,7 +3705,7 @@ type UpdatePersistentCacheTaskRequest struct { func (x *UpdatePersistentCacheTaskRequest) Reset() { *x = UpdatePersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3601,7 +3718,7 @@ func (x *UpdatePersistentCacheTaskRequest) String() string { func (*UpdatePersistentCacheTaskRequest) ProtoMessage() {} func (x *UpdatePersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3614,7 +3731,7 @@ func (x *UpdatePersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*UpdatePersistentCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{42} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{44} } func (x *UpdatePersistentCacheTaskRequest) GetTaskId() string { @@ -3653,7 +3770,7 @@ type StatPersistentCacheTaskRequest struct { func (x *StatPersistentCacheTaskRequest) Reset() { *x = StatPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[43] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3666,7 +3783,7 @@ func (x *StatPersistentCacheTaskRequest) String() string { func (*StatPersistentCacheTaskRequest) ProtoMessage() {} func (x *StatPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[43] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3679,7 +3796,7 @@ func (x *StatPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*StatPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{43} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{45} } func (x *StatPersistentCacheTaskRequest) GetTaskId() string { @@ -3711,7 +3828,7 @@ type StatLocalPersistentCacheTaskRequest struct { func (x *StatLocalPersistentCacheTaskRequest) Reset() { *x = StatLocalPersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[44] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3724,7 +3841,7 @@ func (x *StatLocalPersistentCacheTaskRequest) String() string { func (*StatLocalPersistentCacheTaskRequest) ProtoMessage() {} func (x *StatLocalPersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[44] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3737,7 +3854,7 @@ func (x *StatLocalPersistentCacheTaskRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use StatLocalPersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*StatLocalPersistentCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{44} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{46} } func (x *StatLocalPersistentCacheTaskRequest) GetTaskId() string { @@ -3789,7 +3906,7 @@ type StatLocalPersistentCacheTaskResponse struct { func (x *StatLocalPersistentCacheTaskResponse) Reset() { *x = StatLocalPersistentCacheTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[45] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3802,7 +3919,7 @@ func (x *StatLocalPersistentCacheTaskResponse) String() string { func (*StatLocalPersistentCacheTaskResponse) ProtoMessage() {} func (x *StatLocalPersistentCacheTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[45] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3815,7 +3932,7 @@ func (x *StatLocalPersistentCacheTaskResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use StatLocalPersistentCacheTaskResponse.ProtoReflect.Descriptor instead. func (*StatLocalPersistentCacheTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{45} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{47} } func (x *StatLocalPersistentCacheTaskResponse) GetTaskId() string { @@ -3908,7 +4025,7 @@ type ListLocalPersistentCacheTasksRequest struct { func (x *ListLocalPersistentCacheTasksRequest) Reset() { *x = ListLocalPersistentCacheTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[46] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3921,7 +4038,7 @@ func (x *ListLocalPersistentCacheTasksRequest) String() string { func (*ListLocalPersistentCacheTasksRequest) ProtoMessage() {} func (x *ListLocalPersistentCacheTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[46] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3934,7 +4051,7 @@ func (x *ListLocalPersistentCacheTasksRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ListLocalPersistentCacheTasksRequest.ProtoReflect.Descriptor instead. func (*ListLocalPersistentCacheTasksRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{46} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{48} } func (x *ListLocalPersistentCacheTasksRequest) GetRemoteIp() string { @@ -3957,7 +4074,7 @@ type ListLocalPersistentCacheTasksResponse struct { func (x *ListLocalPersistentCacheTasksResponse) Reset() { *x = ListLocalPersistentCacheTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[47] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3970,7 +4087,7 @@ func (x *ListLocalPersistentCacheTasksResponse) String() string { func (*ListLocalPersistentCacheTasksResponse) ProtoMessage() {} func (x *ListLocalPersistentCacheTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[47] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3983,7 +4100,7 @@ func (x *ListLocalPersistentCacheTasksResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use ListLocalPersistentCacheTasksResponse.ProtoReflect.Descriptor instead. func (*ListLocalPersistentCacheTasksResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{47} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{49} } func (x *ListLocalPersistentCacheTasksResponse) GetTasks() []*StatLocalPersistentCacheTaskResponse { @@ -4008,7 +4125,7 @@ type DeletePersistentCacheTaskRequest struct { func (x *DeletePersistentCacheTaskRequest) Reset() { *x = DeletePersistentCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[48] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4021,7 +4138,7 @@ func (x *DeletePersistentCacheTaskRequest) String() string { func (*DeletePersistentCacheTaskRequest) ProtoMessage() {} func (x *DeletePersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[48] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4034,7 +4151,7 @@ func (x *DeletePersistentCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePersistentCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DeletePersistentCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{48} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{50} } func (x *DeletePersistentCacheTaskRequest) GetTaskId() string { @@ -4068,7 +4185,7 @@ type SyncPersistentCachePiecesRequest struct { func (x *SyncPersistentCachePiecesRequest) Reset() { *x = SyncPersistentCachePiecesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[49] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4081,7 +4198,7 @@ func (x *SyncPersistentCachePiecesRequest) String() string { func (*SyncPersistentCachePiecesRequest) ProtoMessage() {} func (x *SyncPersistentCachePiecesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[49] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4094,7 +4211,7 @@ func (x *SyncPersistentCachePiecesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncPersistentCachePiecesRequest.ProtoReflect.Descriptor instead. func (*SyncPersistentCachePiecesRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{49} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{51} } func (x *SyncPersistentCachePiecesRequest) GetHostId() string { @@ -4142,7 +4259,7 @@ type SyncPersistentCachePiecesResponse struct { func (x *SyncPersistentCachePiecesResponse) Reset() { *x = SyncPersistentCachePiecesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[50] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4155,7 +4272,7 @@ func (x *SyncPersistentCachePiecesResponse) String() string { func (*SyncPersistentCachePiecesResponse) ProtoMessage() {} func (x *SyncPersistentCachePiecesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[50] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4168,7 +4285,7 @@ func (x *SyncPersistentCachePiecesResponse) ProtoReflect() protoreflect.Message // Deprecated: Use SyncPersistentCachePiecesResponse.ProtoReflect.Descriptor instead. func (*SyncPersistentCachePiecesResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{50} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{52} } func (x *SyncPersistentCachePiecesResponse) GetNumber() uint32 { @@ -4228,7 +4345,7 @@ type SyncHostRequest struct { func (x *SyncHostRequest) Reset() { *x = SyncHostRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[51] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4241,7 +4358,7 @@ func (x *SyncHostRequest) String() string { func (*SyncHostRequest) ProtoMessage() {} func (x *SyncHostRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[51] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4254,7 +4371,7 @@ func (x *SyncHostRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncHostRequest.ProtoReflect.Descriptor instead. func (*SyncHostRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{51} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{53} } func (x *SyncHostRequest) GetHostId() string { @@ -4288,7 +4405,7 @@ type IBVerbsQueuePairEndpoint struct { func (x *IBVerbsQueuePairEndpoint) Reset() { *x = IBVerbsQueuePairEndpoint{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[52] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4301,7 +4418,7 @@ func (x *IBVerbsQueuePairEndpoint) String() string { func (*IBVerbsQueuePairEndpoint) ProtoMessage() {} func (x *IBVerbsQueuePairEndpoint) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[52] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4314,7 +4431,7 @@ func (x *IBVerbsQueuePairEndpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use IBVerbsQueuePairEndpoint.ProtoReflect.Descriptor instead. func (*IBVerbsQueuePairEndpoint) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{52} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{54} } func (x *IBVerbsQueuePairEndpoint) GetNum() uint32 { @@ -4351,7 +4468,7 @@ type ExchangeIBVerbsQueuePairEndpointRequest struct { func (x *ExchangeIBVerbsQueuePairEndpointRequest) Reset() { *x = ExchangeIBVerbsQueuePairEndpointRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[53] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4364,7 +4481,7 @@ func (x *ExchangeIBVerbsQueuePairEndpointRequest) String() string { func (*ExchangeIBVerbsQueuePairEndpointRequest) ProtoMessage() {} func (x *ExchangeIBVerbsQueuePairEndpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[53] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4377,7 +4494,7 @@ func (x *ExchangeIBVerbsQueuePairEndpointRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ExchangeIBVerbsQueuePairEndpointRequest.ProtoReflect.Descriptor instead. func (*ExchangeIBVerbsQueuePairEndpointRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{53} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{55} } func (x *ExchangeIBVerbsQueuePairEndpointRequest) GetEndpoint() *IBVerbsQueuePairEndpoint { @@ -4400,7 +4517,7 @@ type ExchangeIBVerbsQueuePairEndpointResponse struct { func (x *ExchangeIBVerbsQueuePairEndpointResponse) Reset() { *x = ExchangeIBVerbsQueuePairEndpointResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[54] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4413,7 +4530,7 @@ func (x *ExchangeIBVerbsQueuePairEndpointResponse) String() string { func (*ExchangeIBVerbsQueuePairEndpointResponse) ProtoMessage() {} func (x *ExchangeIBVerbsQueuePairEndpointResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[54] + mi := &file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4426,7 +4543,7 @@ func (x *ExchangeIBVerbsQueuePairEndpointResponse) ProtoReflect() protoreflect.M // Deprecated: Use ExchangeIBVerbsQueuePairEndpointResponse.ProtoReflect.Descriptor instead. func (*ExchangeIBVerbsQueuePairEndpointResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{54} + return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP(), []int{56} } func (x *ExchangeIBVerbsQueuePairEndpointResponse) GetEndpoint() *IBVerbsQueuePairEndpoint { @@ -4702,927 +4819,952 @@ var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDesc = []byte{ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, - 0xe6, 0x0b, 0x0a, 0x18, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, - 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x64, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, 0x42, 0x8e, 0x01, - 0x72, 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, 0x61, 0x2d, 0x66, - 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x31, - 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x34, 0x30, 0x7d, - 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, - 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x3a, 0x5b, - 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x38, 0x7d, 0x7c, - 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, - 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, 0x5b, 0x61, 0x2d, - 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x48, 0x00, - 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x05, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x05, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, - 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x38, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x82, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, + 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x5f, 0x69, 0x70, 0x22, 0x6b, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x64, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, + 0x73, 0x22, 0xe6, 0x0b, 0x0a, 0x18, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, 0x42, + 0x8e, 0x01, 0x72, 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, 0x61, + 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, 0x68, + 0x61, 0x31, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x34, + 0x30, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, + 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, + 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x38, + 0x7d, 0x7c, 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, + 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, 0x5b, + 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, 0x01, + 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, + 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, + 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, + 0x03, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x74, 0x61, + 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0c, 0x70, + 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x32, 0x07, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, + 0x04, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, + 0x01, 0x01, 0x48, 0x05, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, + 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0c, + 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, + 0x06, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, + 0x74, 0x6f, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x6e, 0x65, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x07, 0x52, 0x0d, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x28, 0x0a, 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, + 0x08, 0x52, 0x04, 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, + 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x69, 0x73, 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x6e, + 0x65, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x69, 0x65, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x1f, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x09, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x6f, 0x72, + 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, + 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, + 0xd0, 0x01, 0x01, 0x48, 0x0a, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 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, + 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0xfa, 0x02, 0x0a, 0x20, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x69, 0x65, - 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x0c, 0xfa, 0x42, 0x09, 0x32, 0x07, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x04, 0x52, - 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, - 0x48, 0x05, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0c, 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, 0x06, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x16, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6e, - 0x65, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 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, 0x6a, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 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, 0x8a, 0x03, 0x0a, 0x19, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 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, 0x7f, 0x0a, 0x24, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 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, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, + 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 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, 0x20, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 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, 0xab, 0x01, 0x0a, 0x16, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, + 0x68, 0x65, 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, 0x4d, 0x0a, 0x1e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 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, 0x1b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x22, 0x61, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x82, 0x01, 0x0a, 0x19, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x8c, 0x02, 0x0a, 0x1a, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x12, 0xb0, 0x01, 0x0a, 0x06, + 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, + 0x42, 0x8e, 0x01, 0x72, 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, + 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, + 0x68, 0x61, 0x31, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, + 0x34, 0x30, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, + 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, + 0x32, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, + 0x38, 0x7d, 0x7c, 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, + 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, + 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x53, 0x74, 0x61, + 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, + 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, + 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, + 0x76, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x2c, 0x0a, 0x09, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0xff, 0x03, 0x0a, 0x1d, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, + 0xd0, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3f, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x07, 0x52, 0x0d, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, - 0x0a, 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, 0x08, 0x52, - 0x04, 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x70, - 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, - 0x73, 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x65, - 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x1f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x09, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x43, 0x61, - 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, - 0x01, 0x48, 0x0a, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x1a, 0x40, - 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 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, 0x0f, 0x0a, - 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0xfa, 0x02, 0x0a, 0x20, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 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, 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, 0x6a, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x64, 0x66, 0x64, - 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 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, 0x8a, 0x03, 0x0a, 0x19, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 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, + 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 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, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x69, + 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1b, 0x0a, 0x06, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, + 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x4e, 0x0a, 0x25, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x9a, 0x03, 0x0a, 0x1e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 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, 0x8e, 0x01, 0x0a, 0x29, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x32, 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, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x25, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 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, 0x0a, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x03, 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x49, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x38, 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, 0x04, 0x20, 0x01, 0x28, 0x04, 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, 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, + 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x08, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x9b, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 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, 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, + 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x69, 0x70, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 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, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x7e, + 0x0a, 0x1e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 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, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x8e, + 0x05, 0x0a, 0x1f, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 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, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, + 0x6c, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x32, 0x07, 0x28, 0x80, + 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, + 0x08, 0x01, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, + 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x48, 0x02, 0x52, 0x08, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0b, 0x66, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x48, 0x03, 0x52, 0x0a, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, + 0x5d, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x66, + 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x7b, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 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, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, + 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x69, 0x70, 0x22, 0xa5, 0x01, 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 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, 0x7f, 0x0a, 0x24, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 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, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 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, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 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, 0xab, 0x01, 0x0a, 0x16, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, - 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, 0x4d, 0x0a, 0x1e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 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, 0x1b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x22, 0x61, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x82, 0x01, 0x0a, 0x19, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x8c, 0x02, 0x0a, 0x1a, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x64, 0x69, - 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, 0x42, 0x8e, - 0x01, 0x72, 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, 0x61, 0x2d, - 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, 0x68, 0x61, - 0x31, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x34, 0x30, - 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, - 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x3a, - 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x38, 0x7d, - 0x7c, 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, - 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, 0x5b, 0x61, - 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x48, - 0x00, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x53, 0x74, 0x61, 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, - 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x76, 0x0a, - 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0xff, 0x03, 0x0a, 0x1d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, - 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3f, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 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, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x64, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, - 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x4e, 0x0a, 0x25, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x9a, 0x03, 0x0a, 0x1e, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x8e, 0x01, 0x0a, 0x29, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x32, 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, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x25, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x03, 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x49, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x38, 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, 0x04, 0x20, 0x01, 0x28, 0x04, 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, 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, 0x00, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x08, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x69, 0x70, 0x22, 0x9b, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 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, 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, - 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, - 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, - 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, - 0x70, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, + 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, 0xfc, 0x01, 0x0a, 0x1c, + 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x2e, 0x0a, + 0x08, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x0e, 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, 0xff, 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, + 0x00, 0x52, 0x07, 0x74, 0x63, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x09, 0x71, 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, 0xff, 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, + 0x48, 0x01, 0x52, 0x08, 0x71, 0x75, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x71, 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x9c, 0x04, 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, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, + 0x01, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, + 0x88, 0x01, 0x01, 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, + 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x12, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x50, + 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x48, 0x61, 0x72, 0x64, 0x4c, + 0x69, 0x6e, 0x6b, 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, + 0x05, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1c, + 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 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, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 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, 0xd1, 0x04, 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, 0x49, 0x0a, 0x1f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x6f, + 0x72, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x43, 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, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x18, 0x05, 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, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, + 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0c, 0xfa, 0x42, 0x09, + 0x32, 0x07, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x03, 0x52, 0x0b, 0x70, 0x69, 0x65, + 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x03, 0x74, + 0x74, 0x6c, 0x18, 0x07, 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, 0x08, 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, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, + 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, + 0xd0, 0x01, 0x01, 0x48, 0x05, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, + 0x01, 0x01, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, + 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 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, 0x0f, + 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0xa0, 0x01, 0x0a, 0x20, 0x55, 0x70, + 0x64, 0x61, 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, - 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, + 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x7e, 0x0a, 0x1e, - 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, + 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, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x8e, 0x05, 0x0a, - 0x1f, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 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, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, - 0x34, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x32, 0x07, 0x28, 0x80, 0x80, 0x80, - 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, - 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x83, 0x01, 0x0a, + 0x23, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, + 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, + 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x69, 0x70, 0x22, 0x93, 0x05, 0x0a, 0x24, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 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, 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, 0x2b, 0x0a, + 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x69, + 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x32, 0x07, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, + 0x12, 0x2a, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 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, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x66, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x48, 0x02, 0x52, 0x08, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x48, 0x03, 0x52, 0x0a, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x5d, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x48, 0x02, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x48, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x62, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x66, 0x0a, 0x20, + 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x70, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x42, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x74, - 0x61, 0x73, 0x6b, 0x73, 0x22, 0x7b, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x80, + 0x01, 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, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, - 0x70, 0x22, 0xa5, 0x01, 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 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, 0xfc, 0x01, 0x0a, 0x1c, 0x53, 0x79, - 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x74, - 0x63, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0e, 0xfa, - 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, 0xff, 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, 0x00, 0x52, - 0x07, 0x74, 0x63, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x09, 0x71, - 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0e, - 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, 0xff, 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, 0x01, - 0x52, 0x08, 0x71, 0x75, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x71, - 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x9c, 0x04, 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, - 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, - 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, - 0x01, 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, 0x03, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x6e, - 0x65, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6e, 0x65, 0x65, 0x64, 0x50, 0x69, 0x65, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x48, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x6e, - 0x6b, 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x04, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x05, 0x52, - 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, - 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 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, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 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, 0xd1, 0x04, 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, 0x49, 0x0a, 0x1f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, - 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x43, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x43, 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, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x18, 0x05, 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, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x32, 0x07, - 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x03, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x74, 0x6c, - 0x18, 0x07, 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, 0x08, 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, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, - 0x01, 0x48, 0x05, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, - 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, - 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 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, 0x0f, 0x0a, 0x0d, - 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0xa0, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, - 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, 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, 0x2c, - 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, - 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x7e, 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, 0x12, 0x2c, - 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, - 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x23, 0x53, - 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, - 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, - 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, - 0x22, 0x93, 0x05, 0x0a, 0x24, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 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, 0x2b, 0x0a, 0x03, 0x74, - 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, - 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0c, - 0xfa, 0x42, 0x09, 0x32, 0x07, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, - 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2a, - 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x75, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, - 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x0a, 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, 0x48, 0x02, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, - 0x74, 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, 0x48, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x62, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, - 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, 0x70, 0x0a, 0x25, 0x4c, 0x69, - 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x80, 0x01, 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, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x70, 0x01, 0xd0, - 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x88, 0x01, - 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x22, - 0xaa, 0x01, 0x0a, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x81, 0x02, 0x0a, - 0x21, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, - 0x61, 0x63, 0x68, 0x65, 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, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, - 0x02, 0x69, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, 0xff, 0x03, - 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x63, 0x70, 0x50, 0x6f, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x09, 0x71, 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, 0xff, - 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, 0x01, 0x52, 0x08, 0x71, 0x75, 0x69, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x71, 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x22, 0x55, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x6f, 0x73, 0x74, 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, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x18, 0x49, 0x42, 0x56, 0x65, 0x72, - 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x03, 0x6c, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x7a, 0x02, 0x68, 0x10, 0x52, 0x03, 0x67, - 0x69, 0x64, 0x22, 0x76, 0x0a, 0x27, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, - 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x42, - 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x77, 0x0a, 0x28, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x32, 0xa9, 0x11, 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, + 0x70, 0x22, 0xaa, 0x01, 0x0a, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x81, + 0x02, 0x0a, 0x21, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 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, 0x12, 0x17, 0x0a, 0x02, + 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, + 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, 0xff, + 0xff, 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x63, 0x70, 0x50, 0x6f, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x09, 0x71, 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x1a, 0x09, 0x10, + 0xff, 0xff, 0x03, 0x28, 0x80, 0x08, 0x40, 0x01, 0x48, 0x01, 0x52, 0x08, 0x71, 0x75, 0x69, 0x63, + 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x63, 0x70, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x71, 0x75, 0x69, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x22, 0x55, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x6f, 0x73, 0x74, 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, 0x70, 0x65, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x18, 0x49, 0x42, 0x56, + 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6c, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x03, 0x67, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x7a, 0x02, 0x68, 0x10, 0x52, + 0x03, 0x67, 0x69, 0x64, 0x22, 0x76, 0x0a, 0x27, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x4b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x77, 0x0a, 0x28, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x64, + 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x32, 0xfb, 0x11, 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, 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, 0x56, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, - 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, - 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5c, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x64, + 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, 0x56, 0x0a, 0x0d, 0x53, 0x74, + 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, 0x66, + 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x66, 0x64, + 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, + 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 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, 0x50, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x64, 0x0a, 0x11, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, + 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, + 0x48, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x4e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 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, 0x64, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x64, 0x66, 0x64, + 0x65, 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, 0x12, 0x5e, 0x0a, 0x0f, 0x53, 0x79, 0x6e, + 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x65, 0x0a, 0x12, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, + 0x26, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x73, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x0d, 0x53, - 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, - 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x4e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x5e, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x65, 0x0a, 0x12, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x64, 0x66, - 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, - 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x16, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x2e, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x57, + 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x26, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, + 0x28, 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, 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, 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, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, - 0x01, 0x12, 0x6d, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x66, 0x64, 0x61, - 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x58, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x62, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 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, 0x55, 0x70, 0x64, 0x61, 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, 0x12, 0x57, 0x0a, 0x12, 0x53, 0x74, - 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x26, 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, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x28, 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, 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, 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, 0x62, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 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, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, + 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, 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, 0x12, 0x7c, 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x12, - 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, - 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, - 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x3b, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x64, - 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x48, - 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x30, 0x01, 0x12, 0x8f, 0x01, - 0x0a, 0x20, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, - 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x34, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, - 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0x8b, 0x10, 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, 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, 0x56, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x66, 0x64, - 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, - 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x12, 0x22, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7c, 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, + 0x63, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x6f, 0x73, 0x74, + 0x12, 0x1c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x30, + 0x01, 0x12, 0x8f, 0x01, 0x0a, 0x20, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, + 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x34, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x42, 0x56, + 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x49, 0x42, 0x56, 0x65, 0x72, 0x62, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, + 0x61, 0x69, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x32, 0xdd, 0x10, 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, + 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, 0x56, 0x0a, 0x0d, 0x53, 0x74, + 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, 0x66, + 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, - 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x4e, 0x0a, - 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x64, 0x0a, 0x11, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x25, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, - 0x01, 0x12, 0x48, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x4e, 0x0a, 0x0f, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, - 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 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, 0x12, 0x73, 0x0a, 0x16, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 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, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, + 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x4e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x50, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x1f, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 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, 0x64, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x4e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x73, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 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, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x28, + 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, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x57, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x26, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x5b, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x28, 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, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x57, 0x0a, - 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x26, 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, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x74, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x2b, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x74, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2b, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x77, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2c, + 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x18, - 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x1b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x73, 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, 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, + 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, 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, 0x83, - 0x01, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x30, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x31, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x86, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, + 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, 0x83, 0x01, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x31, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x66, 0x64, 0x61, - 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x30, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x31, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 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, 0x86, 0x01, 0x0a, 0x1d, 0x4c, + 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x31, 0x2e, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x32, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 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 ( @@ -5637,7 +5779,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescGZIP() []byte { return file_pkg_apis_dfdaemon_v2_dfdaemon_proto_rawDescData } -var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes = make([]protoimpl.MessageInfo, 61) +var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes = make([]protoimpl.MessageInfo, 63) var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_goTypes = []interface{}{ (*DownloadTaskRequest)(nil), // 0: dfdaemon.v2.DownloadTaskRequest (*DownloadTaskStartedResponse)(nil), // 1: dfdaemon.v2.DownloadTaskStartedResponse @@ -5655,226 +5797,234 @@ var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_goTypes = []interface{}{ (*Entry)(nil), // 13: dfdaemon.v2.Entry (*DeleteTaskRequest)(nil), // 14: dfdaemon.v2.DeleteTaskRequest (*DeleteLocalTaskRequest)(nil), // 15: dfdaemon.v2.DeleteLocalTaskRequest - (*DownloadCacheTaskRequest)(nil), // 16: dfdaemon.v2.DownloadCacheTaskRequest - (*DownloadCacheTaskStartedResponse)(nil), // 17: dfdaemon.v2.DownloadCacheTaskStartedResponse - (*DownloadCacheTaskResponse)(nil), // 18: dfdaemon.v2.DownloadCacheTaskResponse - (*SyncCachePiecesRequest)(nil), // 19: dfdaemon.v2.SyncCachePiecesRequest - (*SyncCachePiecesResponse)(nil), // 20: dfdaemon.v2.SyncCachePiecesResponse - (*DownloadCachePieceRequest)(nil), // 21: dfdaemon.v2.DownloadCachePieceRequest - (*DownloadCachePieceResponse)(nil), // 22: dfdaemon.v2.DownloadCachePieceResponse - (*StatCacheTaskRequest)(nil), // 23: dfdaemon.v2.StatCacheTaskRequest - (*DeleteCacheTaskRequest)(nil), // 24: dfdaemon.v2.DeleteCacheTaskRequest - (*DownloadPersistentTaskRequest)(nil), // 25: dfdaemon.v2.DownloadPersistentTaskRequest - (*DownloadPersistentTaskStartedResponse)(nil), // 26: dfdaemon.v2.DownloadPersistentTaskStartedResponse - (*DownloadPersistentTaskResponse)(nil), // 27: dfdaemon.v2.DownloadPersistentTaskResponse - (*UploadPersistentTaskRequest)(nil), // 28: dfdaemon.v2.UploadPersistentTaskRequest - (*UpdatePersistentTaskRequest)(nil), // 29: dfdaemon.v2.UpdatePersistentTaskRequest - (*StatPersistentTaskRequest)(nil), // 30: dfdaemon.v2.StatPersistentTaskRequest - (*StatLocalPersistentTaskRequest)(nil), // 31: dfdaemon.v2.StatLocalPersistentTaskRequest - (*StatLocalPersistentTaskResponse)(nil), // 32: dfdaemon.v2.StatLocalPersistentTaskResponse - (*ListLocalPersistentTasksRequest)(nil), // 33: dfdaemon.v2.ListLocalPersistentTasksRequest - (*ListLocalPersistentTasksResponse)(nil), // 34: dfdaemon.v2.ListLocalPersistentTasksResponse - (*DeletePersistentTaskRequest)(nil), // 35: dfdaemon.v2.DeletePersistentTaskRequest - (*SyncPersistentPiecesRequest)(nil), // 36: dfdaemon.v2.SyncPersistentPiecesRequest - (*SyncPersistentPiecesResponse)(nil), // 37: dfdaemon.v2.SyncPersistentPiecesResponse - (*DownloadPersistentCacheTaskRequest)(nil), // 38: dfdaemon.v2.DownloadPersistentCacheTaskRequest - (*DownloadPersistentCacheTaskStartedResponse)(nil), // 39: dfdaemon.v2.DownloadPersistentCacheTaskStartedResponse - (*DownloadPersistentCacheTaskResponse)(nil), // 40: dfdaemon.v2.DownloadPersistentCacheTaskResponse - (*UploadPersistentCacheTaskRequest)(nil), // 41: dfdaemon.v2.UploadPersistentCacheTaskRequest - (*UpdatePersistentCacheTaskRequest)(nil), // 42: dfdaemon.v2.UpdatePersistentCacheTaskRequest - (*StatPersistentCacheTaskRequest)(nil), // 43: dfdaemon.v2.StatPersistentCacheTaskRequest - (*StatLocalPersistentCacheTaskRequest)(nil), // 44: dfdaemon.v2.StatLocalPersistentCacheTaskRequest - (*StatLocalPersistentCacheTaskResponse)(nil), // 45: dfdaemon.v2.StatLocalPersistentCacheTaskResponse - (*ListLocalPersistentCacheTasksRequest)(nil), // 46: dfdaemon.v2.ListLocalPersistentCacheTasksRequest - (*ListLocalPersistentCacheTasksResponse)(nil), // 47: dfdaemon.v2.ListLocalPersistentCacheTasksResponse - (*DeletePersistentCacheTaskRequest)(nil), // 48: dfdaemon.v2.DeletePersistentCacheTaskRequest - (*SyncPersistentCachePiecesRequest)(nil), // 49: dfdaemon.v2.SyncPersistentCachePiecesRequest - (*SyncPersistentCachePiecesResponse)(nil), // 50: dfdaemon.v2.SyncPersistentCachePiecesResponse - (*SyncHostRequest)(nil), // 51: dfdaemon.v2.SyncHostRequest - (*IBVerbsQueuePairEndpoint)(nil), // 52: dfdaemon.v2.IBVerbsQueuePairEndpoint - (*ExchangeIBVerbsQueuePairEndpointRequest)(nil), // 53: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointRequest - (*ExchangeIBVerbsQueuePairEndpointResponse)(nil), // 54: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointResponse - nil, // 55: dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry - nil, // 56: dfdaemon.v2.StatLocalTaskResponse.ResponseHeaderEntry - nil, // 57: dfdaemon.v2.ListTaskEntriesRequest.RequestHeaderEntry - nil, // 58: dfdaemon.v2.ListTaskEntriesResponse.ResponseHeaderEntry - nil, // 59: dfdaemon.v2.DownloadCacheTaskRequest.RequestHeaderEntry - nil, // 60: dfdaemon.v2.DownloadCacheTaskStartedResponse.ResponseHeaderEntry - (*v2.Download)(nil), // 61: common.v2.Download - (*v2.Range)(nil), // 62: common.v2.Range - (*v2.Piece)(nil), // 63: common.v2.Piece - (*timestamppb.Timestamp)(nil), // 64: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 65: google.protobuf.Duration - (*v2.ObjectStorage)(nil), // 66: common.v2.ObjectStorage - (*v2.HDFS)(nil), // 67: common.v2.HDFS - (*v2.HuggingFace)(nil), // 68: common.v2.HuggingFace - (*v2.ModelScope)(nil), // 69: common.v2.ModelScope - (*v2.OpenCSG)(nil), // 70: common.v2.OpenCSG - (v2.TaskType)(0), // 71: common.v2.TaskType - (v2.Priority)(0), // 72: common.v2.Priority - (*emptypb.Empty)(nil), // 73: google.protobuf.Empty - (*v2.Task)(nil), // 74: common.v2.Task - (*v2.CacheTask)(nil), // 75: common.v2.CacheTask - (*v2.PersistentTask)(nil), // 76: common.v2.PersistentTask - (*v2.PersistentCacheTask)(nil), // 77: common.v2.PersistentCacheTask - (*v2.Host)(nil), // 78: common.v2.Host + (*DeleteImageRequest)(nil), // 16: dfdaemon.v2.DeleteImageRequest + (*DeleteImageResponse)(nil), // 17: dfdaemon.v2.DeleteImageResponse + (*DownloadCacheTaskRequest)(nil), // 18: dfdaemon.v2.DownloadCacheTaskRequest + (*DownloadCacheTaskStartedResponse)(nil), // 19: dfdaemon.v2.DownloadCacheTaskStartedResponse + (*DownloadCacheTaskResponse)(nil), // 20: dfdaemon.v2.DownloadCacheTaskResponse + (*SyncCachePiecesRequest)(nil), // 21: dfdaemon.v2.SyncCachePiecesRequest + (*SyncCachePiecesResponse)(nil), // 22: dfdaemon.v2.SyncCachePiecesResponse + (*DownloadCachePieceRequest)(nil), // 23: dfdaemon.v2.DownloadCachePieceRequest + (*DownloadCachePieceResponse)(nil), // 24: dfdaemon.v2.DownloadCachePieceResponse + (*StatCacheTaskRequest)(nil), // 25: dfdaemon.v2.StatCacheTaskRequest + (*DeleteCacheTaskRequest)(nil), // 26: dfdaemon.v2.DeleteCacheTaskRequest + (*DownloadPersistentTaskRequest)(nil), // 27: dfdaemon.v2.DownloadPersistentTaskRequest + (*DownloadPersistentTaskStartedResponse)(nil), // 28: dfdaemon.v2.DownloadPersistentTaskStartedResponse + (*DownloadPersistentTaskResponse)(nil), // 29: dfdaemon.v2.DownloadPersistentTaskResponse + (*UploadPersistentTaskRequest)(nil), // 30: dfdaemon.v2.UploadPersistentTaskRequest + (*UpdatePersistentTaskRequest)(nil), // 31: dfdaemon.v2.UpdatePersistentTaskRequest + (*StatPersistentTaskRequest)(nil), // 32: dfdaemon.v2.StatPersistentTaskRequest + (*StatLocalPersistentTaskRequest)(nil), // 33: dfdaemon.v2.StatLocalPersistentTaskRequest + (*StatLocalPersistentTaskResponse)(nil), // 34: dfdaemon.v2.StatLocalPersistentTaskResponse + (*ListLocalPersistentTasksRequest)(nil), // 35: dfdaemon.v2.ListLocalPersistentTasksRequest + (*ListLocalPersistentTasksResponse)(nil), // 36: dfdaemon.v2.ListLocalPersistentTasksResponse + (*DeletePersistentTaskRequest)(nil), // 37: dfdaemon.v2.DeletePersistentTaskRequest + (*SyncPersistentPiecesRequest)(nil), // 38: dfdaemon.v2.SyncPersistentPiecesRequest + (*SyncPersistentPiecesResponse)(nil), // 39: dfdaemon.v2.SyncPersistentPiecesResponse + (*DownloadPersistentCacheTaskRequest)(nil), // 40: dfdaemon.v2.DownloadPersistentCacheTaskRequest + (*DownloadPersistentCacheTaskStartedResponse)(nil), // 41: dfdaemon.v2.DownloadPersistentCacheTaskStartedResponse + (*DownloadPersistentCacheTaskResponse)(nil), // 42: dfdaemon.v2.DownloadPersistentCacheTaskResponse + (*UploadPersistentCacheTaskRequest)(nil), // 43: dfdaemon.v2.UploadPersistentCacheTaskRequest + (*UpdatePersistentCacheTaskRequest)(nil), // 44: dfdaemon.v2.UpdatePersistentCacheTaskRequest + (*StatPersistentCacheTaskRequest)(nil), // 45: dfdaemon.v2.StatPersistentCacheTaskRequest + (*StatLocalPersistentCacheTaskRequest)(nil), // 46: dfdaemon.v2.StatLocalPersistentCacheTaskRequest + (*StatLocalPersistentCacheTaskResponse)(nil), // 47: dfdaemon.v2.StatLocalPersistentCacheTaskResponse + (*ListLocalPersistentCacheTasksRequest)(nil), // 48: dfdaemon.v2.ListLocalPersistentCacheTasksRequest + (*ListLocalPersistentCacheTasksResponse)(nil), // 49: dfdaemon.v2.ListLocalPersistentCacheTasksResponse + (*DeletePersistentCacheTaskRequest)(nil), // 50: dfdaemon.v2.DeletePersistentCacheTaskRequest + (*SyncPersistentCachePiecesRequest)(nil), // 51: dfdaemon.v2.SyncPersistentCachePiecesRequest + (*SyncPersistentCachePiecesResponse)(nil), // 52: dfdaemon.v2.SyncPersistentCachePiecesResponse + (*SyncHostRequest)(nil), // 53: dfdaemon.v2.SyncHostRequest + (*IBVerbsQueuePairEndpoint)(nil), // 54: dfdaemon.v2.IBVerbsQueuePairEndpoint + (*ExchangeIBVerbsQueuePairEndpointRequest)(nil), // 55: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointRequest + (*ExchangeIBVerbsQueuePairEndpointResponse)(nil), // 56: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointResponse + nil, // 57: dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry + nil, // 58: dfdaemon.v2.StatLocalTaskResponse.ResponseHeaderEntry + nil, // 59: dfdaemon.v2.ListTaskEntriesRequest.RequestHeaderEntry + nil, // 60: dfdaemon.v2.ListTaskEntriesResponse.ResponseHeaderEntry + nil, // 61: dfdaemon.v2.DownloadCacheTaskRequest.RequestHeaderEntry + nil, // 62: dfdaemon.v2.DownloadCacheTaskStartedResponse.ResponseHeaderEntry + (*v2.Download)(nil), // 63: common.v2.Download + (*v2.Range)(nil), // 64: common.v2.Range + (*v2.Piece)(nil), // 65: common.v2.Piece + (*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 67: google.protobuf.Duration + (*v2.ObjectStorage)(nil), // 68: common.v2.ObjectStorage + (*v2.HDFS)(nil), // 69: common.v2.HDFS + (*v2.HuggingFace)(nil), // 70: common.v2.HuggingFace + (*v2.ModelScope)(nil), // 71: common.v2.ModelScope + (*v2.OpenCSG)(nil), // 72: common.v2.OpenCSG + (*v2.Image)(nil), // 73: common.v2.Image + (v2.TaskType)(0), // 74: common.v2.TaskType + (v2.Priority)(0), // 75: common.v2.Priority + (*emptypb.Empty)(nil), // 76: google.protobuf.Empty + (*v2.Task)(nil), // 77: common.v2.Task + (*v2.CacheTask)(nil), // 78: common.v2.CacheTask + (*v2.PersistentTask)(nil), // 79: common.v2.PersistentTask + (*v2.PersistentCacheTask)(nil), // 80: common.v2.PersistentCacheTask + (*v2.Host)(nil), // 81: common.v2.Host } var file_pkg_apis_dfdaemon_v2_dfdaemon_proto_depIdxs = []int32{ - 61, // 0: dfdaemon.v2.DownloadTaskRequest.download:type_name -> common.v2.Download - 62, // 1: dfdaemon.v2.DownloadTaskStartedResponse.range:type_name -> common.v2.Range - 55, // 2: dfdaemon.v2.DownloadTaskStartedResponse.response_header:type_name -> dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry - 63, // 3: dfdaemon.v2.DownloadTaskStartedResponse.pieces:type_name -> common.v2.Piece - 63, // 4: dfdaemon.v2.DownloadPieceFinishedResponse.piece:type_name -> common.v2.Piece + 63, // 0: dfdaemon.v2.DownloadTaskRequest.download:type_name -> common.v2.Download + 64, // 1: dfdaemon.v2.DownloadTaskStartedResponse.range:type_name -> common.v2.Range + 57, // 2: dfdaemon.v2.DownloadTaskStartedResponse.response_header:type_name -> dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry + 65, // 3: dfdaemon.v2.DownloadTaskStartedResponse.pieces:type_name -> common.v2.Piece + 65, // 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 - 56, // 7: dfdaemon.v2.StatLocalTaskResponse.response_header:type_name -> dfdaemon.v2.StatLocalTaskResponse.ResponseHeaderEntry - 64, // 8: dfdaemon.v2.StatLocalTaskResponse.created_at:type_name -> google.protobuf.Timestamp - 64, // 9: dfdaemon.v2.StatLocalTaskResponse.updated_at:type_name -> google.protobuf.Timestamp - 64, // 10: dfdaemon.v2.StatLocalTaskResponse.prefetched_at:type_name -> google.protobuf.Timestamp - 64, // 11: dfdaemon.v2.StatLocalTaskResponse.failed_at:type_name -> google.protobuf.Timestamp - 64, // 12: dfdaemon.v2.StatLocalTaskResponse.finished_at:type_name -> google.protobuf.Timestamp + 58, // 7: dfdaemon.v2.StatLocalTaskResponse.response_header:type_name -> dfdaemon.v2.StatLocalTaskResponse.ResponseHeaderEntry + 66, // 8: dfdaemon.v2.StatLocalTaskResponse.created_at:type_name -> google.protobuf.Timestamp + 66, // 9: dfdaemon.v2.StatLocalTaskResponse.updated_at:type_name -> google.protobuf.Timestamp + 66, // 10: dfdaemon.v2.StatLocalTaskResponse.prefetched_at:type_name -> google.protobuf.Timestamp + 66, // 11: dfdaemon.v2.StatLocalTaskResponse.failed_at:type_name -> google.protobuf.Timestamp + 66, // 12: dfdaemon.v2.StatLocalTaskResponse.finished_at:type_name -> google.protobuf.Timestamp 8, // 13: dfdaemon.v2.ListLocalTasksResponse.tasks:type_name -> dfdaemon.v2.StatLocalTaskResponse - 57, // 14: dfdaemon.v2.ListTaskEntriesRequest.request_header:type_name -> dfdaemon.v2.ListTaskEntriesRequest.RequestHeaderEntry - 65, // 15: dfdaemon.v2.ListTaskEntriesRequest.timeout:type_name -> google.protobuf.Duration - 66, // 16: dfdaemon.v2.ListTaskEntriesRequest.object_storage:type_name -> common.v2.ObjectStorage - 67, // 17: dfdaemon.v2.ListTaskEntriesRequest.hdfs:type_name -> common.v2.HDFS - 68, // 18: dfdaemon.v2.ListTaskEntriesRequest.hugging_face:type_name -> common.v2.HuggingFace - 69, // 19: dfdaemon.v2.ListTaskEntriesRequest.model_scope:type_name -> common.v2.ModelScope - 70, // 20: dfdaemon.v2.ListTaskEntriesRequest.open_csg:type_name -> common.v2.OpenCSG - 58, // 21: dfdaemon.v2.ListTaskEntriesResponse.response_header:type_name -> dfdaemon.v2.ListTaskEntriesResponse.ResponseHeaderEntry + 59, // 14: dfdaemon.v2.ListTaskEntriesRequest.request_header:type_name -> dfdaemon.v2.ListTaskEntriesRequest.RequestHeaderEntry + 67, // 15: dfdaemon.v2.ListTaskEntriesRequest.timeout:type_name -> google.protobuf.Duration + 68, // 16: dfdaemon.v2.ListTaskEntriesRequest.object_storage:type_name -> common.v2.ObjectStorage + 69, // 17: dfdaemon.v2.ListTaskEntriesRequest.hdfs:type_name -> common.v2.HDFS + 70, // 18: dfdaemon.v2.ListTaskEntriesRequest.hugging_face:type_name -> common.v2.HuggingFace + 71, // 19: dfdaemon.v2.ListTaskEntriesRequest.model_scope:type_name -> common.v2.ModelScope + 72, // 20: dfdaemon.v2.ListTaskEntriesRequest.open_csg:type_name -> common.v2.OpenCSG + 60, // 21: dfdaemon.v2.ListTaskEntriesResponse.response_header:type_name -> dfdaemon.v2.ListTaskEntriesResponse.ResponseHeaderEntry 13, // 22: dfdaemon.v2.ListTaskEntriesResponse.entries:type_name -> dfdaemon.v2.Entry - 62, // 23: dfdaemon.v2.DownloadCacheTaskRequest.range:type_name -> common.v2.Range - 71, // 24: dfdaemon.v2.DownloadCacheTaskRequest.type:type_name -> common.v2.TaskType - 72, // 25: dfdaemon.v2.DownloadCacheTaskRequest.priority:type_name -> common.v2.Priority - 59, // 26: dfdaemon.v2.DownloadCacheTaskRequest.request_header:type_name -> dfdaemon.v2.DownloadCacheTaskRequest.RequestHeaderEntry - 65, // 27: dfdaemon.v2.DownloadCacheTaskRequest.timeout:type_name -> google.protobuf.Duration - 66, // 28: dfdaemon.v2.DownloadCacheTaskRequest.object_storage:type_name -> common.v2.ObjectStorage - 67, // 29: dfdaemon.v2.DownloadCacheTaskRequest.hdfs:type_name -> common.v2.HDFS - 62, // 30: dfdaemon.v2.DownloadCacheTaskStartedResponse.range:type_name -> common.v2.Range - 60, // 31: dfdaemon.v2.DownloadCacheTaskStartedResponse.response_header:type_name -> dfdaemon.v2.DownloadCacheTaskStartedResponse.ResponseHeaderEntry - 63, // 32: dfdaemon.v2.DownloadCacheTaskStartedResponse.pieces:type_name -> common.v2.Piece - 17, // 33: dfdaemon.v2.DownloadCacheTaskResponse.download_cache_task_started_response:type_name -> dfdaemon.v2.DownloadCacheTaskStartedResponse - 2, // 34: dfdaemon.v2.DownloadCacheTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse - 63, // 35: dfdaemon.v2.DownloadCachePieceResponse.piece:type_name -> common.v2.Piece - 66, // 36: dfdaemon.v2.DownloadPersistentTaskRequest.object_storage:type_name -> common.v2.ObjectStorage - 65, // 37: dfdaemon.v2.DownloadPersistentTaskRequest.timeout:type_name -> google.protobuf.Duration - 26, // 38: dfdaemon.v2.DownloadPersistentTaskResponse.download_persistent_task_started_response:type_name -> dfdaemon.v2.DownloadPersistentTaskStartedResponse - 2, // 39: dfdaemon.v2.DownloadPersistentTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse - 66, // 40: dfdaemon.v2.UploadPersistentTaskRequest.object_storage:type_name -> common.v2.ObjectStorage - 65, // 41: dfdaemon.v2.UploadPersistentTaskRequest.ttl:type_name -> google.protobuf.Duration - 65, // 42: dfdaemon.v2.UploadPersistentTaskRequest.timeout:type_name -> google.protobuf.Duration - 65, // 43: dfdaemon.v2.StatLocalPersistentTaskResponse.ttl:type_name -> google.protobuf.Duration - 64, // 44: dfdaemon.v2.StatLocalPersistentTaskResponse.created_at:type_name -> google.protobuf.Timestamp - 64, // 45: dfdaemon.v2.StatLocalPersistentTaskResponse.updated_at:type_name -> google.protobuf.Timestamp - 64, // 46: dfdaemon.v2.StatLocalPersistentTaskResponse.failed_at:type_name -> google.protobuf.Timestamp - 64, // 47: dfdaemon.v2.StatLocalPersistentTaskResponse.finished_at:type_name -> google.protobuf.Timestamp - 32, // 48: dfdaemon.v2.ListLocalPersistentTasksResponse.tasks:type_name -> dfdaemon.v2.StatLocalPersistentTaskResponse - 65, // 49: dfdaemon.v2.DownloadPersistentCacheTaskRequest.timeout:type_name -> google.protobuf.Duration - 39, // 50: dfdaemon.v2.DownloadPersistentCacheTaskResponse.download_persistent_cache_task_started_response:type_name -> dfdaemon.v2.DownloadPersistentCacheTaskStartedResponse - 2, // 51: dfdaemon.v2.DownloadPersistentCacheTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse - 65, // 52: dfdaemon.v2.UploadPersistentCacheTaskRequest.ttl:type_name -> google.protobuf.Duration - 65, // 53: dfdaemon.v2.UploadPersistentCacheTaskRequest.timeout:type_name -> google.protobuf.Duration - 65, // 54: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.ttl:type_name -> google.protobuf.Duration - 64, // 55: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.created_at:type_name -> google.protobuf.Timestamp - 64, // 56: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.updated_at:type_name -> google.protobuf.Timestamp - 64, // 57: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.failed_at:type_name -> google.protobuf.Timestamp - 64, // 58: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.finished_at:type_name -> google.protobuf.Timestamp - 45, // 59: dfdaemon.v2.ListLocalPersistentCacheTasksResponse.tasks:type_name -> dfdaemon.v2.StatLocalPersistentCacheTaskResponse - 52, // 60: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointRequest.endpoint:type_name -> dfdaemon.v2.IBVerbsQueuePairEndpoint - 52, // 61: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointResponse.endpoint:type_name -> dfdaemon.v2.IBVerbsQueuePairEndpoint - 0, // 62: dfdaemon.v2.DfdaemonUpload.DownloadTask:input_type -> dfdaemon.v2.DownloadTaskRequest - 6, // 63: dfdaemon.v2.DfdaemonUpload.StatTask:input_type -> dfdaemon.v2.StatTaskRequest - 7, // 64: dfdaemon.v2.DfdaemonUpload.StatLocalTask:input_type -> dfdaemon.v2.StatLocalTaskRequest - 11, // 65: dfdaemon.v2.DfdaemonUpload.ListTaskEntries:input_type -> dfdaemon.v2.ListTaskEntriesRequest - 14, // 66: dfdaemon.v2.DfdaemonUpload.DeleteTask:input_type -> dfdaemon.v2.DeleteTaskRequest - 4, // 67: dfdaemon.v2.DfdaemonUpload.SyncPieces:input_type -> dfdaemon.v2.SyncPiecesRequest - 16, // 68: dfdaemon.v2.DfdaemonUpload.DownloadCacheTask:input_type -> dfdaemon.v2.DownloadCacheTaskRequest - 23, // 69: dfdaemon.v2.DfdaemonUpload.StatCacheTask:input_type -> dfdaemon.v2.StatCacheTaskRequest - 24, // 70: dfdaemon.v2.DfdaemonUpload.DeleteCacheTask:input_type -> dfdaemon.v2.DeleteCacheTaskRequest - 19, // 71: dfdaemon.v2.DfdaemonUpload.SyncCachePieces:input_type -> dfdaemon.v2.SyncCachePiecesRequest - 21, // 72: dfdaemon.v2.DfdaemonUpload.DownloadCachePiece:input_type -> dfdaemon.v2.DownloadCachePieceRequest - 25, // 73: dfdaemon.v2.DfdaemonUpload.DownloadPersistentTask:input_type -> dfdaemon.v2.DownloadPersistentTaskRequest - 36, // 74: dfdaemon.v2.DfdaemonUpload.SyncPersistentPieces:input_type -> dfdaemon.v2.SyncPersistentPiecesRequest - 29, // 75: dfdaemon.v2.DfdaemonUpload.UpdatePersistentTask:input_type -> dfdaemon.v2.UpdatePersistentTaskRequest - 30, // 76: dfdaemon.v2.DfdaemonUpload.StatPersistentTask:input_type -> dfdaemon.v2.StatPersistentTaskRequest - 35, // 77: dfdaemon.v2.DfdaemonUpload.DeletePersistentTask:input_type -> dfdaemon.v2.DeletePersistentTaskRequest - 38, // 78: dfdaemon.v2.DfdaemonUpload.DownloadPersistentCacheTask:input_type -> dfdaemon.v2.DownloadPersistentCacheTaskRequest - 42, // 79: dfdaemon.v2.DfdaemonUpload.UpdatePersistentCacheTask:input_type -> dfdaemon.v2.UpdatePersistentCacheTaskRequest - 43, // 80: dfdaemon.v2.DfdaemonUpload.StatPersistentCacheTask:input_type -> dfdaemon.v2.StatPersistentCacheTaskRequest - 48, // 81: dfdaemon.v2.DfdaemonUpload.DeletePersistentCacheTask:input_type -> dfdaemon.v2.DeletePersistentCacheTaskRequest - 49, // 82: dfdaemon.v2.DfdaemonUpload.SyncPersistentCachePieces:input_type -> dfdaemon.v2.SyncPersistentCachePiecesRequest - 51, // 83: dfdaemon.v2.DfdaemonUpload.SyncHost:input_type -> dfdaemon.v2.SyncHostRequest - 53, // 84: dfdaemon.v2.DfdaemonUpload.ExchangeIBVerbsQueuePairEndpoint:input_type -> dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointRequest - 0, // 85: dfdaemon.v2.DfdaemonDownload.DownloadTask:input_type -> dfdaemon.v2.DownloadTaskRequest - 6, // 86: dfdaemon.v2.DfdaemonDownload.StatTask:input_type -> dfdaemon.v2.StatTaskRequest - 7, // 87: dfdaemon.v2.DfdaemonDownload.StatLocalTask:input_type -> dfdaemon.v2.StatLocalTaskRequest - 9, // 88: dfdaemon.v2.DfdaemonDownload.ListLocalTasks:input_type -> dfdaemon.v2.ListLocalTasksRequest - 11, // 89: dfdaemon.v2.DfdaemonDownload.ListTaskEntries:input_type -> dfdaemon.v2.ListTaskEntriesRequest - 14, // 90: dfdaemon.v2.DfdaemonDownload.DeleteTask:input_type -> dfdaemon.v2.DeleteTaskRequest - 15, // 91: dfdaemon.v2.DfdaemonDownload.DeleteLocalTask:input_type -> dfdaemon.v2.DeleteLocalTaskRequest - 73, // 92: dfdaemon.v2.DfdaemonDownload.DeleteHost:input_type -> google.protobuf.Empty - 16, // 93: dfdaemon.v2.DfdaemonDownload.DownloadCacheTask:input_type -> dfdaemon.v2.DownloadCacheTaskRequest - 23, // 94: dfdaemon.v2.DfdaemonDownload.StatCacheTask:input_type -> dfdaemon.v2.StatCacheTaskRequest - 24, // 95: dfdaemon.v2.DfdaemonDownload.DeleteCacheTask:input_type -> dfdaemon.v2.DeleteCacheTaskRequest - 25, // 96: dfdaemon.v2.DfdaemonDownload.DownloadPersistentTask:input_type -> dfdaemon.v2.DownloadPersistentTaskRequest - 28, // 97: dfdaemon.v2.DfdaemonDownload.UploadPersistentTask:input_type -> dfdaemon.v2.UploadPersistentTaskRequest - 30, // 98: dfdaemon.v2.DfdaemonDownload.StatPersistentTask:input_type -> dfdaemon.v2.StatPersistentTaskRequest - 31, // 99: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentTask:input_type -> dfdaemon.v2.StatLocalPersistentTaskRequest - 33, // 100: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentTasks:input_type -> dfdaemon.v2.ListLocalPersistentTasksRequest - 38, // 101: dfdaemon.v2.DfdaemonDownload.DownloadPersistentCacheTask:input_type -> dfdaemon.v2.DownloadPersistentCacheTaskRequest - 41, // 102: dfdaemon.v2.DfdaemonDownload.UploadPersistentCacheTask:input_type -> dfdaemon.v2.UploadPersistentCacheTaskRequest - 43, // 103: dfdaemon.v2.DfdaemonDownload.StatPersistentCacheTask:input_type -> dfdaemon.v2.StatPersistentCacheTaskRequest - 44, // 104: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentCacheTask:input_type -> dfdaemon.v2.StatLocalPersistentCacheTaskRequest - 46, // 105: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentCacheTasks:input_type -> dfdaemon.v2.ListLocalPersistentCacheTasksRequest - 3, // 106: dfdaemon.v2.DfdaemonUpload.DownloadTask:output_type -> dfdaemon.v2.DownloadTaskResponse - 74, // 107: dfdaemon.v2.DfdaemonUpload.StatTask:output_type -> common.v2.Task - 8, // 108: dfdaemon.v2.DfdaemonUpload.StatLocalTask:output_type -> dfdaemon.v2.StatLocalTaskResponse - 12, // 109: dfdaemon.v2.DfdaemonUpload.ListTaskEntries:output_type -> dfdaemon.v2.ListTaskEntriesResponse - 73, // 110: dfdaemon.v2.DfdaemonUpload.DeleteTask:output_type -> google.protobuf.Empty - 5, // 111: dfdaemon.v2.DfdaemonUpload.SyncPieces:output_type -> dfdaemon.v2.SyncPiecesResponse - 18, // 112: dfdaemon.v2.DfdaemonUpload.DownloadCacheTask:output_type -> dfdaemon.v2.DownloadCacheTaskResponse - 75, // 113: dfdaemon.v2.DfdaemonUpload.StatCacheTask:output_type -> common.v2.CacheTask - 73, // 114: dfdaemon.v2.DfdaemonUpload.DeleteCacheTask:output_type -> google.protobuf.Empty - 20, // 115: dfdaemon.v2.DfdaemonUpload.SyncCachePieces:output_type -> dfdaemon.v2.SyncCachePiecesResponse - 22, // 116: dfdaemon.v2.DfdaemonUpload.DownloadCachePiece:output_type -> dfdaemon.v2.DownloadCachePieceResponse - 27, // 117: dfdaemon.v2.DfdaemonUpload.DownloadPersistentTask:output_type -> dfdaemon.v2.DownloadPersistentTaskResponse - 37, // 118: dfdaemon.v2.DfdaemonUpload.SyncPersistentPieces:output_type -> dfdaemon.v2.SyncPersistentPiecesResponse - 73, // 119: dfdaemon.v2.DfdaemonUpload.UpdatePersistentTask:output_type -> google.protobuf.Empty - 76, // 120: dfdaemon.v2.DfdaemonUpload.StatPersistentTask:output_type -> common.v2.PersistentTask - 73, // 121: dfdaemon.v2.DfdaemonUpload.DeletePersistentTask:output_type -> google.protobuf.Empty - 40, // 122: dfdaemon.v2.DfdaemonUpload.DownloadPersistentCacheTask:output_type -> dfdaemon.v2.DownloadPersistentCacheTaskResponse - 73, // 123: dfdaemon.v2.DfdaemonUpload.UpdatePersistentCacheTask:output_type -> google.protobuf.Empty - 77, // 124: dfdaemon.v2.DfdaemonUpload.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask - 73, // 125: dfdaemon.v2.DfdaemonUpload.DeletePersistentCacheTask:output_type -> google.protobuf.Empty - 50, // 126: dfdaemon.v2.DfdaemonUpload.SyncPersistentCachePieces:output_type -> dfdaemon.v2.SyncPersistentCachePiecesResponse - 78, // 127: dfdaemon.v2.DfdaemonUpload.SyncHost:output_type -> common.v2.Host - 54, // 128: dfdaemon.v2.DfdaemonUpload.ExchangeIBVerbsQueuePairEndpoint:output_type -> dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointResponse - 3, // 129: dfdaemon.v2.DfdaemonDownload.DownloadTask:output_type -> dfdaemon.v2.DownloadTaskResponse - 74, // 130: dfdaemon.v2.DfdaemonDownload.StatTask:output_type -> common.v2.Task - 8, // 131: dfdaemon.v2.DfdaemonDownload.StatLocalTask:output_type -> dfdaemon.v2.StatLocalTaskResponse - 10, // 132: dfdaemon.v2.DfdaemonDownload.ListLocalTasks:output_type -> dfdaemon.v2.ListLocalTasksResponse - 12, // 133: dfdaemon.v2.DfdaemonDownload.ListTaskEntries:output_type -> dfdaemon.v2.ListTaskEntriesResponse - 73, // 134: dfdaemon.v2.DfdaemonDownload.DeleteTask:output_type -> google.protobuf.Empty - 73, // 135: dfdaemon.v2.DfdaemonDownload.DeleteLocalTask:output_type -> google.protobuf.Empty - 73, // 136: dfdaemon.v2.DfdaemonDownload.DeleteHost:output_type -> google.protobuf.Empty - 18, // 137: dfdaemon.v2.DfdaemonDownload.DownloadCacheTask:output_type -> dfdaemon.v2.DownloadCacheTaskResponse - 75, // 138: dfdaemon.v2.DfdaemonDownload.StatCacheTask:output_type -> common.v2.CacheTask - 73, // 139: dfdaemon.v2.DfdaemonDownload.DeleteCacheTask:output_type -> google.protobuf.Empty - 27, // 140: dfdaemon.v2.DfdaemonDownload.DownloadPersistentTask:output_type -> dfdaemon.v2.DownloadPersistentTaskResponse - 76, // 141: dfdaemon.v2.DfdaemonDownload.UploadPersistentTask:output_type -> common.v2.PersistentTask - 76, // 142: dfdaemon.v2.DfdaemonDownload.StatPersistentTask:output_type -> common.v2.PersistentTask - 32, // 143: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentTask:output_type -> dfdaemon.v2.StatLocalPersistentTaskResponse - 34, // 144: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentTasks:output_type -> dfdaemon.v2.ListLocalPersistentTasksResponse - 40, // 145: dfdaemon.v2.DfdaemonDownload.DownloadPersistentCacheTask:output_type -> dfdaemon.v2.DownloadPersistentCacheTaskResponse - 77, // 146: dfdaemon.v2.DfdaemonDownload.UploadPersistentCacheTask:output_type -> common.v2.PersistentCacheTask - 77, // 147: dfdaemon.v2.DfdaemonDownload.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask - 45, // 148: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentCacheTask:output_type -> dfdaemon.v2.StatLocalPersistentCacheTaskResponse - 47, // 149: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentCacheTasks:output_type -> dfdaemon.v2.ListLocalPersistentCacheTasksResponse - 106, // [106:150] is the sub-list for method output_type - 62, // [62:106] is the sub-list for method input_type - 62, // [62:62] is the sub-list for extension type_name - 62, // [62:62] is the sub-list for extension extendee - 0, // [0:62] is the sub-list for field type_name + 73, // 23: dfdaemon.v2.DeleteImageRequest.image:type_name -> common.v2.Image + 64, // 24: dfdaemon.v2.DownloadCacheTaskRequest.range:type_name -> common.v2.Range + 74, // 25: dfdaemon.v2.DownloadCacheTaskRequest.type:type_name -> common.v2.TaskType + 75, // 26: dfdaemon.v2.DownloadCacheTaskRequest.priority:type_name -> common.v2.Priority + 61, // 27: dfdaemon.v2.DownloadCacheTaskRequest.request_header:type_name -> dfdaemon.v2.DownloadCacheTaskRequest.RequestHeaderEntry + 67, // 28: dfdaemon.v2.DownloadCacheTaskRequest.timeout:type_name -> google.protobuf.Duration + 68, // 29: dfdaemon.v2.DownloadCacheTaskRequest.object_storage:type_name -> common.v2.ObjectStorage + 69, // 30: dfdaemon.v2.DownloadCacheTaskRequest.hdfs:type_name -> common.v2.HDFS + 64, // 31: dfdaemon.v2.DownloadCacheTaskStartedResponse.range:type_name -> common.v2.Range + 62, // 32: dfdaemon.v2.DownloadCacheTaskStartedResponse.response_header:type_name -> dfdaemon.v2.DownloadCacheTaskStartedResponse.ResponseHeaderEntry + 65, // 33: dfdaemon.v2.DownloadCacheTaskStartedResponse.pieces:type_name -> common.v2.Piece + 19, // 34: dfdaemon.v2.DownloadCacheTaskResponse.download_cache_task_started_response:type_name -> dfdaemon.v2.DownloadCacheTaskStartedResponse + 2, // 35: dfdaemon.v2.DownloadCacheTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse + 65, // 36: dfdaemon.v2.DownloadCachePieceResponse.piece:type_name -> common.v2.Piece + 68, // 37: dfdaemon.v2.DownloadPersistentTaskRequest.object_storage:type_name -> common.v2.ObjectStorage + 67, // 38: dfdaemon.v2.DownloadPersistentTaskRequest.timeout:type_name -> google.protobuf.Duration + 28, // 39: dfdaemon.v2.DownloadPersistentTaskResponse.download_persistent_task_started_response:type_name -> dfdaemon.v2.DownloadPersistentTaskStartedResponse + 2, // 40: dfdaemon.v2.DownloadPersistentTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse + 68, // 41: dfdaemon.v2.UploadPersistentTaskRequest.object_storage:type_name -> common.v2.ObjectStorage + 67, // 42: dfdaemon.v2.UploadPersistentTaskRequest.ttl:type_name -> google.protobuf.Duration + 67, // 43: dfdaemon.v2.UploadPersistentTaskRequest.timeout:type_name -> google.protobuf.Duration + 67, // 44: dfdaemon.v2.StatLocalPersistentTaskResponse.ttl:type_name -> google.protobuf.Duration + 66, // 45: dfdaemon.v2.StatLocalPersistentTaskResponse.created_at:type_name -> google.protobuf.Timestamp + 66, // 46: dfdaemon.v2.StatLocalPersistentTaskResponse.updated_at:type_name -> google.protobuf.Timestamp + 66, // 47: dfdaemon.v2.StatLocalPersistentTaskResponse.failed_at:type_name -> google.protobuf.Timestamp + 66, // 48: dfdaemon.v2.StatLocalPersistentTaskResponse.finished_at:type_name -> google.protobuf.Timestamp + 34, // 49: dfdaemon.v2.ListLocalPersistentTasksResponse.tasks:type_name -> dfdaemon.v2.StatLocalPersistentTaskResponse + 67, // 50: dfdaemon.v2.DownloadPersistentCacheTaskRequest.timeout:type_name -> google.protobuf.Duration + 41, // 51: dfdaemon.v2.DownloadPersistentCacheTaskResponse.download_persistent_cache_task_started_response:type_name -> dfdaemon.v2.DownloadPersistentCacheTaskStartedResponse + 2, // 52: dfdaemon.v2.DownloadPersistentCacheTaskResponse.download_piece_finished_response:type_name -> dfdaemon.v2.DownloadPieceFinishedResponse + 67, // 53: dfdaemon.v2.UploadPersistentCacheTaskRequest.ttl:type_name -> google.protobuf.Duration + 67, // 54: dfdaemon.v2.UploadPersistentCacheTaskRequest.timeout:type_name -> google.protobuf.Duration + 67, // 55: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.ttl:type_name -> google.protobuf.Duration + 66, // 56: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.created_at:type_name -> google.protobuf.Timestamp + 66, // 57: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.updated_at:type_name -> google.protobuf.Timestamp + 66, // 58: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.failed_at:type_name -> google.protobuf.Timestamp + 66, // 59: dfdaemon.v2.StatLocalPersistentCacheTaskResponse.finished_at:type_name -> google.protobuf.Timestamp + 47, // 60: dfdaemon.v2.ListLocalPersistentCacheTasksResponse.tasks:type_name -> dfdaemon.v2.StatLocalPersistentCacheTaskResponse + 54, // 61: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointRequest.endpoint:type_name -> dfdaemon.v2.IBVerbsQueuePairEndpoint + 54, // 62: dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointResponse.endpoint:type_name -> dfdaemon.v2.IBVerbsQueuePairEndpoint + 0, // 63: dfdaemon.v2.DfdaemonUpload.DownloadTask:input_type -> dfdaemon.v2.DownloadTaskRequest + 6, // 64: dfdaemon.v2.DfdaemonUpload.StatTask:input_type -> dfdaemon.v2.StatTaskRequest + 7, // 65: dfdaemon.v2.DfdaemonUpload.StatLocalTask:input_type -> dfdaemon.v2.StatLocalTaskRequest + 11, // 66: dfdaemon.v2.DfdaemonUpload.ListTaskEntries:input_type -> dfdaemon.v2.ListTaskEntriesRequest + 14, // 67: dfdaemon.v2.DfdaemonUpload.DeleteTask:input_type -> dfdaemon.v2.DeleteTaskRequest + 16, // 68: dfdaemon.v2.DfdaemonUpload.DeleteImage:input_type -> dfdaemon.v2.DeleteImageRequest + 4, // 69: dfdaemon.v2.DfdaemonUpload.SyncPieces:input_type -> dfdaemon.v2.SyncPiecesRequest + 18, // 70: dfdaemon.v2.DfdaemonUpload.DownloadCacheTask:input_type -> dfdaemon.v2.DownloadCacheTaskRequest + 25, // 71: dfdaemon.v2.DfdaemonUpload.StatCacheTask:input_type -> dfdaemon.v2.StatCacheTaskRequest + 26, // 72: dfdaemon.v2.DfdaemonUpload.DeleteCacheTask:input_type -> dfdaemon.v2.DeleteCacheTaskRequest + 21, // 73: dfdaemon.v2.DfdaemonUpload.SyncCachePieces:input_type -> dfdaemon.v2.SyncCachePiecesRequest + 23, // 74: dfdaemon.v2.DfdaemonUpload.DownloadCachePiece:input_type -> dfdaemon.v2.DownloadCachePieceRequest + 27, // 75: dfdaemon.v2.DfdaemonUpload.DownloadPersistentTask:input_type -> dfdaemon.v2.DownloadPersistentTaskRequest + 38, // 76: dfdaemon.v2.DfdaemonUpload.SyncPersistentPieces:input_type -> dfdaemon.v2.SyncPersistentPiecesRequest + 31, // 77: dfdaemon.v2.DfdaemonUpload.UpdatePersistentTask:input_type -> dfdaemon.v2.UpdatePersistentTaskRequest + 32, // 78: dfdaemon.v2.DfdaemonUpload.StatPersistentTask:input_type -> dfdaemon.v2.StatPersistentTaskRequest + 37, // 79: dfdaemon.v2.DfdaemonUpload.DeletePersistentTask:input_type -> dfdaemon.v2.DeletePersistentTaskRequest + 40, // 80: dfdaemon.v2.DfdaemonUpload.DownloadPersistentCacheTask:input_type -> dfdaemon.v2.DownloadPersistentCacheTaskRequest + 44, // 81: dfdaemon.v2.DfdaemonUpload.UpdatePersistentCacheTask:input_type -> dfdaemon.v2.UpdatePersistentCacheTaskRequest + 45, // 82: dfdaemon.v2.DfdaemonUpload.StatPersistentCacheTask:input_type -> dfdaemon.v2.StatPersistentCacheTaskRequest + 50, // 83: dfdaemon.v2.DfdaemonUpload.DeletePersistentCacheTask:input_type -> dfdaemon.v2.DeletePersistentCacheTaskRequest + 51, // 84: dfdaemon.v2.DfdaemonUpload.SyncPersistentCachePieces:input_type -> dfdaemon.v2.SyncPersistentCachePiecesRequest + 53, // 85: dfdaemon.v2.DfdaemonUpload.SyncHost:input_type -> dfdaemon.v2.SyncHostRequest + 55, // 86: dfdaemon.v2.DfdaemonUpload.ExchangeIBVerbsQueuePairEndpoint:input_type -> dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointRequest + 0, // 87: dfdaemon.v2.DfdaemonDownload.DownloadTask:input_type -> dfdaemon.v2.DownloadTaskRequest + 6, // 88: dfdaemon.v2.DfdaemonDownload.StatTask:input_type -> dfdaemon.v2.StatTaskRequest + 7, // 89: dfdaemon.v2.DfdaemonDownload.StatLocalTask:input_type -> dfdaemon.v2.StatLocalTaskRequest + 9, // 90: dfdaemon.v2.DfdaemonDownload.ListLocalTasks:input_type -> dfdaemon.v2.ListLocalTasksRequest + 11, // 91: dfdaemon.v2.DfdaemonDownload.ListTaskEntries:input_type -> dfdaemon.v2.ListTaskEntriesRequest + 14, // 92: dfdaemon.v2.DfdaemonDownload.DeleteTask:input_type -> dfdaemon.v2.DeleteTaskRequest + 15, // 93: dfdaemon.v2.DfdaemonDownload.DeleteLocalTask:input_type -> dfdaemon.v2.DeleteLocalTaskRequest + 16, // 94: dfdaemon.v2.DfdaemonDownload.DeleteImage:input_type -> dfdaemon.v2.DeleteImageRequest + 76, // 95: dfdaemon.v2.DfdaemonDownload.DeleteHost:input_type -> google.protobuf.Empty + 18, // 96: dfdaemon.v2.DfdaemonDownload.DownloadCacheTask:input_type -> dfdaemon.v2.DownloadCacheTaskRequest + 25, // 97: dfdaemon.v2.DfdaemonDownload.StatCacheTask:input_type -> dfdaemon.v2.StatCacheTaskRequest + 26, // 98: dfdaemon.v2.DfdaemonDownload.DeleteCacheTask:input_type -> dfdaemon.v2.DeleteCacheTaskRequest + 27, // 99: dfdaemon.v2.DfdaemonDownload.DownloadPersistentTask:input_type -> dfdaemon.v2.DownloadPersistentTaskRequest + 30, // 100: dfdaemon.v2.DfdaemonDownload.UploadPersistentTask:input_type -> dfdaemon.v2.UploadPersistentTaskRequest + 32, // 101: dfdaemon.v2.DfdaemonDownload.StatPersistentTask:input_type -> dfdaemon.v2.StatPersistentTaskRequest + 33, // 102: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentTask:input_type -> dfdaemon.v2.StatLocalPersistentTaskRequest + 35, // 103: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentTasks:input_type -> dfdaemon.v2.ListLocalPersistentTasksRequest + 40, // 104: dfdaemon.v2.DfdaemonDownload.DownloadPersistentCacheTask:input_type -> dfdaemon.v2.DownloadPersistentCacheTaskRequest + 43, // 105: dfdaemon.v2.DfdaemonDownload.UploadPersistentCacheTask:input_type -> dfdaemon.v2.UploadPersistentCacheTaskRequest + 45, // 106: dfdaemon.v2.DfdaemonDownload.StatPersistentCacheTask:input_type -> dfdaemon.v2.StatPersistentCacheTaskRequest + 46, // 107: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentCacheTask:input_type -> dfdaemon.v2.StatLocalPersistentCacheTaskRequest + 48, // 108: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentCacheTasks:input_type -> dfdaemon.v2.ListLocalPersistentCacheTasksRequest + 3, // 109: dfdaemon.v2.DfdaemonUpload.DownloadTask:output_type -> dfdaemon.v2.DownloadTaskResponse + 77, // 110: dfdaemon.v2.DfdaemonUpload.StatTask:output_type -> common.v2.Task + 8, // 111: dfdaemon.v2.DfdaemonUpload.StatLocalTask:output_type -> dfdaemon.v2.StatLocalTaskResponse + 12, // 112: dfdaemon.v2.DfdaemonUpload.ListTaskEntries:output_type -> dfdaemon.v2.ListTaskEntriesResponse + 76, // 113: dfdaemon.v2.DfdaemonUpload.DeleteTask:output_type -> google.protobuf.Empty + 17, // 114: dfdaemon.v2.DfdaemonUpload.DeleteImage:output_type -> dfdaemon.v2.DeleteImageResponse + 5, // 115: dfdaemon.v2.DfdaemonUpload.SyncPieces:output_type -> dfdaemon.v2.SyncPiecesResponse + 20, // 116: dfdaemon.v2.DfdaemonUpload.DownloadCacheTask:output_type -> dfdaemon.v2.DownloadCacheTaskResponse + 78, // 117: dfdaemon.v2.DfdaemonUpload.StatCacheTask:output_type -> common.v2.CacheTask + 76, // 118: dfdaemon.v2.DfdaemonUpload.DeleteCacheTask:output_type -> google.protobuf.Empty + 22, // 119: dfdaemon.v2.DfdaemonUpload.SyncCachePieces:output_type -> dfdaemon.v2.SyncCachePiecesResponse + 24, // 120: dfdaemon.v2.DfdaemonUpload.DownloadCachePiece:output_type -> dfdaemon.v2.DownloadCachePieceResponse + 29, // 121: dfdaemon.v2.DfdaemonUpload.DownloadPersistentTask:output_type -> dfdaemon.v2.DownloadPersistentTaskResponse + 39, // 122: dfdaemon.v2.DfdaemonUpload.SyncPersistentPieces:output_type -> dfdaemon.v2.SyncPersistentPiecesResponse + 76, // 123: dfdaemon.v2.DfdaemonUpload.UpdatePersistentTask:output_type -> google.protobuf.Empty + 79, // 124: dfdaemon.v2.DfdaemonUpload.StatPersistentTask:output_type -> common.v2.PersistentTask + 76, // 125: dfdaemon.v2.DfdaemonUpload.DeletePersistentTask:output_type -> google.protobuf.Empty + 42, // 126: dfdaemon.v2.DfdaemonUpload.DownloadPersistentCacheTask:output_type -> dfdaemon.v2.DownloadPersistentCacheTaskResponse + 76, // 127: dfdaemon.v2.DfdaemonUpload.UpdatePersistentCacheTask:output_type -> google.protobuf.Empty + 80, // 128: dfdaemon.v2.DfdaemonUpload.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask + 76, // 129: dfdaemon.v2.DfdaemonUpload.DeletePersistentCacheTask:output_type -> google.protobuf.Empty + 52, // 130: dfdaemon.v2.DfdaemonUpload.SyncPersistentCachePieces:output_type -> dfdaemon.v2.SyncPersistentCachePiecesResponse + 81, // 131: dfdaemon.v2.DfdaemonUpload.SyncHost:output_type -> common.v2.Host + 56, // 132: dfdaemon.v2.DfdaemonUpload.ExchangeIBVerbsQueuePairEndpoint:output_type -> dfdaemon.v2.ExchangeIBVerbsQueuePairEndpointResponse + 3, // 133: dfdaemon.v2.DfdaemonDownload.DownloadTask:output_type -> dfdaemon.v2.DownloadTaskResponse + 77, // 134: dfdaemon.v2.DfdaemonDownload.StatTask:output_type -> common.v2.Task + 8, // 135: dfdaemon.v2.DfdaemonDownload.StatLocalTask:output_type -> dfdaemon.v2.StatLocalTaskResponse + 10, // 136: dfdaemon.v2.DfdaemonDownload.ListLocalTasks:output_type -> dfdaemon.v2.ListLocalTasksResponse + 12, // 137: dfdaemon.v2.DfdaemonDownload.ListTaskEntries:output_type -> dfdaemon.v2.ListTaskEntriesResponse + 76, // 138: dfdaemon.v2.DfdaemonDownload.DeleteTask:output_type -> google.protobuf.Empty + 76, // 139: dfdaemon.v2.DfdaemonDownload.DeleteLocalTask:output_type -> google.protobuf.Empty + 17, // 140: dfdaemon.v2.DfdaemonDownload.DeleteImage:output_type -> dfdaemon.v2.DeleteImageResponse + 76, // 141: dfdaemon.v2.DfdaemonDownload.DeleteHost:output_type -> google.protobuf.Empty + 20, // 142: dfdaemon.v2.DfdaemonDownload.DownloadCacheTask:output_type -> dfdaemon.v2.DownloadCacheTaskResponse + 78, // 143: dfdaemon.v2.DfdaemonDownload.StatCacheTask:output_type -> common.v2.CacheTask + 76, // 144: dfdaemon.v2.DfdaemonDownload.DeleteCacheTask:output_type -> google.protobuf.Empty + 29, // 145: dfdaemon.v2.DfdaemonDownload.DownloadPersistentTask:output_type -> dfdaemon.v2.DownloadPersistentTaskResponse + 79, // 146: dfdaemon.v2.DfdaemonDownload.UploadPersistentTask:output_type -> common.v2.PersistentTask + 79, // 147: dfdaemon.v2.DfdaemonDownload.StatPersistentTask:output_type -> common.v2.PersistentTask + 34, // 148: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentTask:output_type -> dfdaemon.v2.StatLocalPersistentTaskResponse + 36, // 149: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentTasks:output_type -> dfdaemon.v2.ListLocalPersistentTasksResponse + 42, // 150: dfdaemon.v2.DfdaemonDownload.DownloadPersistentCacheTask:output_type -> dfdaemon.v2.DownloadPersistentCacheTaskResponse + 80, // 151: dfdaemon.v2.DfdaemonDownload.UploadPersistentCacheTask:output_type -> common.v2.PersistentCacheTask + 80, // 152: dfdaemon.v2.DfdaemonDownload.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask + 47, // 153: dfdaemon.v2.DfdaemonDownload.StatLocalPersistentCacheTask:output_type -> dfdaemon.v2.StatLocalPersistentCacheTaskResponse + 49, // 154: dfdaemon.v2.DfdaemonDownload.ListLocalPersistentCacheTasks:output_type -> dfdaemon.v2.ListLocalPersistentCacheTasksResponse + 109, // [109:155] is the sub-list for method output_type + 63, // [63:109] is the sub-list for method input_type + 63, // [63:63] is the sub-list for extension type_name + 63, // [63:63] is the sub-list for extension extendee + 0, // [0:63] is the sub-list for field type_name } func init() { file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() } @@ -6076,7 +6226,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCacheTaskRequest); i { + switch v := v.(*DeleteImageRequest); i { case 0: return &v.state case 1: @@ -6088,7 +6238,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCacheTaskStartedResponse); i { + switch v := v.(*DeleteImageResponse); i { case 0: return &v.state case 1: @@ -6100,7 +6250,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCacheTaskResponse); i { + switch v := v.(*DownloadCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6112,7 +6262,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncCachePiecesRequest); i { + switch v := v.(*DownloadCacheTaskStartedResponse); i { case 0: return &v.state case 1: @@ -6124,7 +6274,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncCachePiecesResponse); i { + switch v := v.(*DownloadCacheTaskResponse); i { case 0: return &v.state case 1: @@ -6136,7 +6286,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCachePieceRequest); i { + switch v := v.(*SyncCachePiecesRequest); i { case 0: return &v.state case 1: @@ -6148,7 +6298,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCachePieceResponse); i { + switch v := v.(*SyncCachePiecesResponse); i { case 0: return &v.state case 1: @@ -6160,7 +6310,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatCacheTaskRequest); i { + switch v := v.(*DownloadCachePieceRequest); i { case 0: return &v.state case 1: @@ -6172,7 +6322,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteCacheTaskRequest); i { + switch v := v.(*DownloadCachePieceResponse); i { case 0: return &v.state case 1: @@ -6184,7 +6334,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadPersistentTaskRequest); i { + switch v := v.(*StatCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6196,7 +6346,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadPersistentTaskStartedResponse); i { + switch v := v.(*DeleteCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6208,7 +6358,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadPersistentTaskResponse); i { + switch v := v.(*DownloadPersistentTaskRequest); i { case 0: return &v.state case 1: @@ -6220,7 +6370,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadPersistentTaskRequest); i { + switch v := v.(*DownloadPersistentTaskStartedResponse); i { case 0: return &v.state case 1: @@ -6232,7 +6382,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePersistentTaskRequest); i { + switch v := v.(*DownloadPersistentTaskResponse); i { case 0: return &v.state case 1: @@ -6244,7 +6394,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatPersistentTaskRequest); i { + switch v := v.(*UploadPersistentTaskRequest); i { case 0: return &v.state case 1: @@ -6256,7 +6406,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatLocalPersistentTaskRequest); i { + switch v := v.(*UpdatePersistentTaskRequest); i { case 0: return &v.state case 1: @@ -6268,7 +6418,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatLocalPersistentTaskResponse); i { + switch v := v.(*StatPersistentTaskRequest); i { case 0: return &v.state case 1: @@ -6280,7 +6430,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLocalPersistentTasksRequest); i { + switch v := v.(*StatLocalPersistentTaskRequest); i { case 0: return &v.state case 1: @@ -6292,7 +6442,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLocalPersistentTasksResponse); i { + switch v := v.(*StatLocalPersistentTaskResponse); i { case 0: return &v.state case 1: @@ -6304,7 +6454,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePersistentTaskRequest); i { + switch v := v.(*ListLocalPersistentTasksRequest); i { case 0: return &v.state case 1: @@ -6316,7 +6466,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncPersistentPiecesRequest); i { + switch v := v.(*ListLocalPersistentTasksResponse); i { case 0: return &v.state case 1: @@ -6328,7 +6478,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncPersistentPiecesResponse); i { + switch v := v.(*DeletePersistentTaskRequest); i { case 0: return &v.state case 1: @@ -6340,7 +6490,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadPersistentCacheTaskRequest); i { + switch v := v.(*SyncPersistentPiecesRequest); i { case 0: return &v.state case 1: @@ -6352,7 +6502,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadPersistentCacheTaskStartedResponse); i { + switch v := v.(*SyncPersistentPiecesResponse); i { case 0: return &v.state case 1: @@ -6364,7 +6514,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadPersistentCacheTaskResponse); i { + switch v := v.(*DownloadPersistentCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6376,7 +6526,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadPersistentCacheTaskRequest); i { + switch v := v.(*DownloadPersistentCacheTaskStartedResponse); i { case 0: return &v.state case 1: @@ -6388,7 +6538,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePersistentCacheTaskRequest); i { + switch v := v.(*DownloadPersistentCacheTaskResponse); i { case 0: return &v.state case 1: @@ -6400,7 +6550,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatPersistentCacheTaskRequest); i { + switch v := v.(*UploadPersistentCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6412,7 +6562,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatLocalPersistentCacheTaskRequest); i { + switch v := v.(*UpdatePersistentCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6424,7 +6574,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatLocalPersistentCacheTaskResponse); i { + switch v := v.(*StatPersistentCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6436,7 +6586,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLocalPersistentCacheTasksRequest); i { + switch v := v.(*StatLocalPersistentCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6448,7 +6598,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListLocalPersistentCacheTasksResponse); i { + switch v := v.(*StatLocalPersistentCacheTaskResponse); i { case 0: return &v.state case 1: @@ -6460,7 +6610,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePersistentCacheTaskRequest); i { + switch v := v.(*ListLocalPersistentCacheTasksRequest); i { case 0: return &v.state case 1: @@ -6472,7 +6622,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncPersistentCachePiecesRequest); i { + switch v := v.(*ListLocalPersistentCacheTasksResponse); i { case 0: return &v.state case 1: @@ -6484,7 +6634,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncPersistentCachePiecesResponse); i { + switch v := v.(*DeletePersistentCacheTaskRequest); i { case 0: return &v.state case 1: @@ -6496,7 +6646,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncHostRequest); i { + switch v := v.(*SyncPersistentCachePiecesRequest); i { case 0: return &v.state case 1: @@ -6508,7 +6658,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IBVerbsQueuePairEndpoint); i { + switch v := v.(*SyncPersistentCachePiecesResponse); i { case 0: return &v.state case 1: @@ -6520,7 +6670,7 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExchangeIBVerbsQueuePairEndpointRequest); i { + switch v := v.(*SyncHostRequest); i { case 0: return &v.state case 1: @@ -6532,6 +6682,30 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { } } file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IBVerbsQueuePairEndpoint); 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[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangeIBVerbsQueuePairEndpointRequest); 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[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExchangeIBVerbsQueuePairEndpointResponse); i { case 0: return &v.state @@ -6559,47 +6733,48 @@ func file_pkg_apis_dfdaemon_v2_dfdaemon_proto_init() { file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[14].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[15].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[16].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[19].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[20].OneofWrappers = []interface{}{ (*DownloadCacheTaskResponse_DownloadCacheTaskStartedResponse)(nil), (*DownloadCacheTaskResponse_DownloadPieceFinishedResponse)(nil), } - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[22].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[23].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[24].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[25].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27].OneofWrappers = []interface{}{ + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[26].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29].OneofWrappers = []interface{}{ (*DownloadPersistentTaskResponse_DownloadPersistentTaskStartedResponse)(nil), (*DownloadPersistentTaskResponse_DownloadPieceFinishedResponse)(nil), } - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[28].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[29].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[30].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[31].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[32].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[33].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[34].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[35].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[37].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40].OneofWrappers = []interface{}{ + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[39].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[40].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42].OneofWrappers = []interface{}{ (*DownloadPersistentCacheTaskResponse_DownloadPersistentCacheTaskStartedResponse)(nil), (*DownloadPersistentCacheTaskResponse_DownloadPieceFinishedResponse)(nil), } - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[41].OneofWrappers = []interface{}{} - file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[42].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[43].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[44].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[45].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[46].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[47].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[48].OneofWrappers = []interface{}{} file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[50].OneofWrappers = []interface{}{} + file_pkg_apis_dfdaemon_v2_dfdaemon_proto_msgTypes[52].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: 61, + NumMessages: 63, NumExtensions: 0, NumServices: 2, }, diff --git a/pkg/apis/dfdaemon/v2/dfdaemon.pb.validate.go b/pkg/apis/dfdaemon/v2/dfdaemon.pb.validate.go index 05c7fdcc..3395d28e 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon.pb.validate.go +++ b/pkg/apis/dfdaemon/v2/dfdaemon.pb.validate.go @@ -2670,6 +2670,269 @@ var _ interface { ErrorName() string } = DeleteLocalTaskRequestValidationError{} +// Validate checks the field values on DeleteImageRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *DeleteImageRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteImageRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteImageRequestMultiError, or nil if none found. +func (m *DeleteImageRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteImageRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if m.GetImage() == nil { + err := DeleteImageRequestValidationError{ + field: "Image", + reason: "value is required", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetImage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteImageRequestValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteImageRequestValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImage()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DeleteImageRequestValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.RemoteIp != nil { + + if m.GetRemoteIp() != "" { + + if ip := net.ParseIP(m.GetRemoteIp()); ip == nil { + err := DeleteImageRequestValidationError{ + field: "RemoteIp", + reason: "value must be a valid IP address", + } + if !all { + return err + } + errors = append(errors, err) + } + + } + + } + + if len(errors) > 0 { + return DeleteImageRequestMultiError(errors) + } + + return nil +} + +// DeleteImageRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteImageRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteImageRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteImageRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteImageRequestMultiError) AllErrors() []error { return m } + +// DeleteImageRequestValidationError is the validation error returned by +// DeleteImageRequest.Validate if the designated constraints aren't met. +type DeleteImageRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteImageRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteImageRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteImageRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteImageRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteImageRequestValidationError) ErrorName() string { + return "DeleteImageRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteImageRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteImageRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteImageRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteImageRequestValidationError{} + +// Validate checks the field values on DeleteImageResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *DeleteImageResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteImageResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteImageResponseMultiError, or nil if none found. +func (m *DeleteImageResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteImageResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return DeleteImageResponseMultiError(errors) + } + + return nil +} + +// DeleteImageResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteImageResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteImageResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteImageResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteImageResponseMultiError) AllErrors() []error { return m } + +// DeleteImageResponseValidationError is the validation error returned by +// DeleteImageResponse.Validate if the designated constraints aren't met. +type DeleteImageResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteImageResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteImageResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteImageResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteImageResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteImageResponseValidationError) ErrorName() string { + return "DeleteImageResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteImageResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteImageResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteImageResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteImageResponseValidationError{} + // Validate checks the field values on DownloadCacheTaskRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. diff --git a/pkg/apis/dfdaemon/v2/dfdaemon.proto b/pkg/apis/dfdaemon/v2/dfdaemon.proto index eaa4c6e3..ef9d8a3e 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon.proto +++ b/pkg/apis/dfdaemon/v2/dfdaemon.proto @@ -256,6 +256,26 @@ message DeleteLocalTaskRequest { }]; } +// DeleteImageRequest represents request of DeleteImage. +message DeleteImageRequest { + // Image to delete. + common.v2.Image image = 1 [(validate.rules).message.required = true]; + // Remote IP represents the IP address of the client initiating the delete request. + optional string remote_ip = 2 [(validate.rules).string = { + ip: true + ignore_empty: true + }]; +} + +// DeleteImageResponse represents response of DeleteImage. +message DeleteImageResponse { + // Deleted task ids, which are not referenced by other images in the peer. + repeated string deleted_task_ids = 1; + // Retained task ids, which are still referenced by other images or still downloading + // in the peer. + repeated string retained_task_ids = 2; +} + // DownloadCacheTaskRequest represents request of DownloadCacheTask. message DownloadCacheTaskRequest { // Download url. @@ -935,6 +955,10 @@ service DfdaemonUpload { // DeleteTask deletes task from p2p network. rpc DeleteTask(DeleteTaskRequest) returns (google.protobuf.Empty); + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + rpc DeleteImage(DeleteImageRequest) returns (DeleteImageResponse); + // SyncPieces syncs piece metadatas from remote peer. rpc SyncPieces(SyncPiecesRequest) returns (stream SyncPiecesResponse); @@ -1013,6 +1037,10 @@ service DfdaemonDownload { // DeleteLocalTask deletes local task from peer. rpc DeleteLocalTask(DeleteLocalTaskRequest) returns (google.protobuf.Empty); + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + rpc DeleteImage(DeleteImageRequest) returns (DeleteImageResponse); + // DeleteHost releases host in scheduler. rpc DeleteHost(google.protobuf.Empty) returns (google.protobuf.Empty); diff --git a/pkg/apis/dfdaemon/v2/dfdaemon_grpc.pb.go b/pkg/apis/dfdaemon/v2/dfdaemon_grpc.pb.go index 5702c64f..46268054 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon_grpc.pb.go +++ b/pkg/apis/dfdaemon/v2/dfdaemon_grpc.pb.go @@ -34,6 +34,9 @@ type DfdaemonUploadClient interface { ListTaskEntries(ctx context.Context, in *ListTaskEntriesRequest, opts ...grpc.CallOption) (*ListTaskEntriesResponse, error) // DeleteTask deletes task from p2p network. DeleteTask(ctx context.Context, in *DeleteTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) // SyncPieces syncs piece metadatas from remote peer. SyncPieces(ctx context.Context, in *SyncPiecesRequest, opts ...grpc.CallOption) (DfdaemonUpload_SyncPiecesClient, error) // DownloadCacheTask downloads cache task from p2p network. @@ -148,6 +151,15 @@ func (c *dfdaemonUploadClient) DeleteTask(ctx context.Context, in *DeleteTaskReq return out, nil } +func (c *dfdaemonUploadClient) DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) { + out := new(DeleteImageResponse) + err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonUpload/DeleteImage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *dfdaemonUploadClient) SyncPieces(ctx context.Context, in *SyncPiecesRequest, opts ...grpc.CallOption) (DfdaemonUpload_SyncPiecesClient, error) { stream, err := c.cc.NewStream(ctx, &DfdaemonUpload_ServiceDesc.Streams[1], "/dfdaemon.v2.DfdaemonUpload/SyncPieces", opts...) if err != nil { @@ -508,6 +520,9 @@ type DfdaemonUploadServer interface { ListTaskEntries(context.Context, *ListTaskEntriesRequest) (*ListTaskEntriesResponse, error) // DeleteTask deletes task from p2p network. DeleteTask(context.Context, *DeleteTaskRequest) (*emptypb.Empty, error) + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) // SyncPieces syncs piece metadatas from remote peer. SyncPieces(*SyncPiecesRequest, DfdaemonUpload_SyncPiecesServer) error // DownloadCacheTask downloads cache task from p2p network. @@ -565,6 +580,9 @@ func (UnimplementedDfdaemonUploadServer) ListTaskEntries(context.Context, *ListT func (UnimplementedDfdaemonUploadServer) DeleteTask(context.Context, *DeleteTaskRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTask not implemented") } +func (UnimplementedDfdaemonUploadServer) DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteImage not implemented") +} func (UnimplementedDfdaemonUploadServer) SyncPieces(*SyncPiecesRequest, DfdaemonUpload_SyncPiecesServer) error { return status.Errorf(codes.Unimplemented, "method SyncPieces not implemented") } @@ -724,6 +742,24 @@ func _DfdaemonUpload_DeleteTask_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _DfdaemonUpload_DeleteImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DfdaemonUploadServer).DeleteImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/dfdaemon.v2.DfdaemonUpload/DeleteImage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DfdaemonUploadServer).DeleteImage(ctx, req.(*DeleteImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _DfdaemonUpload_SyncPieces_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(SyncPiecesRequest) if err := stream.RecvMsg(m); err != nil { @@ -1095,6 +1131,10 @@ var DfdaemonUpload_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteTask", Handler: _DfdaemonUpload_DeleteTask_Handler, }, + { + MethodName: "DeleteImage", + Handler: _DfdaemonUpload_DeleteImage_Handler, + }, { MethodName: "StatCacheTask", Handler: _DfdaemonUpload_StatCacheTask_Handler, @@ -1204,6 +1244,9 @@ type DfdaemonDownloadClient interface { DeleteTask(ctx context.Context, in *DeleteTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // DeleteLocalTask deletes local task from peer. DeleteLocalTask(ctx context.Context, in *DeleteLocalTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) // DeleteHost releases host in scheduler. DeleteHost(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) // DownloadCacheTask downloads cache task from p2p network. @@ -1328,6 +1371,15 @@ func (c *dfdaemonDownloadClient) DeleteLocalTask(ctx context.Context, in *Delete return out, nil } +func (c *dfdaemonDownloadClient) DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) { + out := new(DeleteImageResponse) + err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonDownload/DeleteImage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *dfdaemonDownloadClient) DeleteHost(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonDownload/DeleteHost", in, out, opts...) @@ -1541,6 +1593,9 @@ type DfdaemonDownloadServer interface { DeleteTask(context.Context, *DeleteTaskRequest) (*emptypb.Empty, error) // DeleteLocalTask deletes local task from peer. DeleteLocalTask(context.Context, *DeleteLocalTaskRequest) (*emptypb.Empty, error) + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) // DeleteHost releases host in scheduler. DeleteHost(context.Context, *emptypb.Empty) (*emptypb.Empty, error) // DownloadCacheTask downloads cache task from p2p network. @@ -1596,6 +1651,9 @@ func (UnimplementedDfdaemonDownloadServer) DeleteTask(context.Context, *DeleteTa func (UnimplementedDfdaemonDownloadServer) DeleteLocalTask(context.Context, *DeleteLocalTaskRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteLocalTask not implemented") } +func (UnimplementedDfdaemonDownloadServer) DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteImage not implemented") +} func (UnimplementedDfdaemonDownloadServer) DeleteHost(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteHost not implemented") } @@ -1779,6 +1837,24 @@ func _DfdaemonDownload_DeleteLocalTask_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _DfdaemonDownload_DeleteImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DfdaemonDownloadServer).DeleteImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/dfdaemon.v2.DfdaemonDownload/DeleteImage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DfdaemonDownloadServer).DeleteImage(ctx, req.(*DeleteImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _DfdaemonDownload_DeleteHost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(emptypb.Empty) if err := dec(in); err != nil { @@ -2071,6 +2147,10 @@ var DfdaemonDownload_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteLocalTask", Handler: _DfdaemonDownload_DeleteLocalTask_Handler, }, + { + MethodName: "DeleteImage", + Handler: _DfdaemonDownload_DeleteImage_Handler, + }, { MethodName: "DeleteHost", Handler: _DfdaemonDownload_DeleteHost_Handler, diff --git a/pkg/apis/dfdaemon/v2/mocks/dfdaemon_mock.go b/pkg/apis/dfdaemon/v2/mocks/dfdaemon_mock.go index 92415e93..3895496d 100644 --- a/pkg/apis/dfdaemon/v2/mocks/dfdaemon_mock.go +++ b/pkg/apis/dfdaemon/v2/mocks/dfdaemon_mock.go @@ -65,6 +65,26 @@ func (mr *MockDfdaemonUploadClientMockRecorder) DeleteCacheTask(ctx, in any, opt return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCacheTask", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).DeleteCacheTask), varargs...) } +// DeleteImage mocks base method. +func (m *MockDfdaemonUploadClient) DeleteImage(ctx context.Context, in *dfdaemon.DeleteImageRequest, opts ...grpc.CallOption) (*dfdaemon.DeleteImageResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteImage", varargs...) + ret0, _ := ret[0].(*dfdaemon.DeleteImageResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteImage indicates an expected call of DeleteImage. +func (mr *MockDfdaemonUploadClientMockRecorder) DeleteImage(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImage", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).DeleteImage), varargs...) +} + // DeletePersistentCacheTask mocks base method. func (m *MockDfdaemonUploadClient) DeletePersistentCacheTask(ctx context.Context, in *dfdaemon.DeletePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { m.ctrl.T.Helper() @@ -1660,6 +1680,21 @@ func (mr *MockDfdaemonUploadServerMockRecorder) DeleteCacheTask(arg0, arg1 any) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCacheTask", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).DeleteCacheTask), arg0, arg1) } +// DeleteImage mocks base method. +func (m *MockDfdaemonUploadServer) DeleteImage(arg0 context.Context, arg1 *dfdaemon.DeleteImageRequest) (*dfdaemon.DeleteImageResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteImage", arg0, arg1) + ret0, _ := ret[0].(*dfdaemon.DeleteImageResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteImage indicates an expected call of DeleteImage. +func (mr *MockDfdaemonUploadServerMockRecorder) DeleteImage(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImage", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).DeleteImage), arg0, arg1) +} + // DeletePersistentCacheTask mocks base method. func (m *MockDfdaemonUploadServer) DeletePersistentCacheTask(arg0 context.Context, arg1 *dfdaemon.DeletePersistentCacheTaskRequest) (*emptypb.Empty, error) { m.ctrl.T.Helper() @@ -3161,6 +3196,26 @@ func (mr *MockDfdaemonDownloadClientMockRecorder) DeleteHost(ctx, in any, opts . return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHost", reflect.TypeOf((*MockDfdaemonDownloadClient)(nil).DeleteHost), varargs...) } +// DeleteImage mocks base method. +func (m *MockDfdaemonDownloadClient) DeleteImage(ctx context.Context, in *dfdaemon.DeleteImageRequest, opts ...grpc.CallOption) (*dfdaemon.DeleteImageResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteImage", varargs...) + ret0, _ := ret[0].(*dfdaemon.DeleteImageResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteImage indicates an expected call of DeleteImage. +func (mr *MockDfdaemonDownloadClientMockRecorder) DeleteImage(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImage", reflect.TypeOf((*MockDfdaemonDownloadClient)(nil).DeleteImage), varargs...) +} + // DeleteLocalTask mocks base method. func (m *MockDfdaemonDownloadClient) DeleteLocalTask(ctx context.Context, in *dfdaemon.DeleteLocalTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { m.ctrl.T.Helper() @@ -4091,6 +4146,21 @@ func (mr *MockDfdaemonDownloadServerMockRecorder) DeleteHost(arg0, arg1 any) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHost", reflect.TypeOf((*MockDfdaemonDownloadServer)(nil).DeleteHost), arg0, arg1) } +// DeleteImage mocks base method. +func (m *MockDfdaemonDownloadServer) DeleteImage(arg0 context.Context, arg1 *dfdaemon.DeleteImageRequest) (*dfdaemon.DeleteImageResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteImage", arg0, arg1) + ret0, _ := ret[0].(*dfdaemon.DeleteImageResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteImage indicates an expected call of DeleteImage. +func (mr *MockDfdaemonDownloadServerMockRecorder) DeleteImage(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteImage", reflect.TypeOf((*MockDfdaemonDownloadServer)(nil).DeleteImage), arg0, arg1) +} + // DeleteLocalTask mocks base method. func (m *MockDfdaemonDownloadServer) DeleteLocalTask(arg0 context.Context, arg1 *dfdaemon.DeleteLocalTaskRequest) (*emptypb.Empty, error) { m.ctrl.T.Helper() diff --git a/pkg/apis/scheduler/v2/scheduler.pb.go b/pkg/apis/scheduler/v2/scheduler.pb.go index 7ccfe289..091e988a 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.go @@ -5604,6 +5604,9 @@ type PreheatImageRequest struct { // different registries shares one task ID. This enables deduplication across registries and // eliminates redundant downloads and storage. EnableTaskIdBasedBlobDigest bool `protobuf:"varint,20,opt,name=enable_task_id_based_blob_digest,json=enableTaskIdBasedBlobDigest,proto3" json:"enable_task_id_based_blob_digest,omitempty"` + // Image is the OCI image that the preheated tasks belong to, the peers record the tasks + // as referenced by the image. It must match the image of the url and the platform. + Image *v2.Image `protobuf:"bytes,21,opt,name=image,proto3,oneof" json:"image,omitempty"` } func (x *PreheatImageRequest) Reset() { @@ -5778,6 +5781,13 @@ func (x *PreheatImageRequest) GetEnableTaskIdBasedBlobDigest() bool { return false } +func (x *PreheatImageRequest) GetImage() *v2.Image { + if x != nil { + return x.Image + } + return nil +} + // StatImageRequest represents request of StatImage. type StatImageRequest struct { state protoimpl.MessageState @@ -7920,7 +7930,7 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 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, 0x22, - 0xcd, 0x09, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x84, 0x0a, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, @@ -7982,444 +7992,448 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x61, 0x73, 0x65, - 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 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, - 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, - 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, - 0xfb, 0x07, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, - 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, - 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 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, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, - 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x22, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, - 0x01, 0x48, 0x06, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4c, - 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x15, - 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, - 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x07, 0x52, 0x13, 0x63, 0x6f, 0x6e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0c, - 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, - 0x08, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, - 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x3c, 0x0a, 0x05, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x42, 0x23, - 0x72, 0x21, 0x32, 0x1c, 0x5e, 0x28, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x29, 0x24, - 0xd0, 0x01, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x20, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x73, - 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x42, 0x61, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x69, 0x67, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x0f, 0x0a, 0x0d, - 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 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, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x6d, 0x0a, - 0x11, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, - 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x83, 0x01, 0x0a, - 0x09, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, - 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x22, 0x34, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, - 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x59, 0x0a, 0x05, 0x4c, 0x61, 0x79, 0x65, - 0x72, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, - 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, - 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x22, 0xc8, 0x09, 0x0a, 0x12, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, - 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, - 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, - 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 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, 0x02, 0x52, - 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x72, 0x2f, 0x32, - 0x2d, 0x5e, 0x28, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, - 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x29, 0x24, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, 0x42, 0x08, - 0x2a, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x2a, 0x07, 0x18, - 0xc8, 0x01, 0x28, 0x01, 0x40, 0x01, 0x48, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x44, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x22, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x05, - 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, - 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x06, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 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, 0x07, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x0b, 0x52, 0x05, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 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, 0x0b, 0x0a, 0x09, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, + 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xfb, 0x07, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, + 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, + 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, + 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 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, 0x02, + 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x16, 0x63, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, + 0x22, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x06, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, + 0x48, 0x07, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, + 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0c, 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, 0x08, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x08, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, 0x68, 0x64, 0x66, - 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, 0x09, 0x52, 0x04, 0x68, 0x64, 0x66, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, - 0x01, 0xd0, 0x01, 0x01, 0x48, 0x0a, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, + 0x69, 0x66, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x26, 0xfa, 0x42, 0x23, 0x72, 0x21, 0x32, 0x1c, 0x5e, 0x28, 0x61, 0x6c, 0x6c, + 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x73, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x45, 0x0a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x61, 0x73, 0x65, 0x64, 0x42, 0x6c, + 0x6f, 0x62, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 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, 0x0b, 0x0a, 0x09, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, + 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x22, 0x6d, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x70, 0x65, + 0x65, 0x72, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x09, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x38, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0c, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x64, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x34, 0x0a, 0x05, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, + 0x59, 0x0a, 0x05, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x73, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, + 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x22, 0xc8, 0x09, 0x0a, 0x12, 0x50, + 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, + 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, 0x28, + 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 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, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x34, 0xfa, 0x42, 0x31, 0x72, 0x2f, 0x32, 0x2d, 0x5e, 0x28, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, + 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x73, + 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x65, + 0x65, 0x72, 0x73, 0x29, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x12, 0x30, + 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x2a, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, + 0x03, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x27, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x0c, 0xfa, 0x42, 0x09, 0x2a, 0x07, 0x18, 0xc8, 0x01, 0x28, 0x01, 0x40, 0x01, 0x48, 0x04, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x15, 0x63, 0x6f, 0x6e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x22, 0x06, 0x18, + 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x05, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, + 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, + 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x06, 0x52, 0x13, + 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x18, 0x0d, 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, 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x08, 0x52, 0x0d, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x28, 0x0a, 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, + 0x09, 0x52, 0x04, 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x0a, 0x52, 0x0a, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, + 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, + 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 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, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, + 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x68, 0x64, 0x66, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0x93, 0x06, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, 0x0e, + 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, + 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 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, 0x02, 0x52, 0x0b, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, + 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, + 0x40, 0x01, 0x48, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 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, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x05, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, 0x68, + 0x64, 0x66, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, 0x06, 0x52, 0x04, 0x68, 0x64, + 0x66, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 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, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0x93, - 0x06, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, - 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, - 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 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, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x45, - 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, - 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x03, 0x52, 0x13, 0x63, - 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x08, 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, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, - 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x44, - 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x48, 0x05, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, - 0x44, 0x46, 0x53, 0x48, 0x06, 0x52, 0x04, 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x39, - 0x0a, 0x0b, 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, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, - 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 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, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x68, 0x64, 0x66, 0x73, 0x22, 0x40, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x52, - 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x6d, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, - 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, - 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, - 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, - 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x32, - 0xc2, 0x17, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x59, 0x0a, - 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, - 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, - 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 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, 0x3a, 0x0a, 0x08, 0x53, - 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 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, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 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, 0x49, - 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x21, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, - 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 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, 0x4c, 0x0a, 0x09, 0x4c, 0x69, 0x73, - 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 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, 0x68, - 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, - 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x65, 0x65, 0x72, 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, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, + 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x22, 0x40, 0x0a, 0x10, 0x53, + 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2c, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, + 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x6d, 0x0a, + 0x08, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x04, + 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x32, 0xc2, 0x17, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, + 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, + 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, + 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, + 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x65, 0x65, 0x72, 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, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1d, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x45, + 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x49, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, + 0x74, 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, 0x77, 0x0a, 0x16, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x73, 0x63, 0x68, + 0x12, 0x4c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, + 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 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, 0x68, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, - 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x12, 0x53, 0x74, 0x61, - 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, - 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, - 0x65, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 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, 0x67, - 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x30, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, + 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, + 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, + 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x24, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 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, 0x49, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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, 0x12, 0x6c, 0x0a, 0x1c, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x65, 0x0a, 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x12, 0x2f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 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, 0x58, 0x0a, 0x12, - 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x59, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x29, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x86, 0x01, 0x0a, 0x1b, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, - 0x72, 0x12, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x77, 0x0a, 0x16, 0x41, 0x6e, 0x6e, 0x6f, 0x75, + 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, + 0x72, 0x12, 0x2b, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, - 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, + 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, + 0x12, 0x58, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x14, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, + 0x65, 0x72, 0x12, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 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, 0x67, 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x12, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 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, 0x6c, + 0x0a, 0x1c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x31, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x65, 0x0a, 0x1a, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x2f, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 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, 0x58, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x59, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 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, 0x86, 0x01, 0x0a, 0x1b, 0x41, 0x6e, 0x6e, + 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, + 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, + 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, + 0x65, 0x65, 0x72, 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, 0x50, 0x65, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x19, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 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, 0x50, 0x65, 0x65, 0x72, - 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x50, 0x65, 0x65, 0x72, 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, 0x71, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 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, 0x7b, 0x0a, 0x21, 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, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, - 0x12, 0x36, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 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, 0x6f, 0x0a, 0x1f, 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, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 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, 0x67, 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, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 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, 0x63, 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, - 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x12, 0x49, 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x68, 0x65, - 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 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, + 0x71, 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, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 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, 0x4c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, - 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x47, 0x0a, 0x0b, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, - 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x21, 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, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x36, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 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, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 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, + 0x6f, 0x0a, 0x1f, 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, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x12, 0x34, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 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, 0x67, 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, 0x2c, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 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, 0x63, 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, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 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, 0x12, 0x49, + 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, + 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 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, 0x49, 0x0a, 0x08, 0x53, 0x74, 0x61, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x53, 0x74, 0x61, + 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x50, 0x72, 0x65, 0x68, 0x65, + 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, + 0x65, 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, 0x49, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x64, + 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, + 0x76, 0x32, 0x3b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8544,11 +8558,12 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_goTypes = []interface{}{ (*v2.CachePeer)(nil), // 105: common.v2.CachePeer (*v2.PersistentPeer)(nil), // 106: common.v2.PersistentPeer (*v2.PersistentCachePeer)(nil), // 107: common.v2.PersistentCachePeer - (*emptypb.Empty)(nil), // 108: google.protobuf.Empty - (*v2.Task)(nil), // 109: common.v2.Task - (*v2.CacheTask)(nil), // 110: common.v2.CacheTask - (*v2.PersistentTask)(nil), // 111: common.v2.PersistentTask - (*v2.PersistentCacheTask)(nil), // 112: common.v2.PersistentCacheTask + (*v2.Image)(nil), // 108: common.v2.Image + (*emptypb.Empty)(nil), // 109: google.protobuf.Empty + (*v2.Task)(nil), // 110: common.v2.Task + (*v2.CacheTask)(nil), // 111: common.v2.CacheTask + (*v2.PersistentTask)(nil), // 112: common.v2.PersistentTask + (*v2.PersistentCacheTask)(nil), // 113: common.v2.PersistentCacheTask } var file_pkg_apis_scheduler_v2_scheduler_proto_depIdxs = []int32{ 93, // 0: scheduler.v2.RegisterPeerRequest.download:type_name -> common.v2.Download @@ -8636,94 +8651,95 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_depIdxs = []int32{ 89, // 82: scheduler.v2.PreheatImageRequest.header:type_name -> scheduler.v2.PreheatImageRequest.HeaderEntry 99, // 83: scheduler.v2.PreheatImageRequest.timeout:type_name -> google.protobuf.Duration 102, // 84: scheduler.v2.PreheatImageRequest.priority:type_name -> common.v2.Priority - 90, // 85: scheduler.v2.StatImageRequest.header:type_name -> scheduler.v2.StatImageRequest.HeaderEntry - 99, // 86: scheduler.v2.StatImageRequest.timeout:type_name -> google.protobuf.Duration - 81, // 87: scheduler.v2.StatImageResponse.image:type_name -> scheduler.v2.Image - 80, // 88: scheduler.v2.StatImageResponse.peers:type_name -> scheduler.v2.PeerImage - 82, // 89: scheduler.v2.PeerImage.cached_layers:type_name -> scheduler.v2.Layer - 82, // 90: scheduler.v2.Image.layers:type_name -> scheduler.v2.Layer - 91, // 91: scheduler.v2.PreheatFileRequest.header:type_name -> scheduler.v2.PreheatFileRequest.HeaderEntry - 99, // 92: scheduler.v2.PreheatFileRequest.timeout:type_name -> google.protobuf.Duration - 102, // 93: scheduler.v2.PreheatFileRequest.priority:type_name -> common.v2.Priority - 103, // 94: scheduler.v2.PreheatFileRequest.object_storage:type_name -> common.v2.ObjectStorage - 104, // 95: scheduler.v2.PreheatFileRequest.hdfs:type_name -> common.v2.HDFS - 92, // 96: scheduler.v2.StatFileRequest.header:type_name -> scheduler.v2.StatFileRequest.HeaderEntry - 99, // 97: scheduler.v2.StatFileRequest.timeout:type_name -> google.protobuf.Duration - 103, // 98: scheduler.v2.StatFileRequest.object_storage:type_name -> common.v2.ObjectStorage - 104, // 99: scheduler.v2.StatFileRequest.hdfs:type_name -> common.v2.HDFS - 86, // 100: scheduler.v2.StatFileResponse.peers:type_name -> scheduler.v2.PeerFile - 87, // 101: scheduler.v2.PeerFile.cached_files:type_name -> scheduler.v2.File - 12, // 102: scheduler.v2.Scheduler.AnnouncePeer:input_type -> scheduler.v2.AnnouncePeerRequest - 18, // 103: scheduler.v2.Scheduler.StatPeer:input_type -> scheduler.v2.StatPeerRequest - 19, // 104: scheduler.v2.Scheduler.DeletePeer:input_type -> scheduler.v2.DeletePeerRequest - 20, // 105: scheduler.v2.Scheduler.StatTask:input_type -> scheduler.v2.StatTaskRequest - 21, // 106: scheduler.v2.Scheduler.DeleteTask:input_type -> scheduler.v2.DeleteTaskRequest - 22, // 107: scheduler.v2.Scheduler.AnnounceHost:input_type -> scheduler.v2.AnnounceHostRequest - 23, // 108: scheduler.v2.Scheduler.ListHosts:input_type -> scheduler.v2.ListHostsRequest - 25, // 109: scheduler.v2.Scheduler.DeleteHost:input_type -> scheduler.v2.DeleteHostRequest - 34, // 110: scheduler.v2.Scheduler.AnnounceCachePeer:input_type -> scheduler.v2.AnnounceCachePeerRequest - 38, // 111: scheduler.v2.Scheduler.StatCachePeer:input_type -> scheduler.v2.StatCachePeerRequest - 39, // 112: scheduler.v2.Scheduler.DeleteCachePeer:input_type -> scheduler.v2.DeleteCachePeerRequest - 40, // 113: scheduler.v2.Scheduler.StatCacheTask:input_type -> scheduler.v2.StatCacheTaskRequest - 41, // 114: scheduler.v2.Scheduler.DeleteCacheTask:input_type -> scheduler.v2.DeleteCacheTaskRequest - 50, // 115: scheduler.v2.Scheduler.AnnouncePersistentPeer:input_type -> scheduler.v2.AnnouncePersistentPeerRequest - 54, // 116: scheduler.v2.Scheduler.StatPersistentPeer:input_type -> scheduler.v2.StatPersistentPeerRequest - 55, // 117: scheduler.v2.Scheduler.DeletePersistentPeer:input_type -> scheduler.v2.DeletePersistentPeerRequest - 56, // 118: scheduler.v2.Scheduler.UploadPersistentTaskStarted:input_type -> scheduler.v2.UploadPersistentTaskStartedRequest - 57, // 119: scheduler.v2.Scheduler.UploadPersistentTaskFinished:input_type -> scheduler.v2.UploadPersistentTaskFinishedRequest - 58, // 120: scheduler.v2.Scheduler.UploadPersistentTaskFailed:input_type -> scheduler.v2.UploadPersistentTaskFailedRequest - 59, // 121: scheduler.v2.Scheduler.StatPersistentTask:input_type -> scheduler.v2.StatPersistentTaskRequest - 60, // 122: scheduler.v2.Scheduler.DeletePersistentTask:input_type -> scheduler.v2.DeletePersistentTaskRequest - 66, // 123: scheduler.v2.Scheduler.AnnouncePersistentCachePeer:input_type -> scheduler.v2.AnnouncePersistentCachePeerRequest - 70, // 124: scheduler.v2.Scheduler.StatPersistentCachePeer:input_type -> scheduler.v2.StatPersistentCachePeerRequest - 71, // 125: scheduler.v2.Scheduler.DeletePersistentCachePeer:input_type -> scheduler.v2.DeletePersistentCachePeerRequest - 72, // 126: scheduler.v2.Scheduler.UploadPersistentCacheTaskStarted:input_type -> scheduler.v2.UploadPersistentCacheTaskStartedRequest - 73, // 127: scheduler.v2.Scheduler.UploadPersistentCacheTaskFinished:input_type -> scheduler.v2.UploadPersistentCacheTaskFinishedRequest - 74, // 128: scheduler.v2.Scheduler.UploadPersistentCacheTaskFailed:input_type -> scheduler.v2.UploadPersistentCacheTaskFailedRequest - 75, // 129: scheduler.v2.Scheduler.StatPersistentCacheTask:input_type -> scheduler.v2.StatPersistentCacheTaskRequest - 76, // 130: scheduler.v2.Scheduler.DeletePersistentCacheTask:input_type -> scheduler.v2.DeletePersistentCacheTaskRequest - 77, // 131: scheduler.v2.Scheduler.PreheatImage:input_type -> scheduler.v2.PreheatImageRequest - 78, // 132: scheduler.v2.Scheduler.StatImage:input_type -> scheduler.v2.StatImageRequest - 83, // 133: scheduler.v2.Scheduler.PreheatFile:input_type -> scheduler.v2.PreheatFileRequest - 84, // 134: scheduler.v2.Scheduler.StatFile:input_type -> scheduler.v2.StatFileRequest - 17, // 135: scheduler.v2.Scheduler.AnnouncePeer:output_type -> scheduler.v2.AnnouncePeerResponse - 94, // 136: scheduler.v2.Scheduler.StatPeer:output_type -> common.v2.Peer - 108, // 137: scheduler.v2.Scheduler.DeletePeer:output_type -> google.protobuf.Empty - 109, // 138: scheduler.v2.Scheduler.StatTask:output_type -> common.v2.Task - 108, // 139: scheduler.v2.Scheduler.DeleteTask:output_type -> google.protobuf.Empty - 108, // 140: scheduler.v2.Scheduler.AnnounceHost:output_type -> google.protobuf.Empty - 24, // 141: scheduler.v2.Scheduler.ListHosts:output_type -> scheduler.v2.ListHostsResponse - 108, // 142: scheduler.v2.Scheduler.DeleteHost:output_type -> google.protobuf.Empty - 37, // 143: scheduler.v2.Scheduler.AnnounceCachePeer:output_type -> scheduler.v2.AnnounceCachePeerResponse - 105, // 144: scheduler.v2.Scheduler.StatCachePeer:output_type -> common.v2.CachePeer - 108, // 145: scheduler.v2.Scheduler.DeleteCachePeer:output_type -> google.protobuf.Empty - 110, // 146: scheduler.v2.Scheduler.StatCacheTask:output_type -> common.v2.CacheTask - 108, // 147: scheduler.v2.Scheduler.DeleteCacheTask:output_type -> google.protobuf.Empty - 53, // 148: scheduler.v2.Scheduler.AnnouncePersistentPeer:output_type -> scheduler.v2.AnnouncePersistentPeerResponse - 106, // 149: scheduler.v2.Scheduler.StatPersistentPeer:output_type -> common.v2.PersistentPeer - 108, // 150: scheduler.v2.Scheduler.DeletePersistentPeer:output_type -> google.protobuf.Empty - 108, // 151: scheduler.v2.Scheduler.UploadPersistentTaskStarted:output_type -> google.protobuf.Empty - 111, // 152: scheduler.v2.Scheduler.UploadPersistentTaskFinished:output_type -> common.v2.PersistentTask - 108, // 153: scheduler.v2.Scheduler.UploadPersistentTaskFailed:output_type -> google.protobuf.Empty - 111, // 154: scheduler.v2.Scheduler.StatPersistentTask:output_type -> common.v2.PersistentTask - 108, // 155: scheduler.v2.Scheduler.DeletePersistentTask:output_type -> google.protobuf.Empty - 69, // 156: scheduler.v2.Scheduler.AnnouncePersistentCachePeer:output_type -> scheduler.v2.AnnouncePersistentCachePeerResponse - 107, // 157: scheduler.v2.Scheduler.StatPersistentCachePeer:output_type -> common.v2.PersistentCachePeer - 108, // 158: scheduler.v2.Scheduler.DeletePersistentCachePeer:output_type -> google.protobuf.Empty - 108, // 159: scheduler.v2.Scheduler.UploadPersistentCacheTaskStarted:output_type -> google.protobuf.Empty - 112, // 160: scheduler.v2.Scheduler.UploadPersistentCacheTaskFinished:output_type -> common.v2.PersistentCacheTask - 108, // 161: scheduler.v2.Scheduler.UploadPersistentCacheTaskFailed:output_type -> google.protobuf.Empty - 112, // 162: scheduler.v2.Scheduler.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask - 108, // 163: scheduler.v2.Scheduler.DeletePersistentCacheTask:output_type -> google.protobuf.Empty - 108, // 164: scheduler.v2.Scheduler.PreheatImage:output_type -> google.protobuf.Empty - 79, // 165: scheduler.v2.Scheduler.StatImage:output_type -> scheduler.v2.StatImageResponse - 108, // 166: scheduler.v2.Scheduler.PreheatFile:output_type -> google.protobuf.Empty - 85, // 167: scheduler.v2.Scheduler.StatFile:output_type -> scheduler.v2.StatFileResponse - 135, // [135:168] is the sub-list for method output_type - 102, // [102:135] is the sub-list for method input_type - 102, // [102:102] is the sub-list for extension type_name - 102, // [102:102] is the sub-list for extension extendee - 0, // [0:102] is the sub-list for field type_name + 108, // 85: scheduler.v2.PreheatImageRequest.image:type_name -> common.v2.Image + 90, // 86: scheduler.v2.StatImageRequest.header:type_name -> scheduler.v2.StatImageRequest.HeaderEntry + 99, // 87: scheduler.v2.StatImageRequest.timeout:type_name -> google.protobuf.Duration + 81, // 88: scheduler.v2.StatImageResponse.image:type_name -> scheduler.v2.Image + 80, // 89: scheduler.v2.StatImageResponse.peers:type_name -> scheduler.v2.PeerImage + 82, // 90: scheduler.v2.PeerImage.cached_layers:type_name -> scheduler.v2.Layer + 82, // 91: scheduler.v2.Image.layers:type_name -> scheduler.v2.Layer + 91, // 92: scheduler.v2.PreheatFileRequest.header:type_name -> scheduler.v2.PreheatFileRequest.HeaderEntry + 99, // 93: scheduler.v2.PreheatFileRequest.timeout:type_name -> google.protobuf.Duration + 102, // 94: scheduler.v2.PreheatFileRequest.priority:type_name -> common.v2.Priority + 103, // 95: scheduler.v2.PreheatFileRequest.object_storage:type_name -> common.v2.ObjectStorage + 104, // 96: scheduler.v2.PreheatFileRequest.hdfs:type_name -> common.v2.HDFS + 92, // 97: scheduler.v2.StatFileRequest.header:type_name -> scheduler.v2.StatFileRequest.HeaderEntry + 99, // 98: scheduler.v2.StatFileRequest.timeout:type_name -> google.protobuf.Duration + 103, // 99: scheduler.v2.StatFileRequest.object_storage:type_name -> common.v2.ObjectStorage + 104, // 100: scheduler.v2.StatFileRequest.hdfs:type_name -> common.v2.HDFS + 86, // 101: scheduler.v2.StatFileResponse.peers:type_name -> scheduler.v2.PeerFile + 87, // 102: scheduler.v2.PeerFile.cached_files:type_name -> scheduler.v2.File + 12, // 103: scheduler.v2.Scheduler.AnnouncePeer:input_type -> scheduler.v2.AnnouncePeerRequest + 18, // 104: scheduler.v2.Scheduler.StatPeer:input_type -> scheduler.v2.StatPeerRequest + 19, // 105: scheduler.v2.Scheduler.DeletePeer:input_type -> scheduler.v2.DeletePeerRequest + 20, // 106: scheduler.v2.Scheduler.StatTask:input_type -> scheduler.v2.StatTaskRequest + 21, // 107: scheduler.v2.Scheduler.DeleteTask:input_type -> scheduler.v2.DeleteTaskRequest + 22, // 108: scheduler.v2.Scheduler.AnnounceHost:input_type -> scheduler.v2.AnnounceHostRequest + 23, // 109: scheduler.v2.Scheduler.ListHosts:input_type -> scheduler.v2.ListHostsRequest + 25, // 110: scheduler.v2.Scheduler.DeleteHost:input_type -> scheduler.v2.DeleteHostRequest + 34, // 111: scheduler.v2.Scheduler.AnnounceCachePeer:input_type -> scheduler.v2.AnnounceCachePeerRequest + 38, // 112: scheduler.v2.Scheduler.StatCachePeer:input_type -> scheduler.v2.StatCachePeerRequest + 39, // 113: scheduler.v2.Scheduler.DeleteCachePeer:input_type -> scheduler.v2.DeleteCachePeerRequest + 40, // 114: scheduler.v2.Scheduler.StatCacheTask:input_type -> scheduler.v2.StatCacheTaskRequest + 41, // 115: scheduler.v2.Scheduler.DeleteCacheTask:input_type -> scheduler.v2.DeleteCacheTaskRequest + 50, // 116: scheduler.v2.Scheduler.AnnouncePersistentPeer:input_type -> scheduler.v2.AnnouncePersistentPeerRequest + 54, // 117: scheduler.v2.Scheduler.StatPersistentPeer:input_type -> scheduler.v2.StatPersistentPeerRequest + 55, // 118: scheduler.v2.Scheduler.DeletePersistentPeer:input_type -> scheduler.v2.DeletePersistentPeerRequest + 56, // 119: scheduler.v2.Scheduler.UploadPersistentTaskStarted:input_type -> scheduler.v2.UploadPersistentTaskStartedRequest + 57, // 120: scheduler.v2.Scheduler.UploadPersistentTaskFinished:input_type -> scheduler.v2.UploadPersistentTaskFinishedRequest + 58, // 121: scheduler.v2.Scheduler.UploadPersistentTaskFailed:input_type -> scheduler.v2.UploadPersistentTaskFailedRequest + 59, // 122: scheduler.v2.Scheduler.StatPersistentTask:input_type -> scheduler.v2.StatPersistentTaskRequest + 60, // 123: scheduler.v2.Scheduler.DeletePersistentTask:input_type -> scheduler.v2.DeletePersistentTaskRequest + 66, // 124: scheduler.v2.Scheduler.AnnouncePersistentCachePeer:input_type -> scheduler.v2.AnnouncePersistentCachePeerRequest + 70, // 125: scheduler.v2.Scheduler.StatPersistentCachePeer:input_type -> scheduler.v2.StatPersistentCachePeerRequest + 71, // 126: scheduler.v2.Scheduler.DeletePersistentCachePeer:input_type -> scheduler.v2.DeletePersistentCachePeerRequest + 72, // 127: scheduler.v2.Scheduler.UploadPersistentCacheTaskStarted:input_type -> scheduler.v2.UploadPersistentCacheTaskStartedRequest + 73, // 128: scheduler.v2.Scheduler.UploadPersistentCacheTaskFinished:input_type -> scheduler.v2.UploadPersistentCacheTaskFinishedRequest + 74, // 129: scheduler.v2.Scheduler.UploadPersistentCacheTaskFailed:input_type -> scheduler.v2.UploadPersistentCacheTaskFailedRequest + 75, // 130: scheduler.v2.Scheduler.StatPersistentCacheTask:input_type -> scheduler.v2.StatPersistentCacheTaskRequest + 76, // 131: scheduler.v2.Scheduler.DeletePersistentCacheTask:input_type -> scheduler.v2.DeletePersistentCacheTaskRequest + 77, // 132: scheduler.v2.Scheduler.PreheatImage:input_type -> scheduler.v2.PreheatImageRequest + 78, // 133: scheduler.v2.Scheduler.StatImage:input_type -> scheduler.v2.StatImageRequest + 83, // 134: scheduler.v2.Scheduler.PreheatFile:input_type -> scheduler.v2.PreheatFileRequest + 84, // 135: scheduler.v2.Scheduler.StatFile:input_type -> scheduler.v2.StatFileRequest + 17, // 136: scheduler.v2.Scheduler.AnnouncePeer:output_type -> scheduler.v2.AnnouncePeerResponse + 94, // 137: scheduler.v2.Scheduler.StatPeer:output_type -> common.v2.Peer + 109, // 138: scheduler.v2.Scheduler.DeletePeer:output_type -> google.protobuf.Empty + 110, // 139: scheduler.v2.Scheduler.StatTask:output_type -> common.v2.Task + 109, // 140: scheduler.v2.Scheduler.DeleteTask:output_type -> google.protobuf.Empty + 109, // 141: scheduler.v2.Scheduler.AnnounceHost:output_type -> google.protobuf.Empty + 24, // 142: scheduler.v2.Scheduler.ListHosts:output_type -> scheduler.v2.ListHostsResponse + 109, // 143: scheduler.v2.Scheduler.DeleteHost:output_type -> google.protobuf.Empty + 37, // 144: scheduler.v2.Scheduler.AnnounceCachePeer:output_type -> scheduler.v2.AnnounceCachePeerResponse + 105, // 145: scheduler.v2.Scheduler.StatCachePeer:output_type -> common.v2.CachePeer + 109, // 146: scheduler.v2.Scheduler.DeleteCachePeer:output_type -> google.protobuf.Empty + 111, // 147: scheduler.v2.Scheduler.StatCacheTask:output_type -> common.v2.CacheTask + 109, // 148: scheduler.v2.Scheduler.DeleteCacheTask:output_type -> google.protobuf.Empty + 53, // 149: scheduler.v2.Scheduler.AnnouncePersistentPeer:output_type -> scheduler.v2.AnnouncePersistentPeerResponse + 106, // 150: scheduler.v2.Scheduler.StatPersistentPeer:output_type -> common.v2.PersistentPeer + 109, // 151: scheduler.v2.Scheduler.DeletePersistentPeer:output_type -> google.protobuf.Empty + 109, // 152: scheduler.v2.Scheduler.UploadPersistentTaskStarted:output_type -> google.protobuf.Empty + 112, // 153: scheduler.v2.Scheduler.UploadPersistentTaskFinished:output_type -> common.v2.PersistentTask + 109, // 154: scheduler.v2.Scheduler.UploadPersistentTaskFailed:output_type -> google.protobuf.Empty + 112, // 155: scheduler.v2.Scheduler.StatPersistentTask:output_type -> common.v2.PersistentTask + 109, // 156: scheduler.v2.Scheduler.DeletePersistentTask:output_type -> google.protobuf.Empty + 69, // 157: scheduler.v2.Scheduler.AnnouncePersistentCachePeer:output_type -> scheduler.v2.AnnouncePersistentCachePeerResponse + 107, // 158: scheduler.v2.Scheduler.StatPersistentCachePeer:output_type -> common.v2.PersistentCachePeer + 109, // 159: scheduler.v2.Scheduler.DeletePersistentCachePeer:output_type -> google.protobuf.Empty + 109, // 160: scheduler.v2.Scheduler.UploadPersistentCacheTaskStarted:output_type -> google.protobuf.Empty + 113, // 161: scheduler.v2.Scheduler.UploadPersistentCacheTaskFinished:output_type -> common.v2.PersistentCacheTask + 109, // 162: scheduler.v2.Scheduler.UploadPersistentCacheTaskFailed:output_type -> google.protobuf.Empty + 113, // 163: scheduler.v2.Scheduler.StatPersistentCacheTask:output_type -> common.v2.PersistentCacheTask + 109, // 164: scheduler.v2.Scheduler.DeletePersistentCacheTask:output_type -> google.protobuf.Empty + 109, // 165: scheduler.v2.Scheduler.PreheatImage:output_type -> google.protobuf.Empty + 79, // 166: scheduler.v2.Scheduler.StatImage:output_type -> scheduler.v2.StatImageResponse + 109, // 167: scheduler.v2.Scheduler.PreheatFile:output_type -> google.protobuf.Empty + 85, // 168: scheduler.v2.Scheduler.StatFile:output_type -> scheduler.v2.StatFileResponse + 136, // [136:169] is the sub-list for method output_type + 103, // [103:136] is the sub-list for method input_type + 103, // [103:103] is the sub-list for extension type_name + 103, // [103:103] is the sub-list for extension extendee + 0, // [0:103] is the sub-list for field type_name } func init() { file_pkg_apis_scheduler_v2_scheduler_proto_init() } diff --git a/pkg/apis/scheduler/v2/scheduler.pb.validate.go b/pkg/apis/scheduler/v2/scheduler.pb.validate.go index cfa97f7a..36c2fe92 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.validate.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.validate.go @@ -13063,6 +13063,39 @@ func (m *PreheatImageRequest) validate(all bool) error { } + if m.Image != nil { + + if all { + switch v := interface{}(m.GetImage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, PreheatImageRequestValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, PreheatImageRequestValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImage()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return PreheatImageRequestValidationError{ + field: "Image", + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + if len(errors) > 0 { return PreheatImageRequestMultiError(errors) } diff --git a/pkg/apis/scheduler/v2/scheduler.proto b/pkg/apis/scheduler/v2/scheduler.proto index 2bd8a6f5..1a39f819 100644 --- a/pkg/apis/scheduler/v2/scheduler.proto +++ b/pkg/apis/scheduler/v2/scheduler.proto @@ -960,6 +960,9 @@ message PreheatImageRequest { // different registries shares one task ID. This enables deduplication across registries and // eliminates redundant downloads and storage. bool enable_task_id_based_blob_digest = 20; + // Image is the OCI image that the preheated tasks belong to, the peers record the tasks + // as referenced by the image. It must match the image of the url and the platform. + optional common.v2.Image image = 21; } // StatImageRequest represents request of StatImage. diff --git a/proto/common.proto b/proto/common.proto index c4106bb1..cca3758c 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -685,6 +685,10 @@ message Download { // Scheduling policy represents how the download interacts with the scheduler, // default is AUTO. SchedulingPolicy scheduling_policy = 35; + // Image is the OCI image that the task belongs to, such as the manifest, config or layer + // of the image. The peer records the task as referenced by the image, so deleting the + // image keeps the tasks still referenced by other images. + optional Image image = 36; reserved 21; reserved "load_to_cache"; @@ -751,6 +755,15 @@ message OpenCSG { optional string base_url = 3; } +// Image represents an OCI image. +message Image { + // Reference is the canonical reference of the image, for example docker.io/library/nginx:latest + // or docker.io/library/nginx@sha256:xxx. The same image must use the same reference. + string reference = 1; + // Platform of the image in the format of os/arch, for example linux/amd64. + string platform = 2; +} + // Range represents download range. message Range { // Start of range. diff --git a/proto/dfdaemon.proto b/proto/dfdaemon.proto index 8cac1fc3..7cd1cadb 100644 --- a/proto/dfdaemon.proto +++ b/proto/dfdaemon.proto @@ -218,6 +218,23 @@ message DeleteLocalTaskRequest { optional string remote_ip = 2; } +// DeleteImageRequest represents request of DeleteImage. +message DeleteImageRequest { + // Image to delete. + common.v2.Image image = 1; + // Remote IP represents the IP address of the client initiating the delete request. + optional string remote_ip = 2; +} + +// DeleteImageResponse represents response of DeleteImage. +message DeleteImageResponse { + // Deleted task ids, which are not referenced by other images in the peer. + repeated string deleted_task_ids = 1; + // Retained task ids, which are still referenced by other images or still downloading + // in the peer. + repeated string retained_task_ids = 2; +} + // DownloadCacheTaskRequest represents request of DownloadCacheTask. message DownloadCacheTaskRequest { // Download url. @@ -775,6 +792,10 @@ service DfdaemonUpload { // DeleteTask deletes task from p2p network. rpc DeleteTask(DeleteTaskRequest) returns (google.protobuf.Empty); + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + rpc DeleteImage(DeleteImageRequest) returns (DeleteImageResponse); + // SyncPieces syncs piece metadatas from remote peer. rpc SyncPieces(SyncPiecesRequest) returns (stream SyncPiecesResponse); @@ -850,6 +871,10 @@ service DfdaemonDownload { // DeleteLocalTask deletes local task from peer. rpc DeleteLocalTask(DeleteLocalTaskRequest) returns (google.protobuf.Empty); + // DeleteImage deletes the tasks of the image in the peer, except the tasks still + // referenced by other images. + rpc DeleteImage(DeleteImageRequest) returns (DeleteImageResponse); + // DeleteHost releases host in scheduler. rpc DeleteHost(google.protobuf.Empty) returns (google.protobuf.Empty); diff --git a/proto/scheduler.proto b/proto/scheduler.proto index d717c163..e9d456da 100644 --- a/proto/scheduler.proto +++ b/proto/scheduler.proto @@ -841,6 +841,9 @@ message PreheatImageRequest { // different registries shares one task ID. This enables deduplication across registries and // eliminates redundant downloads and storage. bool enable_task_id_based_blob_digest = 20; + // Image is the OCI image that the preheated tasks belong to, the peers record the tasks + // as referenced by the image. It must match the image of the url and the platform. + optional common.v2.Image image = 21; } // StatImageRequest represents request of StatImage. diff --git a/python/dragonfly_api/common_pb2.py b/python/dragonfly_api/common_pb2.py index 69393bb5..25c73b8a 100644 --- a/python/dragonfly_api/common_pb2.py +++ b/python/dragonfly_api/common_pb2.py @@ -26,7 +26,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63ommon.proto\x12\tcommon.v2\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbe\x03\n\x04Peer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\x1d\n\x04task\x18\x07 \x01(\x0b\x32\x0f.common.v2.Task\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xc8\x03\n\tCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\"\n\x04task\x18\x07 \x01(\x0b\x32\x14.common.v2.CacheTask\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xb0\x02\n\x0ePersistentPeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12\'\n\x04task\x18\x05 \x01(\x0b\x32\x19.common.v2.PersistentTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xba\x02\n\x13PersistentCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12,\n\x04task\x18\x05 \x01(\x0b\x32\x1e.common.v2.PersistentCacheTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xcf\x04\n\x04Task\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12:\n\x0erequest_header\x18\x08 \x03(\x0b\x32\".common.v2.Task.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xd9\x04\n\tCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12?\n\x0erequest_header\x18\x08 \x03(\x0b\x32\'.common.v2.CacheTask.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xcb\x02\n\x0ePersistentTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x05 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x06 \x01(\r\x12\r\n\x05state\x18\x07 \x01(\t\x12&\n\x03ttl\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xaa\x03\n\x13PersistentCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12\r\n\x05state\x18\n \x01(\t\x12&\n\x03ttl\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\n\x04_tagB\x0e\n\x0c_application\"\x94\x04\n\x04Host\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x10\n\x08hostname\x18\x03 \x01(\t\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x0c\n\x04port\x18\x05 \x01(\x05\x12\x15\n\rdownload_port\x18\x06 \x01(\x05\x12\n\n\x02os\x18\x07 \x01(\t\x12\x10\n\x08platform\x18\x08 \x01(\t\x12\x17\n\x0fplatform_family\x18\t \x01(\t\x12\x18\n\x10platform_version\x18\n \x01(\t\x12\x16\n\x0ekernel_version\x18\x0b \x01(\t\x12 \n\x03\x63pu\x18\x0c \x01(\x0b\x32\x0e.common.v2.CPUH\x00\x88\x01\x01\x12&\n\x06memory\x18\r \x01(\x0b\x32\x11.common.v2.MemoryH\x01\x88\x01\x01\x12(\n\x07network\x18\x0e \x01(\x0b\x32\x12.common.v2.NetworkH\x02\x88\x01\x01\x12\"\n\x04\x64isk\x18\x0f \x01(\x0b\x32\x0f.common.v2.DiskH\x03\x88\x01\x01\x12$\n\x05\x62uild\x18\x10 \x01(\x0b\x32\x10.common.v2.BuildH\x04\x88\x01\x01\x12\x1c\n\x14scheduler_cluster_id\x18\x11 \x01(\x04\x12\x16\n\x0e\x64isable_shared\x18\x12 \x01(\x08\x12\x12\n\nproxy_port\x18\x13 \x01(\x05\x12\x0c\n\x04name\x18\x14 \x01(\tB\x06\n\x04_cpuB\t\n\x07_memoryB\n\n\x08_networkB\x07\n\x05_diskB\x08\n\x06_build\"\xc7\x01\n\x03\x43PU\x12\x15\n\rlogical_count\x18\x01 \x01(\r\x12\x16\n\x0ephysical_count\x18\x02 \x01(\r\x12\x0f\n\x07percent\x18\x03 \x01(\x01\x12\x17\n\x0fprocess_percent\x18\x04 \x01(\x01\x12\'\n\x05times\x18\x05 \x01(\x0b\x32\x13.common.v2.CPUTimesH\x00\x88\x01\x01\x12)\n\x06\x63group\x18\x06 \x01(\x0b\x32\x14.common.v2.CgroupCPUH\x01\x88\x01\x01\x42\x08\n\x06_timesB\t\n\x07_cgroup\"@\n\tCgroupCPU\x12\x0e\n\x06period\x18\x01 \x01(\x04\x12\r\n\x05quota\x18\x02 \x01(\x03\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xa4\x01\n\x08\x43PUTimes\x12\x0c\n\x04user\x18\x01 \x01(\x01\x12\x0e\n\x06system\x18\x02 \x01(\x01\x12\x0c\n\x04idle\x18\x03 \x01(\x01\x12\x0c\n\x04nice\x18\x04 \x01(\x01\x12\x0e\n\x06iowait\x18\x05 \x01(\x01\x12\x0b\n\x03irq\x18\x06 \x01(\x01\x12\x0f\n\x07softirq\x18\x07 \x01(\x01\x12\r\n\x05steal\x18\x08 \x01(\x01\x12\r\n\x05guest\x18\t \x01(\x01\x12\x12\n\nguest_nice\x18\n \x01(\x01\"\xb3\x01\n\x06Memory\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x11\n\tavailable\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x1c\n\x14process_used_percent\x18\x05 \x01(\x01\x12\x0c\n\x04\x66ree\x18\x06 \x01(\x04\x12,\n\x06\x63group\x18\x07 \x01(\x0b\x32\x17.common.v2.CgroupMemoryH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"B\n\x0c\x43groupMemory\x12\r\n\x05limit\x18\x01 \x01(\x03\x12\r\n\x05usage\x18\x02 \x01(\x04\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xf2\x02\n\x07Network\x12\x1c\n\x14tcp_connection_count\x18\x01 \x01(\r\x12#\n\x1bupload_tcp_connection_count\x18\x02 \x01(\r\x12\x15\n\x08location\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03idc\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x10max_rx_bandwidth\x18\t \x01(\x04\x12\x19\n\x0crx_bandwidth\x18\n \x01(\x04H\x02\x88\x01\x01\x12\x18\n\x10max_tx_bandwidth\x18\x0b \x01(\x04\x12\x19\n\x0ctx_bandwidth\x18\x0c \x01(\x04H\x03\x88\x01\x01\x42\x0b\n\t_locationB\x06\n\x04_idcB\x0f\n\r_rx_bandwidthB\x0f\n\r_tx_bandwidthJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tR\rdownload_rateR\x13\x64ownload_rate_limitR\x0bupload_rateR\x11upload_rate_limit\"\x8c\x02\n\x04\x44isk\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x0c\n\x04\x66ree\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x14\n\x0cinodes_total\x18\x05 \x01(\x04\x12\x13\n\x0binodes_used\x18\x06 \x01(\x04\x12\x13\n\x0binodes_free\x18\x07 \x01(\x04\x12\x1b\n\x13inodes_used_percent\x18\x08 \x01(\x01\x12\x16\n\x0eread_bandwidth\x18\t \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\n \x01(\x04\x12*\n\x06\x63group\x18\x0b \x01(\x0b\x32\x15.common.v2.CgroupDiskH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"=\n\nCgroupDisk\x12\x16\n\x0eread_bandwidth\x18\x01 \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\x02 \x01(\x04\"\xbc\x01\n\x05\x42uild\x12\x13\n\x0bgit_version\x18\x01 \x01(\t\x12\x17\n\ngit_commit\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngo_version\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0crust_version\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08platform\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\r\n\x0b_git_commitB\r\n\x0b_go_versionB\x0f\n\r_rust_versionB\x0b\n\t_platform\"\x8e\x0c\n\x08\x44ownload\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12>\n\x0erequest_header\x18\t \x03(\x0b\x32&.common.v2.Download.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x16 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x17 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x18 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x19 \x01(\rH\x0b\x88\x01\x01\x12\x11\n\toverwrite\x18\x1a \x01(\x08\x12 \n\x13\x61\x63tual_piece_length\x18\x1b \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x1c \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1d \x01(\x04H\x0e\x88\x01\x01\x12(\n enable_task_id_based_blob_digest\x18\x1e \x01(\x08\x12\x31\n\x0chugging_face\x18\x1f \x01(\x0b\x32\x16.common.v2.HuggingFaceH\x0f\x88\x01\x01\x12/\n\x0bmodel_scope\x18 \x01(\x0b\x32\x15.common.v2.ModelScopeH\x10\x88\x01\x01\x12\x15\n\rmetadata_only\x18! \x01(\x08\x12)\n\x08open_csg\x18\" \x01(\x0b\x32\x12.common.v2.OpenCSGH\x11\x88\x01\x01\x12\x36\n\x11scheduling_policy\x18# \x01(\x0e\x32\x1b.common.v2.SchedulingPolicy\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_countB\x0f\n\r_hugging_faceB\x0e\n\x0c_model_scopeB\x0b\n\t_open_csgJ\x04\x08\x15\x10\x16R\rload_to_cache\"\xb3\x03\n\rObjectStorage\x12\x13\n\x06region\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08\x65ndpoint\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\raccess_key_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1e\n\x11\x61\x63\x63\x65ss_key_secret\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsession_token\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1c\n\x0f\x63redential_path\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0epredefined_acl\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1b\n\x0esecurity_token\x18\x08 \x01(\tH\x07\x88\x01\x01\x12!\n\x14insecure_skip_verify\x18\t \x01(\x08H\x08\x88\x01\x01\x42\t\n\x07_regionB\x0b\n\t_endpointB\x10\n\x0e_access_key_idB\x14\n\x12_access_key_secretB\x10\n\x0e_session_tokenB\x12\n\x10_credential_pathB\x11\n\x0f_predefined_aclB\x11\n\x0f_security_tokenB\x17\n\x15_insecure_skip_verify\":\n\x04HDFS\x12\x1d\n\x10\x64\x65legation_token\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_delegation_token\"a\n\x0bHuggingFace\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"`\n\nModelScope\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"]\n\x07OpenCSG\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"&\n\x05Range\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0e\n\x06length\x18\x02 \x01(\x04\"\xac\x02\n\x05Piece\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x16\n\tparent_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0e\n\x06length\x18\x04 \x01(\x04\x12\x0e\n\x06\x64igest\x18\x05 \x01(\t\x12\x14\n\x07\x63ontent\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x31\n\x0ctraffic_type\x18\x07 \x01(\x0e\x32\x16.common.v2.TrafficTypeH\x02\x88\x01\x01\x12\'\n\x04\x63ost\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0c\n\n_parent_idB\n\n\x08_contentB\x0f\n\r_traffic_type*7\n\tSizeScope\x12\n\n\x06NORMAL\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\x08\n\x04TINY\x10\x02\x12\t\n\x05\x45MPTY\x10\x03*I\n\x08TaskType\x12\x0c\n\x08STANDARD\x10\x00\x12\x0e\n\nPERSISTENT\x10\x01\x12\x14\n\x10PERSISTENT_CACHE\x10\x02\x12\t\n\x05\x43\x41\x43HE\x10\x03*B\n\x0bTrafficType\x12\x12\n\x0e\x42\x41\x43K_TO_SOURCE\x10\x00\x12\x0f\n\x0bREMOTE_PEER\x10\x01\x12\x0e\n\nLOCAL_PEER\x10\x02*^\n\x08Priority\x12\n\n\x06LEVEL0\x10\x00\x12\n\n\x06LEVEL1\x10\x01\x12\n\n\x06LEVEL2\x10\x02\x12\n\n\x06LEVEL3\x10\x03\x12\n\n\x06LEVEL4\x10\x04\x12\n\n\x06LEVEL5\x10\x05\x12\n\n\x06LEVEL6\x10\x06*(\n\x10SchedulingPolicy\x12\x08\n\x04\x41UTO\x10\x00\x12\n\n\x06\x41LWAYS\x10\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63ommon.proto\x12\tcommon.v2\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbe\x03\n\x04Peer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\x1d\n\x04task\x18\x07 \x01(\x0b\x32\x0f.common.v2.Task\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xc8\x03\n\tCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\"\n\x04task\x18\x07 \x01(\x0b\x32\x14.common.v2.CacheTask\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xb0\x02\n\x0ePersistentPeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12\'\n\x04task\x18\x05 \x01(\x0b\x32\x19.common.v2.PersistentTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xba\x02\n\x13PersistentCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12,\n\x04task\x18\x05 \x01(\x0b\x32\x1e.common.v2.PersistentCacheTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xcf\x04\n\x04Task\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12:\n\x0erequest_header\x18\x08 \x03(\x0b\x32\".common.v2.Task.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xd9\x04\n\tCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12?\n\x0erequest_header\x18\x08 \x03(\x0b\x32\'.common.v2.CacheTask.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xcb\x02\n\x0ePersistentTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x05 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x06 \x01(\r\x12\r\n\x05state\x18\x07 \x01(\t\x12&\n\x03ttl\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xaa\x03\n\x13PersistentCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12\r\n\x05state\x18\n \x01(\t\x12&\n\x03ttl\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\n\x04_tagB\x0e\n\x0c_application\"\x94\x04\n\x04Host\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x10\n\x08hostname\x18\x03 \x01(\t\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x0c\n\x04port\x18\x05 \x01(\x05\x12\x15\n\rdownload_port\x18\x06 \x01(\x05\x12\n\n\x02os\x18\x07 \x01(\t\x12\x10\n\x08platform\x18\x08 \x01(\t\x12\x17\n\x0fplatform_family\x18\t \x01(\t\x12\x18\n\x10platform_version\x18\n \x01(\t\x12\x16\n\x0ekernel_version\x18\x0b \x01(\t\x12 \n\x03\x63pu\x18\x0c \x01(\x0b\x32\x0e.common.v2.CPUH\x00\x88\x01\x01\x12&\n\x06memory\x18\r \x01(\x0b\x32\x11.common.v2.MemoryH\x01\x88\x01\x01\x12(\n\x07network\x18\x0e \x01(\x0b\x32\x12.common.v2.NetworkH\x02\x88\x01\x01\x12\"\n\x04\x64isk\x18\x0f \x01(\x0b\x32\x0f.common.v2.DiskH\x03\x88\x01\x01\x12$\n\x05\x62uild\x18\x10 \x01(\x0b\x32\x10.common.v2.BuildH\x04\x88\x01\x01\x12\x1c\n\x14scheduler_cluster_id\x18\x11 \x01(\x04\x12\x16\n\x0e\x64isable_shared\x18\x12 \x01(\x08\x12\x12\n\nproxy_port\x18\x13 \x01(\x05\x12\x0c\n\x04name\x18\x14 \x01(\tB\x06\n\x04_cpuB\t\n\x07_memoryB\n\n\x08_networkB\x07\n\x05_diskB\x08\n\x06_build\"\xc7\x01\n\x03\x43PU\x12\x15\n\rlogical_count\x18\x01 \x01(\r\x12\x16\n\x0ephysical_count\x18\x02 \x01(\r\x12\x0f\n\x07percent\x18\x03 \x01(\x01\x12\x17\n\x0fprocess_percent\x18\x04 \x01(\x01\x12\'\n\x05times\x18\x05 \x01(\x0b\x32\x13.common.v2.CPUTimesH\x00\x88\x01\x01\x12)\n\x06\x63group\x18\x06 \x01(\x0b\x32\x14.common.v2.CgroupCPUH\x01\x88\x01\x01\x42\x08\n\x06_timesB\t\n\x07_cgroup\"@\n\tCgroupCPU\x12\x0e\n\x06period\x18\x01 \x01(\x04\x12\r\n\x05quota\x18\x02 \x01(\x03\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xa4\x01\n\x08\x43PUTimes\x12\x0c\n\x04user\x18\x01 \x01(\x01\x12\x0e\n\x06system\x18\x02 \x01(\x01\x12\x0c\n\x04idle\x18\x03 \x01(\x01\x12\x0c\n\x04nice\x18\x04 \x01(\x01\x12\x0e\n\x06iowait\x18\x05 \x01(\x01\x12\x0b\n\x03irq\x18\x06 \x01(\x01\x12\x0f\n\x07softirq\x18\x07 \x01(\x01\x12\r\n\x05steal\x18\x08 \x01(\x01\x12\r\n\x05guest\x18\t \x01(\x01\x12\x12\n\nguest_nice\x18\n \x01(\x01\"\xb3\x01\n\x06Memory\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x11\n\tavailable\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x1c\n\x14process_used_percent\x18\x05 \x01(\x01\x12\x0c\n\x04\x66ree\x18\x06 \x01(\x04\x12,\n\x06\x63group\x18\x07 \x01(\x0b\x32\x17.common.v2.CgroupMemoryH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"B\n\x0c\x43groupMemory\x12\r\n\x05limit\x18\x01 \x01(\x03\x12\r\n\x05usage\x18\x02 \x01(\x04\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xf2\x02\n\x07Network\x12\x1c\n\x14tcp_connection_count\x18\x01 \x01(\r\x12#\n\x1bupload_tcp_connection_count\x18\x02 \x01(\r\x12\x15\n\x08location\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03idc\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x10max_rx_bandwidth\x18\t \x01(\x04\x12\x19\n\x0crx_bandwidth\x18\n \x01(\x04H\x02\x88\x01\x01\x12\x18\n\x10max_tx_bandwidth\x18\x0b \x01(\x04\x12\x19\n\x0ctx_bandwidth\x18\x0c \x01(\x04H\x03\x88\x01\x01\x42\x0b\n\t_locationB\x06\n\x04_idcB\x0f\n\r_rx_bandwidthB\x0f\n\r_tx_bandwidthJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tR\rdownload_rateR\x13\x64ownload_rate_limitR\x0bupload_rateR\x11upload_rate_limit\"\x8c\x02\n\x04\x44isk\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x0c\n\x04\x66ree\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x14\n\x0cinodes_total\x18\x05 \x01(\x04\x12\x13\n\x0binodes_used\x18\x06 \x01(\x04\x12\x13\n\x0binodes_free\x18\x07 \x01(\x04\x12\x1b\n\x13inodes_used_percent\x18\x08 \x01(\x01\x12\x16\n\x0eread_bandwidth\x18\t \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\n \x01(\x04\x12*\n\x06\x63group\x18\x0b \x01(\x0b\x32\x15.common.v2.CgroupDiskH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"=\n\nCgroupDisk\x12\x16\n\x0eread_bandwidth\x18\x01 \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\x02 \x01(\x04\"\xbc\x01\n\x05\x42uild\x12\x13\n\x0bgit_version\x18\x01 \x01(\t\x12\x17\n\ngit_commit\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngo_version\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0crust_version\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08platform\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\r\n\x0b_git_commitB\r\n\x0b_go_versionB\x0f\n\r_rust_versionB\x0b\n\t_platform\"\xbe\x0c\n\x08\x44ownload\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12>\n\x0erequest_header\x18\t \x03(\x0b\x32&.common.v2.Download.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x16 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x17 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x18 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x19 \x01(\rH\x0b\x88\x01\x01\x12\x11\n\toverwrite\x18\x1a \x01(\x08\x12 \n\x13\x61\x63tual_piece_length\x18\x1b \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x1c \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1d \x01(\x04H\x0e\x88\x01\x01\x12(\n enable_task_id_based_blob_digest\x18\x1e \x01(\x08\x12\x31\n\x0chugging_face\x18\x1f \x01(\x0b\x32\x16.common.v2.HuggingFaceH\x0f\x88\x01\x01\x12/\n\x0bmodel_scope\x18 \x01(\x0b\x32\x15.common.v2.ModelScopeH\x10\x88\x01\x01\x12\x15\n\rmetadata_only\x18! \x01(\x08\x12)\n\x08open_csg\x18\" \x01(\x0b\x32\x12.common.v2.OpenCSGH\x11\x88\x01\x01\x12\x36\n\x11scheduling_policy\x18# \x01(\x0e\x32\x1b.common.v2.SchedulingPolicy\x12$\n\x05image\x18$ \x01(\x0b\x32\x10.common.v2.ImageH\x12\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_countB\x0f\n\r_hugging_faceB\x0e\n\x0c_model_scopeB\x0b\n\t_open_csgB\x08\n\x06_imageJ\x04\x08\x15\x10\x16R\rload_to_cache\"\xb3\x03\n\rObjectStorage\x12\x13\n\x06region\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08\x65ndpoint\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\raccess_key_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1e\n\x11\x61\x63\x63\x65ss_key_secret\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsession_token\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1c\n\x0f\x63redential_path\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0epredefined_acl\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1b\n\x0esecurity_token\x18\x08 \x01(\tH\x07\x88\x01\x01\x12!\n\x14insecure_skip_verify\x18\t \x01(\x08H\x08\x88\x01\x01\x42\t\n\x07_regionB\x0b\n\t_endpointB\x10\n\x0e_access_key_idB\x14\n\x12_access_key_secretB\x10\n\x0e_session_tokenB\x12\n\x10_credential_pathB\x11\n\x0f_predefined_aclB\x11\n\x0f_security_tokenB\x17\n\x15_insecure_skip_verify\":\n\x04HDFS\x12\x1d\n\x10\x64\x65legation_token\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_delegation_token\"a\n\x0bHuggingFace\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"`\n\nModelScope\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"]\n\x07OpenCSG\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\",\n\x05Image\x12\x11\n\treference\x18\x01 \x01(\t\x12\x10\n\x08platform\x18\x02 \x01(\t\"&\n\x05Range\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0e\n\x06length\x18\x02 \x01(\x04\"\xac\x02\n\x05Piece\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x16\n\tparent_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0e\n\x06length\x18\x04 \x01(\x04\x12\x0e\n\x06\x64igest\x18\x05 \x01(\t\x12\x14\n\x07\x63ontent\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x31\n\x0ctraffic_type\x18\x07 \x01(\x0e\x32\x16.common.v2.TrafficTypeH\x02\x88\x01\x01\x12\'\n\x04\x63ost\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0c\n\n_parent_idB\n\n\x08_contentB\x0f\n\r_traffic_type*7\n\tSizeScope\x12\n\n\x06NORMAL\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\x08\n\x04TINY\x10\x02\x12\t\n\x05\x45MPTY\x10\x03*I\n\x08TaskType\x12\x0c\n\x08STANDARD\x10\x00\x12\x0e\n\nPERSISTENT\x10\x01\x12\x14\n\x10PERSISTENT_CACHE\x10\x02\x12\t\n\x05\x43\x41\x43HE\x10\x03*B\n\x0bTrafficType\x12\x12\n\x0e\x42\x41\x43K_TO_SOURCE\x10\x00\x12\x0f\n\x0bREMOTE_PEER\x10\x01\x12\x0e\n\nLOCAL_PEER\x10\x02*^\n\x08Priority\x12\n\n\x06LEVEL0\x10\x00\x12\n\n\x06LEVEL1\x10\x01\x12\n\n\x06LEVEL2\x10\x02\x12\n\n\x06LEVEL3\x10\x03\x12\n\n\x06LEVEL4\x10\x04\x12\n\n\x06LEVEL5\x10\x05\x12\n\n\x06LEVEL6\x10\x06*(\n\x10SchedulingPolicy\x12\x08\n\x04\x41UTO\x10\x00\x12\n\n\x06\x41LWAYS\x10\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -39,16 +39,16 @@ _globals['_CACHETASK_REQUESTHEADERENTRY']._serialized_options = b'8\001' _globals['_DOWNLOAD_REQUESTHEADERENTRY']._loaded_options = None _globals['_DOWNLOAD_REQUESTHEADERENTRY']._serialized_options = b'8\001' - _globals['_SIZESCOPE']._serialized_start=8389 - _globals['_SIZESCOPE']._serialized_end=8444 - _globals['_TASKTYPE']._serialized_start=8446 - _globals['_TASKTYPE']._serialized_end=8519 - _globals['_TRAFFICTYPE']._serialized_start=8521 - _globals['_TRAFFICTYPE']._serialized_end=8587 - _globals['_PRIORITY']._serialized_start=8589 - _globals['_PRIORITY']._serialized_end=8683 - _globals['_SCHEDULINGPOLICY']._serialized_start=8685 - _globals['_SCHEDULINGPOLICY']._serialized_end=8725 + _globals['_SIZESCOPE']._serialized_start=8483 + _globals['_SIZESCOPE']._serialized_end=8538 + _globals['_TASKTYPE']._serialized_start=8540 + _globals['_TASKTYPE']._serialized_end=8613 + _globals['_TRAFFICTYPE']._serialized_start=8615 + _globals['_TRAFFICTYPE']._serialized_end=8681 + _globals['_PRIORITY']._serialized_start=8683 + _globals['_PRIORITY']._serialized_end=8777 + _globals['_SCHEDULINGPOLICY']._serialized_start=8779 + _globals['_SCHEDULINGPOLICY']._serialized_end=8819 _globals['_PEER']._serialized_start=93 _globals['_PEER']._serialized_end=539 _globals['_CACHEPEER']._serialized_start=542 @@ -90,21 +90,23 @@ _globals['_BUILD']._serialized_start=5513 _globals['_BUILD']._serialized_end=5701 _globals['_DOWNLOAD']._serialized_start=5704 - _globals['_DOWNLOAD']._serialized_end=7254 + _globals['_DOWNLOAD']._serialized_end=7302 _globals['_DOWNLOAD_REQUESTHEADERENTRY']._serialized_start=2129 _globals['_DOWNLOAD_REQUESTHEADERENTRY']._serialized_end=2181 - _globals['_OBJECTSTORAGE']._serialized_start=7257 - _globals['_OBJECTSTORAGE']._serialized_end=7692 - _globals['_HDFS']._serialized_start=7694 - _globals['_HDFS']._serialized_end=7752 - _globals['_HUGGINGFACE']._serialized_start=7754 - _globals['_HUGGINGFACE']._serialized_end=7851 - _globals['_MODELSCOPE']._serialized_start=7853 - _globals['_MODELSCOPE']._serialized_end=7949 - _globals['_OPENCSG']._serialized_start=7951 - _globals['_OPENCSG']._serialized_end=8044 - _globals['_RANGE']._serialized_start=8046 - _globals['_RANGE']._serialized_end=8084 - _globals['_PIECE']._serialized_start=8087 - _globals['_PIECE']._serialized_end=8387 + _globals['_OBJECTSTORAGE']._serialized_start=7305 + _globals['_OBJECTSTORAGE']._serialized_end=7740 + _globals['_HDFS']._serialized_start=7742 + _globals['_HDFS']._serialized_end=7800 + _globals['_HUGGINGFACE']._serialized_start=7802 + _globals['_HUGGINGFACE']._serialized_end=7899 + _globals['_MODELSCOPE']._serialized_start=7901 + _globals['_MODELSCOPE']._serialized_end=7997 + _globals['_OPENCSG']._serialized_start=7999 + _globals['_OPENCSG']._serialized_end=8092 + _globals['_IMAGE']._serialized_start=8094 + _globals['_IMAGE']._serialized_end=8138 + _globals['_RANGE']._serialized_start=8140 + _globals['_RANGE']._serialized_end=8178 + _globals['_PIECE']._serialized_start=8181 + _globals['_PIECE']._serialized_end=8481 # @@protoc_insertion_point(module_scope) diff --git a/python/dragonfly_api/common_pb2.pyi b/python/dragonfly_api/common_pb2.pyi index ce8843a4..3dc6bdab 100644 --- a/python/dragonfly_api/common_pb2.pyi +++ b/python/dragonfly_api/common_pb2.pyi @@ -501,7 +501,7 @@ class Build(_message.Message): def __init__(self, git_version: _Optional[str] = ..., git_commit: _Optional[str] = ..., go_version: _Optional[str] = ..., rust_version: _Optional[str] = ..., platform: _Optional[str] = ...) -> None: ... class Download(_message.Message): - __slots__ = ("url", "digest", "range", "type", "tag", "application", "priority", "filtered_query_params", "request_header", "piece_length", "output_path", "timeout", "disable_back_to_source", "need_back_to_source", "certificate_chain", "prefetch", "object_storage", "hdfs", "is_prefetch", "need_piece_content", "force_hard_link", "content_for_calculating_task_id", "remote_ip", "concurrent_piece_count", "overwrite", "actual_piece_length", "actual_content_length", "actual_piece_count", "enable_task_id_based_blob_digest", "hugging_face", "model_scope", "metadata_only", "open_csg", "scheduling_policy") + __slots__ = ("url", "digest", "range", "type", "tag", "application", "priority", "filtered_query_params", "request_header", "piece_length", "output_path", "timeout", "disable_back_to_source", "need_back_to_source", "certificate_chain", "prefetch", "object_storage", "hdfs", "is_prefetch", "need_piece_content", "force_hard_link", "content_for_calculating_task_id", "remote_ip", "concurrent_piece_count", "overwrite", "actual_piece_length", "actual_content_length", "actual_piece_count", "enable_task_id_based_blob_digest", "hugging_face", "model_scope", "metadata_only", "open_csg", "scheduling_policy", "image") class RequestHeaderEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -543,6 +543,7 @@ class Download(_message.Message): METADATA_ONLY_FIELD_NUMBER: _ClassVar[int] OPEN_CSG_FIELD_NUMBER: _ClassVar[int] SCHEDULING_POLICY_FIELD_NUMBER: _ClassVar[int] + IMAGE_FIELD_NUMBER: _ClassVar[int] url: str digest: str range: Range @@ -577,7 +578,8 @@ class Download(_message.Message): metadata_only: bool open_csg: OpenCSG scheduling_policy: SchedulingPolicy - def __init__(self, url: _Optional[str] = ..., digest: _Optional[str] = ..., range: _Optional[_Union[Range, _Mapping]] = ..., type: _Optional[_Union[TaskType, str]] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., priority: _Optional[_Union[Priority, str]] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., request_header: _Optional[_Mapping[str, str]] = ..., piece_length: _Optional[int] = ..., output_path: _Optional[str] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., disable_back_to_source: bool = ..., need_back_to_source: bool = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., prefetch: bool = ..., object_storage: _Optional[_Union[ObjectStorage, _Mapping]] = ..., hdfs: _Optional[_Union[HDFS, _Mapping]] = ..., is_prefetch: bool = ..., need_piece_content: bool = ..., force_hard_link: bool = ..., content_for_calculating_task_id: _Optional[str] = ..., remote_ip: _Optional[str] = ..., concurrent_piece_count: _Optional[int] = ..., overwrite: bool = ..., actual_piece_length: _Optional[int] = ..., actual_content_length: _Optional[int] = ..., actual_piece_count: _Optional[int] = ..., enable_task_id_based_blob_digest: bool = ..., hugging_face: _Optional[_Union[HuggingFace, _Mapping]] = ..., model_scope: _Optional[_Union[ModelScope, _Mapping]] = ..., metadata_only: bool = ..., open_csg: _Optional[_Union[OpenCSG, _Mapping]] = ..., scheduling_policy: _Optional[_Union[SchedulingPolicy, str]] = ...) -> None: ... + image: Image + def __init__(self, url: _Optional[str] = ..., digest: _Optional[str] = ..., range: _Optional[_Union[Range, _Mapping]] = ..., type: _Optional[_Union[TaskType, str]] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., priority: _Optional[_Union[Priority, str]] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., request_header: _Optional[_Mapping[str, str]] = ..., piece_length: _Optional[int] = ..., output_path: _Optional[str] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., disable_back_to_source: bool = ..., need_back_to_source: bool = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., prefetch: bool = ..., object_storage: _Optional[_Union[ObjectStorage, _Mapping]] = ..., hdfs: _Optional[_Union[HDFS, _Mapping]] = ..., is_prefetch: bool = ..., need_piece_content: bool = ..., force_hard_link: bool = ..., content_for_calculating_task_id: _Optional[str] = ..., remote_ip: _Optional[str] = ..., concurrent_piece_count: _Optional[int] = ..., overwrite: bool = ..., actual_piece_length: _Optional[int] = ..., actual_content_length: _Optional[int] = ..., actual_piece_count: _Optional[int] = ..., enable_task_id_based_blob_digest: bool = ..., hugging_face: _Optional[_Union[HuggingFace, _Mapping]] = ..., model_scope: _Optional[_Union[ModelScope, _Mapping]] = ..., metadata_only: bool = ..., open_csg: _Optional[_Union[OpenCSG, _Mapping]] = ..., scheduling_policy: _Optional[_Union[SchedulingPolicy, str]] = ..., image: _Optional[_Union[Image, _Mapping]] = ...) -> None: ... class ObjectStorage(_message.Message): __slots__ = ("region", "endpoint", "access_key_id", "access_key_secret", "session_token", "credential_path", "predefined_acl", "security_token", "insecure_skip_verify") @@ -637,6 +639,14 @@ class OpenCSG(_message.Message): base_url: str def __init__(self, token: _Optional[str] = ..., revision: _Optional[str] = ..., base_url: _Optional[str] = ...) -> None: ... +class Image(_message.Message): + __slots__ = ("reference", "platform") + REFERENCE_FIELD_NUMBER: _ClassVar[int] + PLATFORM_FIELD_NUMBER: _ClassVar[int] + reference: str + platform: str + def __init__(self, reference: _Optional[str] = ..., platform: _Optional[str] = ...) -> None: ... + class Range(_message.Message): __slots__ = ("start", "length") START_FIELD_NUMBER: _ClassVar[int] diff --git a/python/dragonfly_api/dfdaemon_pb2.py b/python/dragonfly_api/dfdaemon_pb2.py index 208b5371..077ab90c 100644 --- a/python/dragonfly_api/dfdaemon_pb2.py +++ b/python/dragonfly_api/dfdaemon_pb2.py @@ -28,7 +28,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x64\x66\x64\x61\x65mon.proto\x12\x0b\x64\x66\x64\x61\x65mon.v2\x1a\x0c\x63ommon.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"<\n\x13\x44ownloadTaskRequest\x12%\n\x08\x64ownload\x18\x01 \x01(\x0b\x32\x13.common.v2.Download\"\xaa\x02\n\x1b\x44ownloadTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12U\n\x0fresponse_header\x18\x03 \x03(\x0b\x32<.dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\x13\n\x0bis_finished\x18\x05 \x01(\x08\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06_range\"@\n\x1d\x44ownloadPieceFinishedResponse\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"\x81\x02\n\x14\x44ownloadTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12R\n\x1e\x64ownload_task_started_response\x18\x04 \x01(\x0b\x32(.dfdaemon.v2.DownloadTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"W\n\x11SyncPiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12 \n\x18interested_piece_numbers\x18\x03 \x03(\r\"\x9a\x01\n\x12SyncPiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x15\n\x08tcp_port\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\tquic_port\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_tcp_portB\x0c\n\n_quic_port\"Z\n\x0fStatTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ipJ\x04\x08\x03\x10\x04R\nlocal_only\"M\n\x14StatLocalTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xef\x04\n\x15StatLocalTaskResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x1b\n\x0e\x63ontent_length\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12O\n\x0fresponse_header\x18\x04 \x03(\x0b\x32\x36.dfdaemon.v2.StatLocalTaskResponse.ResponseHeaderEntry\x12\x17\n\x0fuploading_count\x18\x05 \x01(\x04\x12\x16\n\x0euploaded_count\x18\x06 \x01(\x04\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\rprefetched_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x32\n\tfailed_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x12\x34\n\x0b\x66inished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04\x88\x01\x01\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x11\n\x0f_content_lengthB\x10\n\x0e_prefetched_atB\x0c\n\n_failed_atB\x0e\n\x0c_finished_at\"=\n\x15ListLocalTasksRequest\x12\x16\n\tremote_ip\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"K\n\x16ListLocalTasksResponse\x12\x31\n\x05tasks\x18\x01 \x03(\x0b\x32\".dfdaemon.v2.StatLocalTaskResponse\"\xee\x04\n\x16ListTaskEntriesRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12N\n\x0erequest_header\x18\x03 \x03(\x0b\x32\x36.dfdaemon.v2.ListTaskEntriesRequest.RequestHeaderEntry\x12/\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\x05 \x03(\x0c\x12\x35\n\x0eobject_storage\x18\x06 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x01\x88\x01\x01\x12\"\n\x04hdfs\x18\x07 \x01(\x0b\x32\x0f.common.v2.HDFSH\x02\x88\x01\x01\x12\x16\n\tremote_ip\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x31\n\x0chugging_face\x18\t \x01(\x0b\x32\x16.common.v2.HuggingFaceH\x04\x88\x01\x01\x12/\n\x0bmodel_scope\x18\n \x01(\x0b\x32\x15.common.v2.ModelScopeH\x05\x88\x01\x01\x12)\n\x08open_csg\x18\x0b \x01(\x0b\x32\x12.common.v2.OpenCSGH\x06\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\x0c\n\n_remote_ipB\x0f\n\r_hugging_faceB\x0e\n\x0c_model_scopeB\x0b\n\t_open_csg\"\x8a\x02\n\x17ListTaskEntriesResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\x12Q\n\x0fresponse_header\x18\x02 \x03(\x0b\x32\x38.dfdaemon.v2.ListTaskEntriesResponse.ResponseHeaderEntry\x12\x18\n\x0bstatus_code\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12#\n\x07\x65ntries\x18\x04 \x03(\x0b\x32\x12.dfdaemon.v2.Entry\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_status_code\"<\n\x05\x45ntry\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontent_length\x18\x02 \x01(\x04\x12\x0e\n\x06is_dir\x18\x03 \x01(\x08\"J\n\x11\x44\x65leteTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"O\n\x16\x44\x65leteLocalTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xdc\x07\n\x18\x44ownloadCacheTaskRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12P\n\x0erequest_header\x18\t \x03(\x0b\x32\x38.dfdaemon.v2.DownloadCacheTaskRequest.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x15 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x16 \x01(\tH\n\x88\x01\x01\x12\x11\n\toverwrite\x18\x17 \x01(\x08\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ip\"\xb4\x02\n DownloadCacheTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12Z\n\x0fresponse_header\x18\x03 \x03(\x0b\x32\x41.dfdaemon.v2.DownloadCacheTaskStartedResponse.ResponseHeaderEntry\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\x13\n\x0bis_finished\x18\x05 \x01(\x08\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06_range\"\x91\x02\n\x19\x44ownloadCacheTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12]\n$download_cache_task_started_response\x18\x04 \x01(\x0b\x32-.dfdaemon.v2.DownloadCacheTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"b\n\x16SyncCachePiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12&\n\x1einterested_cache_piece_numbers\x18\x03 \x03(\r\"I\n\x17SyncCachePiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\"S\n\x19\x44ownloadCachePieceRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x14\n\x0cpiece_number\x18\x03 \x01(\r\"]\n\x1a\x44ownloadCachePieceResponse\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_digest\"M\n\x14StatCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"O\n\x16\x44\x65leteCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xe7\x02\n\x1d\x44ownloadPersistentTaskRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x12\n\npersistent\x18\x03 \x01(\x08\x12\x18\n\x0boutput_path\x18\x04 \x01(\tH\x00\x88\x01\x01\x12/\n\x07timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationH\x01\x88\x01\x01\x12\x1a\n\x12need_piece_content\x18\x06 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x07 \x01(\x08\x12\x13\n\x06\x64igest\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tremote_ip\x18\t \x01(\tH\x03\x88\x01\x01\x12\x11\n\toverwrite\x18\n \x01(\x08\x42\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\t\n\x07_digestB\x0c\n\n_remote_ip\"?\n%DownloadPersistentTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\"\xa0\x02\n\x1e\x44ownloadPersistentTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12g\n)download_persistent_task_started_response\x18\x04 \x01(\x0b\x32\x32.dfdaemon.v2.DownloadPersistentTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"\x97\x02\n\x1bUploadPersistentTaskRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x0c\n\x04path\x18\x03 \x01(\t\x12 \n\x18persistent_replica_count\x18\x04 \x01(\x04\x12&\n\x03ttl\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x16\n\tremote_ip\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_timeoutB\x0c\n\n_remote_ip\"h\n\x1bUpdatePersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x16\n\tremote_ip\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"R\n\x19StatPersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"W\n\x1eStatLocalPersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xe3\x03\n\x1fStatLocalPersistentTaskResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12&\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x0cpiece_length\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1b\n\x0e\x63ontent_length\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\x0fuploading_count\x18\x06 \x01(\x04\x12\x16\n\x0euploaded_count\x18\x07 \x01(\x04\x12.\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\tfailed_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x34\n\x0b\x66inished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x42\x0f\n\r_piece_lengthB\x11\n\x0f_content_lengthB\x0c\n\n_failed_atB\x0e\n\x0c_finished_at\"G\n\x1fListLocalPersistentTasksRequest\x12\x16\n\tremote_ip\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"_\n ListLocalPersistentTasksResponse\x12;\n\x05tasks\x18\x01 \x03(\x0b\x32,.dfdaemon.v2.StatLocalPersistentTaskResponse\"T\n\x1b\x44\x65letePersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"a\n\x1bSyncPersistentPiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12 \n\x18interested_piece_numbers\x18\x03 \x03(\r\"\xa4\x01\n\x1cSyncPersistentPiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x15\n\x08tcp_port\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\tquic_port\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_tcp_portB\x0c\n\n_quic_port\"\x82\x03\n\"DownloadPersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x10\n\x03tag\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x05 \x01(\tH\x02\x88\x01\x01\x12/\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x03\x88\x01\x01\x12\x1a\n\x12need_piece_content\x18\x07 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x08 \x01(\x08\x12\x13\n\x06\x64igest\x18\t \x01(\tH\x04\x88\x01\x01\x12\x16\n\tremote_ip\x18\n \x01(\tH\x05\x88\x01\x01\x12\x11\n\toverwrite\x18\x0b \x01(\x08\x42\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\t\n\x07_digestB\x0c\n\n_remote_ip\"D\n*DownloadPersistentCacheTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\"\xb0\x02\n#DownloadPersistentCacheTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12r\n/download_persistent_cache_task_started_response\x18\x04 \x01(\x0b\x32\x37.dfdaemon.v2.DownloadPersistentCacheTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"\x9f\x03\n UploadPersistentCacheTaskRequest\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x0c\n\x04path\x18\x02 \x01(\t\x12 \n\x18persistent_replica_count\x18\x03 \x01(\x04\x12\x10\n\x03tag\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0cpiece_length\x18\x06 \x01(\x04H\x03\x88\x01\x01\x12&\n\x03ttl\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationH\x04\x88\x01\x01\x12\x16\n\tremote_ip\x18\t \x01(\tH\x05\x88\x01\x01\x42\"\n _content_for_calculating_task_idB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\n\n\x08_timeoutB\x0c\n\n_remote_ip\"m\n UpdatePersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x16\n\tremote_ip\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"W\n\x1eStatPersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\\\n#StatLocalPersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xe8\x03\n$StatLocalPersistentCacheTaskResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12&\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x0cpiece_length\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1b\n\x0e\x63ontent_length\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\x0fuploading_count\x18\x06 \x01(\x04\x12\x16\n\x0euploaded_count\x18\x07 \x01(\x04\x12.\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\tfailed_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x34\n\x0b\x66inished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x42\x0f\n\r_piece_lengthB\x11\n\x0f_content_lengthB\x0c\n\n_failed_atB\x0e\n\x0c_finished_at\"L\n$ListLocalPersistentCacheTasksRequest\x12\x16\n\tremote_ip\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"i\n%ListLocalPersistentCacheTasksResponse\x12@\n\x05tasks\x18\x01 \x03(\x0b\x32\x31.dfdaemon.v2.StatLocalPersistentCacheTaskResponse\"Y\n DeletePersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"f\n SyncPersistentCachePiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12 \n\x18interested_piece_numbers\x18\x03 \x03(\r\"\xa9\x01\n!SyncPersistentCachePiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x15\n\x08tcp_port\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\tquic_port\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_tcp_portB\x0c\n\n_quic_port\"3\n\x0fSyncHostRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07peer_id\x18\x02 \x01(\t\"A\n\x18IBVerbsQueuePairEndpoint\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x0b\n\x03lid\x18\x02 \x01(\r\x12\x0b\n\x03gid\x18\x03 \x01(\x0c\x32\x97\x10\n\x0e\x44\x66\x64\x61\x65monUpload\x12U\n\x0c\x44ownloadTask\x12 .dfdaemon.v2.DownloadTaskRequest\x1a!.dfdaemon.v2.DownloadTaskResponse0\x01\x12\x39\n\x08StatTask\x12\x1c.dfdaemon.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12V\n\rStatLocalTask\x12!.dfdaemon.v2.StatLocalTaskRequest\x1a\".dfdaemon.v2.StatLocalTaskResponse\x12\\\n\x0fListTaskEntries\x12#.dfdaemon.v2.ListTaskEntriesRequest\x1a$.dfdaemon.v2.ListTaskEntriesResponse\x12\x44\n\nDeleteTask\x12\x1e.dfdaemon.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12O\n\nSyncPieces\x12\x1e.dfdaemon.v2.SyncPiecesRequest\x1a\x1f.dfdaemon.v2.SyncPiecesResponse0\x01\x12\x64\n\x11\x44ownloadCacheTask\x12%.dfdaemon.v2.DownloadCacheTaskRequest\x1a&.dfdaemon.v2.DownloadCacheTaskResponse0\x01\x12H\n\rStatCacheTask\x12!.dfdaemon.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12N\n\x0f\x44\x65leteCacheTask\x12#.dfdaemon.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12^\n\x0fSyncCachePieces\x12#.dfdaemon.v2.SyncCachePiecesRequest\x1a$.dfdaemon.v2.SyncCachePiecesResponse0\x01\x12\x65\n\x12\x44ownloadCachePiece\x12&.dfdaemon.v2.DownloadCachePieceRequest\x1a\'.dfdaemon.v2.DownloadCachePieceResponse\x12s\n\x16\x44ownloadPersistentTask\x12*.dfdaemon.v2.DownloadPersistentTaskRequest\x1a+.dfdaemon.v2.DownloadPersistentTaskResponse0\x01\x12m\n\x14SyncPersistentPieces\x12(.dfdaemon.v2.SyncPersistentPiecesRequest\x1a).dfdaemon.v2.SyncPersistentPiecesResponse0\x01\x12X\n\x14UpdatePersistentTask\x12(.dfdaemon.v2.UpdatePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12W\n\x12StatPersistentTask\x12&.dfdaemon.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12X\n\x14\x44\x65letePersistentTask\x12(.dfdaemon.v2.DeletePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12\x82\x01\n\x1b\x44ownloadPersistentCacheTask\x12/.dfdaemon.v2.DownloadPersistentCacheTaskRequest\x1a\x30.dfdaemon.v2.DownloadPersistentCacheTaskResponse0\x01\x12\x62\n\x19UpdatePersistentCacheTask\x12-.dfdaemon.v2.UpdatePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12\x66\n\x17StatPersistentCacheTask\x12+.dfdaemon.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x62\n\x19\x44\x65letePersistentCacheTask\x12-.dfdaemon.v2.DeletePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12|\n\x19SyncPersistentCachePieces\x12-.dfdaemon.v2.SyncPersistentCachePiecesRequest\x1a..dfdaemon.v2.SyncPersistentCachePiecesResponse0\x01\x12;\n\x08SyncHost\x12\x1c.dfdaemon.v2.SyncHostRequest\x1a\x0f.common.v2.Host0\x01\x32\x8b\x10\n\x10\x44\x66\x64\x61\x65monDownload\x12U\n\x0c\x44ownloadTask\x12 .dfdaemon.v2.DownloadTaskRequest\x1a!.dfdaemon.v2.DownloadTaskResponse0\x01\x12\x39\n\x08StatTask\x12\x1c.dfdaemon.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12V\n\rStatLocalTask\x12!.dfdaemon.v2.StatLocalTaskRequest\x1a\".dfdaemon.v2.StatLocalTaskResponse\x12Y\n\x0eListLocalTasks\x12\".dfdaemon.v2.ListLocalTasksRequest\x1a#.dfdaemon.v2.ListLocalTasksResponse\x12\\\n\x0fListTaskEntries\x12#.dfdaemon.v2.ListTaskEntriesRequest\x1a$.dfdaemon.v2.ListTaskEntriesResponse\x12\x44\n\nDeleteTask\x12\x1e.dfdaemon.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12N\n\x0f\x44\x65leteLocalTask\x12#.dfdaemon.v2.DeleteLocalTaskRequest\x1a\x16.google.protobuf.Empty\x12<\n\nDeleteHost\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12\x64\n\x11\x44ownloadCacheTask\x12%.dfdaemon.v2.DownloadCacheTaskRequest\x1a&.dfdaemon.v2.DownloadCacheTaskResponse0\x01\x12H\n\rStatCacheTask\x12!.dfdaemon.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12N\n\x0f\x44\x65leteCacheTask\x12#.dfdaemon.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12s\n\x16\x44ownloadPersistentTask\x12*.dfdaemon.v2.DownloadPersistentTaskRequest\x1a+.dfdaemon.v2.DownloadPersistentTaskResponse0\x01\x12[\n\x14UploadPersistentTask\x12(.dfdaemon.v2.UploadPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12W\n\x12StatPersistentTask\x12&.dfdaemon.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12t\n\x17StatLocalPersistentTask\x12+.dfdaemon.v2.StatLocalPersistentTaskRequest\x1a,.dfdaemon.v2.StatLocalPersistentTaskResponse\x12w\n\x18ListLocalPersistentTasks\x12,.dfdaemon.v2.ListLocalPersistentTasksRequest\x1a-.dfdaemon.v2.ListLocalPersistentTasksResponse\x12\x82\x01\n\x1b\x44ownloadPersistentCacheTask\x12/.dfdaemon.v2.DownloadPersistentCacheTaskRequest\x1a\x30.dfdaemon.v2.DownloadPersistentCacheTaskResponse0\x01\x12j\n\x19UploadPersistentCacheTask\x12-.dfdaemon.v2.UploadPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x66\n\x17StatPersistentCacheTask\x12+.dfdaemon.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x83\x01\n\x1cStatLocalPersistentCacheTask\x12\x30.dfdaemon.v2.StatLocalPersistentCacheTaskRequest\x1a\x31.dfdaemon.v2.StatLocalPersistentCacheTaskResponse\x12\x86\x01\n\x1dListLocalPersistentCacheTasks\x12\x31.dfdaemon.v2.ListLocalPersistentCacheTasksRequest\x1a\x32.dfdaemon.v2.ListLocalPersistentCacheTasksResponseb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x64\x66\x64\x61\x65mon.proto\x12\x0b\x64\x66\x64\x61\x65mon.v2\x1a\x0c\x63ommon.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"<\n\x13\x44ownloadTaskRequest\x12%\n\x08\x64ownload\x18\x01 \x01(\x0b\x32\x13.common.v2.Download\"\xaa\x02\n\x1b\x44ownloadTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12U\n\x0fresponse_header\x18\x03 \x03(\x0b\x32<.dfdaemon.v2.DownloadTaskStartedResponse.ResponseHeaderEntry\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\x13\n\x0bis_finished\x18\x05 \x01(\x08\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06_range\"@\n\x1d\x44ownloadPieceFinishedResponse\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"\x81\x02\n\x14\x44ownloadTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12R\n\x1e\x64ownload_task_started_response\x18\x04 \x01(\x0b\x32(.dfdaemon.v2.DownloadTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"W\n\x11SyncPiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12 \n\x18interested_piece_numbers\x18\x03 \x03(\r\"\x9a\x01\n\x12SyncPiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x15\n\x08tcp_port\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\tquic_port\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_tcp_portB\x0c\n\n_quic_port\"Z\n\x0fStatTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ipJ\x04\x08\x03\x10\x04R\nlocal_only\"M\n\x14StatLocalTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xef\x04\n\x15StatLocalTaskResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x1b\n\x0e\x63ontent_length\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12O\n\x0fresponse_header\x18\x04 \x03(\x0b\x32\x36.dfdaemon.v2.StatLocalTaskResponse.ResponseHeaderEntry\x12\x17\n\x0fuploading_count\x18\x05 \x01(\x04\x12\x16\n\x0euploaded_count\x18\x06 \x01(\x04\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\rprefetched_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x32\n\tfailed_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x12\x34\n\x0b\x66inished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x04\x88\x01\x01\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x11\n\x0f_content_lengthB\x10\n\x0e_prefetched_atB\x0c\n\n_failed_atB\x0e\n\x0c_finished_at\"=\n\x15ListLocalTasksRequest\x12\x16\n\tremote_ip\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"K\n\x16ListLocalTasksResponse\x12\x31\n\x05tasks\x18\x01 \x03(\x0b\x32\".dfdaemon.v2.StatLocalTaskResponse\"\xee\x04\n\x16ListTaskEntriesRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12N\n\x0erequest_header\x18\x03 \x03(\x0b\x32\x36.dfdaemon.v2.ListTaskEntriesRequest.RequestHeaderEntry\x12/\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\x05 \x03(\x0c\x12\x35\n\x0eobject_storage\x18\x06 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x01\x88\x01\x01\x12\"\n\x04hdfs\x18\x07 \x01(\x0b\x32\x0f.common.v2.HDFSH\x02\x88\x01\x01\x12\x16\n\tremote_ip\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x31\n\x0chugging_face\x18\t \x01(\x0b\x32\x16.common.v2.HuggingFaceH\x04\x88\x01\x01\x12/\n\x0bmodel_scope\x18\n \x01(\x0b\x32\x15.common.v2.ModelScopeH\x05\x88\x01\x01\x12)\n\x08open_csg\x18\x0b \x01(\x0b\x32\x12.common.v2.OpenCSGH\x06\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\x0c\n\n_remote_ipB\x0f\n\r_hugging_faceB\x0e\n\x0c_model_scopeB\x0b\n\t_open_csg\"\x8a\x02\n\x17ListTaskEntriesResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\x12Q\n\x0fresponse_header\x18\x02 \x03(\x0b\x32\x38.dfdaemon.v2.ListTaskEntriesResponse.ResponseHeaderEntry\x12\x18\n\x0bstatus_code\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12#\n\x07\x65ntries\x18\x04 \x03(\x0b\x32\x12.dfdaemon.v2.Entry\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_status_code\"<\n\x05\x45ntry\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontent_length\x18\x02 \x01(\x04\x12\x0e\n\x06is_dir\x18\x03 \x01(\x08\"J\n\x11\x44\x65leteTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"O\n\x16\x44\x65leteLocalTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"[\n\x12\x44\x65leteImageRequest\x12\x1f\n\x05image\x18\x01 \x01(\x0b\x32\x10.common.v2.Image\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"J\n\x13\x44\x65leteImageResponse\x12\x18\n\x10\x64\x65leted_task_ids\x18\x01 \x03(\t\x12\x19\n\x11retained_task_ids\x18\x02 \x03(\t\"\xdc\x07\n\x18\x44ownloadCacheTaskRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12P\n\x0erequest_header\x18\t \x03(\x0b\x32\x38.dfdaemon.v2.DownloadCacheTaskRequest.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x15 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x16 \x01(\tH\n\x88\x01\x01\x12\x11\n\toverwrite\x18\x17 \x01(\x08\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ip\"\xb4\x02\n DownloadCacheTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12Z\n\x0fresponse_header\x18\x03 \x03(\x0b\x32\x41.dfdaemon.v2.DownloadCacheTaskStartedResponse.ResponseHeaderEntry\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\x13\n\x0bis_finished\x18\x05 \x01(\x08\x1a\x35\n\x13ResponseHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06_range\"\x91\x02\n\x19\x44ownloadCacheTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12]\n$download_cache_task_started_response\x18\x04 \x01(\x0b\x32-.dfdaemon.v2.DownloadCacheTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"b\n\x16SyncCachePiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12&\n\x1einterested_cache_piece_numbers\x18\x03 \x03(\r\"I\n\x17SyncCachePiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\"S\n\x19\x44ownloadCachePieceRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x14\n\x0cpiece_number\x18\x03 \x01(\r\"]\n\x1a\x44ownloadCachePieceResponse\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_digest\"M\n\x14StatCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"O\n\x16\x44\x65leteCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xe7\x02\n\x1d\x44ownloadPersistentTaskRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x12\n\npersistent\x18\x03 \x01(\x08\x12\x18\n\x0boutput_path\x18\x04 \x01(\tH\x00\x88\x01\x01\x12/\n\x07timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationH\x01\x88\x01\x01\x12\x1a\n\x12need_piece_content\x18\x06 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x07 \x01(\x08\x12\x13\n\x06\x64igest\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tremote_ip\x18\t \x01(\tH\x03\x88\x01\x01\x12\x11\n\toverwrite\x18\n \x01(\x08\x42\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\t\n\x07_digestB\x0c\n\n_remote_ip\"?\n%DownloadPersistentTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\"\xa0\x02\n\x1e\x44ownloadPersistentTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12g\n)download_persistent_task_started_response\x18\x04 \x01(\x0b\x32\x32.dfdaemon.v2.DownloadPersistentTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"\x97\x02\n\x1bUploadPersistentTaskRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x0c\n\x04path\x18\x03 \x01(\t\x12 \n\x18persistent_replica_count\x18\x04 \x01(\x04\x12&\n\x03ttl\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x12\x16\n\tremote_ip\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_timeoutB\x0c\n\n_remote_ip\"h\n\x1bUpdatePersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x16\n\tremote_ip\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"R\n\x19StatPersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"W\n\x1eStatLocalPersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xe3\x03\n\x1fStatLocalPersistentTaskResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12&\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x0cpiece_length\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1b\n\x0e\x63ontent_length\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\x0fuploading_count\x18\x06 \x01(\x04\x12\x16\n\x0euploaded_count\x18\x07 \x01(\x04\x12.\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\tfailed_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x34\n\x0b\x66inished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x42\x0f\n\r_piece_lengthB\x11\n\x0f_content_lengthB\x0c\n\n_failed_atB\x0e\n\x0c_finished_at\"G\n\x1fListLocalPersistentTasksRequest\x12\x16\n\tremote_ip\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"_\n ListLocalPersistentTasksResponse\x12;\n\x05tasks\x18\x01 \x03(\x0b\x32,.dfdaemon.v2.StatLocalPersistentTaskResponse\"T\n\x1b\x44\x65letePersistentTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"a\n\x1bSyncPersistentPiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12 \n\x18interested_piece_numbers\x18\x03 \x03(\r\"\xa4\x01\n\x1cSyncPersistentPiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x15\n\x08tcp_port\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\tquic_port\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_tcp_portB\x0c\n\n_quic_port\"\x82\x03\n\"DownloadPersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x10\n\x03tag\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x05 \x01(\tH\x02\x88\x01\x01\x12/\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x03\x88\x01\x01\x12\x1a\n\x12need_piece_content\x18\x07 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x08 \x01(\x08\x12\x13\n\x06\x64igest\x18\t \x01(\tH\x04\x88\x01\x01\x12\x16\n\tremote_ip\x18\n \x01(\tH\x05\x88\x01\x01\x12\x11\n\toverwrite\x18\x0b \x01(\x08\x42\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\t\n\x07_digestB\x0c\n\n_remote_ip\"D\n*DownloadPersistentCacheTaskStartedResponse\x12\x16\n\x0e\x63ontent_length\x18\x01 \x01(\x04\"\xb0\x02\n#DownloadPersistentCacheTaskResponse\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12r\n/download_persistent_cache_task_started_response\x18\x04 \x01(\x0b\x32\x37.dfdaemon.v2.DownloadPersistentCacheTaskStartedResponseH\x00\x12V\n download_piece_finished_response\x18\x05 \x01(\x0b\x32*.dfdaemon.v2.DownloadPieceFinishedResponseH\x00\x42\n\n\x08response\"\x9f\x03\n UploadPersistentCacheTaskRequest\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x0c\n\x04path\x18\x02 \x01(\t\x12 \n\x18persistent_replica_count\x18\x03 \x01(\x04\x12\x10\n\x03tag\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0cpiece_length\x18\x06 \x01(\x04H\x03\x88\x01\x01\x12&\n\x03ttl\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationH\x04\x88\x01\x01\x12\x16\n\tremote_ip\x18\t \x01(\tH\x05\x88\x01\x01\x42\"\n _content_for_calculating_task_idB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\n\n\x08_timeoutB\x0c\n\n_remote_ip\"m\n UpdatePersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\x16\n\tremote_ip\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"W\n\x1eStatPersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\\\n#StatLocalPersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"\xe8\x03\n$StatLocalPersistentCacheTaskResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12&\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x0cpiece_length\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1b\n\x0e\x63ontent_length\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\x0fuploading_count\x18\x06 \x01(\x04\x12\x16\n\x0euploaded_count\x18\x07 \x01(\x04\x12.\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\tfailed_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x34\n\x0b\x66inished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x42\x0f\n\r_piece_lengthB\x11\n\x0f_content_lengthB\x0c\n\n_failed_atB\x0e\n\x0c_finished_at\"L\n$ListLocalPersistentCacheTasksRequest\x12\x16\n\tremote_ip\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"i\n%ListLocalPersistentCacheTasksResponse\x12@\n\x05tasks\x18\x01 \x03(\x0b\x32\x31.dfdaemon.v2.StatLocalPersistentCacheTaskResponse\"Y\n DeletePersistentCacheTaskRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\tremote_ip\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_remote_ip\"f\n SyncPersistentCachePiecesRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12 \n\x18interested_piece_numbers\x18\x03 \x03(\r\"\xa9\x01\n!SyncPersistentCachePiecesResponse\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0e\n\x06length\x18\x03 \x01(\x04\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x15\n\x08tcp_port\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x16\n\tquic_port\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_tcp_portB\x0c\n\n_quic_port\"3\n\x0fSyncHostRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07peer_id\x18\x02 \x01(\t\"A\n\x18IBVerbsQueuePairEndpoint\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x0b\n\x03lid\x18\x02 \x01(\r\x12\x0b\n\x03gid\x18\x03 \x01(\x0c\x32\xe9\x10\n\x0e\x44\x66\x64\x61\x65monUpload\x12U\n\x0c\x44ownloadTask\x12 .dfdaemon.v2.DownloadTaskRequest\x1a!.dfdaemon.v2.DownloadTaskResponse0\x01\x12\x39\n\x08StatTask\x12\x1c.dfdaemon.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12V\n\rStatLocalTask\x12!.dfdaemon.v2.StatLocalTaskRequest\x1a\".dfdaemon.v2.StatLocalTaskResponse\x12\\\n\x0fListTaskEntries\x12#.dfdaemon.v2.ListTaskEntriesRequest\x1a$.dfdaemon.v2.ListTaskEntriesResponse\x12\x44\n\nDeleteTask\x12\x1e.dfdaemon.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12P\n\x0b\x44\x65leteImage\x12\x1f.dfdaemon.v2.DeleteImageRequest\x1a .dfdaemon.v2.DeleteImageResponse\x12O\n\nSyncPieces\x12\x1e.dfdaemon.v2.SyncPiecesRequest\x1a\x1f.dfdaemon.v2.SyncPiecesResponse0\x01\x12\x64\n\x11\x44ownloadCacheTask\x12%.dfdaemon.v2.DownloadCacheTaskRequest\x1a&.dfdaemon.v2.DownloadCacheTaskResponse0\x01\x12H\n\rStatCacheTask\x12!.dfdaemon.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12N\n\x0f\x44\x65leteCacheTask\x12#.dfdaemon.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12^\n\x0fSyncCachePieces\x12#.dfdaemon.v2.SyncCachePiecesRequest\x1a$.dfdaemon.v2.SyncCachePiecesResponse0\x01\x12\x65\n\x12\x44ownloadCachePiece\x12&.dfdaemon.v2.DownloadCachePieceRequest\x1a\'.dfdaemon.v2.DownloadCachePieceResponse\x12s\n\x16\x44ownloadPersistentTask\x12*.dfdaemon.v2.DownloadPersistentTaskRequest\x1a+.dfdaemon.v2.DownloadPersistentTaskResponse0\x01\x12m\n\x14SyncPersistentPieces\x12(.dfdaemon.v2.SyncPersistentPiecesRequest\x1a).dfdaemon.v2.SyncPersistentPiecesResponse0\x01\x12X\n\x14UpdatePersistentTask\x12(.dfdaemon.v2.UpdatePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12W\n\x12StatPersistentTask\x12&.dfdaemon.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12X\n\x14\x44\x65letePersistentTask\x12(.dfdaemon.v2.DeletePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12\x82\x01\n\x1b\x44ownloadPersistentCacheTask\x12/.dfdaemon.v2.DownloadPersistentCacheTaskRequest\x1a\x30.dfdaemon.v2.DownloadPersistentCacheTaskResponse0\x01\x12\x62\n\x19UpdatePersistentCacheTask\x12-.dfdaemon.v2.UpdatePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12\x66\n\x17StatPersistentCacheTask\x12+.dfdaemon.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x62\n\x19\x44\x65letePersistentCacheTask\x12-.dfdaemon.v2.DeletePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12|\n\x19SyncPersistentCachePieces\x12-.dfdaemon.v2.SyncPersistentCachePiecesRequest\x1a..dfdaemon.v2.SyncPersistentCachePiecesResponse0\x01\x12;\n\x08SyncHost\x12\x1c.dfdaemon.v2.SyncHostRequest\x1a\x0f.common.v2.Host0\x01\x32\xdd\x10\n\x10\x44\x66\x64\x61\x65monDownload\x12U\n\x0c\x44ownloadTask\x12 .dfdaemon.v2.DownloadTaskRequest\x1a!.dfdaemon.v2.DownloadTaskResponse0\x01\x12\x39\n\x08StatTask\x12\x1c.dfdaemon.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12V\n\rStatLocalTask\x12!.dfdaemon.v2.StatLocalTaskRequest\x1a\".dfdaemon.v2.StatLocalTaskResponse\x12Y\n\x0eListLocalTasks\x12\".dfdaemon.v2.ListLocalTasksRequest\x1a#.dfdaemon.v2.ListLocalTasksResponse\x12\\\n\x0fListTaskEntries\x12#.dfdaemon.v2.ListTaskEntriesRequest\x1a$.dfdaemon.v2.ListTaskEntriesResponse\x12\x44\n\nDeleteTask\x12\x1e.dfdaemon.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12N\n\x0f\x44\x65leteLocalTask\x12#.dfdaemon.v2.DeleteLocalTaskRequest\x1a\x16.google.protobuf.Empty\x12P\n\x0b\x44\x65leteImage\x12\x1f.dfdaemon.v2.DeleteImageRequest\x1a .dfdaemon.v2.DeleteImageResponse\x12<\n\nDeleteHost\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12\x64\n\x11\x44ownloadCacheTask\x12%.dfdaemon.v2.DownloadCacheTaskRequest\x1a&.dfdaemon.v2.DownloadCacheTaskResponse0\x01\x12H\n\rStatCacheTask\x12!.dfdaemon.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12N\n\x0f\x44\x65leteCacheTask\x12#.dfdaemon.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12s\n\x16\x44ownloadPersistentTask\x12*.dfdaemon.v2.DownloadPersistentTaskRequest\x1a+.dfdaemon.v2.DownloadPersistentTaskResponse0\x01\x12[\n\x14UploadPersistentTask\x12(.dfdaemon.v2.UploadPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12W\n\x12StatPersistentTask\x12&.dfdaemon.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12t\n\x17StatLocalPersistentTask\x12+.dfdaemon.v2.StatLocalPersistentTaskRequest\x1a,.dfdaemon.v2.StatLocalPersistentTaskResponse\x12w\n\x18ListLocalPersistentTasks\x12,.dfdaemon.v2.ListLocalPersistentTasksRequest\x1a-.dfdaemon.v2.ListLocalPersistentTasksResponse\x12\x82\x01\n\x1b\x44ownloadPersistentCacheTask\x12/.dfdaemon.v2.DownloadPersistentCacheTaskRequest\x1a\x30.dfdaemon.v2.DownloadPersistentCacheTaskResponse0\x01\x12j\n\x19UploadPersistentCacheTask\x12-.dfdaemon.v2.UploadPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x66\n\x17StatPersistentCacheTask\x12+.dfdaemon.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x83\x01\n\x1cStatLocalPersistentCacheTask\x12\x30.dfdaemon.v2.StatLocalPersistentCacheTaskRequest\x1a\x31.dfdaemon.v2.StatLocalPersistentCacheTaskResponse\x12\x86\x01\n\x1dListLocalPersistentCacheTasks\x12\x31.dfdaemon.v2.ListLocalPersistentCacheTasksRequest\x1a\x32.dfdaemon.v2.ListLocalPersistentCacheTasksResponseb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -87,86 +87,90 @@ _globals['_DELETETASKREQUEST']._serialized_end=3041 _globals['_DELETELOCALTASKREQUEST']._serialized_start=3043 _globals['_DELETELOCALTASKREQUEST']._serialized_end=3122 - _globals['_DOWNLOADCACHETASKREQUEST']._serialized_start=3125 - _globals['_DOWNLOADCACHETASKREQUEST']._serialized_end=4113 + _globals['_DELETEIMAGEREQUEST']._serialized_start=3124 + _globals['_DELETEIMAGEREQUEST']._serialized_end=3215 + _globals['_DELETEIMAGERESPONSE']._serialized_start=3217 + _globals['_DELETEIMAGERESPONSE']._serialized_end=3291 + _globals['_DOWNLOADCACHETASKREQUEST']._serialized_start=3294 + _globals['_DOWNLOADCACHETASKREQUEST']._serialized_end=4282 _globals['_DOWNLOADCACHETASKREQUEST_REQUESTHEADERENTRY']._serialized_start=2482 _globals['_DOWNLOADCACHETASKREQUEST_REQUESTHEADERENTRY']._serialized_end=2534 - _globals['_DOWNLOADCACHETASKSTARTEDRESPONSE']._serialized_start=4116 - _globals['_DOWNLOADCACHETASKSTARTEDRESPONSE']._serialized_end=4424 + _globals['_DOWNLOADCACHETASKSTARTEDRESPONSE']._serialized_start=4285 + _globals['_DOWNLOADCACHETASKSTARTEDRESPONSE']._serialized_end=4593 _globals['_DOWNLOADCACHETASKSTARTEDRESPONSE_RESPONSEHEADERENTRY']._serialized_start=437 _globals['_DOWNLOADCACHETASKSTARTEDRESPONSE_RESPONSEHEADERENTRY']._serialized_end=490 - _globals['_DOWNLOADCACHETASKRESPONSE']._serialized_start=4427 - _globals['_DOWNLOADCACHETASKRESPONSE']._serialized_end=4700 - _globals['_SYNCCACHEPIECESREQUEST']._serialized_start=4702 - _globals['_SYNCCACHEPIECESREQUEST']._serialized_end=4800 - _globals['_SYNCCACHEPIECESRESPONSE']._serialized_start=4802 - _globals['_SYNCCACHEPIECESRESPONSE']._serialized_end=4875 - _globals['_DOWNLOADCACHEPIECEREQUEST']._serialized_start=4877 - _globals['_DOWNLOADCACHEPIECEREQUEST']._serialized_end=4960 - _globals['_DOWNLOADCACHEPIECERESPONSE']._serialized_start=4962 - _globals['_DOWNLOADCACHEPIECERESPONSE']._serialized_end=5055 - _globals['_STATCACHETASKREQUEST']._serialized_start=5057 - _globals['_STATCACHETASKREQUEST']._serialized_end=5134 - _globals['_DELETECACHETASKREQUEST']._serialized_start=5136 - _globals['_DELETECACHETASKREQUEST']._serialized_end=5215 - _globals['_DOWNLOADPERSISTENTTASKREQUEST']._serialized_start=5218 - _globals['_DOWNLOADPERSISTENTTASKREQUEST']._serialized_end=5577 - _globals['_DOWNLOADPERSISTENTTASKSTARTEDRESPONSE']._serialized_start=5579 - _globals['_DOWNLOADPERSISTENTTASKSTARTEDRESPONSE']._serialized_end=5642 - _globals['_DOWNLOADPERSISTENTTASKRESPONSE']._serialized_start=5645 - _globals['_DOWNLOADPERSISTENTTASKRESPONSE']._serialized_end=5933 - _globals['_UPLOADPERSISTENTTASKREQUEST']._serialized_start=5936 - _globals['_UPLOADPERSISTENTTASKREQUEST']._serialized_end=6215 - _globals['_UPDATEPERSISTENTTASKREQUEST']._serialized_start=6217 - _globals['_UPDATEPERSISTENTTASKREQUEST']._serialized_end=6321 - _globals['_STATPERSISTENTTASKREQUEST']._serialized_start=6323 - _globals['_STATPERSISTENTTASKREQUEST']._serialized_end=6405 - _globals['_STATLOCALPERSISTENTTASKREQUEST']._serialized_start=6407 - _globals['_STATLOCALPERSISTENTTASKREQUEST']._serialized_end=6494 - _globals['_STATLOCALPERSISTENTTASKRESPONSE']._serialized_start=6497 - _globals['_STATLOCALPERSISTENTTASKRESPONSE']._serialized_end=6980 - _globals['_LISTLOCALPERSISTENTTASKSREQUEST']._serialized_start=6982 - _globals['_LISTLOCALPERSISTENTTASKSREQUEST']._serialized_end=7053 - _globals['_LISTLOCALPERSISTENTTASKSRESPONSE']._serialized_start=7055 - _globals['_LISTLOCALPERSISTENTTASKSRESPONSE']._serialized_end=7150 - _globals['_DELETEPERSISTENTTASKREQUEST']._serialized_start=7152 - _globals['_DELETEPERSISTENTTASKREQUEST']._serialized_end=7236 - _globals['_SYNCPERSISTENTPIECESREQUEST']._serialized_start=7238 - _globals['_SYNCPERSISTENTPIECESREQUEST']._serialized_end=7335 - _globals['_SYNCPERSISTENTPIECESRESPONSE']._serialized_start=7338 - _globals['_SYNCPERSISTENTPIECESRESPONSE']._serialized_end=7502 - _globals['_DOWNLOADPERSISTENTCACHETASKREQUEST']._serialized_start=7505 - _globals['_DOWNLOADPERSISTENTCACHETASKREQUEST']._serialized_end=7891 - _globals['_DOWNLOADPERSISTENTCACHETASKSTARTEDRESPONSE']._serialized_start=7893 - _globals['_DOWNLOADPERSISTENTCACHETASKSTARTEDRESPONSE']._serialized_end=7961 - _globals['_DOWNLOADPERSISTENTCACHETASKRESPONSE']._serialized_start=7964 - _globals['_DOWNLOADPERSISTENTCACHETASKRESPONSE']._serialized_end=8268 - _globals['_UPLOADPERSISTENTCACHETASKREQUEST']._serialized_start=8271 - _globals['_UPLOADPERSISTENTCACHETASKREQUEST']._serialized_end=8686 - _globals['_UPDATEPERSISTENTCACHETASKREQUEST']._serialized_start=8688 - _globals['_UPDATEPERSISTENTCACHETASKREQUEST']._serialized_end=8797 - _globals['_STATPERSISTENTCACHETASKREQUEST']._serialized_start=8799 - _globals['_STATPERSISTENTCACHETASKREQUEST']._serialized_end=8886 - _globals['_STATLOCALPERSISTENTCACHETASKREQUEST']._serialized_start=8888 - _globals['_STATLOCALPERSISTENTCACHETASKREQUEST']._serialized_end=8980 - _globals['_STATLOCALPERSISTENTCACHETASKRESPONSE']._serialized_start=8983 - _globals['_STATLOCALPERSISTENTCACHETASKRESPONSE']._serialized_end=9471 - _globals['_LISTLOCALPERSISTENTCACHETASKSREQUEST']._serialized_start=9473 - _globals['_LISTLOCALPERSISTENTCACHETASKSREQUEST']._serialized_end=9549 - _globals['_LISTLOCALPERSISTENTCACHETASKSRESPONSE']._serialized_start=9551 - _globals['_LISTLOCALPERSISTENTCACHETASKSRESPONSE']._serialized_end=9656 - _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_start=9658 - _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_end=9747 - _globals['_SYNCPERSISTENTCACHEPIECESREQUEST']._serialized_start=9749 - _globals['_SYNCPERSISTENTCACHEPIECESREQUEST']._serialized_end=9851 - _globals['_SYNCPERSISTENTCACHEPIECESRESPONSE']._serialized_start=9854 - _globals['_SYNCPERSISTENTCACHEPIECESRESPONSE']._serialized_end=10023 - _globals['_SYNCHOSTREQUEST']._serialized_start=10025 - _globals['_SYNCHOSTREQUEST']._serialized_end=10076 - _globals['_IBVERBSQUEUEPAIRENDPOINT']._serialized_start=10078 - _globals['_IBVERBSQUEUEPAIRENDPOINT']._serialized_end=10143 - _globals['_DFDAEMONUPLOAD']._serialized_start=10146 - _globals['_DFDAEMONUPLOAD']._serialized_end=12217 - _globals['_DFDAEMONDOWNLOAD']._serialized_start=12220 - _globals['_DFDAEMONDOWNLOAD']._serialized_end=14279 + _globals['_DOWNLOADCACHETASKRESPONSE']._serialized_start=4596 + _globals['_DOWNLOADCACHETASKRESPONSE']._serialized_end=4869 + _globals['_SYNCCACHEPIECESREQUEST']._serialized_start=4871 + _globals['_SYNCCACHEPIECESREQUEST']._serialized_end=4969 + _globals['_SYNCCACHEPIECESRESPONSE']._serialized_start=4971 + _globals['_SYNCCACHEPIECESRESPONSE']._serialized_end=5044 + _globals['_DOWNLOADCACHEPIECEREQUEST']._serialized_start=5046 + _globals['_DOWNLOADCACHEPIECEREQUEST']._serialized_end=5129 + _globals['_DOWNLOADCACHEPIECERESPONSE']._serialized_start=5131 + _globals['_DOWNLOADCACHEPIECERESPONSE']._serialized_end=5224 + _globals['_STATCACHETASKREQUEST']._serialized_start=5226 + _globals['_STATCACHETASKREQUEST']._serialized_end=5303 + _globals['_DELETECACHETASKREQUEST']._serialized_start=5305 + _globals['_DELETECACHETASKREQUEST']._serialized_end=5384 + _globals['_DOWNLOADPERSISTENTTASKREQUEST']._serialized_start=5387 + _globals['_DOWNLOADPERSISTENTTASKREQUEST']._serialized_end=5746 + _globals['_DOWNLOADPERSISTENTTASKSTARTEDRESPONSE']._serialized_start=5748 + _globals['_DOWNLOADPERSISTENTTASKSTARTEDRESPONSE']._serialized_end=5811 + _globals['_DOWNLOADPERSISTENTTASKRESPONSE']._serialized_start=5814 + _globals['_DOWNLOADPERSISTENTTASKRESPONSE']._serialized_end=6102 + _globals['_UPLOADPERSISTENTTASKREQUEST']._serialized_start=6105 + _globals['_UPLOADPERSISTENTTASKREQUEST']._serialized_end=6384 + _globals['_UPDATEPERSISTENTTASKREQUEST']._serialized_start=6386 + _globals['_UPDATEPERSISTENTTASKREQUEST']._serialized_end=6490 + _globals['_STATPERSISTENTTASKREQUEST']._serialized_start=6492 + _globals['_STATPERSISTENTTASKREQUEST']._serialized_end=6574 + _globals['_STATLOCALPERSISTENTTASKREQUEST']._serialized_start=6576 + _globals['_STATLOCALPERSISTENTTASKREQUEST']._serialized_end=6663 + _globals['_STATLOCALPERSISTENTTASKRESPONSE']._serialized_start=6666 + _globals['_STATLOCALPERSISTENTTASKRESPONSE']._serialized_end=7149 + _globals['_LISTLOCALPERSISTENTTASKSREQUEST']._serialized_start=7151 + _globals['_LISTLOCALPERSISTENTTASKSREQUEST']._serialized_end=7222 + _globals['_LISTLOCALPERSISTENTTASKSRESPONSE']._serialized_start=7224 + _globals['_LISTLOCALPERSISTENTTASKSRESPONSE']._serialized_end=7319 + _globals['_DELETEPERSISTENTTASKREQUEST']._serialized_start=7321 + _globals['_DELETEPERSISTENTTASKREQUEST']._serialized_end=7405 + _globals['_SYNCPERSISTENTPIECESREQUEST']._serialized_start=7407 + _globals['_SYNCPERSISTENTPIECESREQUEST']._serialized_end=7504 + _globals['_SYNCPERSISTENTPIECESRESPONSE']._serialized_start=7507 + _globals['_SYNCPERSISTENTPIECESRESPONSE']._serialized_end=7671 + _globals['_DOWNLOADPERSISTENTCACHETASKREQUEST']._serialized_start=7674 + _globals['_DOWNLOADPERSISTENTCACHETASKREQUEST']._serialized_end=8060 + _globals['_DOWNLOADPERSISTENTCACHETASKSTARTEDRESPONSE']._serialized_start=8062 + _globals['_DOWNLOADPERSISTENTCACHETASKSTARTEDRESPONSE']._serialized_end=8130 + _globals['_DOWNLOADPERSISTENTCACHETASKRESPONSE']._serialized_start=8133 + _globals['_DOWNLOADPERSISTENTCACHETASKRESPONSE']._serialized_end=8437 + _globals['_UPLOADPERSISTENTCACHETASKREQUEST']._serialized_start=8440 + _globals['_UPLOADPERSISTENTCACHETASKREQUEST']._serialized_end=8855 + _globals['_UPDATEPERSISTENTCACHETASKREQUEST']._serialized_start=8857 + _globals['_UPDATEPERSISTENTCACHETASKREQUEST']._serialized_end=8966 + _globals['_STATPERSISTENTCACHETASKREQUEST']._serialized_start=8968 + _globals['_STATPERSISTENTCACHETASKREQUEST']._serialized_end=9055 + _globals['_STATLOCALPERSISTENTCACHETASKREQUEST']._serialized_start=9057 + _globals['_STATLOCALPERSISTENTCACHETASKREQUEST']._serialized_end=9149 + _globals['_STATLOCALPERSISTENTCACHETASKRESPONSE']._serialized_start=9152 + _globals['_STATLOCALPERSISTENTCACHETASKRESPONSE']._serialized_end=9640 + _globals['_LISTLOCALPERSISTENTCACHETASKSREQUEST']._serialized_start=9642 + _globals['_LISTLOCALPERSISTENTCACHETASKSREQUEST']._serialized_end=9718 + _globals['_LISTLOCALPERSISTENTCACHETASKSRESPONSE']._serialized_start=9720 + _globals['_LISTLOCALPERSISTENTCACHETASKSRESPONSE']._serialized_end=9825 + _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_start=9827 + _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_end=9916 + _globals['_SYNCPERSISTENTCACHEPIECESREQUEST']._serialized_start=9918 + _globals['_SYNCPERSISTENTCACHEPIECESREQUEST']._serialized_end=10020 + _globals['_SYNCPERSISTENTCACHEPIECESRESPONSE']._serialized_start=10023 + _globals['_SYNCPERSISTENTCACHEPIECESRESPONSE']._serialized_end=10192 + _globals['_SYNCHOSTREQUEST']._serialized_start=10194 + _globals['_SYNCHOSTREQUEST']._serialized_end=10245 + _globals['_IBVERBSQUEUEPAIRENDPOINT']._serialized_start=10247 + _globals['_IBVERBSQUEUEPAIRENDPOINT']._serialized_end=10312 + _globals['_DFDAEMONUPLOAD']._serialized_start=10315 + _globals['_DFDAEMONUPLOAD']._serialized_end=12468 + _globals['_DFDAEMONDOWNLOAD']._serialized_start=12471 + _globals['_DFDAEMONDOWNLOAD']._serialized_end=14612 # @@protoc_insertion_point(module_scope) diff --git a/python/dragonfly_api/dfdaemon_pb2.pyi b/python/dragonfly_api/dfdaemon_pb2.pyi index 90c5aaf6..4c9a4cb9 100644 --- a/python/dragonfly_api/dfdaemon_pb2.pyi +++ b/python/dragonfly_api/dfdaemon_pb2.pyi @@ -224,6 +224,22 @@ class DeleteLocalTaskRequest(_message.Message): remote_ip: str def __init__(self, task_id: _Optional[str] = ..., remote_ip: _Optional[str] = ...) -> None: ... +class DeleteImageRequest(_message.Message): + __slots__ = ("image", "remote_ip") + IMAGE_FIELD_NUMBER: _ClassVar[int] + REMOTE_IP_FIELD_NUMBER: _ClassVar[int] + image: _common_pb2.Image + remote_ip: str + def __init__(self, image: _Optional[_Union[_common_pb2.Image, _Mapping]] = ..., remote_ip: _Optional[str] = ...) -> None: ... + +class DeleteImageResponse(_message.Message): + __slots__ = ("deleted_task_ids", "retained_task_ids") + DELETED_TASK_IDS_FIELD_NUMBER: _ClassVar[int] + RETAINED_TASK_IDS_FIELD_NUMBER: _ClassVar[int] + deleted_task_ids: _containers.RepeatedScalarFieldContainer[str] + retained_task_ids: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, deleted_task_ids: _Optional[_Iterable[str]] = ..., retained_task_ids: _Optional[_Iterable[str]] = ...) -> None: ... + class DownloadCacheTaskRequest(_message.Message): __slots__ = ("url", "digest", "range", "type", "tag", "application", "priority", "filtered_query_params", "request_header", "piece_length", "output_path", "timeout", "disable_back_to_source", "need_back_to_source", "certificate_chain", "prefetch", "object_storage", "hdfs", "is_prefetch", "need_piece_content", "content_for_calculating_task_id", "remote_ip", "overwrite") class RequestHeaderEntry(_message.Message): diff --git a/python/dragonfly_api/dfdaemon_pb2_grpc.py b/python/dragonfly_api/dfdaemon_pb2_grpc.py index e524e920..bd23aaaf 100644 --- a/python/dragonfly_api/dfdaemon_pb2_grpc.py +++ b/python/dragonfly_api/dfdaemon_pb2_grpc.py @@ -62,6 +62,11 @@ def __init__(self, channel): request_serializer=dfdaemon__pb2.DeleteTaskRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, _registered_method=True) + self.DeleteImage = channel.unary_unary( + '/dfdaemon.v2.DfdaemonUpload/DeleteImage', + request_serializer=dfdaemon__pb2.DeleteImageRequest.SerializeToString, + response_deserializer=dfdaemon__pb2.DeleteImageResponse.FromString, + _registered_method=True) self.SyncPieces = channel.unary_stream( '/dfdaemon.v2.DfdaemonUpload/SyncPieces', request_serializer=dfdaemon__pb2.SyncPiecesRequest.SerializeToString, @@ -188,6 +193,14 @@ def DeleteTask(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def DeleteImage(self, request, context): + """DeleteImage deletes the tasks of the image in the peer, except the tasks still + referenced by other images. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def SyncPieces(self, request, context): """SyncPieces syncs piece metadatas from remote peer. """ @@ -335,6 +348,11 @@ def add_DfdaemonUploadServicer_to_server(servicer, server): request_deserializer=dfdaemon__pb2.DeleteTaskRequest.FromString, response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, ), + 'DeleteImage': grpc.unary_unary_rpc_method_handler( + servicer.DeleteImage, + request_deserializer=dfdaemon__pb2.DeleteImageRequest.FromString, + response_serializer=dfdaemon__pb2.DeleteImageResponse.SerializeToString, + ), 'SyncPieces': grpc.unary_stream_rpc_method_handler( servicer.SyncPieces, request_deserializer=dfdaemon__pb2.SyncPiecesRequest.FromString, @@ -567,6 +585,33 @@ def DeleteTask(request, metadata, _registered_method=True) + @staticmethod + def DeleteImage(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dfdaemon.v2.DfdaemonUpload/DeleteImage', + dfdaemon__pb2.DeleteImageRequest.SerializeToString, + dfdaemon__pb2.DeleteImageResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def SyncPieces(request, target, @@ -1072,6 +1117,11 @@ def __init__(self, channel): request_serializer=dfdaemon__pb2.DeleteLocalTaskRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, _registered_method=True) + self.DeleteImage = channel.unary_unary( + '/dfdaemon.v2.DfdaemonDownload/DeleteImage', + request_serializer=dfdaemon__pb2.DeleteImageRequest.SerializeToString, + response_deserializer=dfdaemon__pb2.DeleteImageResponse.FromString, + _registered_method=True) self.DeleteHost = channel.unary_unary( '/dfdaemon.v2.DfdaemonDownload/DeleteHost', request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, @@ -1197,6 +1247,14 @@ def DeleteLocalTask(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def DeleteImage(self, request, context): + """DeleteImage deletes the tasks of the image in the peer, except the tasks still + referenced by other images. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def DeleteHost(self, request, context): """DeleteHost releases host in scheduler. """ @@ -1333,6 +1391,11 @@ def add_DfdaemonDownloadServicer_to_server(servicer, server): request_deserializer=dfdaemon__pb2.DeleteLocalTaskRequest.FromString, response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, ), + 'DeleteImage': grpc.unary_unary_rpc_method_handler( + servicer.DeleteImage, + request_deserializer=dfdaemon__pb2.DeleteImageRequest.FromString, + response_serializer=dfdaemon__pb2.DeleteImageResponse.SerializeToString, + ), 'DeleteHost': grpc.unary_unary_rpc_method_handler( servicer.DeleteHost, request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, @@ -1604,6 +1667,33 @@ def DeleteLocalTask(request, metadata, _registered_method=True) + @staticmethod + def DeleteImage(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dfdaemon.v2.DfdaemonDownload/DeleteImage', + dfdaemon__pb2.DeleteImageRequest.SerializeToString, + dfdaemon__pb2.DeleteImageResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def DeleteHost(request, target, diff --git a/python/dragonfly_api/scheduler_pb2.py b/python/dragonfly_api/scheduler_pb2.py index cd096e2d..be4a8284 100644 --- a/python/dragonfly_api/scheduler_pb2.py +++ b/python/dragonfly_api/scheduler_pb2.py @@ -28,7 +28,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fscheduler.proto\x12\x0cscheduler.v2\x1a\x0c\x63ommon.proto\x1a\x12\x65rrordetails.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\"<\n\x13RegisterPeerRequest\x12%\n\x08\x64ownload\x18\x01 \x01(\x0b\x32\x13.common.v2.Download\"\x1c\n\x1a\x44ownloadPeerStartedRequest\"R\n&DownloadPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"m\n\x15ReschedulePeerRequest\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"F\n\x1b\x44ownloadPeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"R\n\'DownloadPeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"E\n\x19\x44ownloadPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"Q\n%DownloadPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n\x1c\x44ownloadPieceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"K\n(DownloadPieceBackToSourceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"n\n\x1a\x44ownloadPieceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\tparent_id\x18\x02 \x01(\t\x12\x11\n\ttemporary\x18\x03 \x01(\x08\x42\x0f\n\r_piece_number\"\xba\x01\n&DownloadPieceBackToSourceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x01\x88\x01\x01\x12+\n\x07\x62\x61\x63kend\x18\x02 \x01(\x0b\x32\x18.errordetails.v2.BackendH\x00\x12+\n\x07unknown\x18\x03 \x01(\x0b\x32\x18.errordetails.v2.UnknownH\x00\x42\n\n\x08responseB\x0f\n\r_piece_number\"\xac\t\n\x13\x41nnouncePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x42\n\x15register_peer_request\x18\x04 \x01(\x0b\x32!.scheduler.v2.RegisterPeerRequestH\x00\x12Q\n\x1d\x64ownload_peer_started_request\x18\x05 \x01(\x0b\x32(.scheduler.v2.DownloadPeerStartedRequestH\x00\x12l\n,download_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x34.scheduler.v2.DownloadPeerBackToSourceStartedRequestH\x00\x12\x46\n\x17reschedule_peer_request\x18\x07 \x01(\x0b\x32#.scheduler.v2.ReschedulePeerRequestH\x00\x12S\n\x1e\x64ownload_peer_finished_request\x18\x08 \x01(\x0b\x32).scheduler.v2.DownloadPeerFinishedRequestH\x00\x12n\n-download_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32\x35.scheduler.v2.DownloadPeerBackToSourceFinishedRequestH\x00\x12O\n\x1c\x64ownload_peer_failed_request\x18\n \x01(\x0b\x32\'.scheduler.v2.DownloadPeerFailedRequestH\x00\x12j\n+download_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x33.scheduler.v2.DownloadPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x13\n\x11\x45mptyTaskResponse\"@\n\x12NormalTaskResponse\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\"D\n\x18NeedBackToSourceResponse\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x16\n\x14MetadataOnlyResponse\"\xba\x02\n\x14\x41nnouncePeerResponse\x12>\n\x13\x65mpty_task_response\x18\x01 \x01(\x0b\x32\x1f.scheduler.v2.EmptyTaskResponseH\x00\x12@\n\x14normal_task_response\x18\x02 \x01(\x0b\x32 .scheduler.v2.NormalTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x12\x44\n\x16metadata_only_response\x18\x04 \x01(\x0b\x32\".scheduler.v2.MetadataOnlyResponseH\x00\x42\n\n\x08response\"D\n\x0fStatPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"F\n\x11\x44\x65letePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"3\n\x0fStatTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"5\n\x11\x44\x65leteTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"s\n\x13\x41nnounceHostRequest\x12\x1d\n\x04host\x18\x01 \x01(\x0b\x32\x0f.common.v2.Host\x12\x30\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x0b\n\t_interval\".\n\x10ListHostsRequest\x12\x11\n\x04type\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x07\n\x05_type\"3\n\x11ListHostsResponse\x12\x1e\n\x05hosts\x18\x01 \x03(\x0b\x32\x0f.common.v2.Host\"$\n\x11\x44\x65leteHostRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\"\xba\t\n\x18RegisterCachePeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12Q\n\x0erequest_header\x18\t \x03(\x0b\x32\x39.scheduler.v2.RegisterCachePeerRequest.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x15 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x16 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x17 \x01(\rH\x0b\x88\x01\x01\x12 \n\x13\x61\x63tual_piece_length\x18\x18 \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x19 \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1a \x01(\x04H\x0e\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_count\"!\n\x1f\x44ownloadCachePeerStartedRequest\"W\n+DownloadCachePeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"w\n\x1aRescheduleCachePeerRequest\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"K\n DownloadCachePeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"W\n,DownloadCachePeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"J\n\x1e\x44ownloadCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"V\n*DownloadCachePeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x89\n\n\x18\x41nnounceCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12M\n\x1bregister_cache_peer_request\x18\x04 \x01(\x0b\x32&.scheduler.v2.RegisterCachePeerRequestH\x00\x12\\\n#download_cache_peer_started_request\x18\x05 \x01(\x0b\x32-.scheduler.v2.DownloadCachePeerStartedRequestH\x00\x12w\n2download_cache_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x39.scheduler.v2.DownloadCachePeerBackToSourceStartedRequestH\x00\x12Q\n\x1dreschedule_cache_peer_request\x18\x07 \x01(\x0b\x32(.scheduler.v2.RescheduleCachePeerRequestH\x00\x12^\n$download_cache_peer_finished_request\x18\x08 \x01(\x0b\x32..scheduler.v2.DownloadCachePeerFinishedRequestH\x00\x12y\n3download_cache_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32:.scheduler.v2.DownloadCachePeerBackToSourceFinishedRequestH\x00\x12Z\n\"download_cache_peer_failed_request\x18\n \x01(\x0b\x32,.scheduler.v2.DownloadCachePeerFailedRequestH\x00\x12u\n1download_cache_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x38.scheduler.v2.DownloadCachePeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x18\n\x16\x45mptyCacheTaskResponse\"J\n\x17NormalCacheTaskResponse\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\"\x8f\x02\n\x19\x41nnounceCachePeerResponse\x12I\n\x19\x65mpty_cache_task_response\x18\x01 \x01(\x0b\x32$.scheduler.v2.EmptyCacheTaskResponseH\x00\x12K\n\x1anormal_cache_task_response\x18\x02 \x01(\x0b\x32%.scheduler.v2.NormalCacheTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"I\n\x14StatCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"K\n\x16\x44\x65leteCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"8\n\x14StatCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\":\n\x16\x44\x65leteCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x8e\x02\n\x1dRegisterPersistentPeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x12\n\npersistent\x18\x03 \x01(\x08\x12\x18\n\x0boutput_path\x18\x04 \x01(\tH\x00\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x06 \x01(\x04\x12\x1b\n\x13need_back_to_source\x18\x07 \x01(\x08\x42\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"&\n$DownloadPersistentPeerStartedRequest\"\\\n0DownloadPersistentPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x81\x01\n\x1fReschedulePersistentPeerRequest\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\'\n%DownloadPersistentPeerFinishedRequest\"3\n1DownloadPersistentPeerBackToSourceFinishedRequest\"O\n#DownloadPersistentPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"[\n/DownloadPersistentPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xe0\n\n\x1d\x41nnouncePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12W\n register_persistent_peer_request\x18\x04 \x01(\x0b\x32+.scheduler.v2.RegisterPersistentPeerRequestH\x00\x12\x66\n(download_persistent_peer_started_request\x18\x05 \x01(\x0b\x32\x32.scheduler.v2.DownloadPersistentPeerStartedRequestH\x00\x12\x81\x01\n7download_persistent_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32>.scheduler.v2.DownloadPersistentPeerBackToSourceStartedRequestH\x00\x12[\n\"reschedule_persistent_peer_request\x18\x07 \x01(\x0b\x32-.scheduler.v2.ReschedulePersistentPeerRequestH\x00\x12h\n)download_persistent_peer_finished_request\x18\x08 \x01(\x0b\x32\x33.scheduler.v2.DownloadPersistentPeerFinishedRequestH\x00\x12\x83\x01\n8download_persistent_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32?.scheduler.v2.DownloadPersistentPeerBackToSourceFinishedRequestH\x00\x12\x64\n\'download_persistent_peer_failed_request\x18\n \x01(\x0b\x32\x31.scheduler.v2.DownloadPersistentPeerFailedRequestH\x00\x12\x7f\n6download_persistent_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32=.scheduler.v2.DownloadPersistentPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x1d\n\x1b\x45mptyPersistentTaskResponse\"T\n\x1cNormalPersistentTaskResponse\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\"\xa8\x02\n\x1e\x41nnouncePersistentPeerResponse\x12S\n\x1e\x65mpty_persistent_task_response\x18\x01 \x01(\x0b\x32).scheduler.v2.EmptyPersistentTaskResponseH\x00\x12U\n\x1fnormal_persistent_task_response\x18\x02 \x01(\x0b\x32*.scheduler.v2.NormalPersistentTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"N\n\x19StatPersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"P\n\x1b\x44\x65letePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x8d\x02\n\"UploadPersistentTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x30\n\x0eobject_storage\x18\x05 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12 \n\x18persistent_replica_count\x18\x06 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x07 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x08 \x01(\r\x12&\n\x03ttl\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\"X\n#UploadPersistentTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x80\x01\n!UploadPersistentTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"=\n\x19StatPersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"?\n\x1b\x44\x65letePersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x91\x02\n\"RegisterPersistentCachePeerRequest\x12\x12\n\npersistent\x18\x01 \x01(\x08\x12\x10\n\x03tag\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x04 \x01(\x04\x12\x18\n\x0boutput_path\x18\x05 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x07 \x01(\x04\x42\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"+\n)DownloadPersistentCachePeerStartedRequest\"\x8b\x01\n$ReschedulePersistentCachePeerRequest\x12\x39\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n*DownloadPersistentCachePeerFinishedRequestJ\x04\x08\x01\x10\x02R\x0bpiece_count\"T\n(DownloadPersistentCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xb1\x06\n\"AnnouncePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x62\n®ister_persistent_cache_peer_request\x18\x04 \x01(\x0b\x32\x30.scheduler.v2.RegisterPersistentCachePeerRequestH\x00\x12q\n.download_persistent_cache_peer_started_request\x18\x05 \x01(\x0b\x32\x37.scheduler.v2.DownloadPersistentCachePeerStartedRequestH\x00\x12\x66\n(reschedule_persistent_cache_peer_request\x18\x06 \x01(\x0b\x32\x32.scheduler.v2.ReschedulePersistentCachePeerRequestH\x00\x12s\n/download_persistent_cache_peer_finished_request\x18\x07 \x01(\x0b\x32\x38.scheduler.v2.DownloadPersistentCachePeerFinishedRequestH\x00\x12o\n-download_persistent_cache_peer_failed_request\x18\x08 \x01(\x0b\x32\x36.scheduler.v2.DownloadPersistentCachePeerFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\t \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\n \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x42\t\n\x07request\"\"\n EmptyPersistentCacheTaskResponse\"d\n!NormalPersistentCacheTaskResponse\x12?\n\x17\x63\x61ndidate_cache_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\"\xf3\x01\n#AnnouncePersistentCachePeerResponse\x12^\n$empty_persistent_cache_task_response\x18\x01 \x01(\x0b\x32..scheduler.v2.EmptyPersistentCacheTaskResponseH\x00\x12`\n%normal_persistent_cache_task_response\x18\x02 \x01(\x0b\x32/.scheduler.v2.NormalPersistentCacheTaskResponseH\x00\x42\n\n\x08response\"S\n\x1eStatPersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"U\n DeletePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\xad\x02\n\'UploadPersistentCacheTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12 \n\x18persistent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12&\n\x03ttl\x18\n \x01(\x0b\x32\x19.google.protobuf.DurationB\x06\n\x04_tagB\x0e\n\x0c_application\"]\n(UploadPersistentCacheTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x85\x01\n&UploadPersistentCacheTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"B\n\x1eStatPersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"D\n DeletePersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\xb0\x06\n\x13PreheatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12=\n\x06header\x18\x06 \x03(\x0b\x32-.scheduler.v2.PreheatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12\r\n\x05scope\x18\n \x01(\t\x12\x0b\n\x03ips\x18\x0b \x03(\t\x12\x17\n\npercentage\x18\x0c \x01(\rH\x06\x88\x01\x01\x12\x12\n\x05\x63ount\x18\r \x01(\rH\x07\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0e \x01(\x03H\x08\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0f \x01(\x03H\t\x88\x01\x01\x12/\n\x07timeout\x18\x10 \x01(\x0b\x32\x19.google.protobuf.DurationH\n\x88\x01\x01\x12%\n\x08priority\x18\x11 \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x12 \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x13 \x01(\x08\x12(\n enable_task_id_based_blob_digest\x18\x14 \x01(\x08\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"\xb2\x05\n\x10StatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12:\n\x06header\x18\x06 \x03(\x0b\x32*.scheduler.v2.StatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12#\n\x16\x63oncurrent_layer_count\x18\n \x01(\x03H\x06\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0b \x01(\x03H\x07\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x08\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\r \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x0e \x01(\x08\x12\r\n\x05scope\x18\x0f \x01(\t\x12(\n enable_task_id_based_blob_digest\x18\x10 \x01(\x08\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\x19\n\x17_concurrent_layer_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"_\n\x11StatImageResponse\x12\"\n\x05image\x18\x01 \x01(\x0b\x32\x13.scheduler.v2.Image\x12&\n\x05peers\x18\x02 \x03(\x0b\x32\x17.scheduler.v2.PeerImage\"U\n\tPeerImage\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12*\n\rcached_layers\x18\x03 \x03(\x0b\x32\x13.scheduler.v2.Layer\",\n\x05Image\x12#\n\x06layers\x18\x01 \x03(\x0b\x32\x13.scheduler.v2.Layer\">\n\x05Layer\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished\"\xb9\x06\n\x12PreheatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12<\n\x06header\x18\x06 \x03(\x0b\x32,.scheduler.v2.PreheatFileRequest.HeaderEntry\x12\r\n\x05scope\x18\x07 \x01(\t\x12\x0b\n\x03ips\x18\x08 \x03(\t\x12\x17\n\npercentage\x18\t \x01(\rH\x03\x88\x01\x01\x12\x12\n\x05\x63ount\x18\n \x01(\rH\x04\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0b \x01(\x03H\x05\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0c \x01(\x03H\x06\x88\x01\x01\x12/\n\x07timeout\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationH\x07\x88\x01\x01\x12%\n\x08priority\x18\x0e \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x08\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\t\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x13 \x01(\tH\n\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\x0e\n\x0c_output_path\"\xc2\x04\n\x0fStatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12\x39\n\x06header\x18\x06 \x03(\x0b\x32).scheduler.v2.StatFileRequest.HeaderEntry\x12\"\n\x15\x63oncurrent_peer_count\x18\x07 \x01(\x03H\x03\x88\x01\x01\x12/\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationH\x04\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\t \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\n \x01(\x08\x12\x35\n\x0eobject_storage\x18\x0b \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x05\x88\x01\x01\x12\"\n\x04hdfs\x18\x0c \x01(\x0b\x32\x0f.common.v2.HDFSH\x06\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfs\"9\n\x10StatFileResponse\x12%\n\x05peers\x18\x01 \x03(\x0b\x32\x16.scheduler.v2.PeerFile\"R\n\x08PeerFile\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12(\n\x0c\x63\x61\x63hed_files\x18\x03 \x03(\x0b\x32\x12.scheduler.v2.File\"=\n\x04\x46ile\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished2\xc2\x17\n\tScheduler\x12Y\n\x0c\x41nnouncePeer\x12!.scheduler.v2.AnnouncePeerRequest\x1a\".scheduler.v2.AnnouncePeerResponse(\x01\x30\x01\x12:\n\x08StatPeer\x12\x1d.scheduler.v2.StatPeerRequest\x1a\x0f.common.v2.Peer\x12\x45\n\nDeletePeer\x12\x1f.scheduler.v2.DeletePeerRequest\x1a\x16.google.protobuf.Empty\x12:\n\x08StatTask\x12\x1d.scheduler.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12\x45\n\nDeleteTask\x12\x1f.scheduler.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0c\x41nnounceHost\x12!.scheduler.v2.AnnounceHostRequest\x1a\x16.google.protobuf.Empty\x12L\n\tListHosts\x12\x1e.scheduler.v2.ListHostsRequest\x1a\x1f.scheduler.v2.ListHostsResponse\x12\x45\n\nDeleteHost\x12\x1f.scheduler.v2.DeleteHostRequest\x1a\x16.google.protobuf.Empty\x12h\n\x11\x41nnounceCachePeer\x12&.scheduler.v2.AnnounceCachePeerRequest\x1a\'.scheduler.v2.AnnounceCachePeerResponse(\x01\x30\x01\x12I\n\rStatCachePeer\x12\".scheduler.v2.StatCachePeerRequest\x1a\x14.common.v2.CachePeer\x12O\n\x0f\x44\x65leteCachePeer\x12$.scheduler.v2.DeleteCachePeerRequest\x1a\x16.google.protobuf.Empty\x12I\n\rStatCacheTask\x12\".scheduler.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12O\n\x0f\x44\x65leteCacheTask\x12$.scheduler.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12w\n\x16\x41nnouncePersistentPeer\x12+.scheduler.v2.AnnouncePersistentPeerRequest\x1a,.scheduler.v2.AnnouncePersistentPeerResponse(\x01\x30\x01\x12X\n\x12StatPersistentPeer\x12\'.scheduler.v2.StatPersistentPeerRequest\x1a\x19.common.v2.PersistentPeer\x12Y\n\x14\x44\x65letePersistentPeer\x12).scheduler.v2.DeletePersistentPeerRequest\x1a\x16.google.protobuf.Empty\x12g\n\x1bUploadPersistentTaskStarted\x12\x30.scheduler.v2.UploadPersistentTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12l\n\x1cUploadPersistentTaskFinished\x12\x31.scheduler.v2.UploadPersistentTaskFinishedRequest\x1a\x19.common.v2.PersistentTask\x12\x65\n\x1aUploadPersistentTaskFailed\x12/.scheduler.v2.UploadPersistentTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12X\n\x12StatPersistentTask\x12\'.scheduler.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12Y\n\x14\x44\x65letePersistentTask\x12).scheduler.v2.DeletePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12\x86\x01\n\x1b\x41nnouncePersistentCachePeer\x12\x30.scheduler.v2.AnnouncePersistentCachePeerRequest\x1a\x31.scheduler.v2.AnnouncePersistentCachePeerResponse(\x01\x30\x01\x12g\n\x17StatPersistentCachePeer\x12,.scheduler.v2.StatPersistentCachePeerRequest\x1a\x1e.common.v2.PersistentCachePeer\x12\x63\n\x19\x44\x65letePersistentCachePeer\x12..scheduler.v2.DeletePersistentCachePeerRequest\x1a\x16.google.protobuf.Empty\x12q\n UploadPersistentCacheTaskStarted\x12\x35.scheduler.v2.UploadPersistentCacheTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12{\n!UploadPersistentCacheTaskFinished\x12\x36.scheduler.v2.UploadPersistentCacheTaskFinishedRequest\x1a\x1e.common.v2.PersistentCacheTask\x12o\n\x1fUploadPersistentCacheTaskFailed\x12\x34.scheduler.v2.UploadPersistentCacheTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12g\n\x17StatPersistentCacheTask\x12,.scheduler.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x63\n\x19\x44\x65letePersistentCacheTask\x12..scheduler.v2.DeletePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0cPreheatImage\x12!.scheduler.v2.PreheatImageRequest\x1a\x16.google.protobuf.Empty\x12L\n\tStatImage\x12\x1e.scheduler.v2.StatImageRequest\x1a\x1f.scheduler.v2.StatImageResponse\x12G\n\x0bPreheatFile\x12 .scheduler.v2.PreheatFileRequest\x1a\x16.google.protobuf.Empty\x12I\n\x08StatFile\x12\x1d.scheduler.v2.StatFileRequest\x1a\x1e.scheduler.v2.StatFileResponseb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fscheduler.proto\x12\x0cscheduler.v2\x1a\x0c\x63ommon.proto\x1a\x12\x65rrordetails.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\"<\n\x13RegisterPeerRequest\x12%\n\x08\x64ownload\x18\x01 \x01(\x0b\x32\x13.common.v2.Download\"\x1c\n\x1a\x44ownloadPeerStartedRequest\"R\n&DownloadPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"m\n\x15ReschedulePeerRequest\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"F\n\x1b\x44ownloadPeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"R\n\'DownloadPeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"E\n\x19\x44ownloadPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"Q\n%DownloadPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n\x1c\x44ownloadPieceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"K\n(DownloadPieceBackToSourceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"n\n\x1a\x44ownloadPieceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\tparent_id\x18\x02 \x01(\t\x12\x11\n\ttemporary\x18\x03 \x01(\x08\x42\x0f\n\r_piece_number\"\xba\x01\n&DownloadPieceBackToSourceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x01\x88\x01\x01\x12+\n\x07\x62\x61\x63kend\x18\x02 \x01(\x0b\x32\x18.errordetails.v2.BackendH\x00\x12+\n\x07unknown\x18\x03 \x01(\x0b\x32\x18.errordetails.v2.UnknownH\x00\x42\n\n\x08responseB\x0f\n\r_piece_number\"\xac\t\n\x13\x41nnouncePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x42\n\x15register_peer_request\x18\x04 \x01(\x0b\x32!.scheduler.v2.RegisterPeerRequestH\x00\x12Q\n\x1d\x64ownload_peer_started_request\x18\x05 \x01(\x0b\x32(.scheduler.v2.DownloadPeerStartedRequestH\x00\x12l\n,download_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x34.scheduler.v2.DownloadPeerBackToSourceStartedRequestH\x00\x12\x46\n\x17reschedule_peer_request\x18\x07 \x01(\x0b\x32#.scheduler.v2.ReschedulePeerRequestH\x00\x12S\n\x1e\x64ownload_peer_finished_request\x18\x08 \x01(\x0b\x32).scheduler.v2.DownloadPeerFinishedRequestH\x00\x12n\n-download_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32\x35.scheduler.v2.DownloadPeerBackToSourceFinishedRequestH\x00\x12O\n\x1c\x64ownload_peer_failed_request\x18\n \x01(\x0b\x32\'.scheduler.v2.DownloadPeerFailedRequestH\x00\x12j\n+download_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x33.scheduler.v2.DownloadPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x13\n\x11\x45mptyTaskResponse\"@\n\x12NormalTaskResponse\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\"D\n\x18NeedBackToSourceResponse\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x16\n\x14MetadataOnlyResponse\"\xba\x02\n\x14\x41nnouncePeerResponse\x12>\n\x13\x65mpty_task_response\x18\x01 \x01(\x0b\x32\x1f.scheduler.v2.EmptyTaskResponseH\x00\x12@\n\x14normal_task_response\x18\x02 \x01(\x0b\x32 .scheduler.v2.NormalTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x12\x44\n\x16metadata_only_response\x18\x04 \x01(\x0b\x32\".scheduler.v2.MetadataOnlyResponseH\x00\x42\n\n\x08response\"D\n\x0fStatPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"F\n\x11\x44\x65letePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"3\n\x0fStatTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"5\n\x11\x44\x65leteTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"s\n\x13\x41nnounceHostRequest\x12\x1d\n\x04host\x18\x01 \x01(\x0b\x32\x0f.common.v2.Host\x12\x30\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x0b\n\t_interval\".\n\x10ListHostsRequest\x12\x11\n\x04type\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x07\n\x05_type\"3\n\x11ListHostsResponse\x12\x1e\n\x05hosts\x18\x01 \x03(\x0b\x32\x0f.common.v2.Host\"$\n\x11\x44\x65leteHostRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\"\xba\t\n\x18RegisterCachePeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12Q\n\x0erequest_header\x18\t \x03(\x0b\x32\x39.scheduler.v2.RegisterCachePeerRequest.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x15 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x16 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x17 \x01(\rH\x0b\x88\x01\x01\x12 \n\x13\x61\x63tual_piece_length\x18\x18 \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x19 \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1a \x01(\x04H\x0e\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_count\"!\n\x1f\x44ownloadCachePeerStartedRequest\"W\n+DownloadCachePeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"w\n\x1aRescheduleCachePeerRequest\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"K\n DownloadCachePeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"W\n,DownloadCachePeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"J\n\x1e\x44ownloadCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"V\n*DownloadCachePeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x89\n\n\x18\x41nnounceCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12M\n\x1bregister_cache_peer_request\x18\x04 \x01(\x0b\x32&.scheduler.v2.RegisterCachePeerRequestH\x00\x12\\\n#download_cache_peer_started_request\x18\x05 \x01(\x0b\x32-.scheduler.v2.DownloadCachePeerStartedRequestH\x00\x12w\n2download_cache_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x39.scheduler.v2.DownloadCachePeerBackToSourceStartedRequestH\x00\x12Q\n\x1dreschedule_cache_peer_request\x18\x07 \x01(\x0b\x32(.scheduler.v2.RescheduleCachePeerRequestH\x00\x12^\n$download_cache_peer_finished_request\x18\x08 \x01(\x0b\x32..scheduler.v2.DownloadCachePeerFinishedRequestH\x00\x12y\n3download_cache_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32:.scheduler.v2.DownloadCachePeerBackToSourceFinishedRequestH\x00\x12Z\n\"download_cache_peer_failed_request\x18\n \x01(\x0b\x32,.scheduler.v2.DownloadCachePeerFailedRequestH\x00\x12u\n1download_cache_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x38.scheduler.v2.DownloadCachePeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x18\n\x16\x45mptyCacheTaskResponse\"J\n\x17NormalCacheTaskResponse\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\"\x8f\x02\n\x19\x41nnounceCachePeerResponse\x12I\n\x19\x65mpty_cache_task_response\x18\x01 \x01(\x0b\x32$.scheduler.v2.EmptyCacheTaskResponseH\x00\x12K\n\x1anormal_cache_task_response\x18\x02 \x01(\x0b\x32%.scheduler.v2.NormalCacheTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"I\n\x14StatCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"K\n\x16\x44\x65leteCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"8\n\x14StatCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\":\n\x16\x44\x65leteCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x8e\x02\n\x1dRegisterPersistentPeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x12\n\npersistent\x18\x03 \x01(\x08\x12\x18\n\x0boutput_path\x18\x04 \x01(\tH\x00\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x06 \x01(\x04\x12\x1b\n\x13need_back_to_source\x18\x07 \x01(\x08\x42\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"&\n$DownloadPersistentPeerStartedRequest\"\\\n0DownloadPersistentPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x81\x01\n\x1fReschedulePersistentPeerRequest\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\'\n%DownloadPersistentPeerFinishedRequest\"3\n1DownloadPersistentPeerBackToSourceFinishedRequest\"O\n#DownloadPersistentPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"[\n/DownloadPersistentPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xe0\n\n\x1d\x41nnouncePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12W\n register_persistent_peer_request\x18\x04 \x01(\x0b\x32+.scheduler.v2.RegisterPersistentPeerRequestH\x00\x12\x66\n(download_persistent_peer_started_request\x18\x05 \x01(\x0b\x32\x32.scheduler.v2.DownloadPersistentPeerStartedRequestH\x00\x12\x81\x01\n7download_persistent_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32>.scheduler.v2.DownloadPersistentPeerBackToSourceStartedRequestH\x00\x12[\n\"reschedule_persistent_peer_request\x18\x07 \x01(\x0b\x32-.scheduler.v2.ReschedulePersistentPeerRequestH\x00\x12h\n)download_persistent_peer_finished_request\x18\x08 \x01(\x0b\x32\x33.scheduler.v2.DownloadPersistentPeerFinishedRequestH\x00\x12\x83\x01\n8download_persistent_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32?.scheduler.v2.DownloadPersistentPeerBackToSourceFinishedRequestH\x00\x12\x64\n\'download_persistent_peer_failed_request\x18\n \x01(\x0b\x32\x31.scheduler.v2.DownloadPersistentPeerFailedRequestH\x00\x12\x7f\n6download_persistent_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32=.scheduler.v2.DownloadPersistentPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x1d\n\x1b\x45mptyPersistentTaskResponse\"T\n\x1cNormalPersistentTaskResponse\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\"\xa8\x02\n\x1e\x41nnouncePersistentPeerResponse\x12S\n\x1e\x65mpty_persistent_task_response\x18\x01 \x01(\x0b\x32).scheduler.v2.EmptyPersistentTaskResponseH\x00\x12U\n\x1fnormal_persistent_task_response\x18\x02 \x01(\x0b\x32*.scheduler.v2.NormalPersistentTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"N\n\x19StatPersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"P\n\x1b\x44\x65letePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x8d\x02\n\"UploadPersistentTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x30\n\x0eobject_storage\x18\x05 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12 \n\x18persistent_replica_count\x18\x06 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x07 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x08 \x01(\r\x12&\n\x03ttl\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\"X\n#UploadPersistentTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x80\x01\n!UploadPersistentTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"=\n\x19StatPersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"?\n\x1b\x44\x65letePersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x91\x02\n\"RegisterPersistentCachePeerRequest\x12\x12\n\npersistent\x18\x01 \x01(\x08\x12\x10\n\x03tag\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x04 \x01(\x04\x12\x18\n\x0boutput_path\x18\x05 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x07 \x01(\x04\x42\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"+\n)DownloadPersistentCachePeerStartedRequest\"\x8b\x01\n$ReschedulePersistentCachePeerRequest\x12\x39\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n*DownloadPersistentCachePeerFinishedRequestJ\x04\x08\x01\x10\x02R\x0bpiece_count\"T\n(DownloadPersistentCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xb1\x06\n\"AnnouncePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x62\n®ister_persistent_cache_peer_request\x18\x04 \x01(\x0b\x32\x30.scheduler.v2.RegisterPersistentCachePeerRequestH\x00\x12q\n.download_persistent_cache_peer_started_request\x18\x05 \x01(\x0b\x32\x37.scheduler.v2.DownloadPersistentCachePeerStartedRequestH\x00\x12\x66\n(reschedule_persistent_cache_peer_request\x18\x06 \x01(\x0b\x32\x32.scheduler.v2.ReschedulePersistentCachePeerRequestH\x00\x12s\n/download_persistent_cache_peer_finished_request\x18\x07 \x01(\x0b\x32\x38.scheduler.v2.DownloadPersistentCachePeerFinishedRequestH\x00\x12o\n-download_persistent_cache_peer_failed_request\x18\x08 \x01(\x0b\x32\x36.scheduler.v2.DownloadPersistentCachePeerFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\t \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\n \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x42\t\n\x07request\"\"\n EmptyPersistentCacheTaskResponse\"d\n!NormalPersistentCacheTaskResponse\x12?\n\x17\x63\x61ndidate_cache_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\"\xf3\x01\n#AnnouncePersistentCachePeerResponse\x12^\n$empty_persistent_cache_task_response\x18\x01 \x01(\x0b\x32..scheduler.v2.EmptyPersistentCacheTaskResponseH\x00\x12`\n%normal_persistent_cache_task_response\x18\x02 \x01(\x0b\x32/.scheduler.v2.NormalPersistentCacheTaskResponseH\x00\x42\n\n\x08response\"S\n\x1eStatPersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"U\n DeletePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\xad\x02\n\'UploadPersistentCacheTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12 \n\x18persistent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12&\n\x03ttl\x18\n \x01(\x0b\x32\x19.google.protobuf.DurationB\x06\n\x04_tagB\x0e\n\x0c_application\"]\n(UploadPersistentCacheTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x85\x01\n&UploadPersistentCacheTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"B\n\x1eStatPersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"D\n DeletePersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\xe0\x06\n\x13PreheatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12=\n\x06header\x18\x06 \x03(\x0b\x32-.scheduler.v2.PreheatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12\r\n\x05scope\x18\n \x01(\t\x12\x0b\n\x03ips\x18\x0b \x03(\t\x12\x17\n\npercentage\x18\x0c \x01(\rH\x06\x88\x01\x01\x12\x12\n\x05\x63ount\x18\r \x01(\rH\x07\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0e \x01(\x03H\x08\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0f \x01(\x03H\t\x88\x01\x01\x12/\n\x07timeout\x18\x10 \x01(\x0b\x32\x19.google.protobuf.DurationH\n\x88\x01\x01\x12%\n\x08priority\x18\x11 \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x12 \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x13 \x01(\x08\x12(\n enable_task_id_based_blob_digest\x18\x14 \x01(\x08\x12$\n\x05image\x18\x15 \x01(\x0b\x32\x10.common.v2.ImageH\x0b\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x08\n\x06_image\"\xb2\x05\n\x10StatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12:\n\x06header\x18\x06 \x03(\x0b\x32*.scheduler.v2.StatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12#\n\x16\x63oncurrent_layer_count\x18\n \x01(\x03H\x06\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0b \x01(\x03H\x07\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x08\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\r \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x0e \x01(\x08\x12\r\n\x05scope\x18\x0f \x01(\t\x12(\n enable_task_id_based_blob_digest\x18\x10 \x01(\x08\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\x19\n\x17_concurrent_layer_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"_\n\x11StatImageResponse\x12\"\n\x05image\x18\x01 \x01(\x0b\x32\x13.scheduler.v2.Image\x12&\n\x05peers\x18\x02 \x03(\x0b\x32\x17.scheduler.v2.PeerImage\"U\n\tPeerImage\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12*\n\rcached_layers\x18\x03 \x03(\x0b\x32\x13.scheduler.v2.Layer\",\n\x05Image\x12#\n\x06layers\x18\x01 \x03(\x0b\x32\x13.scheduler.v2.Layer\">\n\x05Layer\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished\"\xb9\x06\n\x12PreheatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12<\n\x06header\x18\x06 \x03(\x0b\x32,.scheduler.v2.PreheatFileRequest.HeaderEntry\x12\r\n\x05scope\x18\x07 \x01(\t\x12\x0b\n\x03ips\x18\x08 \x03(\t\x12\x17\n\npercentage\x18\t \x01(\rH\x03\x88\x01\x01\x12\x12\n\x05\x63ount\x18\n \x01(\rH\x04\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0b \x01(\x03H\x05\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0c \x01(\x03H\x06\x88\x01\x01\x12/\n\x07timeout\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationH\x07\x88\x01\x01\x12%\n\x08priority\x18\x0e \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x08\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\t\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x13 \x01(\tH\n\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\x0e\n\x0c_output_path\"\xc2\x04\n\x0fStatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12\x39\n\x06header\x18\x06 \x03(\x0b\x32).scheduler.v2.StatFileRequest.HeaderEntry\x12\"\n\x15\x63oncurrent_peer_count\x18\x07 \x01(\x03H\x03\x88\x01\x01\x12/\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationH\x04\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\t \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\n \x01(\x08\x12\x35\n\x0eobject_storage\x18\x0b \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x05\x88\x01\x01\x12\"\n\x04hdfs\x18\x0c \x01(\x0b\x32\x0f.common.v2.HDFSH\x06\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfs\"9\n\x10StatFileResponse\x12%\n\x05peers\x18\x01 \x03(\x0b\x32\x16.scheduler.v2.PeerFile\"R\n\x08PeerFile\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12(\n\x0c\x63\x61\x63hed_files\x18\x03 \x03(\x0b\x32\x12.scheduler.v2.File\"=\n\x04\x46ile\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished2\xc2\x17\n\tScheduler\x12Y\n\x0c\x41nnouncePeer\x12!.scheduler.v2.AnnouncePeerRequest\x1a\".scheduler.v2.AnnouncePeerResponse(\x01\x30\x01\x12:\n\x08StatPeer\x12\x1d.scheduler.v2.StatPeerRequest\x1a\x0f.common.v2.Peer\x12\x45\n\nDeletePeer\x12\x1f.scheduler.v2.DeletePeerRequest\x1a\x16.google.protobuf.Empty\x12:\n\x08StatTask\x12\x1d.scheduler.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12\x45\n\nDeleteTask\x12\x1f.scheduler.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0c\x41nnounceHost\x12!.scheduler.v2.AnnounceHostRequest\x1a\x16.google.protobuf.Empty\x12L\n\tListHosts\x12\x1e.scheduler.v2.ListHostsRequest\x1a\x1f.scheduler.v2.ListHostsResponse\x12\x45\n\nDeleteHost\x12\x1f.scheduler.v2.DeleteHostRequest\x1a\x16.google.protobuf.Empty\x12h\n\x11\x41nnounceCachePeer\x12&.scheduler.v2.AnnounceCachePeerRequest\x1a\'.scheduler.v2.AnnounceCachePeerResponse(\x01\x30\x01\x12I\n\rStatCachePeer\x12\".scheduler.v2.StatCachePeerRequest\x1a\x14.common.v2.CachePeer\x12O\n\x0f\x44\x65leteCachePeer\x12$.scheduler.v2.DeleteCachePeerRequest\x1a\x16.google.protobuf.Empty\x12I\n\rStatCacheTask\x12\".scheduler.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12O\n\x0f\x44\x65leteCacheTask\x12$.scheduler.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12w\n\x16\x41nnouncePersistentPeer\x12+.scheduler.v2.AnnouncePersistentPeerRequest\x1a,.scheduler.v2.AnnouncePersistentPeerResponse(\x01\x30\x01\x12X\n\x12StatPersistentPeer\x12\'.scheduler.v2.StatPersistentPeerRequest\x1a\x19.common.v2.PersistentPeer\x12Y\n\x14\x44\x65letePersistentPeer\x12).scheduler.v2.DeletePersistentPeerRequest\x1a\x16.google.protobuf.Empty\x12g\n\x1bUploadPersistentTaskStarted\x12\x30.scheduler.v2.UploadPersistentTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12l\n\x1cUploadPersistentTaskFinished\x12\x31.scheduler.v2.UploadPersistentTaskFinishedRequest\x1a\x19.common.v2.PersistentTask\x12\x65\n\x1aUploadPersistentTaskFailed\x12/.scheduler.v2.UploadPersistentTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12X\n\x12StatPersistentTask\x12\'.scheduler.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12Y\n\x14\x44\x65letePersistentTask\x12).scheduler.v2.DeletePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12\x86\x01\n\x1b\x41nnouncePersistentCachePeer\x12\x30.scheduler.v2.AnnouncePersistentCachePeerRequest\x1a\x31.scheduler.v2.AnnouncePersistentCachePeerResponse(\x01\x30\x01\x12g\n\x17StatPersistentCachePeer\x12,.scheduler.v2.StatPersistentCachePeerRequest\x1a\x1e.common.v2.PersistentCachePeer\x12\x63\n\x19\x44\x65letePersistentCachePeer\x12..scheduler.v2.DeletePersistentCachePeerRequest\x1a\x16.google.protobuf.Empty\x12q\n UploadPersistentCacheTaskStarted\x12\x35.scheduler.v2.UploadPersistentCacheTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12{\n!UploadPersistentCacheTaskFinished\x12\x36.scheduler.v2.UploadPersistentCacheTaskFinishedRequest\x1a\x1e.common.v2.PersistentCacheTask\x12o\n\x1fUploadPersistentCacheTaskFailed\x12\x34.scheduler.v2.UploadPersistentCacheTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12g\n\x17StatPersistentCacheTask\x12,.scheduler.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x63\n\x19\x44\x65letePersistentCacheTask\x12..scheduler.v2.DeletePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0cPreheatImage\x12!.scheduler.v2.PreheatImageRequest\x1a\x16.google.protobuf.Empty\x12L\n\tStatImage\x12\x1e.scheduler.v2.StatImageRequest\x1a\x1f.scheduler.v2.StatImageResponse\x12G\n\x0bPreheatFile\x12 .scheduler.v2.PreheatFileRequest\x1a\x16.google.protobuf.Empty\x12I\n\x08StatFile\x12\x1d.scheduler.v2.StatFileRequest\x1a\x1e.scheduler.v2.StatFileResponseb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -202,35 +202,35 @@ _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_start=13075 _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_end=13143 _globals['_PREHEATIMAGEREQUEST']._serialized_start=13146 - _globals['_PREHEATIMAGEREQUEST']._serialized_end=13962 - _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_start=13748 - _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_end=13793 - _globals['_STATIMAGEREQUEST']._serialized_start=13965 - _globals['_STATIMAGEREQUEST']._serialized_end=14655 - _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_start=13748 - _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_end=13793 - _globals['_STATIMAGERESPONSE']._serialized_start=14657 - _globals['_STATIMAGERESPONSE']._serialized_end=14752 - _globals['_PEERIMAGE']._serialized_start=14754 - _globals['_PEERIMAGE']._serialized_end=14839 - _globals['_IMAGE']._serialized_start=14841 - _globals['_IMAGE']._serialized_end=14885 - _globals['_LAYER']._serialized_start=14887 - _globals['_LAYER']._serialized_end=14949 - _globals['_PREHEATFILEREQUEST']._serialized_start=14952 - _globals['_PREHEATFILEREQUEST']._serialized_end=15777 - _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_start=13748 - _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_end=13793 - _globals['_STATFILEREQUEST']._serialized_start=15780 - _globals['_STATFILEREQUEST']._serialized_end=16358 - _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_start=13748 - _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_end=13793 - _globals['_STATFILERESPONSE']._serialized_start=16360 - _globals['_STATFILERESPONSE']._serialized_end=16417 - _globals['_PEERFILE']._serialized_start=16419 - _globals['_PEERFILE']._serialized_end=16501 - _globals['_FILE']._serialized_start=16503 - _globals['_FILE']._serialized_end=16564 - _globals['_SCHEDULER']._serialized_start=16567 - _globals['_SCHEDULER']._serialized_end=19577 + _globals['_PREHEATIMAGEREQUEST']._serialized_end=14010 + _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_start=13786 + _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_end=13831 + _globals['_STATIMAGEREQUEST']._serialized_start=14013 + _globals['_STATIMAGEREQUEST']._serialized_end=14703 + _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_start=13786 + _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_end=13831 + _globals['_STATIMAGERESPONSE']._serialized_start=14705 + _globals['_STATIMAGERESPONSE']._serialized_end=14800 + _globals['_PEERIMAGE']._serialized_start=14802 + _globals['_PEERIMAGE']._serialized_end=14887 + _globals['_IMAGE']._serialized_start=14889 + _globals['_IMAGE']._serialized_end=14933 + _globals['_LAYER']._serialized_start=14935 + _globals['_LAYER']._serialized_end=14997 + _globals['_PREHEATFILEREQUEST']._serialized_start=15000 + _globals['_PREHEATFILEREQUEST']._serialized_end=15825 + _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_start=13786 + _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_end=13831 + _globals['_STATFILEREQUEST']._serialized_start=15828 + _globals['_STATFILEREQUEST']._serialized_end=16406 + _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_start=13786 + _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_end=13831 + _globals['_STATFILERESPONSE']._serialized_start=16408 + _globals['_STATFILERESPONSE']._serialized_end=16465 + _globals['_PEERFILE']._serialized_start=16467 + _globals['_PEERFILE']._serialized_end=16549 + _globals['_FILE']._serialized_start=16551 + _globals['_FILE']._serialized_end=16612 + _globals['_SCHEDULER']._serialized_start=16615 + _globals['_SCHEDULER']._serialized_end=19625 # @@protoc_insertion_point(module_scope) diff --git a/python/dragonfly_api/scheduler_pb2.pyi b/python/dragonfly_api/scheduler_pb2.pyi index d36bf338..d1bd769f 100644 --- a/python/dragonfly_api/scheduler_pb2.pyi +++ b/python/dragonfly_api/scheduler_pb2.pyi @@ -762,7 +762,7 @@ class DeletePersistentCacheTaskRequest(_message.Message): def __init__(self, host_id: _Optional[str] = ..., task_id: _Optional[str] = ...) -> None: ... class PreheatImageRequest(_message.Message): - __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "scope", "ips", "percentage", "count", "concurrent_task_count", "concurrent_peer_count", "timeout", "priority", "certificate_chain", "insecure_skip_verify", "enable_task_id_based_blob_digest") + __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "scope", "ips", "percentage", "count", "concurrent_task_count", "concurrent_peer_count", "timeout", "priority", "certificate_chain", "insecure_skip_verify", "enable_task_id_based_blob_digest", "image") class HeaderEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -790,6 +790,7 @@ class PreheatImageRequest(_message.Message): CERTIFICATE_CHAIN_FIELD_NUMBER: _ClassVar[int] INSECURE_SKIP_VERIFY_FIELD_NUMBER: _ClassVar[int] ENABLE_TASK_ID_BASED_BLOB_DIGEST_FIELD_NUMBER: _ClassVar[int] + IMAGE_FIELD_NUMBER: _ClassVar[int] url: str piece_length: int tag: str @@ -810,7 +811,8 @@ class PreheatImageRequest(_message.Message): certificate_chain: _containers.RepeatedScalarFieldContainer[bytes] insecure_skip_verify: bool enable_task_id_based_blob_digest: bool - def __init__(self, url: _Optional[str] = ..., piece_length: _Optional[int] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., header: _Optional[_Mapping[str, str]] = ..., username: _Optional[str] = ..., password: _Optional[str] = ..., platform: _Optional[str] = ..., scope: _Optional[str] = ..., ips: _Optional[_Iterable[str]] = ..., percentage: _Optional[int] = ..., count: _Optional[int] = ..., concurrent_task_count: _Optional[int] = ..., concurrent_peer_count: _Optional[int] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., priority: _Optional[_Union[_common_pb2.Priority, str]] = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., insecure_skip_verify: bool = ..., enable_task_id_based_blob_digest: bool = ...) -> None: ... + image: _common_pb2.Image + def __init__(self, url: _Optional[str] = ..., piece_length: _Optional[int] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., header: _Optional[_Mapping[str, str]] = ..., username: _Optional[str] = ..., password: _Optional[str] = ..., platform: _Optional[str] = ..., scope: _Optional[str] = ..., ips: _Optional[_Iterable[str]] = ..., percentage: _Optional[int] = ..., count: _Optional[int] = ..., concurrent_task_count: _Optional[int] = ..., concurrent_peer_count: _Optional[int] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., priority: _Optional[_Union[_common_pb2.Priority, str]] = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., insecure_skip_verify: bool = ..., enable_task_id_based_blob_digest: bool = ..., image: _Optional[_Union[_common_pb2.Image, _Mapping]] = ...) -> None: ... class StatImageRequest(_message.Message): __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "concurrent_layer_count", "concurrent_peer_count", "timeout", "certificate_chain", "insecure_skip_verify", "scope", "enable_task_id_based_blob_digest") diff --git a/src/common.v2.rs b/src/common.v2.rs index e37a4006..c75ac495 100644 --- a/src/common.v2.rs +++ b/src/common.v2.rs @@ -788,6 +788,11 @@ pub struct Download { /// default is AUTO. #[prost(enumeration = "SchedulingPolicy", tag = "35")] pub scheduling_policy: i32, + /// Image is the OCI image that the task belongs to, such as the manifest, config or layer + /// of the image. The peer records the task as referenced by the image, so deleting the + /// image keeps the tasks still referenced by other images. + #[prost(message, optional, tag = "36")] + pub image: ::core::option::Option, } /// Object Storage related information. #[derive(serde::Serialize, serde::Deserialize)] @@ -874,6 +879,18 @@ pub struct OpenCsg { #[prost(string, optional, tag = "3")] pub base_url: ::core::option::Option<::prost::alloc::string::String>, } +/// Image represents an OCI image. +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] +pub struct Image { + /// Reference is the canonical reference of the image, for example docker.io/library/nginx:latest + /// or docker.io/library/nginx@sha256:xxx. The same image must use the same reference. + #[prost(string, tag = "1")] + pub reference: ::prost::alloc::string::String, + /// Platform of the image in the format of os/arch, for example linux/amd64. + #[prost(string, tag = "2")] + pub platform: ::prost::alloc::string::String, +} /// Range represents download range. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] diff --git a/src/descriptor.bin b/src/descriptor.bin index b348c72a..653816c1 100644 Binary files a/src/descriptor.bin and b/src/descriptor.bin differ diff --git a/src/dfdaemon.v2.rs b/src/dfdaemon.v2.rs index c5a74176..0bf8ebd0 100644 --- a/src/dfdaemon.v2.rs +++ b/src/dfdaemon.v2.rs @@ -281,6 +281,29 @@ pub struct DeleteLocalTaskRequest { #[prost(string, optional, tag = "2")] pub remote_ip: ::core::option::Option<::prost::alloc::string::String>, } +/// DeleteImageRequest represents request of DeleteImage. +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] +pub struct DeleteImageRequest { + /// Image to delete. + #[prost(message, optional, tag = "1")] + pub image: ::core::option::Option, + /// Remote IP represents the IP address of the client initiating the delete request. + #[prost(string, optional, tag = "2")] + pub remote_ip: ::core::option::Option<::prost::alloc::string::String>, +} +/// DeleteImageResponse represents response of DeleteImage. +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] +pub struct DeleteImageResponse { + /// Deleted task ids, which are not referenced by other images in the peer. + #[prost(string, repeated, tag = "1")] + pub deleted_task_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// Retained task ids, which are still referenced by other images or still downloading + /// in the peer. + #[prost(string, repeated, tag = "2")] + pub retained_task_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} /// DownloadCacheTaskRequest represents request of DownloadCacheTask. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -1268,6 +1291,32 @@ pub mod dfdaemon_upload_client { .insert(GrpcMethod::new("dfdaemon.v2.DfdaemonUpload", "DeleteTask")); self.inner.unary(req, path, codec).await } + /// DeleteImage deletes the tasks of the image in the peer, except the tasks still + /// referenced by other images. + pub async fn delete_image( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::unknown( + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/dfdaemon.v2.DfdaemonUpload/DeleteImage", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("dfdaemon.v2.DfdaemonUpload", "DeleteImage")); + self.inner.unary(req, path, codec).await + } /// SyncPieces syncs piece metadatas from remote peer. pub async fn sync_pieces( &mut self, @@ -1792,6 +1841,15 @@ pub mod dfdaemon_upload_server { &self, request: tonic::Request, ) -> std::result::Result, tonic::Status>; + /// DeleteImage deletes the tasks of the image in the peer, except the tasks still + /// referenced by other images. + async fn delete_image( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; /// Server streaming response type for the SyncPieces method. type SyncPiecesStream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, @@ -2279,6 +2337,51 @@ pub mod dfdaemon_upload_server { }; Box::pin(fut) } + "/dfdaemon.v2.DfdaemonUpload/DeleteImage" => { + #[allow(non_camel_case_types)] + struct DeleteImageSvc(pub Arc); + impl< + T: DfdaemonUpload, + > tonic::server::UnaryService + for DeleteImageSvc { + type Response = super::DeleteImageResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::delete_image(&inner, request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = DeleteImageSvc(inner); + let codec = tonic_prost::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/dfdaemon.v2.DfdaemonUpload/SyncPieces" => { #[allow(non_camel_case_types)] struct SyncPiecesSvc(pub Arc); @@ -3421,6 +3524,32 @@ pub mod dfdaemon_download_client { ); self.inner.unary(req, path, codec).await } + /// DeleteImage deletes the tasks of the image in the peer, except the tasks still + /// referenced by other images. + pub async fn delete_image( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::unknown( + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/dfdaemon.v2.DfdaemonDownload/DeleteImage", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("dfdaemon.v2.DfdaemonDownload", "DeleteImage")); + self.inner.unary(req, path, codec).await + } /// DeleteHost releases host in scheduler. pub async fn delete_host( &mut self, @@ -3893,6 +4022,15 @@ pub mod dfdaemon_download_server { &self, request: tonic::Request, ) -> std::result::Result, tonic::Status>; + /// DeleteImage deletes the tasks of the image in the peer, except the tasks still + /// referenced by other images. + async fn delete_image( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; /// DeleteHost releases host in scheduler. async fn delete_host( &self, @@ -4425,6 +4563,51 @@ pub mod dfdaemon_download_server { }; Box::pin(fut) } + "/dfdaemon.v2.DfdaemonDownload/DeleteImage" => { + #[allow(non_camel_case_types)] + struct DeleteImageSvc(pub Arc); + impl< + T: DfdaemonDownload, + > tonic::server::UnaryService + for DeleteImageSvc { + type Response = super::DeleteImageResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::delete_image(&inner, request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = DeleteImageSvc(inner); + let codec = tonic_prost::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/dfdaemon.v2.DfdaemonDownload/DeleteHost" => { #[allow(non_camel_case_types)] struct DeleteHostSvc(pub Arc); diff --git a/src/scheduler.v2.rs b/src/scheduler.v2.rs index 0efa2104..8002667e 100644 --- a/src/scheduler.v2.rs +++ b/src/scheduler.v2.rs @@ -1242,6 +1242,10 @@ pub struct PreheatImageRequest { /// eliminates redundant downloads and storage. #[prost(bool, tag = "20")] pub enable_task_id_based_blob_digest: bool, + /// Image is the OCI image that the preheated tasks belong to, the peers record the tasks + /// as referenced by the image. It must match the image of the url and the platform. + #[prost(message, optional, tag = "21")] + pub image: ::core::option::Option, } /// StatImageRequest represents request of StatImage. #[derive(serde::Serialize, serde::Deserialize)]