diff --git a/cmd/tcl/testworkflow-toolkit/execute/execute.go b/cmd/tcl/testworkflow-toolkit/execute/execute.go index 36f5f5fa3f..3a4bb9f8d4 100644 --- a/cmd/tcl/testworkflow-toolkit/execute/execute.go +++ b/cmd/tcl/testworkflow-toolkit/execute/execute.go @@ -137,7 +137,7 @@ func executeTestWorkflowGrpc(workflowName string, request testkube.TestWorkflowE opts := []grpc.CallOption{grpc.UseCompressor(gzip.Name), grpc.MaxCallRecvMsgSize(math.MaxInt32)} resp, err := client.ScheduleExecution(ctx, &cloud.ScheduleRequest{ EnvironmentId: cfg.Execution.EnvironmentId, - Selectors: []*cloud.ScheduleSelector{{Name: workflowName, Config: request.Config}}, + Executions: []*cloud.ScheduleExecution{{Selector: &cloud.ScheduleResourceSelector{Name: workflowName}, Config: request.Config}}, DisableWebhooks: cfg.Execution.DisableWebhooks, Tags: request.Tags, RunningContext: &cloud.RunningContext{ diff --git a/internal/app/api/v1/testworkflows.go b/internal/app/api/v1/testworkflows.go index 7e92c6a1f5..7f697504eb 100644 --- a/internal/app/api/v1/testworkflows.go +++ b/internal/app/api/v1/testworkflows.go @@ -383,13 +383,12 @@ func (s *TestkubeAPI) ExecuteTestWorkflowHandler() fiber.Handler { return s.BadRequest(c, errPrefix, "invalid body", err) } - // Pro edition only (tcl protected code) - runningContext, untrustedUser := testworkflowexecutor.GetNewRunningContext(request.RunningContext, request.ParentExecutionIds) + runningContext, user := testworkflowexecutor.GetNewRunningContext(request.RunningContext, request.ParentExecutionIds) - var scheduleSelector cloud.ScheduleSelector + var scheduleExecution cloud.ScheduleExecution if name != "" { - scheduleSelector.Name = name - scheduleSelector.Config = request.Config + scheduleExecution.Selector = &cloud.ScheduleResourceSelector{Name: name} + scheduleExecution.Config = request.Config } else if selector != "" { sel, err := metav1.ParseToLabelSelector(selector) if err != nil { @@ -398,19 +397,19 @@ func (s *TestkubeAPI) ExecuteTestWorkflowHandler() fiber.Handler { if len(sel.MatchExpressions) > 0 { return s.InternalError(c, errPrefix, "invalid selector", errors.New("only simple selectors are allowed")) } - scheduleSelector.LabelSelector = sel.MatchLabels - scheduleSelector.Config = request.Config + scheduleExecution.Selector = &cloud.ScheduleResourceSelector{Labels: sel.MatchLabels} + scheduleExecution.Config = request.Config } resp := s.testWorkflowExecutor.Execute(ctx, &cloud.ScheduleRequest{ EnvironmentId: "", // use default - Selectors: []*cloud.ScheduleSelector{&scheduleSelector}, + Executions: []*cloud.ScheduleExecution{&scheduleExecution}, DisableWebhooks: request.DisableWebhooks, Tags: request.Tags, RunningContext: runningContext, ParentExecutionIds: request.ParentExecutionIds, KubernetesObjectName: request.TestWorkflowExecutionName, - UntrustedUser: untrustedUser, + User: user, }) results := make([]testkube.TestWorkflowExecution, 0) diff --git a/pkg/cloud/service.pb.go b/pkg/cloud/service.pb.go index 04ed5dc716..67e7461431 100644 --- a/pkg/cloud/service.pb.go +++ b/pkg/cloud/service.pb.go @@ -1472,20 +1472,17 @@ func (x *TestWorkflowParallelStepNotificationsResponse) GetMessage() string { return "" } -type ScheduleSelector struct { +type ScheduleResourceSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - LabelSelector map[string]string `protobuf:"bytes,2,rep,name=labelSelector,proto3" json:"labelSelector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Config map[string]string `protobuf:"bytes,3,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ExecutionName string `protobuf:"bytes,4,opt,name=execution_name,json=executionName,proto3" json:"execution_name,omitempty"` - Tags map[string]string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ScheduleSelector) Reset() { - *x = ScheduleSelector{} +func (x *ScheduleResourceSelector) Reset() { + *x = ScheduleResourceSelector{} if protoimpl.UnsafeEnabled { mi := &file_proto_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1493,13 +1490,13 @@ func (x *ScheduleSelector) Reset() { } } -func (x *ScheduleSelector) String() string { +func (x *ScheduleResourceSelector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ScheduleSelector) ProtoMessage() {} +func (*ScheduleResourceSelector) ProtoMessage() {} -func (x *ScheduleSelector) ProtoReflect() protoreflect.Message { +func (x *ScheduleResourceSelector) ProtoReflect() protoreflect.Message { mi := &file_proto_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1511,40 +1508,90 @@ func (x *ScheduleSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ScheduleSelector.ProtoReflect.Descriptor instead. -func (*ScheduleSelector) Descriptor() ([]byte, []int) { +// Deprecated: Use ScheduleResourceSelector.ProtoReflect.Descriptor instead. +func (*ScheduleResourceSelector) Descriptor() ([]byte, []int) { return file_proto_service_proto_rawDescGZIP(), []int{18} } -func (x *ScheduleSelector) GetName() string { +func (x *ScheduleResourceSelector) GetName() string { if x != nil { return x.Name } return "" } -func (x *ScheduleSelector) GetLabelSelector() map[string]string { +func (x *ScheduleResourceSelector) GetLabels() map[string]string { if x != nil { - return x.LabelSelector + return x.Labels } return nil } -func (x *ScheduleSelector) GetConfig() map[string]string { +type ScheduleExecution struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Selector *ScheduleResourceSelector `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` + Config map[string]string `protobuf:"bytes,2,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ExecutionName string `protobuf:"bytes,3,opt,name=execution_name,json=executionName,proto3" json:"execution_name,omitempty"` + Tags map[string]string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ScheduleExecution) Reset() { + *x = ScheduleExecution{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScheduleExecution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScheduleExecution) ProtoMessage() {} + +func (x *ScheduleExecution) ProtoReflect() protoreflect.Message { + mi := &file_proto_service_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScheduleExecution.ProtoReflect.Descriptor instead. +func (*ScheduleExecution) Descriptor() ([]byte, []int) { + return file_proto_service_proto_rawDescGZIP(), []int{19} +} + +func (x *ScheduleExecution) GetSelector() *ScheduleResourceSelector { + if x != nil { + return x.Selector + } + return nil +} + +func (x *ScheduleExecution) GetConfig() map[string]string { if x != nil { return x.Config } return nil } -func (x *ScheduleSelector) GetExecutionName() string { +func (x *ScheduleExecution) GetExecutionName() string { if x != nil { return x.ExecutionName } return "" } -func (x *ScheduleSelector) GetTags() map[string]string { +func (x *ScheduleExecution) GetTags() map[string]string { if x != nil { return x.Tags } @@ -1563,7 +1610,7 @@ type RunningContext struct { func (x *RunningContext) Reset() { *x = RunningContext{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[19] + mi := &file_proto_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1623,7 @@ func (x *RunningContext) String() string { func (*RunningContext) ProtoMessage() {} func (x *RunningContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[19] + mi := &file_proto_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1636,7 @@ func (x *RunningContext) ProtoReflect() protoreflect.Message { // Deprecated: Use RunningContext.ProtoReflect.Descriptor instead. func (*RunningContext) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{19} + return file_proto_service_proto_rawDescGZIP(), []int{20} } func (x *RunningContext) GetName() string { @@ -1618,7 +1665,7 @@ type UserSignature struct { func (x *UserSignature) Reset() { *x = UserSignature{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[20] + mi := &file_proto_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1678,7 @@ func (x *UserSignature) String() string { func (*UserSignature) ProtoMessage() {} func (x *UserSignature) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[20] + mi := &file_proto_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1691,7 @@ func (x *UserSignature) ProtoReflect() protoreflect.Message { // Deprecated: Use UserSignature.ProtoReflect.Descriptor instead. func (*UserSignature) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{20} + return file_proto_service_proto_rawDescGZIP(), []int{21} } func (x *UserSignature) GetName() string { @@ -1669,14 +1716,14 @@ type ScheduleRequest struct { // Target EnvironmentId string `protobuf:"bytes,1,opt,name=environment_id,json=environmentId,proto3" json:"environment_id,omitempty"` // Test Workflow details - Selectors []*ScheduleSelector `protobuf:"bytes,2,rep,name=selectors,proto3" json:"selectors,omitempty"` + Executions []*ScheduleExecution `protobuf:"bytes,2,rep,name=executions,proto3" json:"executions,omitempty"` // Execution details DisableWebhooks bool `protobuf:"varint,3,opt,name=disable_webhooks,json=disableWebhooks,proto3" json:"disable_webhooks,omitempty"` Tags map[string]string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Running metadata RunningContext *RunningContext `protobuf:"bytes,5,opt,name=running_context,json=runningContext,proto3" json:"running_context,omitempty"` ParentExecutionIds []string `protobuf:"bytes,7,rep,name=parent_execution_ids,json=parentExecutionIds,proto3" json:"parent_execution_ids,omitempty"` - UntrustedUser *UserSignature `protobuf:"bytes,8,opt,name=untrusted_user,json=untrustedUser,proto3,oneof" json:"untrusted_user,omitempty"` + User *UserSignature `protobuf:"bytes,8,opt,name=user,proto3,oneof" json:"user,omitempty"` // keep in mind that it should not be trusted // Kubernetes resource TODO: is it required? KubernetesObjectName string `protobuf:"bytes,9,opt,name=kubernetes_object_name,json=kubernetesObjectName,proto3" json:"kubernetes_object_name,omitempty"` } @@ -1684,7 +1731,7 @@ type ScheduleRequest struct { func (x *ScheduleRequest) Reset() { *x = ScheduleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[21] + mi := &file_proto_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1697,7 +1744,7 @@ func (x *ScheduleRequest) String() string { func (*ScheduleRequest) ProtoMessage() {} func (x *ScheduleRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[21] + mi := &file_proto_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1710,7 +1757,7 @@ func (x *ScheduleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleRequest.ProtoReflect.Descriptor instead. func (*ScheduleRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{21} + return file_proto_service_proto_rawDescGZIP(), []int{22} } func (x *ScheduleRequest) GetEnvironmentId() string { @@ -1720,9 +1767,9 @@ func (x *ScheduleRequest) GetEnvironmentId() string { return "" } -func (x *ScheduleRequest) GetSelectors() []*ScheduleSelector { +func (x *ScheduleRequest) GetExecutions() []*ScheduleExecution { if x != nil { - return x.Selectors + return x.Executions } return nil } @@ -1755,9 +1802,9 @@ func (x *ScheduleRequest) GetParentExecutionIds() []string { return nil } -func (x *ScheduleRequest) GetUntrustedUser() *UserSignature { +func (x *ScheduleRequest) GetUser() *UserSignature { if x != nil { - return x.UntrustedUser + return x.User } return nil } @@ -1780,7 +1827,7 @@ type ScheduleResponse struct { func (x *ScheduleResponse) Reset() { *x = ScheduleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[22] + mi := &file_proto_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1793,7 +1840,7 @@ func (x *ScheduleResponse) String() string { func (*ScheduleResponse) ProtoMessage() {} func (x *ScheduleResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[22] + mi := &file_proto_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1806,7 +1853,7 @@ func (x *ScheduleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleResponse.ProtoReflect.Descriptor instead. func (*ScheduleResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{22} + return file_proto_service_proto_rawDescGZIP(), []int{23} } func (x *ScheduleResponse) GetExecution() []byte { @@ -1828,7 +1875,7 @@ type EventResource struct { func (x *EventResource) Reset() { *x = EventResource{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[23] + mi := &file_proto_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1841,7 +1888,7 @@ func (x *EventResource) String() string { func (*EventResource) ProtoMessage() {} func (x *EventResource) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[23] + mi := &file_proto_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1854,7 +1901,7 @@ func (x *EventResource) ProtoReflect() protoreflect.Message { // Deprecated: Use EventResource.ProtoReflect.Descriptor instead. func (*EventResource) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{23} + return file_proto_service_proto_rawDescGZIP(), []int{24} } func (x *EventResource) GetType() string { @@ -1883,7 +1930,7 @@ type EventStreamRequest struct { func (x *EventStreamRequest) Reset() { *x = EventStreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[24] + mi := &file_proto_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1896,7 +1943,7 @@ func (x *EventStreamRequest) String() string { func (*EventStreamRequest) ProtoMessage() {} func (x *EventStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[24] + mi := &file_proto_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1909,7 +1956,7 @@ func (x *EventStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EventStreamRequest.ProtoReflect.Descriptor instead. func (*EventStreamRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{24} + return file_proto_service_proto_rawDescGZIP(), []int{25} } func (x *EventStreamRequest) GetEnvironmentId() string { @@ -1940,7 +1987,7 @@ type Event struct { func (x *Event) Reset() { *x = Event{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[25] + mi := &file_proto_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1953,7 +2000,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[25] + mi := &file_proto_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1966,7 +2013,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{25} + return file_proto_service_proto_rawDescGZIP(), []int{26} } func (x *Event) GetId() string { @@ -2009,7 +2056,7 @@ type RunnerRequest struct { func (x *RunnerRequest) Reset() { *x = RunnerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[26] + mi := &file_proto_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2022,7 +2069,7 @@ func (x *RunnerRequest) String() string { func (*RunnerRequest) ProtoMessage() {} func (x *RunnerRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[26] + mi := &file_proto_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2035,7 +2082,7 @@ func (x *RunnerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RunnerRequest.ProtoReflect.Descriptor instead. func (*RunnerRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{26} + return file_proto_service_proto_rawDescGZIP(), []int{27} } func (x *RunnerRequest) GetEnvironmentId() string { @@ -2066,7 +2113,7 @@ type RunnerResponse struct { func (x *RunnerResponse) Reset() { *x = RunnerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[27] + mi := &file_proto_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2079,7 +2126,7 @@ func (x *RunnerResponse) String() string { func (*RunnerResponse) ProtoMessage() {} func (x *RunnerResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[27] + mi := &file_proto_service_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2092,7 +2139,7 @@ func (x *RunnerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RunnerResponse.ProtoReflect.Descriptor instead. func (*RunnerResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{27} + return file_proto_service_proto_rawDescGZIP(), []int{28} } func (x *RunnerResponse) GetEnvironmentId() string { @@ -2135,7 +2182,7 @@ type ObtainExecutionRequest struct { func (x *ObtainExecutionRequest) Reset() { *x = ObtainExecutionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[28] + mi := &file_proto_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2148,7 +2195,7 @@ func (x *ObtainExecutionRequest) String() string { func (*ObtainExecutionRequest) ProtoMessage() {} func (x *ObtainExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[28] + mi := &file_proto_service_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2161,7 +2208,7 @@ func (x *ObtainExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ObtainExecutionRequest.ProtoReflect.Descriptor instead. func (*ObtainExecutionRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{28} + return file_proto_service_proto_rawDescGZIP(), []int{29} } func (x *ObtainExecutionRequest) GetEnvironmentId() string { @@ -2191,7 +2238,7 @@ type ObtainExecutionResponse struct { func (x *ObtainExecutionResponse) Reset() { *x = ObtainExecutionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[29] + mi := &file_proto_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2204,7 +2251,7 @@ func (x *ObtainExecutionResponse) String() string { func (*ObtainExecutionResponse) ProtoMessage() {} func (x *ObtainExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[29] + mi := &file_proto_service_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2217,7 +2264,7 @@ func (x *ObtainExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ObtainExecutionResponse.ProtoReflect.Descriptor instead. func (*ObtainExecutionResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{29} + return file_proto_service_proto_rawDescGZIP(), []int{30} } func (x *ObtainExecutionResponse) GetEnvironmentId() string { @@ -2253,7 +2300,7 @@ type GetTestWorkflowRequest struct { func (x *GetTestWorkflowRequest) Reset() { *x = GetTestWorkflowRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[30] + mi := &file_proto_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2266,7 +2313,7 @@ func (x *GetTestWorkflowRequest) String() string { func (*GetTestWorkflowRequest) ProtoMessage() {} func (x *GetTestWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[30] + mi := &file_proto_service_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2279,7 +2326,7 @@ func (x *GetTestWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTestWorkflowRequest.ProtoReflect.Descriptor instead. func (*GetTestWorkflowRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{30} + return file_proto_service_proto_rawDescGZIP(), []int{31} } func (x *GetTestWorkflowRequest) GetEnvironmentId() string { @@ -2307,7 +2354,7 @@ type GetTestWorkflowResponse struct { func (x *GetTestWorkflowResponse) Reset() { *x = GetTestWorkflowResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[31] + mi := &file_proto_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2320,7 +2367,7 @@ func (x *GetTestWorkflowResponse) String() string { func (*GetTestWorkflowResponse) ProtoMessage() {} func (x *GetTestWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[31] + mi := &file_proto_service_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2333,7 +2380,7 @@ func (x *GetTestWorkflowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTestWorkflowResponse.ProtoReflect.Descriptor instead. func (*GetTestWorkflowResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{31} + return file_proto_service_proto_rawDescGZIP(), []int{32} } func (x *GetTestWorkflowResponse) GetWorkflow() []byte { @@ -2358,7 +2405,7 @@ type ListTestWorkflowsRequest struct { func (x *ListTestWorkflowsRequest) Reset() { *x = ListTestWorkflowsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[32] + mi := &file_proto_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2371,7 +2418,7 @@ func (x *ListTestWorkflowsRequest) String() string { func (*ListTestWorkflowsRequest) ProtoMessage() {} func (x *ListTestWorkflowsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[32] + mi := &file_proto_service_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2384,7 +2431,7 @@ func (x *ListTestWorkflowsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTestWorkflowsRequest.ProtoReflect.Descriptor instead. func (*ListTestWorkflowsRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{32} + return file_proto_service_proto_rawDescGZIP(), []int{33} } func (x *ListTestWorkflowsRequest) GetEnvironmentId() string { @@ -2433,7 +2480,7 @@ type TestWorkflowListItem struct { func (x *TestWorkflowListItem) Reset() { *x = TestWorkflowListItem{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[33] + mi := &file_proto_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2446,7 +2493,7 @@ func (x *TestWorkflowListItem) String() string { func (*TestWorkflowListItem) ProtoMessage() {} func (x *TestWorkflowListItem) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[33] + mi := &file_proto_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2459,7 +2506,7 @@ func (x *TestWorkflowListItem) ProtoReflect() protoreflect.Message { // Deprecated: Use TestWorkflowListItem.ProtoReflect.Descriptor instead. func (*TestWorkflowListItem) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{33} + return file_proto_service_proto_rawDescGZIP(), []int{34} } func (x *TestWorkflowListItem) GetWorkflow() []byte { @@ -2481,7 +2528,7 @@ type LabelListItem struct { func (x *LabelListItem) Reset() { *x = LabelListItem{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[34] + mi := &file_proto_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2494,7 +2541,7 @@ func (x *LabelListItem) String() string { func (*LabelListItem) ProtoMessage() {} func (x *LabelListItem) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[34] + mi := &file_proto_service_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2507,7 +2554,7 @@ func (x *LabelListItem) ProtoReflect() protoreflect.Message { // Deprecated: Use LabelListItem.ProtoReflect.Descriptor instead. func (*LabelListItem) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{34} + return file_proto_service_proto_rawDescGZIP(), []int{35} } func (x *LabelListItem) GetName() string { @@ -2535,7 +2582,7 @@ type ListTestWorkflowLabelsRequest struct { func (x *ListTestWorkflowLabelsRequest) Reset() { *x = ListTestWorkflowLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[35] + mi := &file_proto_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2548,7 +2595,7 @@ func (x *ListTestWorkflowLabelsRequest) String() string { func (*ListTestWorkflowLabelsRequest) ProtoMessage() {} func (x *ListTestWorkflowLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[35] + mi := &file_proto_service_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2561,7 +2608,7 @@ func (x *ListTestWorkflowLabelsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTestWorkflowLabelsRequest.ProtoReflect.Descriptor instead. func (*ListTestWorkflowLabelsRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{35} + return file_proto_service_proto_rawDescGZIP(), []int{36} } func (x *ListTestWorkflowLabelsRequest) GetEnvironmentId() string { @@ -2582,7 +2629,7 @@ type ListTestWorkflowLabelsResponse struct { func (x *ListTestWorkflowLabelsResponse) Reset() { *x = ListTestWorkflowLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[36] + mi := &file_proto_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2595,7 +2642,7 @@ func (x *ListTestWorkflowLabelsResponse) String() string { func (*ListTestWorkflowLabelsResponse) ProtoMessage() {} func (x *ListTestWorkflowLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[36] + mi := &file_proto_service_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2608,7 +2655,7 @@ func (x *ListTestWorkflowLabelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTestWorkflowLabelsResponse.ProtoReflect.Descriptor instead. func (*ListTestWorkflowLabelsResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{36} + return file_proto_service_proto_rawDescGZIP(), []int{37} } func (x *ListTestWorkflowLabelsResponse) GetLabels() []*LabelListItem { @@ -2630,7 +2677,7 @@ type CreateTestWorkflowRequest struct { func (x *CreateTestWorkflowRequest) Reset() { *x = CreateTestWorkflowRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[37] + mi := &file_proto_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2643,7 +2690,7 @@ func (x *CreateTestWorkflowRequest) String() string { func (*CreateTestWorkflowRequest) ProtoMessage() {} func (x *CreateTestWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[37] + mi := &file_proto_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2656,7 +2703,7 @@ func (x *CreateTestWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTestWorkflowRequest.ProtoReflect.Descriptor instead. func (*CreateTestWorkflowRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{37} + return file_proto_service_proto_rawDescGZIP(), []int{38} } func (x *CreateTestWorkflowRequest) GetEnvironmentId() string { @@ -2682,7 +2729,7 @@ type CreateTestWorkflowResponse struct { func (x *CreateTestWorkflowResponse) Reset() { *x = CreateTestWorkflowResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[38] + mi := &file_proto_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2742,7 @@ func (x *CreateTestWorkflowResponse) String() string { func (*CreateTestWorkflowResponse) ProtoMessage() {} func (x *CreateTestWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[38] + mi := &file_proto_service_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2755,7 @@ func (x *CreateTestWorkflowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTestWorkflowResponse.ProtoReflect.Descriptor instead. func (*CreateTestWorkflowResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{38} + return file_proto_service_proto_rawDescGZIP(), []int{39} } type UpdateTestWorkflowRequest struct { @@ -2723,7 +2770,7 @@ type UpdateTestWorkflowRequest struct { func (x *UpdateTestWorkflowRequest) Reset() { *x = UpdateTestWorkflowRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[39] + mi := &file_proto_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2736,7 +2783,7 @@ func (x *UpdateTestWorkflowRequest) String() string { func (*UpdateTestWorkflowRequest) ProtoMessage() {} func (x *UpdateTestWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[39] + mi := &file_proto_service_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2749,7 +2796,7 @@ func (x *UpdateTestWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTestWorkflowRequest.ProtoReflect.Descriptor instead. func (*UpdateTestWorkflowRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{39} + return file_proto_service_proto_rawDescGZIP(), []int{40} } func (x *UpdateTestWorkflowRequest) GetEnvironmentId() string { @@ -2775,7 +2822,7 @@ type UpdateTestWorkflowResponse struct { func (x *UpdateTestWorkflowResponse) Reset() { *x = UpdateTestWorkflowResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[40] + mi := &file_proto_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2788,7 +2835,7 @@ func (x *UpdateTestWorkflowResponse) String() string { func (*UpdateTestWorkflowResponse) ProtoMessage() {} func (x *UpdateTestWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[40] + mi := &file_proto_service_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2801,7 +2848,7 @@ func (x *UpdateTestWorkflowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTestWorkflowResponse.ProtoReflect.Descriptor instead. func (*UpdateTestWorkflowResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{40} + return file_proto_service_proto_rawDescGZIP(), []int{41} } type DeleteTestWorkflowRequest struct { @@ -2816,7 +2863,7 @@ type DeleteTestWorkflowRequest struct { func (x *DeleteTestWorkflowRequest) Reset() { *x = DeleteTestWorkflowRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[41] + mi := &file_proto_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2829,7 +2876,7 @@ func (x *DeleteTestWorkflowRequest) String() string { func (*DeleteTestWorkflowRequest) ProtoMessage() {} func (x *DeleteTestWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[41] + mi := &file_proto_service_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2842,7 +2889,7 @@ func (x *DeleteTestWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTestWorkflowRequest.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{41} + return file_proto_service_proto_rawDescGZIP(), []int{42} } func (x *DeleteTestWorkflowRequest) GetEnvironmentId() string { @@ -2868,7 +2915,7 @@ type DeleteTestWorkflowResponse struct { func (x *DeleteTestWorkflowResponse) Reset() { *x = DeleteTestWorkflowResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[42] + mi := &file_proto_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2881,7 +2928,7 @@ func (x *DeleteTestWorkflowResponse) String() string { func (*DeleteTestWorkflowResponse) ProtoMessage() {} func (x *DeleteTestWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[42] + mi := &file_proto_service_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2894,7 +2941,7 @@ func (x *DeleteTestWorkflowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTestWorkflowResponse.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{42} + return file_proto_service_proto_rawDescGZIP(), []int{43} } type DeleteTestWorkflowsByLabelsRequest struct { @@ -2909,7 +2956,7 @@ type DeleteTestWorkflowsByLabelsRequest struct { func (x *DeleteTestWorkflowsByLabelsRequest) Reset() { *x = DeleteTestWorkflowsByLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[43] + mi := &file_proto_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2922,7 +2969,7 @@ func (x *DeleteTestWorkflowsByLabelsRequest) String() string { func (*DeleteTestWorkflowsByLabelsRequest) ProtoMessage() {} func (x *DeleteTestWorkflowsByLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[43] + mi := &file_proto_service_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2935,7 +2982,7 @@ func (x *DeleteTestWorkflowsByLabelsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use DeleteTestWorkflowsByLabelsRequest.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowsByLabelsRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{43} + return file_proto_service_proto_rawDescGZIP(), []int{44} } func (x *DeleteTestWorkflowsByLabelsRequest) GetEnvironmentId() string { @@ -2963,7 +3010,7 @@ type DeleteTestWorkflowsByLabelsResponse struct { func (x *DeleteTestWorkflowsByLabelsResponse) Reset() { *x = DeleteTestWorkflowsByLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[44] + mi := &file_proto_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2976,7 +3023,7 @@ func (x *DeleteTestWorkflowsByLabelsResponse) String() string { func (*DeleteTestWorkflowsByLabelsResponse) ProtoMessage() {} func (x *DeleteTestWorkflowsByLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[44] + mi := &file_proto_service_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2989,7 +3036,7 @@ func (x *DeleteTestWorkflowsByLabelsResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use DeleteTestWorkflowsByLabelsResponse.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowsByLabelsResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{44} + return file_proto_service_proto_rawDescGZIP(), []int{45} } func (x *DeleteTestWorkflowsByLabelsResponse) GetCount() uint32 { @@ -3011,7 +3058,7 @@ type GetTestWorkflowTemplateRequest struct { func (x *GetTestWorkflowTemplateRequest) Reset() { *x = GetTestWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[45] + mi := &file_proto_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3024,7 +3071,7 @@ func (x *GetTestWorkflowTemplateRequest) String() string { func (*GetTestWorkflowTemplateRequest) ProtoMessage() {} func (x *GetTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[45] + mi := &file_proto_service_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3037,7 +3084,7 @@ func (x *GetTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTestWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*GetTestWorkflowTemplateRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{45} + return file_proto_service_proto_rawDescGZIP(), []int{46} } func (x *GetTestWorkflowTemplateRequest) GetEnvironmentId() string { @@ -3065,7 +3112,7 @@ type GetTestWorkflowTemplateResponse struct { func (x *GetTestWorkflowTemplateResponse) Reset() { *x = GetTestWorkflowTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[46] + mi := &file_proto_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3078,7 +3125,7 @@ func (x *GetTestWorkflowTemplateResponse) String() string { func (*GetTestWorkflowTemplateResponse) ProtoMessage() {} func (x *GetTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[46] + mi := &file_proto_service_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3091,7 +3138,7 @@ func (x *GetTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTestWorkflowTemplateResponse.ProtoReflect.Descriptor instead. func (*GetTestWorkflowTemplateResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{46} + return file_proto_service_proto_rawDescGZIP(), []int{47} } func (x *GetTestWorkflowTemplateResponse) GetTemplate() []byte { @@ -3116,7 +3163,7 @@ type ListTestWorkflowTemplatesRequest struct { func (x *ListTestWorkflowTemplatesRequest) Reset() { *x = ListTestWorkflowTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[47] + mi := &file_proto_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3129,7 +3176,7 @@ func (x *ListTestWorkflowTemplatesRequest) String() string { func (*ListTestWorkflowTemplatesRequest) ProtoMessage() {} func (x *ListTestWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[47] + mi := &file_proto_service_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3142,7 +3189,7 @@ func (x *ListTestWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTestWorkflowTemplatesRequest.ProtoReflect.Descriptor instead. func (*ListTestWorkflowTemplatesRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{47} + return file_proto_service_proto_rawDescGZIP(), []int{48} } func (x *ListTestWorkflowTemplatesRequest) GetEnvironmentId() string { @@ -3191,7 +3238,7 @@ type TestWorkflowTemplateListItem struct { func (x *TestWorkflowTemplateListItem) Reset() { *x = TestWorkflowTemplateListItem{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[48] + mi := &file_proto_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3204,7 +3251,7 @@ func (x *TestWorkflowTemplateListItem) String() string { func (*TestWorkflowTemplateListItem) ProtoMessage() {} func (x *TestWorkflowTemplateListItem) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[48] + mi := &file_proto_service_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3217,7 +3264,7 @@ func (x *TestWorkflowTemplateListItem) ProtoReflect() protoreflect.Message { // Deprecated: Use TestWorkflowTemplateListItem.ProtoReflect.Descriptor instead. func (*TestWorkflowTemplateListItem) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{48} + return file_proto_service_proto_rawDescGZIP(), []int{49} } func (x *TestWorkflowTemplateListItem) GetTemplate() []byte { @@ -3238,7 +3285,7 @@ type ListTestWorkflowTemplateLabelsRequest struct { func (x *ListTestWorkflowTemplateLabelsRequest) Reset() { *x = ListTestWorkflowTemplateLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[49] + mi := &file_proto_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3251,7 +3298,7 @@ func (x *ListTestWorkflowTemplateLabelsRequest) String() string { func (*ListTestWorkflowTemplateLabelsRequest) ProtoMessage() {} func (x *ListTestWorkflowTemplateLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[49] + mi := &file_proto_service_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3264,7 +3311,7 @@ func (x *ListTestWorkflowTemplateLabelsRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ListTestWorkflowTemplateLabelsRequest.ProtoReflect.Descriptor instead. func (*ListTestWorkflowTemplateLabelsRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{49} + return file_proto_service_proto_rawDescGZIP(), []int{50} } func (x *ListTestWorkflowTemplateLabelsRequest) GetEnvironmentId() string { @@ -3285,7 +3332,7 @@ type ListTestWorkflowTemplateLabelsResponse struct { func (x *ListTestWorkflowTemplateLabelsResponse) Reset() { *x = ListTestWorkflowTemplateLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[50] + mi := &file_proto_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3298,7 +3345,7 @@ func (x *ListTestWorkflowTemplateLabelsResponse) String() string { func (*ListTestWorkflowTemplateLabelsResponse) ProtoMessage() {} func (x *ListTestWorkflowTemplateLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[50] + mi := &file_proto_service_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3311,7 +3358,7 @@ func (x *ListTestWorkflowTemplateLabelsResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use ListTestWorkflowTemplateLabelsResponse.ProtoReflect.Descriptor instead. func (*ListTestWorkflowTemplateLabelsResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{50} + return file_proto_service_proto_rawDescGZIP(), []int{51} } func (x *ListTestWorkflowTemplateLabelsResponse) GetLabels() []*LabelListItem { @@ -3333,7 +3380,7 @@ type CreateTestWorkflowTemplateRequest struct { func (x *CreateTestWorkflowTemplateRequest) Reset() { *x = CreateTestWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[51] + mi := &file_proto_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3346,7 +3393,7 @@ func (x *CreateTestWorkflowTemplateRequest) String() string { func (*CreateTestWorkflowTemplateRequest) ProtoMessage() {} func (x *CreateTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[51] + mi := &file_proto_service_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3359,7 +3406,7 @@ func (x *CreateTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use CreateTestWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*CreateTestWorkflowTemplateRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{51} + return file_proto_service_proto_rawDescGZIP(), []int{52} } func (x *CreateTestWorkflowTemplateRequest) GetEnvironmentId() string { @@ -3385,7 +3432,7 @@ type CreateTestWorkflowTemplateResponse struct { func (x *CreateTestWorkflowTemplateResponse) Reset() { *x = CreateTestWorkflowTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[52] + mi := &file_proto_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3398,7 +3445,7 @@ func (x *CreateTestWorkflowTemplateResponse) String() string { func (*CreateTestWorkflowTemplateResponse) ProtoMessage() {} func (x *CreateTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[52] + mi := &file_proto_service_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3411,7 +3458,7 @@ func (x *CreateTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message // Deprecated: Use CreateTestWorkflowTemplateResponse.ProtoReflect.Descriptor instead. func (*CreateTestWorkflowTemplateResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{52} + return file_proto_service_proto_rawDescGZIP(), []int{53} } type UpdateTestWorkflowTemplateRequest struct { @@ -3426,7 +3473,7 @@ type UpdateTestWorkflowTemplateRequest struct { func (x *UpdateTestWorkflowTemplateRequest) Reset() { *x = UpdateTestWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[53] + mi := &file_proto_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3439,7 +3486,7 @@ func (x *UpdateTestWorkflowTemplateRequest) String() string { func (*UpdateTestWorkflowTemplateRequest) ProtoMessage() {} func (x *UpdateTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[53] + mi := &file_proto_service_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3452,7 +3499,7 @@ func (x *UpdateTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateTestWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*UpdateTestWorkflowTemplateRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{53} + return file_proto_service_proto_rawDescGZIP(), []int{54} } func (x *UpdateTestWorkflowTemplateRequest) GetEnvironmentId() string { @@ -3478,7 +3525,7 @@ type UpdateTestWorkflowTemplateResponse struct { func (x *UpdateTestWorkflowTemplateResponse) Reset() { *x = UpdateTestWorkflowTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[54] + mi := &file_proto_service_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3491,7 +3538,7 @@ func (x *UpdateTestWorkflowTemplateResponse) String() string { func (*UpdateTestWorkflowTemplateResponse) ProtoMessage() {} func (x *UpdateTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[54] + mi := &file_proto_service_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3504,7 +3551,7 @@ func (x *UpdateTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateTestWorkflowTemplateResponse.ProtoReflect.Descriptor instead. func (*UpdateTestWorkflowTemplateResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{54} + return file_proto_service_proto_rawDescGZIP(), []int{55} } type DeleteTestWorkflowTemplateRequest struct { @@ -3519,7 +3566,7 @@ type DeleteTestWorkflowTemplateRequest struct { func (x *DeleteTestWorkflowTemplateRequest) Reset() { *x = DeleteTestWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[55] + mi := &file_proto_service_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3532,7 +3579,7 @@ func (x *DeleteTestWorkflowTemplateRequest) String() string { func (*DeleteTestWorkflowTemplateRequest) ProtoMessage() {} func (x *DeleteTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[55] + mi := &file_proto_service_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3545,7 +3592,7 @@ func (x *DeleteTestWorkflowTemplateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use DeleteTestWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowTemplateRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{55} + return file_proto_service_proto_rawDescGZIP(), []int{56} } func (x *DeleteTestWorkflowTemplateRequest) GetEnvironmentId() string { @@ -3571,7 +3618,7 @@ type DeleteTestWorkflowTemplateResponse struct { func (x *DeleteTestWorkflowTemplateResponse) Reset() { *x = DeleteTestWorkflowTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[56] + mi := &file_proto_service_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3584,7 +3631,7 @@ func (x *DeleteTestWorkflowTemplateResponse) String() string { func (*DeleteTestWorkflowTemplateResponse) ProtoMessage() {} func (x *DeleteTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[56] + mi := &file_proto_service_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3597,7 +3644,7 @@ func (x *DeleteTestWorkflowTemplateResponse) ProtoReflect() protoreflect.Message // Deprecated: Use DeleteTestWorkflowTemplateResponse.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowTemplateResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{56} + return file_proto_service_proto_rawDescGZIP(), []int{57} } type DeleteTestWorkflowTemplatesByLabelsRequest struct { @@ -3612,7 +3659,7 @@ type DeleteTestWorkflowTemplatesByLabelsRequest struct { func (x *DeleteTestWorkflowTemplatesByLabelsRequest) Reset() { *x = DeleteTestWorkflowTemplatesByLabelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[57] + mi := &file_proto_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3625,7 +3672,7 @@ func (x *DeleteTestWorkflowTemplatesByLabelsRequest) String() string { func (*DeleteTestWorkflowTemplatesByLabelsRequest) ProtoMessage() {} func (x *DeleteTestWorkflowTemplatesByLabelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[57] + mi := &file_proto_service_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3638,7 +3685,7 @@ func (x *DeleteTestWorkflowTemplatesByLabelsRequest) ProtoReflect() protoreflect // Deprecated: Use DeleteTestWorkflowTemplatesByLabelsRequest.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowTemplatesByLabelsRequest) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{57} + return file_proto_service_proto_rawDescGZIP(), []int{58} } func (x *DeleteTestWorkflowTemplatesByLabelsRequest) GetEnvironmentId() string { @@ -3666,7 +3713,7 @@ type DeleteTestWorkflowTemplatesByLabelsResponse struct { func (x *DeleteTestWorkflowTemplatesByLabelsResponse) Reset() { *x = DeleteTestWorkflowTemplatesByLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_service_proto_msgTypes[58] + mi := &file_proto_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3679,7 +3726,7 @@ func (x *DeleteTestWorkflowTemplatesByLabelsResponse) String() string { func (*DeleteTestWorkflowTemplatesByLabelsResponse) ProtoMessage() {} func (x *DeleteTestWorkflowTemplatesByLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_service_proto_msgTypes[58] + mi := &file_proto_service_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3739,7 @@ func (x *DeleteTestWorkflowTemplatesByLabelsResponse) ProtoReflect() protoreflec // Deprecated: Use DeleteTestWorkflowTemplatesByLabelsResponse.ProtoReflect.Descriptor instead. func (*DeleteTestWorkflowTemplatesByLabelsResponse) Descriptor() ([]byte, []int) { - return file_proto_service_proto_rawDescGZIP(), []int{58} + return file_proto_service_proto_rawDescGZIP(), []int{59} } func (x *DeleteTestWorkflowTemplatesByLabelsResponse) GetCount() uint32 { @@ -3879,495 +3926,498 @@ var file_proto_service_proto_rawDesc = []byte{ 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xc9, - 0x03, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 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, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xae, + 0x01, 0x0a, 0x18, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xe1, 0x02, 0x0a, 0x11, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, + 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x22, 0x53, 0x0a, 0x0e, 0x52, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x39, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x86, 0x04, 0x0a, 0x0f, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3e, 0x0a, - 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0e, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, - 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x40, 0x0a, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, - 0x0d, 0x75, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x33, 0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x12, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x53, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x39, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x22, 0xec, 0x03, 0x0a, 0x0f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x38, + 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0f, 0x72, 0x75, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, + 0x00, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, 0x6b, 0x75, + 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6b, 0x75, 0x62, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x22, 0x30, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x33, 0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x12, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x61, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x22, 0x71, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x46, 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x88, 0x01, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x62, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x62, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4f, 0x0a, 0x16, 0x4f, 0x62, + 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x17, 0x4f, + 0x62, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x53, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x22, 0x8f, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x61, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x22, 0x71, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x46, 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x6e, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, + 0x78, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x65, 0x78, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x32, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x39, 0x0a, 0x0d, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x1e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, + 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x5e, 0x0a, 0x19, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x62, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x62, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4f, 0x0a, 0x16, 0x4f, - 0x62, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x1c, 0x0a, 0x1a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x19, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x17, - 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x53, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, - 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x8f, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, + 0x01, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, - 0x65, 0x78, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x32, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, - 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x39, 0x0a, 0x0d, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x3d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, + 0x9f, 0x02, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x78, 0x74, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x3a, 0x0a, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x4e, 0x0a, + 0x25, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4e, 0x0a, - 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x5e, 0x0a, - 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x56, 0x0a, + 0x26, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x66, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x1c, 0x0a, - 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x19, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x24, 0x0a, + 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x1c, 0x0a, 0x1a, 0x55, + 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x0a, 0x19, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x5e, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xd5, 0x01, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x22, 0x24, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x4d, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x55, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x43, 0x0a, 0x2b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x3d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x22, 0x9f, 0x02, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x78, - 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x3a, 0x0a, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x4e, - 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x56, - 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x66, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x24, - 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x24, 0x0a, 0x22, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x2a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x55, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x43, 0x0a, 0x2b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x48, 0x0a, 0x15, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4d, 0x45, 0x53, - 0x53, 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, - 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x2a, - 0x69, 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b, 0x46, - 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4d, - 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x57, 0x4f, 0x52, 0x4b, - 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x48, 0x45, 0x41, 0x4c, - 0x54, 0x48, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x2a, 0x8a, 0x01, 0x0a, 0x1c, 0x54, - 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x57, - 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x57, 0x4f, 0x52, 0x4b, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, - 0x1a, 0x0a, 0x16, 0x57, 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, - 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x57, - 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4f, - 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x03, 0x2a, 0x4c, 0x0a, 0x06, 0x4f, 0x70, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x10, - 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x46, 0x52, 0x41, 0x4d, - 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x48, - 0x45, 0x43, 0x4b, 0x10, 0x03, 0x2a, 0x7c, 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x49, 0x10, 0x01, - 0x12, 0x07, 0x0a, 0x03, 0x43, 0x4c, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x49, 0x43, - 0x44, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, - 0x0b, 0x54, 0x45, 0x53, 0x54, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x10, 0x05, 0x12, 0x14, - 0x0a, 0x10, 0x4b, 0x55, 0x42, 0x45, 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x07, 0x32, 0xf8, 0x14, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x4b, 0x75, 0x62, 0x65, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x50, 0x49, 0x12, 0x3c, 0x0a, 0x07, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x14, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x28, 0x01, 0x12, 0x35, - 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, - 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x16, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x67, - 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, - 0x30, 0x01, 0x12, 0x7b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x1a, 0x27, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, - 0x90, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2f, 0x2e, + 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x48, 0x0a, 0x15, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, + 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x2a, 0x69, + 0x0a, 0x24, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x57, 0x4f, 0x52, 0x4b, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x57, 0x4f, 0x52, 0x4b, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, + 0x48, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x2a, 0x8a, 0x01, 0x0a, 0x1c, 0x54, 0x65, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x4f, + 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x57, 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x1a, + 0x0a, 0x16, 0x57, 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x4f, + 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4f, 0x55, + 0x54, 0x50, 0x55, 0x54, 0x10, 0x03, 0x2a, 0x4c, 0x0a, 0x06, 0x4f, 0x70, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x10, 0x01, + 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x48, 0x45, + 0x43, 0x4b, 0x10, 0x03, 0x2a, 0x7c, 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x49, 0x10, 0x01, 0x12, + 0x07, 0x0a, 0x03, 0x43, 0x4c, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x49, 0x43, 0x44, + 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, + 0x54, 0x45, 0x53, 0x54, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x10, 0x05, 0x12, 0x14, 0x0a, + 0x10, 0x4b, 0x55, 0x42, 0x45, 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x07, 0x32, 0xf8, 0x14, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x4b, 0x75, 0x62, 0x65, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x50, 0x49, 0x12, 0x3c, 0x0a, 0x07, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x28, 0x01, 0x12, 0x35, 0x0a, + 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x41, + 0x73, 0x79, 0x6e, 0x63, 0x12, 0x16, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x15, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x6f, + 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x1a, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x73, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x7b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x1a, 0x27, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x90, + 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2f, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x2e, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x2e, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, - 0x30, 0x01, 0x12, 0x9f, 0x01, 0x0a, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x53, 0x74, - 0x65, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x34, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, - 0x65, 0x6c, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x33, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 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, 0x19, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x16, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, - 0x14, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x0f, 0x4f, 0x62, 0x74, - 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x9f, 0x01, 0x0a, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x53, 0x74, 0x65, + 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x34, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, + 0x6c, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x33, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x50, + 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, + 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 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, 0x19, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x18, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, + 0x19, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x46, 0x0a, 0x11, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x30, 0x01, 0x12, 0x44, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x15, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x14, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x0f, 0x4f, 0x62, 0x74, 0x61, + 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x47, - 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x1d, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, - 0x30, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, - 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x59, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, - 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x68, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, - 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x19, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x30, + 0x01, 0x12, 0x65, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, + 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1b, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, + 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x42, + 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x68, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1a, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x8c, 0x01, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, + 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x19, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x74, 0x65, 0x6d, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, + 0x01, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, - 0x5a, 0x09, 0x70, 0x6b, 0x67, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, 0x5a, + 0x09, 0x70, 0x6b, 0x67, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -4383,7 +4433,7 @@ func file_proto_service_proto_rawDescGZIP() []byte { } var file_proto_service_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_proto_service_proto_msgTypes = make([]protoimpl.MessageInfo, 69) +var file_proto_service_proto_msgTypes = make([]protoimpl.MessageInfo, 70) var file_proto_service_proto_goTypes = []interface{}{ (LogsStreamRequestType)(0), // 0: cloud.LogsStreamRequestType (TestWorkflowNotificationsRequestType)(0), // 1: cloud.TestWorkflowNotificationsRequestType @@ -4408,152 +4458,154 @@ var file_proto_service_proto_goTypes = []interface{}{ (*TestWorkflowServiceNotificationsResponse)(nil), // 20: cloud.TestWorkflowServiceNotificationsResponse (*TestWorkflowParallelStepNotificationsRequest)(nil), // 21: cloud.TestWorkflowParallelStepNotificationsRequest (*TestWorkflowParallelStepNotificationsResponse)(nil), // 22: cloud.TestWorkflowParallelStepNotificationsResponse - (*ScheduleSelector)(nil), // 23: cloud.ScheduleSelector - (*RunningContext)(nil), // 24: cloud.RunningContext - (*UserSignature)(nil), // 25: cloud.UserSignature - (*ScheduleRequest)(nil), // 26: cloud.ScheduleRequest - (*ScheduleResponse)(nil), // 27: cloud.ScheduleResponse - (*EventResource)(nil), // 28: cloud.EventResource - (*EventStreamRequest)(nil), // 29: cloud.EventStreamRequest - (*Event)(nil), // 30: cloud.Event - (*RunnerRequest)(nil), // 31: cloud.RunnerRequest - (*RunnerResponse)(nil), // 32: cloud.RunnerResponse - (*ObtainExecutionRequest)(nil), // 33: cloud.ObtainExecutionRequest - (*ObtainExecutionResponse)(nil), // 34: cloud.ObtainExecutionResponse - (*GetTestWorkflowRequest)(nil), // 35: cloud.GetTestWorkflowRequest - (*GetTestWorkflowResponse)(nil), // 36: cloud.GetTestWorkflowResponse - (*ListTestWorkflowsRequest)(nil), // 37: cloud.ListTestWorkflowsRequest - (*TestWorkflowListItem)(nil), // 38: cloud.TestWorkflowListItem - (*LabelListItem)(nil), // 39: cloud.LabelListItem - (*ListTestWorkflowLabelsRequest)(nil), // 40: cloud.ListTestWorkflowLabelsRequest - (*ListTestWorkflowLabelsResponse)(nil), // 41: cloud.ListTestWorkflowLabelsResponse - (*CreateTestWorkflowRequest)(nil), // 42: cloud.CreateTestWorkflowRequest - (*CreateTestWorkflowResponse)(nil), // 43: cloud.CreateTestWorkflowResponse - (*UpdateTestWorkflowRequest)(nil), // 44: cloud.UpdateTestWorkflowRequest - (*UpdateTestWorkflowResponse)(nil), // 45: cloud.UpdateTestWorkflowResponse - (*DeleteTestWorkflowRequest)(nil), // 46: cloud.DeleteTestWorkflowRequest - (*DeleteTestWorkflowResponse)(nil), // 47: cloud.DeleteTestWorkflowResponse - (*DeleteTestWorkflowsByLabelsRequest)(nil), // 48: cloud.DeleteTestWorkflowsByLabelsRequest - (*DeleteTestWorkflowsByLabelsResponse)(nil), // 49: cloud.DeleteTestWorkflowsByLabelsResponse - (*GetTestWorkflowTemplateRequest)(nil), // 50: cloud.GetTestWorkflowTemplateRequest - (*GetTestWorkflowTemplateResponse)(nil), // 51: cloud.GetTestWorkflowTemplateResponse - (*ListTestWorkflowTemplatesRequest)(nil), // 52: cloud.ListTestWorkflowTemplatesRequest - (*TestWorkflowTemplateListItem)(nil), // 53: cloud.TestWorkflowTemplateListItem - (*ListTestWorkflowTemplateLabelsRequest)(nil), // 54: cloud.ListTestWorkflowTemplateLabelsRequest - (*ListTestWorkflowTemplateLabelsResponse)(nil), // 55: cloud.ListTestWorkflowTemplateLabelsResponse - (*CreateTestWorkflowTemplateRequest)(nil), // 56: cloud.CreateTestWorkflowTemplateRequest - (*CreateTestWorkflowTemplateResponse)(nil), // 57: cloud.CreateTestWorkflowTemplateResponse - (*UpdateTestWorkflowTemplateRequest)(nil), // 58: cloud.UpdateTestWorkflowTemplateRequest - (*UpdateTestWorkflowTemplateResponse)(nil), // 59: cloud.UpdateTestWorkflowTemplateResponse - (*DeleteTestWorkflowTemplateRequest)(nil), // 60: cloud.DeleteTestWorkflowTemplateRequest - (*DeleteTestWorkflowTemplateResponse)(nil), // 61: cloud.DeleteTestWorkflowTemplateResponse - (*DeleteTestWorkflowTemplatesByLabelsRequest)(nil), // 62: cloud.DeleteTestWorkflowTemplatesByLabelsRequest - (*DeleteTestWorkflowTemplatesByLabelsResponse)(nil), // 63: cloud.DeleteTestWorkflowTemplatesByLabelsResponse - nil, // 64: cloud.ExecuteRequest.HeadersEntry - nil, // 65: cloud.ExecuteResponse.HeadersEntry - nil, // 66: cloud.ScheduleSelector.LabelSelectorEntry - nil, // 67: cloud.ScheduleSelector.ConfigEntry - nil, // 68: cloud.ScheduleSelector.TagsEntry - nil, // 69: cloud.ScheduleRequest.TagsEntry - nil, // 70: cloud.ListTestWorkflowsRequest.LabelsEntry - nil, // 71: cloud.DeleteTestWorkflowsByLabelsRequest.LabelsEntry - nil, // 72: cloud.ListTestWorkflowTemplatesRequest.LabelsEntry - nil, // 73: cloud.DeleteTestWorkflowTemplatesByLabelsRequest.LabelsEntry - (*structpb.Struct)(nil), // 74: google.protobuf.Struct - (*emptypb.Empty)(nil), // 75: google.protobuf.Empty + (*ScheduleResourceSelector)(nil), // 23: cloud.ScheduleResourceSelector + (*ScheduleExecution)(nil), // 24: cloud.ScheduleExecution + (*RunningContext)(nil), // 25: cloud.RunningContext + (*UserSignature)(nil), // 26: cloud.UserSignature + (*ScheduleRequest)(nil), // 27: cloud.ScheduleRequest + (*ScheduleResponse)(nil), // 28: cloud.ScheduleResponse + (*EventResource)(nil), // 29: cloud.EventResource + (*EventStreamRequest)(nil), // 30: cloud.EventStreamRequest + (*Event)(nil), // 31: cloud.Event + (*RunnerRequest)(nil), // 32: cloud.RunnerRequest + (*RunnerResponse)(nil), // 33: cloud.RunnerResponse + (*ObtainExecutionRequest)(nil), // 34: cloud.ObtainExecutionRequest + (*ObtainExecutionResponse)(nil), // 35: cloud.ObtainExecutionResponse + (*GetTestWorkflowRequest)(nil), // 36: cloud.GetTestWorkflowRequest + (*GetTestWorkflowResponse)(nil), // 37: cloud.GetTestWorkflowResponse + (*ListTestWorkflowsRequest)(nil), // 38: cloud.ListTestWorkflowsRequest + (*TestWorkflowListItem)(nil), // 39: cloud.TestWorkflowListItem + (*LabelListItem)(nil), // 40: cloud.LabelListItem + (*ListTestWorkflowLabelsRequest)(nil), // 41: cloud.ListTestWorkflowLabelsRequest + (*ListTestWorkflowLabelsResponse)(nil), // 42: cloud.ListTestWorkflowLabelsResponse + (*CreateTestWorkflowRequest)(nil), // 43: cloud.CreateTestWorkflowRequest + (*CreateTestWorkflowResponse)(nil), // 44: cloud.CreateTestWorkflowResponse + (*UpdateTestWorkflowRequest)(nil), // 45: cloud.UpdateTestWorkflowRequest + (*UpdateTestWorkflowResponse)(nil), // 46: cloud.UpdateTestWorkflowResponse + (*DeleteTestWorkflowRequest)(nil), // 47: cloud.DeleteTestWorkflowRequest + (*DeleteTestWorkflowResponse)(nil), // 48: cloud.DeleteTestWorkflowResponse + (*DeleteTestWorkflowsByLabelsRequest)(nil), // 49: cloud.DeleteTestWorkflowsByLabelsRequest + (*DeleteTestWorkflowsByLabelsResponse)(nil), // 50: cloud.DeleteTestWorkflowsByLabelsResponse + (*GetTestWorkflowTemplateRequest)(nil), // 51: cloud.GetTestWorkflowTemplateRequest + (*GetTestWorkflowTemplateResponse)(nil), // 52: cloud.GetTestWorkflowTemplateResponse + (*ListTestWorkflowTemplatesRequest)(nil), // 53: cloud.ListTestWorkflowTemplatesRequest + (*TestWorkflowTemplateListItem)(nil), // 54: cloud.TestWorkflowTemplateListItem + (*ListTestWorkflowTemplateLabelsRequest)(nil), // 55: cloud.ListTestWorkflowTemplateLabelsRequest + (*ListTestWorkflowTemplateLabelsResponse)(nil), // 56: cloud.ListTestWorkflowTemplateLabelsResponse + (*CreateTestWorkflowTemplateRequest)(nil), // 57: cloud.CreateTestWorkflowTemplateRequest + (*CreateTestWorkflowTemplateResponse)(nil), // 58: cloud.CreateTestWorkflowTemplateResponse + (*UpdateTestWorkflowTemplateRequest)(nil), // 59: cloud.UpdateTestWorkflowTemplateRequest + (*UpdateTestWorkflowTemplateResponse)(nil), // 60: cloud.UpdateTestWorkflowTemplateResponse + (*DeleteTestWorkflowTemplateRequest)(nil), // 61: cloud.DeleteTestWorkflowTemplateRequest + (*DeleteTestWorkflowTemplateResponse)(nil), // 62: cloud.DeleteTestWorkflowTemplateResponse + (*DeleteTestWorkflowTemplatesByLabelsRequest)(nil), // 63: cloud.DeleteTestWorkflowTemplatesByLabelsRequest + (*DeleteTestWorkflowTemplatesByLabelsResponse)(nil), // 64: cloud.DeleteTestWorkflowTemplatesByLabelsResponse + nil, // 65: cloud.ExecuteRequest.HeadersEntry + nil, // 66: cloud.ExecuteResponse.HeadersEntry + nil, // 67: cloud.ScheduleResourceSelector.LabelsEntry + nil, // 68: cloud.ScheduleExecution.ConfigEntry + nil, // 69: cloud.ScheduleExecution.TagsEntry + nil, // 70: cloud.ScheduleRequest.TagsEntry + nil, // 71: cloud.ListTestWorkflowsRequest.LabelsEntry + nil, // 72: cloud.DeleteTestWorkflowsByLabelsRequest.LabelsEntry + nil, // 73: cloud.ListTestWorkflowTemplatesRequest.LabelsEntry + nil, // 74: cloud.DeleteTestWorkflowTemplatesByLabelsRequest.LabelsEntry + (*structpb.Struct)(nil), // 75: google.protobuf.Struct + (*emptypb.Empty)(nil), // 76: google.protobuf.Empty } var file_proto_service_proto_depIdxs = []int32{ 0, // 0: cloud.LogsStreamRequest.request_type:type_name -> cloud.LogsStreamRequestType - 74, // 1: cloud.CommandRequest.payload:type_name -> google.protobuf.Struct - 64, // 2: cloud.ExecuteRequest.headers:type_name -> cloud.ExecuteRequest.HeadersEntry + 75, // 1: cloud.CommandRequest.payload:type_name -> google.protobuf.Struct + 65, // 2: cloud.ExecuteRequest.headers:type_name -> cloud.ExecuteRequest.HeadersEntry 1, // 3: cloud.TestWorkflowNotificationsRequest.request_type:type_name -> cloud.TestWorkflowNotificationsRequestType 2, // 4: cloud.TestWorkflowNotificationsResponse.type:type_name -> cloud.TestWorkflowNotificationType 13, // 5: cloud.ProContextResponse.capabilities:type_name -> cloud.Capability - 65, // 6: cloud.ExecuteResponse.headers:type_name -> cloud.ExecuteResponse.HeadersEntry + 66, // 6: cloud.ExecuteResponse.headers:type_name -> cloud.ExecuteResponse.HeadersEntry 3, // 7: cloud.WebsocketData.opcode:type_name -> cloud.Opcode 1, // 8: cloud.TestWorkflowServiceNotificationsRequest.request_type:type_name -> cloud.TestWorkflowNotificationsRequestType 2, // 9: cloud.TestWorkflowServiceNotificationsResponse.type:type_name -> cloud.TestWorkflowNotificationType 1, // 10: cloud.TestWorkflowParallelStepNotificationsRequest.request_type:type_name -> cloud.TestWorkflowNotificationsRequestType 2, // 11: cloud.TestWorkflowParallelStepNotificationsResponse.type:type_name -> cloud.TestWorkflowNotificationType - 66, // 12: cloud.ScheduleSelector.labelSelector:type_name -> cloud.ScheduleSelector.LabelSelectorEntry - 67, // 13: cloud.ScheduleSelector.config:type_name -> cloud.ScheduleSelector.ConfigEntry - 68, // 14: cloud.ScheduleSelector.tags:type_name -> cloud.ScheduleSelector.TagsEntry - 4, // 15: cloud.RunningContext.type:type_name -> cloud.RunningContextType - 23, // 16: cloud.ScheduleRequest.selectors:type_name -> cloud.ScheduleSelector - 69, // 17: cloud.ScheduleRequest.tags:type_name -> cloud.ScheduleRequest.TagsEntry - 24, // 18: cloud.ScheduleRequest.running_context:type_name -> cloud.RunningContext - 25, // 19: cloud.ScheduleRequest.untrusted_user:type_name -> cloud.UserSignature - 28, // 20: cloud.EventStreamRequest.accept:type_name -> cloud.EventResource - 28, // 21: cloud.Event.resource:type_name -> cloud.EventResource - 70, // 22: cloud.ListTestWorkflowsRequest.labels:type_name -> cloud.ListTestWorkflowsRequest.LabelsEntry - 39, // 23: cloud.ListTestWorkflowLabelsResponse.labels:type_name -> cloud.LabelListItem - 71, // 24: cloud.DeleteTestWorkflowsByLabelsRequest.labels:type_name -> cloud.DeleteTestWorkflowsByLabelsRequest.LabelsEntry - 72, // 25: cloud.ListTestWorkflowTemplatesRequest.labels:type_name -> cloud.ListTestWorkflowTemplatesRequest.LabelsEntry - 39, // 26: cloud.ListTestWorkflowTemplateLabelsResponse.labels:type_name -> cloud.LabelListItem - 73, // 27: cloud.DeleteTestWorkflowTemplatesByLabelsRequest.labels:type_name -> cloud.DeleteTestWorkflowTemplatesByLabelsRequest.LabelsEntry - 14, // 28: cloud.ExecuteRequest.HeadersEntry.value:type_name -> cloud.HeaderValue - 14, // 29: cloud.ExecuteResponse.HeadersEntry.value:type_name -> cloud.HeaderValue - 15, // 30: cloud.TestKubeCloudAPI.Execute:input_type -> cloud.ExecuteResponse - 16, // 31: cloud.TestKubeCloudAPI.Send:input_type -> cloud.WebsocketData - 7, // 32: cloud.TestKubeCloudAPI.Call:input_type -> cloud.CommandRequest - 15, // 33: cloud.TestKubeCloudAPI.ExecuteAsync:input_type -> cloud.ExecuteResponse - 6, // 34: cloud.TestKubeCloudAPI.GetLogsStream:input_type -> cloud.LogsStreamResponse - 11, // 35: cloud.TestKubeCloudAPI.GetTestWorkflowNotificationsStream:input_type -> cloud.TestWorkflowNotificationsResponse - 20, // 36: cloud.TestKubeCloudAPI.GetTestWorkflowServiceNotificationsStream:input_type -> cloud.TestWorkflowServiceNotificationsResponse - 22, // 37: cloud.TestKubeCloudAPI.GetTestWorkflowParallelStepNotificationsStream:input_type -> cloud.TestWorkflowParallelStepNotificationsResponse - 75, // 38: cloud.TestKubeCloudAPI.GetProContext:input_type -> google.protobuf.Empty - 17, // 39: cloud.TestKubeCloudAPI.GetCredential:input_type -> cloud.CredentialRequest - 29, // 40: cloud.TestKubeCloudAPI.GetEventStream:input_type -> cloud.EventStreamRequest - 26, // 41: cloud.TestKubeCloudAPI.ScheduleExecution:input_type -> cloud.ScheduleRequest - 32, // 42: cloud.TestKubeCloudAPI.GetRunnerRequests:input_type -> cloud.RunnerResponse - 33, // 43: cloud.TestKubeCloudAPI.ObtainExecution:input_type -> cloud.ObtainExecutionRequest - 35, // 44: cloud.TestKubeCloudAPI.GetTestWorkflow:input_type -> cloud.GetTestWorkflowRequest - 37, // 45: cloud.TestKubeCloudAPI.ListTestWorkflows:input_type -> cloud.ListTestWorkflowsRequest - 40, // 46: cloud.TestKubeCloudAPI.ListTestWorkflowLabels:input_type -> cloud.ListTestWorkflowLabelsRequest - 42, // 47: cloud.TestKubeCloudAPI.CreateTestWorkflow:input_type -> cloud.CreateTestWorkflowRequest - 44, // 48: cloud.TestKubeCloudAPI.UpdateTestWorkflow:input_type -> cloud.UpdateTestWorkflowRequest - 46, // 49: cloud.TestKubeCloudAPI.DeleteTestWorkflow:input_type -> cloud.DeleteTestWorkflowRequest - 48, // 50: cloud.TestKubeCloudAPI.DeleteTestWorkflowsByLabels:input_type -> cloud.DeleteTestWorkflowsByLabelsRequest - 50, // 51: cloud.TestKubeCloudAPI.GetTestWorkflowTemplate:input_type -> cloud.GetTestWorkflowTemplateRequest - 52, // 52: cloud.TestKubeCloudAPI.ListTestWorkflowTemplates:input_type -> cloud.ListTestWorkflowTemplatesRequest - 54, // 53: cloud.TestKubeCloudAPI.ListTestWorkflowTemplateLabels:input_type -> cloud.ListTestWorkflowTemplateLabelsRequest - 56, // 54: cloud.TestKubeCloudAPI.CreateTestWorkflowTemplate:input_type -> cloud.CreateTestWorkflowTemplateRequest - 58, // 55: cloud.TestKubeCloudAPI.UpdateTestWorkflowTemplate:input_type -> cloud.UpdateTestWorkflowTemplateRequest - 60, // 56: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplate:input_type -> cloud.DeleteTestWorkflowTemplateRequest - 62, // 57: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplatesByLabels:input_type -> cloud.DeleteTestWorkflowTemplatesByLabelsRequest - 9, // 58: cloud.TestKubeCloudAPI.Execute:output_type -> cloud.ExecuteRequest - 75, // 59: cloud.TestKubeCloudAPI.Send:output_type -> google.protobuf.Empty - 8, // 60: cloud.TestKubeCloudAPI.Call:output_type -> cloud.CommandResponse - 9, // 61: cloud.TestKubeCloudAPI.ExecuteAsync:output_type -> cloud.ExecuteRequest - 5, // 62: cloud.TestKubeCloudAPI.GetLogsStream:output_type -> cloud.LogsStreamRequest - 10, // 63: cloud.TestKubeCloudAPI.GetTestWorkflowNotificationsStream:output_type -> cloud.TestWorkflowNotificationsRequest - 19, // 64: cloud.TestKubeCloudAPI.GetTestWorkflowServiceNotificationsStream:output_type -> cloud.TestWorkflowServiceNotificationsRequest - 21, // 65: cloud.TestKubeCloudAPI.GetTestWorkflowParallelStepNotificationsStream:output_type -> cloud.TestWorkflowParallelStepNotificationsRequest - 12, // 66: cloud.TestKubeCloudAPI.GetProContext:output_type -> cloud.ProContextResponse - 18, // 67: cloud.TestKubeCloudAPI.GetCredential:output_type -> cloud.CredentialResponse - 30, // 68: cloud.TestKubeCloudAPI.GetEventStream:output_type -> cloud.Event - 27, // 69: cloud.TestKubeCloudAPI.ScheduleExecution:output_type -> cloud.ScheduleResponse - 31, // 70: cloud.TestKubeCloudAPI.GetRunnerRequests:output_type -> cloud.RunnerRequest - 34, // 71: cloud.TestKubeCloudAPI.ObtainExecution:output_type -> cloud.ObtainExecutionResponse - 36, // 72: cloud.TestKubeCloudAPI.GetTestWorkflow:output_type -> cloud.GetTestWorkflowResponse - 38, // 73: cloud.TestKubeCloudAPI.ListTestWorkflows:output_type -> cloud.TestWorkflowListItem - 41, // 74: cloud.TestKubeCloudAPI.ListTestWorkflowLabels:output_type -> cloud.ListTestWorkflowLabelsResponse - 43, // 75: cloud.TestKubeCloudAPI.CreateTestWorkflow:output_type -> cloud.CreateTestWorkflowResponse - 45, // 76: cloud.TestKubeCloudAPI.UpdateTestWorkflow:output_type -> cloud.UpdateTestWorkflowResponse - 47, // 77: cloud.TestKubeCloudAPI.DeleteTestWorkflow:output_type -> cloud.DeleteTestWorkflowResponse - 49, // 78: cloud.TestKubeCloudAPI.DeleteTestWorkflowsByLabels:output_type -> cloud.DeleteTestWorkflowsByLabelsResponse - 51, // 79: cloud.TestKubeCloudAPI.GetTestWorkflowTemplate:output_type -> cloud.GetTestWorkflowTemplateResponse - 53, // 80: cloud.TestKubeCloudAPI.ListTestWorkflowTemplates:output_type -> cloud.TestWorkflowTemplateListItem - 55, // 81: cloud.TestKubeCloudAPI.ListTestWorkflowTemplateLabels:output_type -> cloud.ListTestWorkflowTemplateLabelsResponse - 57, // 82: cloud.TestKubeCloudAPI.CreateTestWorkflowTemplate:output_type -> cloud.CreateTestWorkflowTemplateResponse - 59, // 83: cloud.TestKubeCloudAPI.UpdateTestWorkflowTemplate:output_type -> cloud.UpdateTestWorkflowTemplateResponse - 61, // 84: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplate:output_type -> cloud.DeleteTestWorkflowTemplateResponse - 63, // 85: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplatesByLabels:output_type -> cloud.DeleteTestWorkflowTemplatesByLabelsResponse - 58, // [58:86] is the sub-list for method output_type - 30, // [30:58] is the sub-list for method input_type - 30, // [30:30] is the sub-list for extension type_name - 30, // [30:30] is the sub-list for extension extendee - 0, // [0:30] is the sub-list for field type_name + 67, // 12: cloud.ScheduleResourceSelector.labels:type_name -> cloud.ScheduleResourceSelector.LabelsEntry + 23, // 13: cloud.ScheduleExecution.selector:type_name -> cloud.ScheduleResourceSelector + 68, // 14: cloud.ScheduleExecution.config:type_name -> cloud.ScheduleExecution.ConfigEntry + 69, // 15: cloud.ScheduleExecution.tags:type_name -> cloud.ScheduleExecution.TagsEntry + 4, // 16: cloud.RunningContext.type:type_name -> cloud.RunningContextType + 24, // 17: cloud.ScheduleRequest.executions:type_name -> cloud.ScheduleExecution + 70, // 18: cloud.ScheduleRequest.tags:type_name -> cloud.ScheduleRequest.TagsEntry + 25, // 19: cloud.ScheduleRequest.running_context:type_name -> cloud.RunningContext + 26, // 20: cloud.ScheduleRequest.user:type_name -> cloud.UserSignature + 29, // 21: cloud.EventStreamRequest.accept:type_name -> cloud.EventResource + 29, // 22: cloud.Event.resource:type_name -> cloud.EventResource + 71, // 23: cloud.ListTestWorkflowsRequest.labels:type_name -> cloud.ListTestWorkflowsRequest.LabelsEntry + 40, // 24: cloud.ListTestWorkflowLabelsResponse.labels:type_name -> cloud.LabelListItem + 72, // 25: cloud.DeleteTestWorkflowsByLabelsRequest.labels:type_name -> cloud.DeleteTestWorkflowsByLabelsRequest.LabelsEntry + 73, // 26: cloud.ListTestWorkflowTemplatesRequest.labels:type_name -> cloud.ListTestWorkflowTemplatesRequest.LabelsEntry + 40, // 27: cloud.ListTestWorkflowTemplateLabelsResponse.labels:type_name -> cloud.LabelListItem + 74, // 28: cloud.DeleteTestWorkflowTemplatesByLabelsRequest.labels:type_name -> cloud.DeleteTestWorkflowTemplatesByLabelsRequest.LabelsEntry + 14, // 29: cloud.ExecuteRequest.HeadersEntry.value:type_name -> cloud.HeaderValue + 14, // 30: cloud.ExecuteResponse.HeadersEntry.value:type_name -> cloud.HeaderValue + 15, // 31: cloud.TestKubeCloudAPI.Execute:input_type -> cloud.ExecuteResponse + 16, // 32: cloud.TestKubeCloudAPI.Send:input_type -> cloud.WebsocketData + 7, // 33: cloud.TestKubeCloudAPI.Call:input_type -> cloud.CommandRequest + 15, // 34: cloud.TestKubeCloudAPI.ExecuteAsync:input_type -> cloud.ExecuteResponse + 6, // 35: cloud.TestKubeCloudAPI.GetLogsStream:input_type -> cloud.LogsStreamResponse + 11, // 36: cloud.TestKubeCloudAPI.GetTestWorkflowNotificationsStream:input_type -> cloud.TestWorkflowNotificationsResponse + 20, // 37: cloud.TestKubeCloudAPI.GetTestWorkflowServiceNotificationsStream:input_type -> cloud.TestWorkflowServiceNotificationsResponse + 22, // 38: cloud.TestKubeCloudAPI.GetTestWorkflowParallelStepNotificationsStream:input_type -> cloud.TestWorkflowParallelStepNotificationsResponse + 76, // 39: cloud.TestKubeCloudAPI.GetProContext:input_type -> google.protobuf.Empty + 17, // 40: cloud.TestKubeCloudAPI.GetCredential:input_type -> cloud.CredentialRequest + 30, // 41: cloud.TestKubeCloudAPI.GetEventStream:input_type -> cloud.EventStreamRequest + 27, // 42: cloud.TestKubeCloudAPI.ScheduleExecution:input_type -> cloud.ScheduleRequest + 33, // 43: cloud.TestKubeCloudAPI.GetRunnerRequests:input_type -> cloud.RunnerResponse + 34, // 44: cloud.TestKubeCloudAPI.ObtainExecution:input_type -> cloud.ObtainExecutionRequest + 36, // 45: cloud.TestKubeCloudAPI.GetTestWorkflow:input_type -> cloud.GetTestWorkflowRequest + 38, // 46: cloud.TestKubeCloudAPI.ListTestWorkflows:input_type -> cloud.ListTestWorkflowsRequest + 41, // 47: cloud.TestKubeCloudAPI.ListTestWorkflowLabels:input_type -> cloud.ListTestWorkflowLabelsRequest + 43, // 48: cloud.TestKubeCloudAPI.CreateTestWorkflow:input_type -> cloud.CreateTestWorkflowRequest + 45, // 49: cloud.TestKubeCloudAPI.UpdateTestWorkflow:input_type -> cloud.UpdateTestWorkflowRequest + 47, // 50: cloud.TestKubeCloudAPI.DeleteTestWorkflow:input_type -> cloud.DeleteTestWorkflowRequest + 49, // 51: cloud.TestKubeCloudAPI.DeleteTestWorkflowsByLabels:input_type -> cloud.DeleteTestWorkflowsByLabelsRequest + 51, // 52: cloud.TestKubeCloudAPI.GetTestWorkflowTemplate:input_type -> cloud.GetTestWorkflowTemplateRequest + 53, // 53: cloud.TestKubeCloudAPI.ListTestWorkflowTemplates:input_type -> cloud.ListTestWorkflowTemplatesRequest + 55, // 54: cloud.TestKubeCloudAPI.ListTestWorkflowTemplateLabels:input_type -> cloud.ListTestWorkflowTemplateLabelsRequest + 57, // 55: cloud.TestKubeCloudAPI.CreateTestWorkflowTemplate:input_type -> cloud.CreateTestWorkflowTemplateRequest + 59, // 56: cloud.TestKubeCloudAPI.UpdateTestWorkflowTemplate:input_type -> cloud.UpdateTestWorkflowTemplateRequest + 61, // 57: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplate:input_type -> cloud.DeleteTestWorkflowTemplateRequest + 63, // 58: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplatesByLabels:input_type -> cloud.DeleteTestWorkflowTemplatesByLabelsRequest + 9, // 59: cloud.TestKubeCloudAPI.Execute:output_type -> cloud.ExecuteRequest + 76, // 60: cloud.TestKubeCloudAPI.Send:output_type -> google.protobuf.Empty + 8, // 61: cloud.TestKubeCloudAPI.Call:output_type -> cloud.CommandResponse + 9, // 62: cloud.TestKubeCloudAPI.ExecuteAsync:output_type -> cloud.ExecuteRequest + 5, // 63: cloud.TestKubeCloudAPI.GetLogsStream:output_type -> cloud.LogsStreamRequest + 10, // 64: cloud.TestKubeCloudAPI.GetTestWorkflowNotificationsStream:output_type -> cloud.TestWorkflowNotificationsRequest + 19, // 65: cloud.TestKubeCloudAPI.GetTestWorkflowServiceNotificationsStream:output_type -> cloud.TestWorkflowServiceNotificationsRequest + 21, // 66: cloud.TestKubeCloudAPI.GetTestWorkflowParallelStepNotificationsStream:output_type -> cloud.TestWorkflowParallelStepNotificationsRequest + 12, // 67: cloud.TestKubeCloudAPI.GetProContext:output_type -> cloud.ProContextResponse + 18, // 68: cloud.TestKubeCloudAPI.GetCredential:output_type -> cloud.CredentialResponse + 31, // 69: cloud.TestKubeCloudAPI.GetEventStream:output_type -> cloud.Event + 28, // 70: cloud.TestKubeCloudAPI.ScheduleExecution:output_type -> cloud.ScheduleResponse + 32, // 71: cloud.TestKubeCloudAPI.GetRunnerRequests:output_type -> cloud.RunnerRequest + 35, // 72: cloud.TestKubeCloudAPI.ObtainExecution:output_type -> cloud.ObtainExecutionResponse + 37, // 73: cloud.TestKubeCloudAPI.GetTestWorkflow:output_type -> cloud.GetTestWorkflowResponse + 39, // 74: cloud.TestKubeCloudAPI.ListTestWorkflows:output_type -> cloud.TestWorkflowListItem + 42, // 75: cloud.TestKubeCloudAPI.ListTestWorkflowLabels:output_type -> cloud.ListTestWorkflowLabelsResponse + 44, // 76: cloud.TestKubeCloudAPI.CreateTestWorkflow:output_type -> cloud.CreateTestWorkflowResponse + 46, // 77: cloud.TestKubeCloudAPI.UpdateTestWorkflow:output_type -> cloud.UpdateTestWorkflowResponse + 48, // 78: cloud.TestKubeCloudAPI.DeleteTestWorkflow:output_type -> cloud.DeleteTestWorkflowResponse + 50, // 79: cloud.TestKubeCloudAPI.DeleteTestWorkflowsByLabels:output_type -> cloud.DeleteTestWorkflowsByLabelsResponse + 52, // 80: cloud.TestKubeCloudAPI.GetTestWorkflowTemplate:output_type -> cloud.GetTestWorkflowTemplateResponse + 54, // 81: cloud.TestKubeCloudAPI.ListTestWorkflowTemplates:output_type -> cloud.TestWorkflowTemplateListItem + 56, // 82: cloud.TestKubeCloudAPI.ListTestWorkflowTemplateLabels:output_type -> cloud.ListTestWorkflowTemplateLabelsResponse + 58, // 83: cloud.TestKubeCloudAPI.CreateTestWorkflowTemplate:output_type -> cloud.CreateTestWorkflowTemplateResponse + 60, // 84: cloud.TestKubeCloudAPI.UpdateTestWorkflowTemplate:output_type -> cloud.UpdateTestWorkflowTemplateResponse + 62, // 85: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplate:output_type -> cloud.DeleteTestWorkflowTemplateResponse + 64, // 86: cloud.TestKubeCloudAPI.DeleteTestWorkflowTemplatesByLabels:output_type -> cloud.DeleteTestWorkflowTemplatesByLabelsResponse + 59, // [59:87] is the sub-list for method output_type + 31, // [31:59] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name } func init() { file_proto_service_proto_init() } @@ -4779,7 +4831,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScheduleSelector); i { + switch v := v.(*ScheduleResourceSelector); i { case 0: return &v.state case 1: @@ -4791,7 +4843,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunningContext); i { + switch v := v.(*ScheduleExecution); i { case 0: return &v.state case 1: @@ -4803,7 +4855,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSignature); i { + switch v := v.(*RunningContext); i { case 0: return &v.state case 1: @@ -4815,7 +4867,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScheduleRequest); i { + switch v := v.(*UserSignature); i { case 0: return &v.state case 1: @@ -4827,7 +4879,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScheduleResponse); i { + switch v := v.(*ScheduleRequest); i { case 0: return &v.state case 1: @@ -4839,7 +4891,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventResource); i { + switch v := v.(*ScheduleResponse); i { case 0: return &v.state case 1: @@ -4851,7 +4903,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventStreamRequest); i { + switch v := v.(*EventResource); i { case 0: return &v.state case 1: @@ -4863,7 +4915,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { + switch v := v.(*EventStreamRequest); i { case 0: return &v.state case 1: @@ -4875,7 +4927,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunnerRequest); i { + switch v := v.(*Event); i { case 0: return &v.state case 1: @@ -4887,7 +4939,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunnerResponse); i { + switch v := v.(*RunnerRequest); i { case 0: return &v.state case 1: @@ -4899,7 +4951,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObtainExecutionRequest); i { + switch v := v.(*RunnerResponse); i { case 0: return &v.state case 1: @@ -4911,7 +4963,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObtainExecutionResponse); i { + switch v := v.(*ObtainExecutionRequest); i { case 0: return &v.state case 1: @@ -4923,7 +4975,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTestWorkflowRequest); i { + switch v := v.(*ObtainExecutionResponse); i { case 0: return &v.state case 1: @@ -4935,7 +4987,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTestWorkflowResponse); i { + switch v := v.(*GetTestWorkflowRequest); i { case 0: return &v.state case 1: @@ -4947,7 +4999,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTestWorkflowsRequest); i { + switch v := v.(*GetTestWorkflowResponse); i { case 0: return &v.state case 1: @@ -4959,7 +5011,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TestWorkflowListItem); i { + switch v := v.(*ListTestWorkflowsRequest); i { case 0: return &v.state case 1: @@ -4971,7 +5023,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LabelListItem); i { + switch v := v.(*TestWorkflowListItem); i { case 0: return &v.state case 1: @@ -4983,7 +5035,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTestWorkflowLabelsRequest); i { + switch v := v.(*LabelListItem); i { case 0: return &v.state case 1: @@ -4995,7 +5047,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTestWorkflowLabelsResponse); i { + switch v := v.(*ListTestWorkflowLabelsRequest); i { case 0: return &v.state case 1: @@ -5007,7 +5059,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTestWorkflowRequest); i { + switch v := v.(*ListTestWorkflowLabelsResponse); i { case 0: return &v.state case 1: @@ -5019,7 +5071,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTestWorkflowResponse); i { + switch v := v.(*CreateTestWorkflowRequest); i { case 0: return &v.state case 1: @@ -5031,7 +5083,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTestWorkflowRequest); i { + switch v := v.(*CreateTestWorkflowResponse); i { case 0: return &v.state case 1: @@ -5043,7 +5095,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTestWorkflowResponse); i { + switch v := v.(*UpdateTestWorkflowRequest); i { case 0: return &v.state case 1: @@ -5055,7 +5107,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowRequest); i { + switch v := v.(*UpdateTestWorkflowResponse); i { case 0: return &v.state case 1: @@ -5067,7 +5119,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowResponse); i { + switch v := v.(*DeleteTestWorkflowRequest); i { case 0: return &v.state case 1: @@ -5079,7 +5131,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowsByLabelsRequest); i { + switch v := v.(*DeleteTestWorkflowResponse); i { case 0: return &v.state case 1: @@ -5091,7 +5143,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowsByLabelsResponse); i { + switch v := v.(*DeleteTestWorkflowsByLabelsRequest); i { case 0: return &v.state case 1: @@ -5103,7 +5155,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTestWorkflowTemplateRequest); i { + switch v := v.(*DeleteTestWorkflowsByLabelsResponse); i { case 0: return &v.state case 1: @@ -5115,7 +5167,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTestWorkflowTemplateResponse); i { + switch v := v.(*GetTestWorkflowTemplateRequest); i { case 0: return &v.state case 1: @@ -5127,7 +5179,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTestWorkflowTemplatesRequest); i { + switch v := v.(*GetTestWorkflowTemplateResponse); i { case 0: return &v.state case 1: @@ -5139,7 +5191,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TestWorkflowTemplateListItem); i { + switch v := v.(*ListTestWorkflowTemplatesRequest); i { case 0: return &v.state case 1: @@ -5151,7 +5203,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTestWorkflowTemplateLabelsRequest); i { + switch v := v.(*TestWorkflowTemplateListItem); i { case 0: return &v.state case 1: @@ -5163,7 +5215,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTestWorkflowTemplateLabelsResponse); i { + switch v := v.(*ListTestWorkflowTemplateLabelsRequest); i { case 0: return &v.state case 1: @@ -5175,7 +5227,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTestWorkflowTemplateRequest); i { + switch v := v.(*ListTestWorkflowTemplateLabelsResponse); i { case 0: return &v.state case 1: @@ -5187,7 +5239,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTestWorkflowTemplateResponse); i { + switch v := v.(*CreateTestWorkflowTemplateRequest); i { case 0: return &v.state case 1: @@ -5199,7 +5251,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTestWorkflowTemplateRequest); i { + switch v := v.(*CreateTestWorkflowTemplateResponse); i { case 0: return &v.state case 1: @@ -5211,7 +5263,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTestWorkflowTemplateResponse); i { + switch v := v.(*UpdateTestWorkflowTemplateRequest); i { case 0: return &v.state case 1: @@ -5223,7 +5275,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowTemplateRequest); i { + switch v := v.(*UpdateTestWorkflowTemplateResponse); i { case 0: return &v.state case 1: @@ -5235,7 +5287,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowTemplateResponse); i { + switch v := v.(*DeleteTestWorkflowTemplateRequest); i { case 0: return &v.state case 1: @@ -5247,7 +5299,7 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTestWorkflowTemplatesByLabelsRequest); i { + switch v := v.(*DeleteTestWorkflowTemplateResponse); i { case 0: return &v.state case 1: @@ -5259,6 +5311,18 @@ func file_proto_service_proto_init() { } } file_proto_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteTestWorkflowTemplatesByLabelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTestWorkflowTemplatesByLabelsResponse); i { case 0: return &v.state @@ -5271,15 +5335,15 @@ func file_proto_service_proto_init() { } } } - file_proto_service_proto_msgTypes[21].OneofWrappers = []interface{}{} - file_proto_service_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_proto_service_proto_msgTypes[22].OneofWrappers = []interface{}{} + file_proto_service_proto_msgTypes[28].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_service_proto_rawDesc, NumEnums: 5, - NumMessages: 69, + NumMessages: 70, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/testworkflows/testworkflowexecutor/scheduler.go b/pkg/testworkflows/testworkflowexecutor/scheduler.go index 1b2a574ee2..6904275d04 100644 --- a/pkg/testworkflows/testworkflowexecutor/scheduler.go +++ b/pkg/testworkflows/testworkflowexecutor/scheduler.go @@ -10,6 +10,7 @@ import ( "go.mongodb.org/mongo-driver/bson/primitive" "go.uber.org/zap" + "github.com/kubeshop/testkube/internal/common" "github.com/kubeshop/testkube/pkg/api/v1/testkube" "github.com/kubeshop/testkube/pkg/cloud" "github.com/kubeshop/testkube/pkg/log" @@ -136,7 +137,7 @@ func (s *scheduler) Schedule(ctx context.Context, sensitiveDataHandler Sensitive } // Check if there is anything to run - if len(req.Selectors) == 0 { + if len(req.Executions) == 0 { close(ch) return ch, nil } @@ -157,7 +158,9 @@ func (s *scheduler) Schedule(ctx context.Context, sensitiveDataHandler Sensitive testWorkflowTemplates := NewTestWorkflowTemplateFetcher(s.testWorkflowTemplatesClient, req.EnvironmentId) // Prefetch all the Test Workflows - err := testWorkflows.PrefetchMany(req.Selectors) + err := testWorkflows.PrefetchMany(common.MapSlice(req.Executions, func(t *cloud.ScheduleExecution) *cloud.ScheduleResourceSelector { + return t.Selector + })) if err != nil { close(ch) return ch, err @@ -172,23 +175,23 @@ func (s *scheduler) Schedule(ctx context.Context, sensitiveDataHandler Sensitive _ = testWorkflowTemplates.PrefetchMany(tplNames) // Flatten selectors - selectors := make([]*cloud.ScheduleSelector, 0, len(req.Selectors)) - for i := range req.Selectors { - list, _ := testWorkflows.Get(req.Selectors[i]) + selectors := make([]*cloud.ScheduleExecution, 0, len(req.Executions)) + for i := range req.Executions { + list, _ := testWorkflows.Get(req.Executions[i].Selector) for _, w := range list { - selectors = append(selectors, &cloud.ScheduleSelector{ - Name: w.Name, - Config: req.Selectors[i].Config, - ExecutionName: req.Selectors[i].ExecutionName, // TODO: what to do when execution name is configured, but multiple requested? - Tags: req.Selectors[i].Tags, + selectors = append(selectors, &cloud.ScheduleExecution{ + Selector: &cloud.ScheduleResourceSelector{Name: w.Name}, + Config: req.Executions[i].Config, + ExecutionName: req.Executions[i].ExecutionName, // TODO: what to do when execution name is configured, but multiple requested? + Tags: req.Executions[i].Tags, }) } } // Resolve executions for each selector - intermediate := make([]*IntermediateExecution, 0, len(req.Selectors)) + intermediate := make([]*IntermediateExecution, 0, len(selectors)) for _, v := range selectors { - workflow, _ := testWorkflows.GetByName(v.Name) + workflow, _ := testWorkflows.GetByName(v.Selector.Name) current := base.Clone(). AutoGenerateID(). SetName(v.ExecutionName). diff --git a/pkg/testworkflows/testworkflowexecutor/testworkflowfetcher.go b/pkg/testworkflows/testworkflowexecutor/testworkflowfetcher.go index e2b8e746f1..e53e91baba 100644 --- a/pkg/testworkflows/testworkflowexecutor/testworkflowfetcher.go +++ b/pkg/testworkflows/testworkflowexecutor/testworkflowfetcher.go @@ -56,14 +56,14 @@ func (r *testWorkflowFetcher) PrefetchByName(name string) error { return nil } -func (r *testWorkflowFetcher) PrefetchMany(selectors []*cloud.ScheduleSelector) error { +func (r *testWorkflowFetcher) PrefetchMany(selectors []*cloud.ScheduleResourceSelector) error { // Categorize selectors names := make(map[string]struct{}) labels := make([]map[string]string, 0) for i := range selectors { if selectors[i].Name == "" { - if !containsSameMap(labels, selectors[i].LabelSelector) { - labels = append(labels, selectors[i].LabelSelector) + if !containsSameMap(labels, selectors[i].Labels) { + labels = append(labels, selectors[i].Labels) } } else { names[selectors[i].Name] = struct{}{} @@ -128,9 +128,9 @@ loop: return result, nil } -func (r *testWorkflowFetcher) Get(selector *cloud.ScheduleSelector) ([]*testkube.TestWorkflow, error) { +func (r *testWorkflowFetcher) Get(selector *cloud.ScheduleResourceSelector) ([]*testkube.TestWorkflow, error) { if selector.Name == "" { - return r.GetByLabelSelector(selector.LabelSelector) + return r.GetByLabelSelector(selector.Labels) } v, err := r.GetByName(selector.Name) if err != nil { diff --git a/pkg/testworkflows/testworkflowexecutor/utils.go b/pkg/testworkflows/testworkflowexecutor/utils.go index 01238ca669..8c6acf6443 100644 --- a/pkg/testworkflows/testworkflowexecutor/utils.go +++ b/pkg/testworkflows/testworkflowexecutor/utils.go @@ -105,9 +105,9 @@ func GetLegacyRunningContext(req *cloud.ScheduleRequest) (runningContext *testku userActor := &testkube.TestWorkflowRunningContextActor{ Type_: common.Ptr(testkube.USER_TestWorkflowRunningContextActorType), } - if req.UntrustedUser != nil { - userActor.Name = req.UntrustedUser.Name - userActor.Email = req.UntrustedUser.Email + if req.User != nil { + userActor.Name = req.User.Name + userActor.Email = req.User.Email } switch req.RunningContext.Type { @@ -189,17 +189,17 @@ func ValidateExecutionRequest(req *cloud.ScheduleRequest) error { // Validate if the selectors have exclusively name or label selector nameSelectorsCount := 0 labelSelectorsCount := 0 - for i := range req.Selectors { - if req.Selectors[i] == nil { + for i := range req.Executions { + if req.Executions[i] == nil { return errors.New("invalid selector provided") } - if req.Selectors[i].Name != "" && len(req.Selectors[i].LabelSelector) > 0 { + if req.Executions[i].Selector.Name != "" && len(req.Executions[i].Selector.Labels) > 0 { return errors.New("invalid selector provided") } - if req.Selectors[i].Name == "" && len(req.Selectors[i].LabelSelector) == 0 { + if req.Executions[i].Selector.Name == "" && len(req.Executions[i].Selector.Labels) == 0 { return errors.New("invalid selector provided") } - if req.Selectors[i].Name != "" { + if req.Executions[i].Selector.Name != "" { nameSelectorsCount++ } else { labelSelectorsCount++ diff --git a/pkg/triggers/executor.go b/pkg/triggers/executor.go index 691f41ba74..9c16d5bb37 100644 --- a/pkg/triggers/executor.go +++ b/pkg/triggers/executor.go @@ -142,15 +142,15 @@ func (s *Service) execute(ctx context.Context, e *watcherEvent, t *testtriggersv } request := &cloud.ScheduleRequest{ - Selectors: common.MapSlice(testWorkflows, func(w testworkflowsv1.TestWorkflow) *cloud.ScheduleSelector { - selector := &cloud.ScheduleSelector{ - Name: w.Name, - Config: make(map[string]string, len(variables)), + Executions: common.MapSlice(testWorkflows, func(w testworkflowsv1.TestWorkflow) *cloud.ScheduleExecution { + execution := &cloud.ScheduleExecution{ + Selector: &cloud.ScheduleResourceSelector{Name: w.Name}, + Config: make(map[string]string, len(variables)), } for _, variable := range variables { - selector.Config[variable.Name] = variable.Value + execution.Config[variable.Name] = variable.Value } - return selector + return execution }), } diff --git a/proto/service.proto b/proto/service.proto index 8f3bf8935a..dc0a79ede1 100644 --- a/proto/service.proto +++ b/proto/service.proto @@ -185,12 +185,16 @@ message TestWorkflowParallelStepNotificationsResponse { string message = 6; // based on type: log/error = inline, others = serialized to JSON } -message ScheduleSelector { +message ScheduleResourceSelector { string name = 1; - map labelSelector = 2; - map config = 3; - string execution_name = 4; - map tags = 5; + map labels = 2; +} + +message ScheduleExecution { + ScheduleResourceSelector selector = 1; + map config = 2; + string execution_name = 3; + map tags = 4; } enum RunningContextType { @@ -219,7 +223,7 @@ message ScheduleRequest { string environment_id = 1; // Test Workflow details - repeated ScheduleSelector selectors = 2; + repeated ScheduleExecution executions = 2; // Execution details bool disable_webhooks = 3; @@ -228,7 +232,7 @@ message ScheduleRequest { // Running metadata RunningContext running_context = 5; repeated string parent_execution_ids = 7; - optional UserSignature untrusted_user = 8; + optional UserSignature user = 8; // keep in mind that it should not be trusted // Kubernetes resource TODO: is it required? string kubernetes_object_name = 9;