diff --git a/dataproxy/logs/k8s_log_streamer.go b/dataproxy/logs/k8s_log_streamer.go new file mode 100644 index 0000000000..1540905037 --- /dev/null +++ b/dataproxy/logs/k8s_log_streamer.go @@ -0,0 +1,178 @@ +package logs + +import ( + "bufio" + "context" + "fmt" + "io" + "strings" + "time" + + "connectrpc.com/connect" + corev1 "k8s.io/api/core/v1" + k8serrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" + + "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/logs/dataplane" +) + +const ( + logBatchSize = 100 + defaultInitialLines = int64(1000) +) + +// K8sLogStreamer streams logs directly from Kubernetes pods. +type K8sLogStreamer struct { + clientset kubernetes.Interface +} + +// NewK8sLogStreamer creates a K8sLogStreamer from a Kubernetes REST config. +// It clears the timeout so that long-lived log streams are not interrupted. +func NewK8sLogStreamer(k8sConfig *rest.Config) (*K8sLogStreamer, error) { + cfg := rest.CopyConfig(k8sConfig) + cfg.Timeout = 0 + clientset, err := kubernetes.NewForConfig(cfg) + if err != nil { + return nil, fmt.Errorf("failed to create kubernetes clientset: %w", err) + } + return &K8sLogStreamer{clientset: clientset}, nil +} + +// TailLogs streams log lines for the given LogContext from a Kubernetes pod. +func (s *K8sLogStreamer) TailLogs(ctx context.Context, logContext *core.LogContext, stream *connect.ServerStream[dataproxy.TailLogsResponse]) error { + pod, container, err := GetPrimaryPodAndContainer(logContext) + if err != nil { + return connect.NewError(connect.CodeNotFound, err) + } + + tailLines := defaultInitialLines + opts := &corev1.PodLogOptions{ + Container: container.GetContainerName(), + Follow: true, + Timestamps: true, + TailLines: &tailLines, + } + + // Set SinceTime from container start time if available. + // When SinceTime is set, it takes precedence and we clear TailLines + // to stream all logs from that point forward. + if startTime := container.GetProcess().GetContainerStartTime(); startTime != nil { + t := metav1.NewTime(startTime.AsTime()) + opts.SinceTime = &t + opts.TailLines = nil + } + + // Only follow logs when the pod is actively running. For pending or + // terminated pods, disable follow so existing logs are returned immediately. + podObj, err := s.clientset.CoreV1().Pods(pod.GetNamespace()).Get(ctx, pod.GetPodName(), metav1.GetOptions{}) + if err != nil { + if k8serrors.IsNotFound(err) { + return connect.NewError(connect.CodeNotFound, fmt.Errorf("pod %s not found in namespace %s", pod.GetPodName(), pod.GetNamespace())) + } + return connect.NewError(connect.CodeInternal, fmt.Errorf("failed to get pod: %w", err)) + } + opts.Follow = podObj.Status.Phase == corev1.PodRunning + + // Create a context without the incoming gRPC deadline so long-lived follow + // streams are not killed by a short client/proxy timeout. Cancellation is + // still propagated so the stream closes when the client disconnects. + streamCtx, streamCancel := context.WithCancel(context.Background()) + defer streamCancel() + stop := context.AfterFunc(ctx, streamCancel) + defer stop() + + logStream, err := s.clientset.CoreV1().Pods(pod.GetNamespace()).GetLogs(pod.GetPodName(), opts).Stream(streamCtx) + if err != nil { + return connect.NewError(connect.CodeInternal, fmt.Errorf("failed to stream pod logs: %w", err)) + } + defer logStream.Close() + + reader := bufio.NewReader(logStream) + + lines := make([]*dataplane.LogLine, 0, logBatchSize) + var readErr error + + for { + line, err := reader.ReadString('\n') + if len(line) > 0 { + // Trim trailing newline(s) including possible CRLF. + line = strings.TrimRight(line, "\r\n") + logLine := parseLogLine(line) + lines = append(lines, logLine) + + if len(lines) >= logBatchSize { + if sendErr := stream.Send(&dataproxy.TailLogsResponse{ + Logs: []*dataproxy.TailLogsResponse_Logs{ + {Lines: lines}, + }, + }); sendErr != nil { + return sendErr + } + lines = make([]*dataplane.LogLine, 0, logBatchSize) + } + } + if err != nil { + if err != io.EOF { + readErr = err + } + break + } + + // Flush buffered lines when no more data is immediately available. + // Without this, lines sit in the buffer while ReadString blocks + // waiting for the next newline (e.g. pod is sleeping). + if len(lines) > 0 && reader.Buffered() == 0 { + if sendErr := stream.Send(&dataproxy.TailLogsResponse{ + Logs: []*dataproxy.TailLogsResponse_Logs{ + {Lines: lines}, + }, + }); sendErr != nil { + return sendErr + } + lines = make([]*dataplane.LogLine, 0, logBatchSize) + } + } + + // Send remaining lines. + if len(lines) > 0 { + if err := stream.Send(&dataproxy.TailLogsResponse{ + Logs: []*dataproxy.TailLogsResponse_Logs{ + {Lines: lines}, + }, + }); err != nil { + return err + } + } + + // Return error for non-EOF read failures (unless context was canceled). + if readErr != nil && ctx.Err() == nil { + return connect.NewError(connect.CodeInternal, fmt.Errorf("error reading log stream: %w", readErr)) + } + + return nil +} + +// parseLogLine splits a K8s log line into timestamp and message. +// K8s log lines with timestamps are formatted as: "2006-01-02T15:04:05.999999999Z message" +func parseLogLine(line string) *dataplane.LogLine { + if idx := strings.IndexByte(line, ' '); idx > 0 { + if t, err := time.Parse(time.RFC3339Nano, line[:idx]); err == nil { + return &dataplane.LogLine{ + Originator: dataplane.LogLineOriginator_USER, + Timestamp: timestamppb.New(t), + Message: line[idx+1:], + } + } + } + + return &dataplane.LogLine{ + Originator: dataplane.LogLineOriginator_USER, + Message: line, + } +} diff --git a/dataproxy/logs/k8s_log_streamer_test.go b/dataproxy/logs/k8s_log_streamer_test.go new file mode 100644 index 0000000000..faa0271319 --- /dev/null +++ b/dataproxy/logs/k8s_log_streamer_test.go @@ -0,0 +1,182 @@ +package logs + +import ( + "context" + "testing" + "time" + + "connectrpc.com/connect" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes/fake" + + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/logs/dataplane" +) + +func TestParseLogLine_WithTimestamp(t *testing.T) { + line := "2024-01-15T10:30:00.123456789Z Hello, world!" + logLine := parseLogLine(line) + + assert.Equal(t, "Hello, world!", logLine.Message) + assert.NotNil(t, logLine.Timestamp) + expected := time.Date(2024, 1, 15, 10, 30, 0, 123456789, time.UTC) + assert.Equal(t, expected, logLine.Timestamp.AsTime()) + assert.Equal(t, dataplane.LogLineOriginator_USER, logLine.Originator) +} + +func TestParseLogLine_WithoutTimestamp(t *testing.T) { + line := "just a plain log message" + logLine := parseLogLine(line) + + assert.Equal(t, "just a plain log message", logLine.Message) + assert.Nil(t, logLine.Timestamp) + assert.Equal(t, dataplane.LogLineOriginator_USER, logLine.Originator) +} + +func TestParseLogLine_MalformedTimestamp(t *testing.T) { + line := "not-a-timestamp some message" + logLine := parseLogLine(line) + + assert.Equal(t, "not-a-timestamp some message", logLine.Message) + assert.Nil(t, logLine.Timestamp) +} + +func TestParseLogLine_EmptyMessage(t *testing.T) { + line := "2024-01-15T10:30:00Z " + logLine := parseLogLine(line) + + assert.Equal(t, "", logLine.Message) + assert.NotNil(t, logLine.Timestamp) +} + +func TestGetPrimaryPodAndContainer_HappyPath(t *testing.T) { + logCtx := &core.LogContext{ + PrimaryPodName: "my-pod", + Pods: []*core.PodLogContext{ + { + PodName: "my-pod", + Namespace: "default", + PrimaryContainerName: "main", + Containers: []*core.ContainerContext{ + {ContainerName: "main"}, + {ContainerName: "sidecar"}, + }, + }, + }, + } + + pod, container, err := GetPrimaryPodAndContainer(logCtx) + assert.NoError(t, err) + assert.Equal(t, "my-pod", pod.GetPodName()) + assert.Equal(t, "default", pod.GetNamespace()) + assert.Equal(t, "main", container.GetContainerName()) +} + +func TestGetPrimaryPodAndContainer_EmptyPodName(t *testing.T) { + logCtx := &core.LogContext{ + PrimaryPodName: "", + } + + _, _, err := GetPrimaryPodAndContainer(logCtx) + assert.Error(t, err) + assert.Contains(t, err.Error(), "primary pod name is empty") +} + +func TestGetPrimaryPodAndContainer_PodNotFound(t *testing.T) { + logCtx := &core.LogContext{ + PrimaryPodName: "missing-pod", + Pods: []*core.PodLogContext{ + {PodName: "other-pod"}, + }, + } + + _, _, err := GetPrimaryPodAndContainer(logCtx) + assert.Error(t, err) + assert.Contains(t, err.Error(), "not found in log context") +} + +func TestGetPrimaryPodAndContainer_ContainerNotFound(t *testing.T) { + logCtx := &core.LogContext{ + PrimaryPodName: "my-pod", + Pods: []*core.PodLogContext{ + { + PodName: "my-pod", + PrimaryContainerName: "missing-container", + Containers: []*core.ContainerContext{ + {ContainerName: "other"}, + }, + }, + }, + } + + _, _, err := GetPrimaryPodAndContainer(logCtx) + assert.Error(t, err) + assert.Contains(t, err.Error(), "primary container") +} + +func newTestLogContext(podName, namespace, containerName string) *core.LogContext { + return &core.LogContext{ + PrimaryPodName: podName, + Pods: []*core.PodLogContext{ + { + PodName: podName, + Namespace: namespace, + PrimaryContainerName: containerName, + Containers: []*core.ContainerContext{ + {ContainerName: containerName}, + }, + }, + }, + } +} + +func TestTailLogs_PodNotFound(t *testing.T) { + clientset := fake.NewSimpleClientset() // no pods + + streamer := &K8sLogStreamer{clientset: clientset} + logCtx := newTestLogContext("missing-pod", "default", "main") + + err := streamer.TailLogs(context.Background(), logCtx, nil) + require.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + assert.Contains(t, err.Error(), "not found") +} + +func TestTailLogs_FollowSetBasedOnPodPhase(t *testing.T) { + tests := []struct { + name string + phase corev1.PodPhase + wantFollow bool + }{ + {"running pod should follow", corev1.PodRunning, true}, + {"succeeded pod should not follow", corev1.PodSucceeded, false}, + {"failed pod should not follow", corev1.PodFailed, false}, + {"pending pod should not follow", corev1.PodPending, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + clientset := fake.NewSimpleClientset(&corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-pod", + Namespace: "default", + }, + Status: corev1.PodStatus{ + Phase: tt.phase, + }, + }) + + // Verify we can fetch the pod and the phase is correct. + podObj, err := clientset.CoreV1().Pods("default").Get(context.Background(), "my-pod", metav1.GetOptions{}) + require.NoError(t, err) + assert.Equal(t, tt.phase, podObj.Status.Phase) + + // Verify the follow logic: Follow should only be true when phase is Running. + gotFollow := podObj.Status.Phase == corev1.PodRunning + assert.Equal(t, tt.wantFollow, gotFollow) + }) + } +} diff --git a/dataproxy/logs/log_streamer.go b/dataproxy/logs/log_streamer.go new file mode 100644 index 0000000000..8732754fc7 --- /dev/null +++ b/dataproxy/logs/log_streamer.go @@ -0,0 +1,40 @@ +package logs + +import ( + "context" + "fmt" + + "connectrpc.com/connect" + "github.com/samber/lo" + + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy" +) + +// LogStreamer abstracts log fetching from different backends. +type LogStreamer interface { + TailLogs(ctx context.Context, logContext *core.LogContext, stream *connect.ServerStream[dataproxy.TailLogsResponse]) error +} + +// GetPrimaryPodAndContainer finds the primary pod and container from a LogContext. +func GetPrimaryPodAndContainer(logContext *core.LogContext) (*core.PodLogContext, *core.ContainerContext, error) { + if logContext.GetPrimaryPodName() == "" { + return nil, nil, fmt.Errorf("primary pod name is empty in log context") + } + + pod, found := lo.Find(logContext.GetPods(), func(pod *core.PodLogContext) bool { + return pod.GetPodName() == logContext.GetPrimaryPodName() + }) + if !found { + return nil, nil, fmt.Errorf("primary pod %s not found in log context", logContext.GetPrimaryPodName()) + } + + container, found := lo.Find(pod.GetContainers(), func(c *core.ContainerContext) bool { + return c.GetContainerName() == pod.GetPrimaryContainerName() + }) + if !found { + return nil, nil, fmt.Errorf("primary container %s not found in pod %s", pod.GetPrimaryContainerName(), pod.GetPodName()) + } + + return pod, container, nil +} diff --git a/dataproxy/service/dataproxy_service.go b/dataproxy/service/dataproxy_service.go index 124240d923..edfd49ae23 100644 --- a/dataproxy/service/dataproxy_service.go +++ b/dataproxy/service/dataproxy_service.go @@ -23,6 +23,7 @@ import ( "github.com/flyteorg/flyte/v2/flytestdlib/storage" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/common" flyteIdlCore "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" + "github.com/flyteorg/flyte/v2/dataproxy/logs" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy/dataproxyconnect" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task" @@ -41,16 +42,18 @@ type Service struct { taskClient taskconnect.TaskServiceClient triggerClient triggerconnect.TriggerServiceClient runClient workflowconnect.RunServiceClient + logStreamer logs.LogStreamer } // NewService creates a new DataProxyService instance. -func NewService(cfg config.DataProxyConfig, dataStore *storage.DataStore, taskClient taskconnect.TaskServiceClient, triggerClient triggerconnect.TriggerServiceClient, runClient workflowconnect.RunServiceClient) *Service { +func NewService(cfg config.DataProxyConfig, dataStore *storage.DataStore, taskClient taskconnect.TaskServiceClient, triggerClient triggerconnect.TriggerServiceClient, runClient workflowconnect.RunServiceClient, logStreamer logs.LogStreamer) *Service { return &Service{ cfg: cfg, dataStore: dataStore, taskClient: taskClient, triggerClient: triggerClient, runClient: runClient, + logStreamer: logStreamer, } } @@ -497,6 +500,25 @@ func (s *Service) GetActionData( return connect.NewResponse(resp), nil } +// TailLogs streams logs for an action attempt. +func (s *Service) TailLogs(ctx context.Context, req *connect.Request[dataproxy.TailLogsRequest], stream *connect.ServerStream[dataproxy.TailLogsResponse]) error { + // Get log context from RunService + logCtxResp, err := s.runClient.GetActionLogContext(ctx, connect.NewRequest(&workflow.GetActionLogContextRequest{ + ActionId: req.Msg.GetActionId(), + Attempt: req.Msg.GetAttempt(), + })) + if err != nil { + return err + } + + logContext := logCtxResp.Msg.GetLogContext() + if logContext == nil { + return connect.NewError(connect.CodeNotFound, fmt.Errorf("no log context found")) + } + + return s.logStreamer.TailLogs(ctx, logContext, stream) +} + // hashInputsProto computes a deterministic FNV-64a hash of the serialized inputs. func hashInputsProto(inputs proto.Message) (string, error) { marshaller := proto.MarshalOptions{Deterministic: true} diff --git a/dataproxy/service/dataproxy_service_test.go b/dataproxy/service/dataproxy_service_test.go index a792227c4d..bfba6e48c3 100644 --- a/dataproxy/service/dataproxy_service_test.go +++ b/dataproxy/service/dataproxy_service_test.go @@ -7,6 +7,9 @@ import ( "testing" "time" + "net/http" + "net/http/httptest" + "connectrpc.com/connect" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -21,6 +24,7 @@ import ( "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/common" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy/dataproxyconnect" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow" workflowMocks "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow/workflowconnect/mocks" @@ -100,7 +104,7 @@ func TestCreateUploadLocation(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockStore := setupMockDataStore(t) - service := NewService(cfg, mockStore, nil, nil, nil) + service := NewService(cfg, mockStore, nil, nil, nil, nil) req := &connect.Request[dataproxy.CreateUploadLocationRequest]{ Msg: tt.req, @@ -221,7 +225,7 @@ func TestCheckFileExists(t *testing.T) { mockStore = setupMockDataStoreWithExistingFile(t, tt.existingFileMD5) } - service := NewService(cfg, mockStore, nil, nil, nil) + service := NewService(cfg, mockStore, nil, nil, nil, nil) storagePath := storage.DataReference("s3://test-bucket/uploads/test-project/test-domain/test-root/test-file.txt") err := service.checkFileExists(ctx, storagePath, tt.req) @@ -299,7 +303,7 @@ func TestConstructStoragePath(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockStore := setupMockDataStore(t) - service := NewService(cfg, mockStore, nil, nil, nil) + service := NewService(cfg, mockStore, nil, nil, nil, nil) path, err := service.constructStoragePath(ctx, tt.req) @@ -456,7 +460,7 @@ func TestUploadInputs(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockStore := setupMockDataStoreWithWriteProtobuf(t) - svc := NewService(cfg, mockStore, nil, nil, nil) + svc := NewService(cfg, mockStore, nil, nil, nil, nil) req := &connect.Request[dataproxy.UploadInputsRequest]{ Msg: tt.req, @@ -620,7 +624,7 @@ func TestGetActionData(t *testing.T) { ComposedProtobufStore: mockComposedStore, ReferenceConstructor: &simpleRefConstructor{}, } - svc := NewService(cfg, ds, nil, nil, runClient) + svc := NewService(cfg, ds, nil, nil, runClient, nil) resp, err := svc.GetActionData(ctx, connect.NewRequest(&dataproxy.GetActionDataRequest{ ActionId: actionID, @@ -666,3 +670,158 @@ func setupMockDataStoreWithExistingFile(t *testing.T, contentMD5 string) *storag ReferenceConstructor: &simpleRefConstructor{}, } } + +// mockLogStreamer implements logs.LogStreamer for tests. +type mockLogStreamer struct { + mock.Mock +} + +func (m *mockLogStreamer) TailLogs(ctx context.Context, logContext *core.LogContext, stream *connect.ServerStream[dataproxy.TailLogsResponse]) error { + args := m.Called(ctx, logContext, stream) + return args.Error(0) +} + +func newTailLogsTestClient(t *testing.T, svc *Service) dataproxyconnect.DataProxyServiceClient { + path, handler := dataproxyconnect.NewDataProxyServiceHandler(svc) + mux := http.NewServeMux() + mux.Handle(path, handler) + server := httptest.NewServer(mux) + t.Cleanup(server.Close) + return dataproxyconnect.NewDataProxyServiceClient(http.DefaultClient, server.URL) +} + +func TestTailLogs(t *testing.T) { + actionID := &common.ActionIdentifier{ + Run: &common.RunIdentifier{ + Org: "test-org", Project: "test-project", Domain: "test-domain", Name: "rtest12345", + }, + Name: "a0", + } + + logContext := &core.LogContext{ + PrimaryPodName: "my-pod", + Pods: []*core.PodLogContext{ + {PodName: "my-pod", Namespace: "ns"}, + }, + } + + t.Run("happy path streams a message", func(t *testing.T) { + runClient := workflowMocks.NewRunServiceClient(t) + runClient.EXPECT().GetActionLogContext(mock.Anything, mock.Anything).Return( + connect.NewResponse(&workflow.GetActionLogContextResponse{ + LogContext: logContext, + Cluster: "c1", + }), nil) + + streamer := &mockLogStreamer{} + streamer.On("TailLogs", mock.Anything, logContext, mock.Anything).Run(func(args mock.Arguments) { + stream := args.Get(2).(*connect.ServerStream[dataproxy.TailLogsResponse]) + _ = stream.Send(&dataproxy.TailLogsResponse{}) + }).Return(nil) + + svc := NewService(config.DataProxyConfig{}, nil, nil, nil, runClient, streamer) + client := newTailLogsTestClient(t, svc) + + stream, err := client.TailLogs(context.Background(), connect.NewRequest(&dataproxy.TailLogsRequest{ + ActionId: actionID, + Attempt: 1, + })) + assert.NoError(t, err) + + assert.True(t, stream.Receive()) + assert.NotNil(t, stream.Msg()) + assert.False(t, stream.Receive()) + assert.NoError(t, stream.Err()) + + streamer.AssertExpectations(t) + }) + + t.Run("GetActionLogContext error propagates", func(t *testing.T) { + runClient := workflowMocks.NewRunServiceClient(t) + runClient.EXPECT().GetActionLogContext(mock.Anything, mock.Anything).Return( + nil, connect.NewError(connect.CodeNotFound, assertErr("action missing"))) + + streamer := &mockLogStreamer{} + svc := NewService(config.DataProxyConfig{}, nil, nil, nil, runClient, streamer) + client := newTailLogsTestClient(t, svc) + + stream, err := client.TailLogs(context.Background(), connect.NewRequest(&dataproxy.TailLogsRequest{ + ActionId: actionID, + Attempt: 1, + })) + assert.NoError(t, err) + assert.False(t, stream.Receive()) + assert.Error(t, stream.Err()) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(stream.Err())) + + streamer.AssertNotCalled(t, "TailLogs", mock.Anything, mock.Anything, mock.Anything) + }) + + t.Run("nil log context returns NotFound", func(t *testing.T) { + runClient := workflowMocks.NewRunServiceClient(t) + runClient.EXPECT().GetActionLogContext(mock.Anything, mock.Anything).Return( + connect.NewResponse(&workflow.GetActionLogContextResponse{ + LogContext: nil, + }), nil) + + streamer := &mockLogStreamer{} + svc := NewService(config.DataProxyConfig{}, nil, nil, nil, runClient, streamer) + client := newTailLogsTestClient(t, svc) + + stream, err := client.TailLogs(context.Background(), connect.NewRequest(&dataproxy.TailLogsRequest{ + ActionId: actionID, + Attempt: 1, + })) + assert.NoError(t, err) + assert.False(t, stream.Receive()) + assert.Error(t, stream.Err()) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(stream.Err())) + + streamer.AssertNotCalled(t, "TailLogs", mock.Anything, mock.Anything, mock.Anything) + }) + + t.Run("streamer error propagates", func(t *testing.T) { + runClient := workflowMocks.NewRunServiceClient(t) + runClient.EXPECT().GetActionLogContext(mock.Anything, mock.Anything).Return( + connect.NewResponse(&workflow.GetActionLogContextResponse{LogContext: logContext}), nil) + + streamer := &mockLogStreamer{} + streamer.On("TailLogs", mock.Anything, logContext, mock.Anything).Return( + connect.NewError(connect.CodeInternal, assertErr("streamer boom"))) + + svc := NewService(config.DataProxyConfig{}, nil, nil, nil, runClient, streamer) + client := newTailLogsTestClient(t, svc) + + stream, err := client.TailLogs(context.Background(), connect.NewRequest(&dataproxy.TailLogsRequest{ + ActionId: actionID, + Attempt: 1, + })) + assert.NoError(t, err) + assert.False(t, stream.Receive()) + assert.Error(t, stream.Err()) + assert.Equal(t, connect.CodeInternal, connect.CodeOf(stream.Err())) + + streamer.AssertExpectations(t) + }) + + t.Run("passes action_id and attempt to RunService", func(t *testing.T) { + runClient := workflowMocks.NewRunServiceClient(t) + runClient.EXPECT().GetActionLogContext(mock.Anything, mock.MatchedBy(func(r *connect.Request[workflow.GetActionLogContextRequest]) bool { + return proto.Equal(r.Msg.GetActionId(), actionID) && r.Msg.GetAttempt() == 3 + })).Return(connect.NewResponse(&workflow.GetActionLogContextResponse{LogContext: logContext}), nil) + + streamer := &mockLogStreamer{} + streamer.On("TailLogs", mock.Anything, logContext, mock.Anything).Return(nil) + + svc := NewService(config.DataProxyConfig{}, nil, nil, nil, runClient, streamer) + client := newTailLogsTestClient(t, svc) + + stream, err := client.TailLogs(context.Background(), connect.NewRequest(&dataproxy.TailLogsRequest{ + ActionId: actionID, + Attempt: 3, + })) + assert.NoError(t, err) + assert.False(t, stream.Receive()) + assert.NoError(t, stream.Err()) + }) +} diff --git a/dataproxy/setup.go b/dataproxy/setup.go index 729e36b57a..4652d997fe 100644 --- a/dataproxy/setup.go +++ b/dataproxy/setup.go @@ -8,6 +8,7 @@ import ( "github.com/flyteorg/flyte/v2/dataproxy/config" "github.com/flyteorg/flyte/v2/dataproxy/service" + "github.com/flyteorg/flyte/v2/dataproxy/logs" "github.com/flyteorg/flyte/v2/flytestdlib/app" "github.com/flyteorg/flyte/v2/flytestdlib/logger" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/cluster/clusterconnect" @@ -26,7 +27,16 @@ func Setup(ctx context.Context, sc *app.SetupContext) error { triggerClient := triggerconnect.NewTriggerServiceClient(http.DefaultClient, baseURL) runClient := workflowconnect.NewRunServiceClient(http.DefaultClient, baseURL) - svc := service.NewService(*cfg, sc.DataStore, taskClient, triggerClient, runClient) + var logStreamer logs.LogStreamer + if sc.K8sConfig != nil { + var err error + logStreamer, err = logs.NewK8sLogStreamer(sc.K8sConfig) + if err != nil { + return fmt.Errorf("failed to create k8s log streamer: %w", err) + } + } + + svc := service.NewService(*cfg, sc.DataStore, taskClient, triggerClient, runClient, logStreamer) path, handler := dataproxyconnect.NewDataProxyServiceHandler(svc) sc.Mux.Handle(path, handler) diff --git a/flyteidl2/dataproxy/dataproxy_service.proto b/flyteidl2/dataproxy/dataproxy_service.proto index c6129877f9..d7840f9a92 100644 --- a/flyteidl2/dataproxy/dataproxy_service.proto +++ b/flyteidl2/dataproxy/dataproxy_service.proto @@ -6,6 +6,7 @@ import "buf/validate/validate.proto"; import "flyteidl2/app/app_definition.proto"; import "flyteidl2/common/identifier.proto"; import "flyteidl2/common/run.proto"; +import "flyteidl2/logs/dataplane/payload.proto"; import "flyteidl2/task/common.proto"; import "flyteidl2/task/task_definition.proto"; import "google/protobuf/duration.proto"; @@ -36,6 +37,9 @@ service DataProxyService { rpc GetActionData(GetActionDataRequest) returns (GetActionDataResponse) { option idempotency_level = NO_SIDE_EFFECTS; } + + // Stream logs for an action attempt. + rpc TailLogs(TailLogsRequest) returns (stream TailLogsResponse) {} } // CreateUploadLocationRequest specifies the request for the CreateUploadLocation API. @@ -190,3 +194,24 @@ message GetActionDataResponse { // Outputs for the action. task.Outputs outputs = 2; } + +// Request message for tailing logs. +message TailLogsRequest { + // The action id. + common.ActionIdentifier action_id = 1 [(buf.validate.field).required = true]; + + // The attempt number. + uint32 attempt = 2 [(buf.validate.field).uint32.gt = 0]; +} + +// Reponse message for tailing logs. +message TailLogsResponse { + // A batch of logs. + message Logs { + // Structured log lines. + repeated flyteidl2.logs.dataplane.LogLine lines = 1; + } + + // One or more batches of logs. + repeated Logs logs = 1; +} diff --git a/flyteidl2/workflow/run_logs_service.proto b/flyteidl2/workflow/run_logs_service.proto index 3b9438fe33..162ab959b2 100644 --- a/flyteidl2/workflow/run_logs_service.proto +++ b/flyteidl2/workflow/run_logs_service.proto @@ -10,7 +10,9 @@ option go_package = "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow"; // RunLogsService provides an interface for streaming logs. service RunLogsService { + // Deprecated: Use DataProxyService.TailLogs instead. rpc TailLogs(TailLogsRequest) returns (stream TailLogsResponse) { + option deprecated = true; option idempotency_level = NO_SIDE_EFFECTS; } } diff --git a/flyteidl2/workflow/run_service.proto b/flyteidl2/workflow/run_service.proto index 82a8c3103f..10014fd5b4 100644 --- a/flyteidl2/workflow/run_service.proto +++ b/flyteidl2/workflow/run_service.proto @@ -6,6 +6,7 @@ import "buf/validate/validate.proto"; import "flyteidl2/common/identifier.proto"; import "flyteidl2/common/list.proto"; import "flyteidl2/common/run.proto"; +import "flyteidl2/core/execution.proto"; import "flyteidl2/task/common.proto"; import "flyteidl2/task/run.proto"; import "flyteidl2/task/task_definition.proto"; @@ -75,6 +76,11 @@ service RunService { rpc GetActionDataURIs(GetActionDataURIsRequest) returns (GetActionDataURIsResponse) { option idempotency_level = NO_SIDE_EFFECTS; } + + // Get the logging context (pod name, namespace, cluster) for an action attempt. + rpc GetActionLogContext(GetActionLogContextRequest) returns (GetActionLogContextResponse) { + option idempotency_level = NO_SIDE_EFFECTS; + } } // Request message for creating a run. @@ -214,6 +220,24 @@ message GetActionDataURIsResponse { string outputs_uri = 2; } +// Request message for getting action log context. +message GetActionLogContextRequest { + // Action to query. + common.ActionIdentifier action_id = 1 [(buf.validate.field).required = true]; + + // The attempt number. + uint32 attempt = 2 [(buf.validate.field).uint32.gt = 0]; +} + +// Response message for getting action log context. +message GetActionLogContextResponse { + // The logging context for the action attempt. + flyteidl2.core.LogContext log_context = 1; + + // The cluster where the action attempt is running. + string cluster = 2; +} + // Request message for listing runs. message ListRunsRequest { reserved 3, 5; // Deprecated diff --git a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go index 29c84ec0a8..7560e48f98 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go +++ b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go @@ -10,6 +10,7 @@ import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" app "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/app" common "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/common" + dataplane "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/logs/dataplane" task "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -830,6 +831,162 @@ func (x *GetActionDataResponse) GetOutputs() *task.Outputs { return nil } +// Request message for tailing logs. +type TailLogsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The action id. + ActionId *common.ActionIdentifier `protobuf:"bytes,1,opt,name=action_id,json=actionId,proto3" json:"action_id,omitempty"` + // The attempt number. + Attempt uint32 `protobuf:"varint,2,opt,name=attempt,proto3" json:"attempt,omitempty"` +} + +func (x *TailLogsRequest) Reset() { + *x = TailLogsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TailLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TailLogsRequest) ProtoMessage() {} + +func (x *TailLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TailLogsRequest.ProtoReflect.Descriptor instead. +func (*TailLogsRequest) Descriptor() ([]byte, []int) { + return file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP(), []int{9} +} + +func (x *TailLogsRequest) GetActionId() *common.ActionIdentifier { + if x != nil { + return x.ActionId + } + return nil +} + +func (x *TailLogsRequest) GetAttempt() uint32 { + if x != nil { + return x.Attempt + } + return 0 +} + +// Reponse message for tailing logs. +type TailLogsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // One or more batches of logs. + Logs []*TailLogsResponse_Logs `protobuf:"bytes,1,rep,name=logs,proto3" json:"logs,omitempty"` +} + +func (x *TailLogsResponse) Reset() { + *x = TailLogsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TailLogsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TailLogsResponse) ProtoMessage() {} + +func (x *TailLogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TailLogsResponse.ProtoReflect.Descriptor instead. +func (*TailLogsResponse) Descriptor() ([]byte, []int) { + return file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP(), []int{10} +} + +func (x *TailLogsResponse) GetLogs() []*TailLogsResponse_Logs { + if x != nil { + return x.Logs + } + return nil +} + +// A batch of logs. +type TailLogsResponse_Logs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Structured log lines. + Lines []*dataplane.LogLine `protobuf:"bytes,1,rep,name=lines,proto3" json:"lines,omitempty"` +} + +func (x *TailLogsResponse_Logs) Reset() { + *x = TailLogsResponse_Logs{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TailLogsResponse_Logs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TailLogsResponse_Logs) ProtoMessage() {} + +func (x *TailLogsResponse_Logs) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TailLogsResponse_Logs.ProtoReflect.Descriptor instead. +func (*TailLogsResponse_Logs) Descriptor() ([]byte, []int) { + return file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP(), []int{10, 0} +} + +func (x *TailLogsResponse_Logs) GetLines() []*dataplane.LogLine { + if x != nil { + return x.Lines + } + return nil +} + var File_flyteidl2_dataproxy_dataproxy_service_proto protoreflect.FileDescriptor var file_flyteidl2_dataproxy_dataproxy_service_proto_rawDesc = []byte{ @@ -845,192 +1002,218 @@ var file_flyteidl2_dataproxy_dataproxy_service_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, - 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x02, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x74, 0x6f, 0x1a, 0x26, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x6c, 0x6f, + 0x67, 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, + 0x02, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, + 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x28, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x7a, 0x02, 0x68, 0x10, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, + 0x64, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, + 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x64, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, + 0x72, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xad, 0x02, 0x0a, 0x1c, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x41, 0x74, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, - 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, - 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, - 0x12, 0x28, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xba, 0x48, 0x04, 0x7a, 0x02, 0x68, 0x10, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, - 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x37, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, - 0x64, 0x35, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x15, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xad, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, - 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, - 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x58, 0x0a, 0x07, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x99, 0x03, 0x0a, 0x13, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x75, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x72, 0x75, - 0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x74, 0x61, - 0x73, 0x6b, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, - 0x63, 0x48, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, - 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, - 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x73, 0x42, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0d, - 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x6e, 0x0a, - 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x14, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, - 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, - 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, - 0x0d, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, - 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x80, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x49, 0x6e, 0x12, 0x57, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, - 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x68, 0x0a, 0x1a, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x70, 0x72, 0x65, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, + 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x99, 0x03, 0x0a, 0x13, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, + 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, + 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, + 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, + 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, + 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x12, + 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x05, + 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x6e, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, + 0x14, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, + 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, + 0x22, 0x80, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, + 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, + 0x20, 0x00, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x57, 0x0a, 0x11, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, + 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x05, 0xba, 0x48, + 0x02, 0x08, 0x01, 0x22, 0x68, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, + 0x75, 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x0d, + 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x5f, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7a, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, + 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x7d, 0x0a, 0x0f, 0x54, 0x61, + 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, - 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, - 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, - 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x2a, 0x66, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x41, - 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x02, 0x32, 0xde, 0x03, 0x0a, 0x10, 0x44, - 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x7d, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, + 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x10, 0x54, 0x61, + 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x1a, 0x3f, + 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2a, + 0x66, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x54, 0x49, + 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, + 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x02, 0x32, 0xbb, 0x04, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, - 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x28, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x0c, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, - 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, + 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x77, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x08, 0x54, 0x61, 0x69, 0x6c, + 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, + 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xd8, 0x01, 0x0a, 0x17, - 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, - 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, - 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, 0x02, 0x03, 0x46, 0x44, - 0x58, 0xaa, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xe2, 0x02, 0x1f, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x14, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x44, 0x61, 0x74, - 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0xd8, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, + 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, + 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, 0x02, 0x03, 0x46, 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, + 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xe2, 0x02, 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1046,7 +1229,7 @@ func file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP() []byte { } var file_flyteidl2_dataproxy_dataproxy_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_flyteidl2_dataproxy_dataproxy_service_proto_goTypes = []interface{}{ (ArtifactType)(0), // 0: flyteidl2.dataproxy.ArtifactType (*CreateUploadLocationRequest)(nil), // 1: flyteidl2.dataproxy.CreateUploadLocationRequest @@ -1058,55 +1241,64 @@ var file_flyteidl2_dataproxy_dataproxy_service_proto_goTypes = []interface{}{ (*CreateDownloadLinkResponse)(nil), // 7: flyteidl2.dataproxy.CreateDownloadLinkResponse (*GetActionDataRequest)(nil), // 8: flyteidl2.dataproxy.GetActionDataRequest (*GetActionDataResponse)(nil), // 9: flyteidl2.dataproxy.GetActionDataResponse - nil, // 10: flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry - (*durationpb.Duration)(nil), // 11: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp - (*common.RunIdentifier)(nil), // 13: flyteidl2.common.RunIdentifier - (*common.ProjectIdentifier)(nil), // 14: flyteidl2.common.ProjectIdentifier - (*task.TaskIdentifier)(nil), // 15: flyteidl2.task.TaskIdentifier - (*task.TaskSpec)(nil), // 16: flyteidl2.task.TaskSpec - (*common.TriggerName)(nil), // 17: flyteidl2.common.TriggerName - (*task.Inputs)(nil), // 18: flyteidl2.task.Inputs - (*common.OffloadedInputData)(nil), // 19: flyteidl2.common.OffloadedInputData - (*common.ActionAttemptIdentifier)(nil), // 20: flyteidl2.common.ActionAttemptIdentifier - (*app.Identifier)(nil), // 21: flyteidl2.app.Identifier - (*common.ActionIdentifier)(nil), // 22: flyteidl2.common.ActionIdentifier - (*task.Outputs)(nil), // 23: flyteidl2.task.Outputs + (*TailLogsRequest)(nil), // 10: flyteidl2.dataproxy.TailLogsRequest + (*TailLogsResponse)(nil), // 11: flyteidl2.dataproxy.TailLogsResponse + nil, // 12: flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry + (*TailLogsResponse_Logs)(nil), // 13: flyteidl2.dataproxy.TailLogsResponse.Logs + (*durationpb.Duration)(nil), // 14: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp + (*common.RunIdentifier)(nil), // 16: flyteidl2.common.RunIdentifier + (*common.ProjectIdentifier)(nil), // 17: flyteidl2.common.ProjectIdentifier + (*task.TaskIdentifier)(nil), // 18: flyteidl2.task.TaskIdentifier + (*task.TaskSpec)(nil), // 19: flyteidl2.task.TaskSpec + (*common.TriggerName)(nil), // 20: flyteidl2.common.TriggerName + (*task.Inputs)(nil), // 21: flyteidl2.task.Inputs + (*common.OffloadedInputData)(nil), // 22: flyteidl2.common.OffloadedInputData + (*common.ActionAttemptIdentifier)(nil), // 23: flyteidl2.common.ActionAttemptIdentifier + (*app.Identifier)(nil), // 24: flyteidl2.app.Identifier + (*common.ActionIdentifier)(nil), // 25: flyteidl2.common.ActionIdentifier + (*task.Outputs)(nil), // 26: flyteidl2.task.Outputs + (*dataplane.LogLine)(nil), // 27: flyteidl2.logs.dataplane.LogLine } var file_flyteidl2_dataproxy_dataproxy_service_proto_depIdxs = []int32{ - 11, // 0: flyteidl2.dataproxy.CreateUploadLocationRequest.expires_in:type_name -> google.protobuf.Duration - 12, // 1: flyteidl2.dataproxy.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp - 10, // 2: flyteidl2.dataproxy.CreateUploadLocationResponse.headers:type_name -> flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry - 13, // 3: flyteidl2.dataproxy.UploadInputsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 14, // 4: flyteidl2.dataproxy.UploadInputsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 15, // 5: flyteidl2.dataproxy.UploadInputsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 16, // 6: flyteidl2.dataproxy.UploadInputsRequest.task_spec:type_name -> flyteidl2.task.TaskSpec - 17, // 7: flyteidl2.dataproxy.UploadInputsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName - 18, // 8: flyteidl2.dataproxy.UploadInputsRequest.inputs:type_name -> flyteidl2.task.Inputs - 19, // 9: flyteidl2.dataproxy.UploadInputsResponse.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData - 12, // 10: flyteidl2.dataproxy.PreSignedURLs.expires_at:type_name -> google.protobuf.Timestamp + 14, // 0: flyteidl2.dataproxy.CreateUploadLocationRequest.expires_in:type_name -> google.protobuf.Duration + 15, // 1: flyteidl2.dataproxy.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp + 12, // 2: flyteidl2.dataproxy.CreateUploadLocationResponse.headers:type_name -> flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry + 16, // 3: flyteidl2.dataproxy.UploadInputsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 17, // 4: flyteidl2.dataproxy.UploadInputsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 18, // 5: flyteidl2.dataproxy.UploadInputsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 19, // 6: flyteidl2.dataproxy.UploadInputsRequest.task_spec:type_name -> flyteidl2.task.TaskSpec + 20, // 7: flyteidl2.dataproxy.UploadInputsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName + 21, // 8: flyteidl2.dataproxy.UploadInputsRequest.inputs:type_name -> flyteidl2.task.Inputs + 22, // 9: flyteidl2.dataproxy.UploadInputsResponse.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData + 15, // 10: flyteidl2.dataproxy.PreSignedURLs.expires_at:type_name -> google.protobuf.Timestamp 0, // 11: flyteidl2.dataproxy.CreateDownloadLinkRequest.artifact_type:type_name -> flyteidl2.dataproxy.ArtifactType - 11, // 12: flyteidl2.dataproxy.CreateDownloadLinkRequest.expires_in:type_name -> google.protobuf.Duration - 20, // 13: flyteidl2.dataproxy.CreateDownloadLinkRequest.action_attempt_id:type_name -> flyteidl2.common.ActionAttemptIdentifier - 21, // 14: flyteidl2.dataproxy.CreateDownloadLinkRequest.app_id:type_name -> flyteidl2.app.Identifier - 15, // 15: flyteidl2.dataproxy.CreateDownloadLinkRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 14, // 12: flyteidl2.dataproxy.CreateDownloadLinkRequest.expires_in:type_name -> google.protobuf.Duration + 23, // 13: flyteidl2.dataproxy.CreateDownloadLinkRequest.action_attempt_id:type_name -> flyteidl2.common.ActionAttemptIdentifier + 24, // 14: flyteidl2.dataproxy.CreateDownloadLinkRequest.app_id:type_name -> flyteidl2.app.Identifier + 18, // 15: flyteidl2.dataproxy.CreateDownloadLinkRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier 5, // 16: flyteidl2.dataproxy.CreateDownloadLinkResponse.pre_signed_urls:type_name -> flyteidl2.dataproxy.PreSignedURLs - 22, // 17: flyteidl2.dataproxy.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 18, // 18: flyteidl2.dataproxy.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs - 23, // 19: flyteidl2.dataproxy.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs - 1, // 20: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:input_type -> flyteidl2.dataproxy.CreateUploadLocationRequest - 3, // 21: flyteidl2.dataproxy.DataProxyService.UploadInputs:input_type -> flyteidl2.dataproxy.UploadInputsRequest - 6, // 22: flyteidl2.dataproxy.DataProxyService.CreateDownloadLink:input_type -> flyteidl2.dataproxy.CreateDownloadLinkRequest - 8, // 23: flyteidl2.dataproxy.DataProxyService.GetActionData:input_type -> flyteidl2.dataproxy.GetActionDataRequest - 2, // 24: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:output_type -> flyteidl2.dataproxy.CreateUploadLocationResponse - 4, // 25: flyteidl2.dataproxy.DataProxyService.UploadInputs:output_type -> flyteidl2.dataproxy.UploadInputsResponse - 7, // 26: flyteidl2.dataproxy.DataProxyService.CreateDownloadLink:output_type -> flyteidl2.dataproxy.CreateDownloadLinkResponse - 9, // 27: flyteidl2.dataproxy.DataProxyService.GetActionData:output_type -> flyteidl2.dataproxy.GetActionDataResponse - 24, // [24:28] is the sub-list for method output_type - 20, // [20:24] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 25, // 17: flyteidl2.dataproxy.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 21, // 18: flyteidl2.dataproxy.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs + 26, // 19: flyteidl2.dataproxy.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs + 25, // 20: flyteidl2.dataproxy.TailLogsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 13, // 21: flyteidl2.dataproxy.TailLogsResponse.logs:type_name -> flyteidl2.dataproxy.TailLogsResponse.Logs + 27, // 22: flyteidl2.dataproxy.TailLogsResponse.Logs.lines:type_name -> flyteidl2.logs.dataplane.LogLine + 1, // 23: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:input_type -> flyteidl2.dataproxy.CreateUploadLocationRequest + 3, // 24: flyteidl2.dataproxy.DataProxyService.UploadInputs:input_type -> flyteidl2.dataproxy.UploadInputsRequest + 6, // 25: flyteidl2.dataproxy.DataProxyService.CreateDownloadLink:input_type -> flyteidl2.dataproxy.CreateDownloadLinkRequest + 8, // 26: flyteidl2.dataproxy.DataProxyService.GetActionData:input_type -> flyteidl2.dataproxy.GetActionDataRequest + 10, // 27: flyteidl2.dataproxy.DataProxyService.TailLogs:input_type -> flyteidl2.dataproxy.TailLogsRequest + 2, // 28: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:output_type -> flyteidl2.dataproxy.CreateUploadLocationResponse + 4, // 29: flyteidl2.dataproxy.DataProxyService.UploadInputs:output_type -> flyteidl2.dataproxy.UploadInputsResponse + 7, // 30: flyteidl2.dataproxy.DataProxyService.CreateDownloadLink:output_type -> flyteidl2.dataproxy.CreateDownloadLinkResponse + 9, // 31: flyteidl2.dataproxy.DataProxyService.GetActionData:output_type -> flyteidl2.dataproxy.GetActionDataResponse + 11, // 32: flyteidl2.dataproxy.DataProxyService.TailLogs:output_type -> flyteidl2.dataproxy.TailLogsResponse + 28, // [28:33] is the sub-list for method output_type + 23, // [23:28] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name } func init() { file_flyteidl2_dataproxy_dataproxy_service_proto_init() } @@ -1223,6 +1415,42 @@ func file_flyteidl2_dataproxy_dataproxy_service_proto_init() { return nil } } + file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TailLogsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TailLogsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TailLogsResponse_Logs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[2].OneofWrappers = []interface{}{ (*UploadInputsRequest_RunId)(nil), @@ -1242,7 +1470,7 @@ func file_flyteidl2_dataproxy_dataproxy_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl2_dataproxy_dataproxy_service_proto_rawDesc, NumEnums: 1, - NumMessages: 10, + NumMessages: 13, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go index 35b0e6ad26..e4a97e7710 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go +++ b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go @@ -1608,3 +1608,404 @@ var _ interface { Cause() error ErrorName() string } = GetActionDataResponseValidationError{} + +// Validate checks the field values on TailLogsRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *TailLogsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TailLogsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TailLogsRequestMultiError, or nil if none found. +func (m *TailLogsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *TailLogsRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetActionId()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TailLogsRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TailLogsRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetActionId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TailLogsRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Attempt + + if len(errors) > 0 { + return TailLogsRequestMultiError(errors) + } + + return nil +} + +// TailLogsRequestMultiError is an error wrapping multiple validation errors +// returned by TailLogsRequest.ValidateAll() if the designated constraints +// aren't met. +type TailLogsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TailLogsRequestMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TailLogsRequestMultiError) AllErrors() []error { return m } + +// TailLogsRequestValidationError is the validation error returned by +// TailLogsRequest.Validate if the designated constraints aren't met. +type TailLogsRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e TailLogsRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e TailLogsRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e TailLogsRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e TailLogsRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e TailLogsRequestValidationError) ErrorName() string { return "TailLogsRequestValidationError" } + +// Error satisfies the builtin error interface +func (e TailLogsRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sTailLogsRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = TailLogsRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = TailLogsRequestValidationError{} + +// Validate checks the field values on TailLogsResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *TailLogsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TailLogsResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TailLogsResponseMultiError, or nil if none found. +func (m *TailLogsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *TailLogsResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetLogs() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TailLogsResponseValidationError{ + field: fmt.Sprintf("Logs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TailLogsResponseValidationError{ + field: fmt.Sprintf("Logs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TailLogsResponseValidationError{ + field: fmt.Sprintf("Logs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return TailLogsResponseMultiError(errors) + } + + return nil +} + +// TailLogsResponseMultiError is an error wrapping multiple validation errors +// returned by TailLogsResponse.ValidateAll() if the designated constraints +// aren't met. +type TailLogsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TailLogsResponseMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TailLogsResponseMultiError) AllErrors() []error { return m } + +// TailLogsResponseValidationError is the validation error returned by +// TailLogsResponse.Validate if the designated constraints aren't met. +type TailLogsResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e TailLogsResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e TailLogsResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e TailLogsResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e TailLogsResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e TailLogsResponseValidationError) ErrorName() string { return "TailLogsResponseValidationError" } + +// Error satisfies the builtin error interface +func (e TailLogsResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sTailLogsResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = TailLogsResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = TailLogsResponseValidationError{} + +// Validate checks the field values on TailLogsResponse_Logs with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *TailLogsResponse_Logs) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TailLogsResponse_Logs with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TailLogsResponse_LogsMultiError, or nil if none found. +func (m *TailLogsResponse_Logs) ValidateAll() error { + return m.validate(true) +} + +func (m *TailLogsResponse_Logs) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetLines() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TailLogsResponse_LogsValidationError{ + field: fmt.Sprintf("Lines[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TailLogsResponse_LogsValidationError{ + field: fmt.Sprintf("Lines[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TailLogsResponse_LogsValidationError{ + field: fmt.Sprintf("Lines[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return TailLogsResponse_LogsMultiError(errors) + } + + return nil +} + +// TailLogsResponse_LogsMultiError is an error wrapping multiple validation +// errors returned by TailLogsResponse_Logs.ValidateAll() if the designated +// constraints aren't met. +type TailLogsResponse_LogsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TailLogsResponse_LogsMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TailLogsResponse_LogsMultiError) AllErrors() []error { return m } + +// TailLogsResponse_LogsValidationError is the validation error returned by +// TailLogsResponse_Logs.Validate if the designated constraints aren't met. +type TailLogsResponse_LogsValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e TailLogsResponse_LogsValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e TailLogsResponse_LogsValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e TailLogsResponse_LogsValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e TailLogsResponse_LogsValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e TailLogsResponse_LogsValidationError) ErrorName() string { + return "TailLogsResponse_LogsValidationError" +} + +// Error satisfies the builtin error interface +func (e TailLogsResponse_LogsValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sTailLogsResponse_Logs.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = TailLogsResponse_LogsValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = TailLogsResponse_LogsValidationError{} diff --git a/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go b/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go index 49ab712a59..4044d8ef63 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go +++ b/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go @@ -23,6 +23,7 @@ const ( DataProxyService_UploadInputs_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/UploadInputs" DataProxyService_CreateDownloadLink_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/CreateDownloadLink" DataProxyService_GetActionData_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/GetActionData" + DataProxyService_TailLogs_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/TailLogs" ) // DataProxyServiceClient is the client API for DataProxyService service. @@ -36,6 +37,8 @@ type DataProxyServiceClient interface { CreateDownloadLink(ctx context.Context, in *CreateDownloadLinkRequest, opts ...grpc.CallOption) (*CreateDownloadLinkResponse, error) // Get input and output data for an action. GetActionData(ctx context.Context, in *GetActionDataRequest, opts ...grpc.CallOption) (*GetActionDataResponse, error) + // Stream logs for an action attempt. + TailLogs(ctx context.Context, in *TailLogsRequest, opts ...grpc.CallOption) (DataProxyService_TailLogsClient, error) } type dataProxyServiceClient struct { @@ -82,6 +85,38 @@ func (c *dataProxyServiceClient) GetActionData(ctx context.Context, in *GetActio return out, nil } +func (c *dataProxyServiceClient) TailLogs(ctx context.Context, in *TailLogsRequest, opts ...grpc.CallOption) (DataProxyService_TailLogsClient, error) { + stream, err := c.cc.NewStream(ctx, &DataProxyService_ServiceDesc.Streams[0], DataProxyService_TailLogs_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &dataProxyServiceTailLogsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DataProxyService_TailLogsClient interface { + Recv() (*TailLogsResponse, error) + grpc.ClientStream +} + +type dataProxyServiceTailLogsClient struct { + grpc.ClientStream +} + +func (x *dataProxyServiceTailLogsClient) Recv() (*TailLogsResponse, error) { + m := new(TailLogsResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // DataProxyServiceServer is the server API for DataProxyService service. // All implementations should embed UnimplementedDataProxyServiceServer // for forward compatibility @@ -93,6 +128,8 @@ type DataProxyServiceServer interface { CreateDownloadLink(context.Context, *CreateDownloadLinkRequest) (*CreateDownloadLinkResponse, error) // Get input and output data for an action. GetActionData(context.Context, *GetActionDataRequest) (*GetActionDataResponse, error) + // Stream logs for an action attempt. + TailLogs(*TailLogsRequest, DataProxyService_TailLogsServer) error } // UnimplementedDataProxyServiceServer should be embedded to have forward compatible implementations. @@ -111,6 +148,9 @@ func (UnimplementedDataProxyServiceServer) CreateDownloadLink(context.Context, * func (UnimplementedDataProxyServiceServer) GetActionData(context.Context, *GetActionDataRequest) (*GetActionDataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetActionData not implemented") } +func (UnimplementedDataProxyServiceServer) TailLogs(*TailLogsRequest, DataProxyService_TailLogsServer) error { + return status.Errorf(codes.Unimplemented, "method TailLogs not implemented") +} // UnsafeDataProxyServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to DataProxyServiceServer will @@ -195,6 +235,27 @@ func _DataProxyService_GetActionData_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _DataProxyService_TailLogs_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(TailLogsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(DataProxyServiceServer).TailLogs(m, &dataProxyServiceTailLogsServer{stream}) +} + +type DataProxyService_TailLogsServer interface { + Send(*TailLogsResponse) error + grpc.ServerStream +} + +type dataProxyServiceTailLogsServer struct { + grpc.ServerStream +} + +func (x *dataProxyServiceTailLogsServer) Send(m *TailLogsResponse) error { + return x.ServerStream.SendMsg(m) +} + // DataProxyService_ServiceDesc is the grpc.ServiceDesc for DataProxyService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -219,6 +280,12 @@ var DataProxyService_ServiceDesc = grpc.ServiceDesc{ Handler: _DataProxyService_GetActionData_Handler, }, }, - Streams: []grpc.StreamDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "TailLogs", + Handler: _DataProxyService_TailLogs_Handler, + ServerStreams: true, + }, + }, Metadata: "flyteidl2/dataproxy/dataproxy_service.proto", } diff --git a/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go b/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go index 7e410d5a70..87c84d0329 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go +++ b/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go @@ -45,6 +45,9 @@ const ( // DataProxyServiceGetActionDataProcedure is the fully-qualified name of the DataProxyService's // GetActionData RPC. DataProxyServiceGetActionDataProcedure = "/flyteidl2.dataproxy.DataProxyService/GetActionData" + // DataProxyServiceTailLogsProcedure is the fully-qualified name of the DataProxyService's TailLogs + // RPC. + DataProxyServiceTailLogsProcedure = "/flyteidl2.dataproxy.DataProxyService/TailLogs" ) // These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. @@ -54,6 +57,7 @@ var ( dataProxyServiceUploadInputsMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("UploadInputs") dataProxyServiceCreateDownloadLinkMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("CreateDownloadLink") dataProxyServiceGetActionDataMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("GetActionData") + dataProxyServiceTailLogsMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("TailLogs") ) // DataProxyServiceClient is a client for the flyteidl2.dataproxy.DataProxyService service. @@ -65,6 +69,8 @@ type DataProxyServiceClient interface { CreateDownloadLink(context.Context, *connect.Request[dataproxy.CreateDownloadLinkRequest]) (*connect.Response[dataproxy.CreateDownloadLinkResponse], error) // Get input and output data for an action. GetActionData(context.Context, *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) + // Stream logs for an action attempt. + TailLogs(context.Context, *connect.Request[dataproxy.TailLogsRequest]) (*connect.ServerStreamForClient[dataproxy.TailLogsResponse], error) } // NewDataProxyServiceClient constructs a client for the flyteidl2.dataproxy.DataProxyService @@ -102,6 +108,12 @@ func NewDataProxyServiceClient(httpClient connect.HTTPClient, baseURL string, op connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), + tailLogs: connect.NewClient[dataproxy.TailLogsRequest, dataproxy.TailLogsResponse]( + httpClient, + baseURL+DataProxyServiceTailLogsProcedure, + connect.WithSchema(dataProxyServiceTailLogsMethodDescriptor), + connect.WithClientOptions(opts...), + ), } } @@ -111,6 +123,7 @@ type dataProxyServiceClient struct { uploadInputs *connect.Client[dataproxy.UploadInputsRequest, dataproxy.UploadInputsResponse] createDownloadLink *connect.Client[dataproxy.CreateDownloadLinkRequest, dataproxy.CreateDownloadLinkResponse] getActionData *connect.Client[dataproxy.GetActionDataRequest, dataproxy.GetActionDataResponse] + tailLogs *connect.Client[dataproxy.TailLogsRequest, dataproxy.TailLogsResponse] } // CreateUploadLocation calls flyteidl2.dataproxy.DataProxyService.CreateUploadLocation. @@ -133,6 +146,11 @@ func (c *dataProxyServiceClient) GetActionData(ctx context.Context, req *connect return c.getActionData.CallUnary(ctx, req) } +// TailLogs calls flyteidl2.dataproxy.DataProxyService.TailLogs. +func (c *dataProxyServiceClient) TailLogs(ctx context.Context, req *connect.Request[dataproxy.TailLogsRequest]) (*connect.ServerStreamForClient[dataproxy.TailLogsResponse], error) { + return c.tailLogs.CallServerStream(ctx, req) +} + // DataProxyServiceHandler is an implementation of the flyteidl2.dataproxy.DataProxyService service. type DataProxyServiceHandler interface { // CreateUploadLocation generates a signed URL for uploading data to the configured storage backend. @@ -142,6 +160,8 @@ type DataProxyServiceHandler interface { CreateDownloadLink(context.Context, *connect.Request[dataproxy.CreateDownloadLinkRequest]) (*connect.Response[dataproxy.CreateDownloadLinkResponse], error) // Get input and output data for an action. GetActionData(context.Context, *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) + // Stream logs for an action attempt. + TailLogs(context.Context, *connect.Request[dataproxy.TailLogsRequest], *connect.ServerStream[dataproxy.TailLogsResponse]) error } // NewDataProxyServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -175,6 +195,12 @@ func NewDataProxyServiceHandler(svc DataProxyServiceHandler, opts ...connect.Han connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) + dataProxyServiceTailLogsHandler := connect.NewServerStreamHandler( + DataProxyServiceTailLogsProcedure, + svc.TailLogs, + connect.WithSchema(dataProxyServiceTailLogsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) return "/flyteidl2.dataproxy.DataProxyService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case DataProxyServiceCreateUploadLocationProcedure: @@ -185,6 +211,8 @@ func NewDataProxyServiceHandler(svc DataProxyServiceHandler, opts ...connect.Han dataProxyServiceCreateDownloadLinkHandler.ServeHTTP(w, r) case DataProxyServiceGetActionDataProcedure: dataProxyServiceGetActionDataHandler.ServeHTTP(w, r) + case DataProxyServiceTailLogsProcedure: + dataProxyServiceTailLogsHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -209,3 +237,7 @@ func (UnimplementedDataProxyServiceHandler) CreateDownloadLink(context.Context, func (UnimplementedDataProxyServiceHandler) GetActionData(context.Context, *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.dataproxy.DataProxyService.GetActionData is not implemented")) } + +func (UnimplementedDataProxyServiceHandler) TailLogs(context.Context, *connect.Request[dataproxy.TailLogsRequest], *connect.ServerStream[dataproxy.TailLogsResponse]) error { + return connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.dataproxy.DataProxyService.TailLogs is not implemented")) +} diff --git a/gen/go/flyteidl2/workflow/run_logs_service.pb.go b/gen/go/flyteidl2/workflow/run_logs_service.pb.go index 5b8dfa5119..917d72e7ab 100644 --- a/gen/go/flyteidl2/workflow/run_logs_service.pb.go +++ b/gen/go/flyteidl2/workflow/run_logs_service.pb.go @@ -209,28 +209,28 @@ var file_flyteidl2_workflow_run_logs_service_proto_rawDesc = []byte{ 0x67, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, - 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x32, 0x6e, 0x0a, 0x0e, 0x52, - 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, + 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x32, 0x71, 0x0a, 0x0e, 0x52, + 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x08, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x30, 0x01, 0x42, 0xd0, 0x01, 0x0a, 0x16, - 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x13, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, - 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, 0x90, 0x02, 0x01, 0x30, 0x01, 0x42, 0xd0, + 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x13, 0x52, 0x75, 0x6e, 0x4c, 0x6f, + 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, + 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, + 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/gen/go/flyteidl2/workflow/run_logs_service_grpc.pb.go b/gen/go/flyteidl2/workflow/run_logs_service_grpc.pb.go index 4de648d3f7..f92b948960 100644 --- a/gen/go/flyteidl2/workflow/run_logs_service_grpc.pb.go +++ b/gen/go/flyteidl2/workflow/run_logs_service_grpc.pb.go @@ -26,6 +26,8 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type RunLogsServiceClient interface { + // Deprecated: Do not use. + // Deprecated: Use DataProxyService.TailLogs instead. TailLogs(ctx context.Context, in *TailLogsRequest, opts ...grpc.CallOption) (RunLogsService_TailLogsClient, error) } @@ -37,6 +39,7 @@ func NewRunLogsServiceClient(cc grpc.ClientConnInterface) RunLogsServiceClient { return &runLogsServiceClient{cc} } +// Deprecated: Do not use. func (c *runLogsServiceClient) TailLogs(ctx context.Context, in *TailLogsRequest, opts ...grpc.CallOption) (RunLogsService_TailLogsClient, error) { stream, err := c.cc.NewStream(ctx, &RunLogsService_ServiceDesc.Streams[0], RunLogsService_TailLogs_FullMethodName, opts...) if err != nil { @@ -73,6 +76,8 @@ func (x *runLogsServiceTailLogsClient) Recv() (*TailLogsResponse, error) { // All implementations should embed UnimplementedRunLogsServiceServer // for forward compatibility type RunLogsServiceServer interface { + // Deprecated: Do not use. + // Deprecated: Use DataProxyService.TailLogs instead. TailLogs(*TailLogsRequest, RunLogsService_TailLogsServer) error } diff --git a/gen/go/flyteidl2/workflow/run_service.pb.go b/gen/go/flyteidl2/workflow/run_service.pb.go index c6344e8c3b..d9fb97a8fd 100644 --- a/gen/go/flyteidl2/workflow/run_service.pb.go +++ b/gen/go/flyteidl2/workflow/run_service.pb.go @@ -9,6 +9,7 @@ package workflow import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" common "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/common" + core "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" task "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -982,6 +983,122 @@ func (x *GetActionDataURIsResponse) GetOutputsUri() string { return "" } +// Request message for getting action log context. +type GetActionLogContextRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Action to query. + ActionId *common.ActionIdentifier `protobuf:"bytes,1,opt,name=action_id,json=actionId,proto3" json:"action_id,omitempty"` + // The attempt number. + Attempt uint32 `protobuf:"varint,2,opt,name=attempt,proto3" json:"attempt,omitempty"` +} + +func (x *GetActionLogContextRequest) Reset() { + *x = GetActionLogContextRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetActionLogContextRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetActionLogContextRequest) ProtoMessage() {} + +func (x *GetActionLogContextRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetActionLogContextRequest.ProtoReflect.Descriptor instead. +func (*GetActionLogContextRequest) Descriptor() ([]byte, []int) { + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{16} +} + +func (x *GetActionLogContextRequest) GetActionId() *common.ActionIdentifier { + if x != nil { + return x.ActionId + } + return nil +} + +func (x *GetActionLogContextRequest) GetAttempt() uint32 { + if x != nil { + return x.Attempt + } + return 0 +} + +// Response message for getting action log context. +type GetActionLogContextResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The logging context for the action attempt. + LogContext *core.LogContext `protobuf:"bytes,1,opt,name=log_context,json=logContext,proto3" json:"log_context,omitempty"` + // The cluster where the action attempt is running. + Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` +} + +func (x *GetActionLogContextResponse) Reset() { + *x = GetActionLogContextResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetActionLogContextResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetActionLogContextResponse) ProtoMessage() {} + +func (x *GetActionLogContextResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetActionLogContextResponse.ProtoReflect.Descriptor instead. +func (*GetActionLogContextResponse) Descriptor() ([]byte, []int) { + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{17} +} + +func (x *GetActionLogContextResponse) GetLogContext() *core.LogContext { + if x != nil { + return x.LogContext + } + return nil +} + +func (x *GetActionLogContextResponse) GetCluster() string { + if x != nil { + return x.Cluster + } + return "" +} + // Request message for listing runs. type ListRunsRequest struct { state protoimpl.MessageState @@ -1003,7 +1120,7 @@ type ListRunsRequest struct { func (x *ListRunsRequest) Reset() { *x = ListRunsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1016,7 +1133,7 @@ func (x *ListRunsRequest) String() string { func (*ListRunsRequest) ProtoMessage() {} func (x *ListRunsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1029,7 +1146,7 @@ func (x *ListRunsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRunsRequest.ProtoReflect.Descriptor instead. func (*ListRunsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{16} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{18} } func (x *ListRunsRequest) GetRequest() *common.ListRequest { @@ -1135,7 +1252,7 @@ type ListRunsResponse struct { func (x *ListRunsResponse) Reset() { *x = ListRunsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1148,7 +1265,7 @@ func (x *ListRunsResponse) String() string { func (*ListRunsResponse) ProtoMessage() {} func (x *ListRunsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1161,7 +1278,7 @@ func (x *ListRunsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRunsResponse.ProtoReflect.Descriptor instead. func (*ListRunsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{17} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{19} } func (x *ListRunsResponse) GetRuns() []*Run { @@ -1196,7 +1313,7 @@ type WatchRunsRequest struct { func (x *WatchRunsRequest) Reset() { *x = WatchRunsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1209,7 +1326,7 @@ func (x *WatchRunsRequest) String() string { func (*WatchRunsRequest) ProtoMessage() {} func (x *WatchRunsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1222,7 +1339,7 @@ func (x *WatchRunsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchRunsRequest.ProtoReflect.Descriptor instead. func (*WatchRunsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{18} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{20} } func (m *WatchRunsRequest) GetTarget() isWatchRunsRequest_Target { @@ -1305,7 +1422,7 @@ type WatchRunsResponse struct { func (x *WatchRunsResponse) Reset() { *x = WatchRunsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1318,7 +1435,7 @@ func (x *WatchRunsResponse) String() string { func (*WatchRunsResponse) ProtoMessage() {} func (x *WatchRunsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1331,7 +1448,7 @@ func (x *WatchRunsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchRunsResponse.ProtoReflect.Descriptor instead. func (*WatchRunsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{19} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{21} } func (x *WatchRunsResponse) GetRuns() []*Run { @@ -1356,7 +1473,7 @@ type ListActionsRequest struct { func (x *ListActionsRequest) Reset() { *x = ListActionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1369,7 +1486,7 @@ func (x *ListActionsRequest) String() string { func (*ListActionsRequest) ProtoMessage() {} func (x *ListActionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1382,7 +1499,7 @@ func (x *ListActionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListActionsRequest.ProtoReflect.Descriptor instead. func (*ListActionsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{20} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{22} } func (x *ListActionsRequest) GetRequest() *common.ListRequest { @@ -1414,7 +1531,7 @@ type ListActionsResponse struct { func (x *ListActionsResponse) Reset() { *x = ListActionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1427,7 +1544,7 @@ func (x *ListActionsResponse) String() string { func (*ListActionsResponse) ProtoMessage() {} func (x *ListActionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1440,7 +1557,7 @@ func (x *ListActionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListActionsResponse.ProtoReflect.Descriptor instead. func (*ListActionsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{21} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{23} } func (x *ListActionsResponse) GetActions() []*Action { @@ -1475,7 +1592,7 @@ type WatchActionsRequest struct { func (x *WatchActionsRequest) Reset() { *x = WatchActionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1488,7 +1605,7 @@ func (x *WatchActionsRequest) String() string { func (*WatchActionsRequest) ProtoMessage() {} func (x *WatchActionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1501,7 +1618,7 @@ func (x *WatchActionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchActionsRequest.ProtoReflect.Descriptor instead. func (*WatchActionsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{22} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{24} } func (x *WatchActionsRequest) GetRunId() *common.RunIdentifier { @@ -1531,7 +1648,7 @@ type WatchActionsResponse struct { func (x *WatchActionsResponse) Reset() { *x = WatchActionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1544,7 +1661,7 @@ func (x *WatchActionsResponse) String() string { func (*WatchActionsResponse) ProtoMessage() {} func (x *WatchActionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1557,7 +1674,7 @@ func (x *WatchActionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchActionsResponse.ProtoReflect.Descriptor instead. func (*WatchActionsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{23} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{25} } func (x *WatchActionsResponse) GetEnrichedActions() []*EnrichedAction { @@ -1579,7 +1696,7 @@ type WatchClusterEventsRequest struct { func (x *WatchClusterEventsRequest) Reset() { *x = WatchClusterEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1592,7 +1709,7 @@ func (x *WatchClusterEventsRequest) String() string { func (*WatchClusterEventsRequest) ProtoMessage() {} func (x *WatchClusterEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1605,7 +1722,7 @@ func (x *WatchClusterEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchClusterEventsRequest.ProtoReflect.Descriptor instead. func (*WatchClusterEventsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{24} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{26} } func (x *WatchClusterEventsRequest) GetId() *common.ActionIdentifier { @@ -1633,7 +1750,7 @@ type WatchClusterEventsResponse struct { func (x *WatchClusterEventsResponse) Reset() { *x = WatchClusterEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1646,7 +1763,7 @@ func (x *WatchClusterEventsResponse) String() string { func (*WatchClusterEventsResponse) ProtoMessage() {} func (x *WatchClusterEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1659,7 +1776,7 @@ func (x *WatchClusterEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchClusterEventsResponse.ProtoReflect.Descriptor instead. func (*WatchClusterEventsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{25} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{27} } func (x *WatchClusterEventsResponse) GetClusterEvents() []*ClusterEvent { @@ -1683,7 +1800,7 @@ type AbortActionRequest struct { func (x *AbortActionRequest) Reset() { *x = AbortActionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1696,7 +1813,7 @@ func (x *AbortActionRequest) String() string { func (*AbortActionRequest) ProtoMessage() {} func (x *AbortActionRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1709,7 +1826,7 @@ func (x *AbortActionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortActionRequest.ProtoReflect.Descriptor instead. func (*AbortActionRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{26} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{28} } func (x *AbortActionRequest) GetActionId() *common.ActionIdentifier { @@ -1735,7 +1852,7 @@ type AbortActionResponse struct { func (x *AbortActionResponse) Reset() { *x = AbortActionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1865,7 @@ func (x *AbortActionResponse) String() string { func (*AbortActionResponse) ProtoMessage() {} func (x *AbortActionResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1878,7 @@ func (x *AbortActionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortActionResponse.ProtoReflect.Descriptor instead. func (*AbortActionResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{27} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{29} } type WatchGroupsRequest struct { @@ -1788,7 +1905,7 @@ type WatchGroupsRequest struct { func (x *WatchGroupsRequest) Reset() { *x = WatchGroupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1801,7 +1918,7 @@ func (x *WatchGroupsRequest) String() string { func (*WatchGroupsRequest) ProtoMessage() {} func (x *WatchGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1814,7 +1931,7 @@ func (x *WatchGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchGroupsRequest.ProtoReflect.Descriptor instead. func (*WatchGroupsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{28} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{30} } func (m *WatchGroupsRequest) GetScopeBy() isWatchGroupsRequest_ScopeBy { @@ -1887,7 +2004,7 @@ type WatchGroupsResponse struct { func (x *WatchGroupsResponse) Reset() { *x = WatchGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[29] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1900,7 +2017,7 @@ func (x *WatchGroupsResponse) String() string { func (*WatchGroupsResponse) ProtoMessage() {} func (x *WatchGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[29] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1913,7 +2030,7 @@ func (x *WatchGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchGroupsResponse.ProtoReflect.Descriptor instead. func (*WatchGroupsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{29} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{31} } func (x *WatchGroupsResponse) GetTaskGroups() []*TaskGroup { @@ -1944,7 +2061,7 @@ type WatchGroupsRequest_KnownSortField struct { func (x *WatchGroupsRequest_KnownSortField) Reset() { *x = WatchGroupsRequest_KnownSortField{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[30] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1957,7 +2074,7 @@ func (x *WatchGroupsRequest_KnownSortField) String() string { func (*WatchGroupsRequest_KnownSortField) ProtoMessage() {} func (x *WatchGroupsRequest_KnownSortField) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[30] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1970,7 +2087,7 @@ func (x *WatchGroupsRequest_KnownSortField) ProtoReflect() protoreflect.Message // Deprecated: Use WatchGroupsRequest_KnownSortField.ProtoReflect.Descriptor instead. func (*WatchGroupsRequest_KnownSortField) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{28, 0} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{30, 0} } func (m *WatchGroupsRequest_KnownSortField) GetSortBy() isWatchGroupsRequest_KnownSortField_SortBy { @@ -2011,6 +2128,8 @@ var file_flyteidl2_workflow_run_service_proto_rawDesc = []byte{ 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, + 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, @@ -2145,261 +2264,285 @@ var file_flyteidl2_workflow_run_service_proto_rawDesc = []byte{ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, - 0x69, 0x22, 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, - 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, - 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, - 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x69, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, + 0x02, 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x74, 0x0a, 0x1b, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, + 0x6f, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x6c, 0x6f, + 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x22, 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, + 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, + 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, + 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x87, 0x02, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, + 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, + 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x03, - 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, - 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x40, 0x0a, 0x11, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, + 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x87, 0x02, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, - 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, - 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x40, 0x0a, 0x11, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, - 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, - 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, - 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, - 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, - 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x7a, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, - 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x65, 0x0a, 0x1a, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xe3, 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, - 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x61, 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, - 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, - 0x5f, 0x62, 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, - 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, 0xb3, 0x0c, 0x0a, 0x0a, 0x52, 0x75, - 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, - 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, + 0x87, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x14, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x66, + 0x2e, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x7a, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, + 0x02, 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x65, 0x0a, 0x1a, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x62, + 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xe3, 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x41, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x61, 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x77, 0x0a, 0x12, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, - 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, - 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, - 0x5c, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x66, + 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, + 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, + 0x72, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x6f, 0x72, + 0x74, 0x5f, 0x62, 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, + 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, 0xb0, 0x0d, 0x0a, 0x0a, 0x52, + 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, - 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x66, + 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, + 0x6e, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, - 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x77, 0x0a, + 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x88, 0x02, + 0x01, 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, + 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x5c, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x30, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x12, 0x2c, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, - 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, - 0xcc, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, - 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, + 0x52, 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x7b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xcc, 0x01, + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x36, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, + 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2414,7 +2557,7 @@ func file_flyteidl2_workflow_run_service_proto_rawDescGZIP() []byte { return file_flyteidl2_workflow_run_service_proto_rawDescData } -var file_flyteidl2_workflow_run_service_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_flyteidl2_workflow_run_service_proto_msgTypes = make([]protoimpl.MessageInfo, 33) var file_flyteidl2_workflow_run_service_proto_goTypes = []interface{}{ (*CreateRunRequest)(nil), // 0: flyteidl2.workflow.CreateRunRequest (*CreateRunResponse)(nil), // 1: flyteidl2.workflow.CreateRunResponse @@ -2432,131 +2575,138 @@ var file_flyteidl2_workflow_run_service_proto_goTypes = []interface{}{ (*GetActionDataResponse)(nil), // 13: flyteidl2.workflow.GetActionDataResponse (*GetActionDataURIsRequest)(nil), // 14: flyteidl2.workflow.GetActionDataURIsRequest (*GetActionDataURIsResponse)(nil), // 15: flyteidl2.workflow.GetActionDataURIsResponse - (*ListRunsRequest)(nil), // 16: flyteidl2.workflow.ListRunsRequest - (*ListRunsResponse)(nil), // 17: flyteidl2.workflow.ListRunsResponse - (*WatchRunsRequest)(nil), // 18: flyteidl2.workflow.WatchRunsRequest - (*WatchRunsResponse)(nil), // 19: flyteidl2.workflow.WatchRunsResponse - (*ListActionsRequest)(nil), // 20: flyteidl2.workflow.ListActionsRequest - (*ListActionsResponse)(nil), // 21: flyteidl2.workflow.ListActionsResponse - (*WatchActionsRequest)(nil), // 22: flyteidl2.workflow.WatchActionsRequest - (*WatchActionsResponse)(nil), // 23: flyteidl2.workflow.WatchActionsResponse - (*WatchClusterEventsRequest)(nil), // 24: flyteidl2.workflow.WatchClusterEventsRequest - (*WatchClusterEventsResponse)(nil), // 25: flyteidl2.workflow.WatchClusterEventsResponse - (*AbortActionRequest)(nil), // 26: flyteidl2.workflow.AbortActionRequest - (*AbortActionResponse)(nil), // 27: flyteidl2.workflow.AbortActionResponse - (*WatchGroupsRequest)(nil), // 28: flyteidl2.workflow.WatchGroupsRequest - (*WatchGroupsResponse)(nil), // 29: flyteidl2.workflow.WatchGroupsResponse - (*WatchGroupsRequest_KnownSortField)(nil), // 30: flyteidl2.workflow.WatchGroupsRequest.KnownSortField - (*common.RunIdentifier)(nil), // 31: flyteidl2.common.RunIdentifier - (*common.ProjectIdentifier)(nil), // 32: flyteidl2.common.ProjectIdentifier - (*task.TaskIdentifier)(nil), // 33: flyteidl2.task.TaskIdentifier - (*task.TaskSpec)(nil), // 34: flyteidl2.task.TaskSpec - (*common.TriggerName)(nil), // 35: flyteidl2.common.TriggerName - (*task.Inputs)(nil), // 36: flyteidl2.task.Inputs - (*common.OffloadedInputData)(nil), // 37: flyteidl2.common.OffloadedInputData - (*task.RunSpec)(nil), // 38: flyteidl2.task.RunSpec - (RunSource)(0), // 39: flyteidl2.workflow.RunSource - (*Run)(nil), // 40: flyteidl2.workflow.Run - (*RunDetails)(nil), // 41: flyteidl2.workflow.RunDetails - (*common.ActionIdentifier)(nil), // 42: flyteidl2.common.ActionIdentifier - (*ActionDetails)(nil), // 43: flyteidl2.workflow.ActionDetails - (*task.Outputs)(nil), // 44: flyteidl2.task.Outputs - (*common.ListRequest)(nil), // 45: flyteidl2.common.ListRequest - (*task.TaskName)(nil), // 46: flyteidl2.task.TaskName - (*common.ClusterIdentifier)(nil), // 47: flyteidl2.common.ClusterIdentifier - (*Action)(nil), // 48: flyteidl2.workflow.Action - (*common.Filter)(nil), // 49: flyteidl2.common.Filter - (*EnrichedAction)(nil), // 50: flyteidl2.workflow.EnrichedAction - (*ClusterEvent)(nil), // 51: flyteidl2.workflow.ClusterEvent - (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp - (*TaskGroup)(nil), // 53: flyteidl2.workflow.TaskGroup - (common.Sort_Direction)(0), // 54: flyteidl2.common.Sort.Direction + (*GetActionLogContextRequest)(nil), // 16: flyteidl2.workflow.GetActionLogContextRequest + (*GetActionLogContextResponse)(nil), // 17: flyteidl2.workflow.GetActionLogContextResponse + (*ListRunsRequest)(nil), // 18: flyteidl2.workflow.ListRunsRequest + (*ListRunsResponse)(nil), // 19: flyteidl2.workflow.ListRunsResponse + (*WatchRunsRequest)(nil), // 20: flyteidl2.workflow.WatchRunsRequest + (*WatchRunsResponse)(nil), // 21: flyteidl2.workflow.WatchRunsResponse + (*ListActionsRequest)(nil), // 22: flyteidl2.workflow.ListActionsRequest + (*ListActionsResponse)(nil), // 23: flyteidl2.workflow.ListActionsResponse + (*WatchActionsRequest)(nil), // 24: flyteidl2.workflow.WatchActionsRequest + (*WatchActionsResponse)(nil), // 25: flyteidl2.workflow.WatchActionsResponse + (*WatchClusterEventsRequest)(nil), // 26: flyteidl2.workflow.WatchClusterEventsRequest + (*WatchClusterEventsResponse)(nil), // 27: flyteidl2.workflow.WatchClusterEventsResponse + (*AbortActionRequest)(nil), // 28: flyteidl2.workflow.AbortActionRequest + (*AbortActionResponse)(nil), // 29: flyteidl2.workflow.AbortActionResponse + (*WatchGroupsRequest)(nil), // 30: flyteidl2.workflow.WatchGroupsRequest + (*WatchGroupsResponse)(nil), // 31: flyteidl2.workflow.WatchGroupsResponse + (*WatchGroupsRequest_KnownSortField)(nil), // 32: flyteidl2.workflow.WatchGroupsRequest.KnownSortField + (*common.RunIdentifier)(nil), // 33: flyteidl2.common.RunIdentifier + (*common.ProjectIdentifier)(nil), // 34: flyteidl2.common.ProjectIdentifier + (*task.TaskIdentifier)(nil), // 35: flyteidl2.task.TaskIdentifier + (*task.TaskSpec)(nil), // 36: flyteidl2.task.TaskSpec + (*common.TriggerName)(nil), // 37: flyteidl2.common.TriggerName + (*task.Inputs)(nil), // 38: flyteidl2.task.Inputs + (*common.OffloadedInputData)(nil), // 39: flyteidl2.common.OffloadedInputData + (*task.RunSpec)(nil), // 40: flyteidl2.task.RunSpec + (RunSource)(0), // 41: flyteidl2.workflow.RunSource + (*Run)(nil), // 42: flyteidl2.workflow.Run + (*RunDetails)(nil), // 43: flyteidl2.workflow.RunDetails + (*common.ActionIdentifier)(nil), // 44: flyteidl2.common.ActionIdentifier + (*ActionDetails)(nil), // 45: flyteidl2.workflow.ActionDetails + (*task.Outputs)(nil), // 46: flyteidl2.task.Outputs + (*core.LogContext)(nil), // 47: flyteidl2.core.LogContext + (*common.ListRequest)(nil), // 48: flyteidl2.common.ListRequest + (*task.TaskName)(nil), // 49: flyteidl2.task.TaskName + (*common.ClusterIdentifier)(nil), // 50: flyteidl2.common.ClusterIdentifier + (*Action)(nil), // 51: flyteidl2.workflow.Action + (*common.Filter)(nil), // 52: flyteidl2.common.Filter + (*EnrichedAction)(nil), // 53: flyteidl2.workflow.EnrichedAction + (*ClusterEvent)(nil), // 54: flyteidl2.workflow.ClusterEvent + (*timestamppb.Timestamp)(nil), // 55: google.protobuf.Timestamp + (*TaskGroup)(nil), // 56: flyteidl2.workflow.TaskGroup + (common.Sort_Direction)(0), // 57: flyteidl2.common.Sort.Direction } var file_flyteidl2_workflow_run_service_proto_depIdxs = []int32{ - 31, // 0: flyteidl2.workflow.CreateRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 32, // 1: flyteidl2.workflow.CreateRunRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 33, // 2: flyteidl2.workflow.CreateRunRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 34, // 3: flyteidl2.workflow.CreateRunRequest.task_spec:type_name -> flyteidl2.task.TaskSpec - 35, // 4: flyteidl2.workflow.CreateRunRequest.trigger_name:type_name -> flyteidl2.common.TriggerName - 36, // 5: flyteidl2.workflow.CreateRunRequest.inputs:type_name -> flyteidl2.task.Inputs - 37, // 6: flyteidl2.workflow.CreateRunRequest.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData - 38, // 7: flyteidl2.workflow.CreateRunRequest.run_spec:type_name -> flyteidl2.task.RunSpec - 39, // 8: flyteidl2.workflow.CreateRunRequest.source:type_name -> flyteidl2.workflow.RunSource - 40, // 9: flyteidl2.workflow.CreateRunResponse.run:type_name -> flyteidl2.workflow.Run - 31, // 10: flyteidl2.workflow.AbortRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 31, // 11: flyteidl2.workflow.GetRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 41, // 12: flyteidl2.workflow.GetRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails - 31, // 13: flyteidl2.workflow.WatchRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 41, // 14: flyteidl2.workflow.WatchRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails - 42, // 15: flyteidl2.workflow.GetActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 43, // 16: flyteidl2.workflow.GetActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails - 42, // 17: flyteidl2.workflow.WatchActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 43, // 18: flyteidl2.workflow.WatchActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails - 42, // 19: flyteidl2.workflow.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 36, // 20: flyteidl2.workflow.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs - 44, // 21: flyteidl2.workflow.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs - 42, // 22: flyteidl2.workflow.GetActionDataURIsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 45, // 23: flyteidl2.workflow.ListRunsRequest.request:type_name -> flyteidl2.common.ListRequest - 32, // 24: flyteidl2.workflow.ListRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 35, // 25: flyteidl2.workflow.ListRunsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName - 46, // 26: flyteidl2.workflow.ListRunsRequest.task_name:type_name -> flyteidl2.task.TaskName - 33, // 27: flyteidl2.workflow.ListRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 40, // 28: flyteidl2.workflow.ListRunsResponse.runs:type_name -> flyteidl2.workflow.Run - 47, // 29: flyteidl2.workflow.WatchRunsRequest.cluster_id:type_name -> flyteidl2.common.ClusterIdentifier - 32, // 30: flyteidl2.workflow.WatchRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 33, // 31: flyteidl2.workflow.WatchRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 40, // 32: flyteidl2.workflow.WatchRunsResponse.runs:type_name -> flyteidl2.workflow.Run - 45, // 33: flyteidl2.workflow.ListActionsRequest.request:type_name -> flyteidl2.common.ListRequest - 31, // 34: flyteidl2.workflow.ListActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 48, // 35: flyteidl2.workflow.ListActionsResponse.actions:type_name -> flyteidl2.workflow.Action - 31, // 36: flyteidl2.workflow.WatchActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 49, // 37: flyteidl2.workflow.WatchActionsRequest.filter:type_name -> flyteidl2.common.Filter - 50, // 38: flyteidl2.workflow.WatchActionsResponse.enriched_actions:type_name -> flyteidl2.workflow.EnrichedAction - 42, // 39: flyteidl2.workflow.WatchClusterEventsRequest.id:type_name -> flyteidl2.common.ActionIdentifier - 51, // 40: flyteidl2.workflow.WatchClusterEventsResponse.cluster_events:type_name -> flyteidl2.workflow.ClusterEvent - 42, // 41: flyteidl2.workflow.AbortActionRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 32, // 42: flyteidl2.workflow.WatchGroupsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 52, // 43: flyteidl2.workflow.WatchGroupsRequest.start_date:type_name -> google.protobuf.Timestamp - 52, // 44: flyteidl2.workflow.WatchGroupsRequest.end_date:type_name -> google.protobuf.Timestamp - 45, // 45: flyteidl2.workflow.WatchGroupsRequest.request:type_name -> flyteidl2.common.ListRequest - 30, // 46: flyteidl2.workflow.WatchGroupsRequest.known_sort_fields:type_name -> flyteidl2.workflow.WatchGroupsRequest.KnownSortField - 53, // 47: flyteidl2.workflow.WatchGroupsResponse.task_groups:type_name -> flyteidl2.workflow.TaskGroup - 54, // 48: flyteidl2.workflow.WatchGroupsRequest.KnownSortField.created_at:type_name -> flyteidl2.common.Sort.Direction - 0, // 49: flyteidl2.workflow.RunService.CreateRun:input_type -> flyteidl2.workflow.CreateRunRequest - 2, // 50: flyteidl2.workflow.RunService.AbortRun:input_type -> flyteidl2.workflow.AbortRunRequest - 4, // 51: flyteidl2.workflow.RunService.GetRunDetails:input_type -> flyteidl2.workflow.GetRunDetailsRequest - 6, // 52: flyteidl2.workflow.RunService.WatchRunDetails:input_type -> flyteidl2.workflow.WatchRunDetailsRequest - 8, // 53: flyteidl2.workflow.RunService.GetActionDetails:input_type -> flyteidl2.workflow.GetActionDetailsRequest - 10, // 54: flyteidl2.workflow.RunService.WatchActionDetails:input_type -> flyteidl2.workflow.WatchActionDetailsRequest - 12, // 55: flyteidl2.workflow.RunService.GetActionData:input_type -> flyteidl2.workflow.GetActionDataRequest - 16, // 56: flyteidl2.workflow.RunService.ListRuns:input_type -> flyteidl2.workflow.ListRunsRequest - 18, // 57: flyteidl2.workflow.RunService.WatchRuns:input_type -> flyteidl2.workflow.WatchRunsRequest - 20, // 58: flyteidl2.workflow.RunService.ListActions:input_type -> flyteidl2.workflow.ListActionsRequest - 22, // 59: flyteidl2.workflow.RunService.WatchActions:input_type -> flyteidl2.workflow.WatchActionsRequest - 24, // 60: flyteidl2.workflow.RunService.WatchClusterEvents:input_type -> flyteidl2.workflow.WatchClusterEventsRequest - 26, // 61: flyteidl2.workflow.RunService.AbortAction:input_type -> flyteidl2.workflow.AbortActionRequest - 28, // 62: flyteidl2.workflow.RunService.WatchGroups:input_type -> flyteidl2.workflow.WatchGroupsRequest - 14, // 63: flyteidl2.workflow.RunService.GetActionDataURIs:input_type -> flyteidl2.workflow.GetActionDataURIsRequest - 1, // 64: flyteidl2.workflow.RunService.CreateRun:output_type -> flyteidl2.workflow.CreateRunResponse - 3, // 65: flyteidl2.workflow.RunService.AbortRun:output_type -> flyteidl2.workflow.AbortRunResponse - 5, // 66: flyteidl2.workflow.RunService.GetRunDetails:output_type -> flyteidl2.workflow.GetRunDetailsResponse - 7, // 67: flyteidl2.workflow.RunService.WatchRunDetails:output_type -> flyteidl2.workflow.WatchRunDetailsResponse - 9, // 68: flyteidl2.workflow.RunService.GetActionDetails:output_type -> flyteidl2.workflow.GetActionDetailsResponse - 11, // 69: flyteidl2.workflow.RunService.WatchActionDetails:output_type -> flyteidl2.workflow.WatchActionDetailsResponse - 13, // 70: flyteidl2.workflow.RunService.GetActionData:output_type -> flyteidl2.workflow.GetActionDataResponse - 17, // 71: flyteidl2.workflow.RunService.ListRuns:output_type -> flyteidl2.workflow.ListRunsResponse - 19, // 72: flyteidl2.workflow.RunService.WatchRuns:output_type -> flyteidl2.workflow.WatchRunsResponse - 21, // 73: flyteidl2.workflow.RunService.ListActions:output_type -> flyteidl2.workflow.ListActionsResponse - 23, // 74: flyteidl2.workflow.RunService.WatchActions:output_type -> flyteidl2.workflow.WatchActionsResponse - 25, // 75: flyteidl2.workflow.RunService.WatchClusterEvents:output_type -> flyteidl2.workflow.WatchClusterEventsResponse - 27, // 76: flyteidl2.workflow.RunService.AbortAction:output_type -> flyteidl2.workflow.AbortActionResponse - 29, // 77: flyteidl2.workflow.RunService.WatchGroups:output_type -> flyteidl2.workflow.WatchGroupsResponse - 15, // 78: flyteidl2.workflow.RunService.GetActionDataURIs:output_type -> flyteidl2.workflow.GetActionDataURIsResponse - 64, // [64:79] is the sub-list for method output_type - 49, // [49:64] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 33, // 0: flyteidl2.workflow.CreateRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 34, // 1: flyteidl2.workflow.CreateRunRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 35, // 2: flyteidl2.workflow.CreateRunRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 36, // 3: flyteidl2.workflow.CreateRunRequest.task_spec:type_name -> flyteidl2.task.TaskSpec + 37, // 4: flyteidl2.workflow.CreateRunRequest.trigger_name:type_name -> flyteidl2.common.TriggerName + 38, // 5: flyteidl2.workflow.CreateRunRequest.inputs:type_name -> flyteidl2.task.Inputs + 39, // 6: flyteidl2.workflow.CreateRunRequest.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData + 40, // 7: flyteidl2.workflow.CreateRunRequest.run_spec:type_name -> flyteidl2.task.RunSpec + 41, // 8: flyteidl2.workflow.CreateRunRequest.source:type_name -> flyteidl2.workflow.RunSource + 42, // 9: flyteidl2.workflow.CreateRunResponse.run:type_name -> flyteidl2.workflow.Run + 33, // 10: flyteidl2.workflow.AbortRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 33, // 11: flyteidl2.workflow.GetRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 43, // 12: flyteidl2.workflow.GetRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails + 33, // 13: flyteidl2.workflow.WatchRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 43, // 14: flyteidl2.workflow.WatchRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails + 44, // 15: flyteidl2.workflow.GetActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 45, // 16: flyteidl2.workflow.GetActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails + 44, // 17: flyteidl2.workflow.WatchActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 45, // 18: flyteidl2.workflow.WatchActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails + 44, // 19: flyteidl2.workflow.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 38, // 20: flyteidl2.workflow.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs + 46, // 21: flyteidl2.workflow.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs + 44, // 22: flyteidl2.workflow.GetActionDataURIsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 44, // 23: flyteidl2.workflow.GetActionLogContextRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 47, // 24: flyteidl2.workflow.GetActionLogContextResponse.log_context:type_name -> flyteidl2.core.LogContext + 48, // 25: flyteidl2.workflow.ListRunsRequest.request:type_name -> flyteidl2.common.ListRequest + 34, // 26: flyteidl2.workflow.ListRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 37, // 27: flyteidl2.workflow.ListRunsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName + 49, // 28: flyteidl2.workflow.ListRunsRequest.task_name:type_name -> flyteidl2.task.TaskName + 35, // 29: flyteidl2.workflow.ListRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 42, // 30: flyteidl2.workflow.ListRunsResponse.runs:type_name -> flyteidl2.workflow.Run + 50, // 31: flyteidl2.workflow.WatchRunsRequest.cluster_id:type_name -> flyteidl2.common.ClusterIdentifier + 34, // 32: flyteidl2.workflow.WatchRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 35, // 33: flyteidl2.workflow.WatchRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 42, // 34: flyteidl2.workflow.WatchRunsResponse.runs:type_name -> flyteidl2.workflow.Run + 48, // 35: flyteidl2.workflow.ListActionsRequest.request:type_name -> flyteidl2.common.ListRequest + 33, // 36: flyteidl2.workflow.ListActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 51, // 37: flyteidl2.workflow.ListActionsResponse.actions:type_name -> flyteidl2.workflow.Action + 33, // 38: flyteidl2.workflow.WatchActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 52, // 39: flyteidl2.workflow.WatchActionsRequest.filter:type_name -> flyteidl2.common.Filter + 53, // 40: flyteidl2.workflow.WatchActionsResponse.enriched_actions:type_name -> flyteidl2.workflow.EnrichedAction + 44, // 41: flyteidl2.workflow.WatchClusterEventsRequest.id:type_name -> flyteidl2.common.ActionIdentifier + 54, // 42: flyteidl2.workflow.WatchClusterEventsResponse.cluster_events:type_name -> flyteidl2.workflow.ClusterEvent + 44, // 43: flyteidl2.workflow.AbortActionRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 34, // 44: flyteidl2.workflow.WatchGroupsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 55, // 45: flyteidl2.workflow.WatchGroupsRequest.start_date:type_name -> google.protobuf.Timestamp + 55, // 46: flyteidl2.workflow.WatchGroupsRequest.end_date:type_name -> google.protobuf.Timestamp + 48, // 47: flyteidl2.workflow.WatchGroupsRequest.request:type_name -> flyteidl2.common.ListRequest + 32, // 48: flyteidl2.workflow.WatchGroupsRequest.known_sort_fields:type_name -> flyteidl2.workflow.WatchGroupsRequest.KnownSortField + 56, // 49: flyteidl2.workflow.WatchGroupsResponse.task_groups:type_name -> flyteidl2.workflow.TaskGroup + 57, // 50: flyteidl2.workflow.WatchGroupsRequest.KnownSortField.created_at:type_name -> flyteidl2.common.Sort.Direction + 0, // 51: flyteidl2.workflow.RunService.CreateRun:input_type -> flyteidl2.workflow.CreateRunRequest + 2, // 52: flyteidl2.workflow.RunService.AbortRun:input_type -> flyteidl2.workflow.AbortRunRequest + 4, // 53: flyteidl2.workflow.RunService.GetRunDetails:input_type -> flyteidl2.workflow.GetRunDetailsRequest + 6, // 54: flyteidl2.workflow.RunService.WatchRunDetails:input_type -> flyteidl2.workflow.WatchRunDetailsRequest + 8, // 55: flyteidl2.workflow.RunService.GetActionDetails:input_type -> flyteidl2.workflow.GetActionDetailsRequest + 10, // 56: flyteidl2.workflow.RunService.WatchActionDetails:input_type -> flyteidl2.workflow.WatchActionDetailsRequest + 12, // 57: flyteidl2.workflow.RunService.GetActionData:input_type -> flyteidl2.workflow.GetActionDataRequest + 18, // 58: flyteidl2.workflow.RunService.ListRuns:input_type -> flyteidl2.workflow.ListRunsRequest + 20, // 59: flyteidl2.workflow.RunService.WatchRuns:input_type -> flyteidl2.workflow.WatchRunsRequest + 22, // 60: flyteidl2.workflow.RunService.ListActions:input_type -> flyteidl2.workflow.ListActionsRequest + 24, // 61: flyteidl2.workflow.RunService.WatchActions:input_type -> flyteidl2.workflow.WatchActionsRequest + 26, // 62: flyteidl2.workflow.RunService.WatchClusterEvents:input_type -> flyteidl2.workflow.WatchClusterEventsRequest + 28, // 63: flyteidl2.workflow.RunService.AbortAction:input_type -> flyteidl2.workflow.AbortActionRequest + 30, // 64: flyteidl2.workflow.RunService.WatchGroups:input_type -> flyteidl2.workflow.WatchGroupsRequest + 14, // 65: flyteidl2.workflow.RunService.GetActionDataURIs:input_type -> flyteidl2.workflow.GetActionDataURIsRequest + 16, // 66: flyteidl2.workflow.RunService.GetActionLogContext:input_type -> flyteidl2.workflow.GetActionLogContextRequest + 1, // 67: flyteidl2.workflow.RunService.CreateRun:output_type -> flyteidl2.workflow.CreateRunResponse + 3, // 68: flyteidl2.workflow.RunService.AbortRun:output_type -> flyteidl2.workflow.AbortRunResponse + 5, // 69: flyteidl2.workflow.RunService.GetRunDetails:output_type -> flyteidl2.workflow.GetRunDetailsResponse + 7, // 70: flyteidl2.workflow.RunService.WatchRunDetails:output_type -> flyteidl2.workflow.WatchRunDetailsResponse + 9, // 71: flyteidl2.workflow.RunService.GetActionDetails:output_type -> flyteidl2.workflow.GetActionDetailsResponse + 11, // 72: flyteidl2.workflow.RunService.WatchActionDetails:output_type -> flyteidl2.workflow.WatchActionDetailsResponse + 13, // 73: flyteidl2.workflow.RunService.GetActionData:output_type -> flyteidl2.workflow.GetActionDataResponse + 19, // 74: flyteidl2.workflow.RunService.ListRuns:output_type -> flyteidl2.workflow.ListRunsResponse + 21, // 75: flyteidl2.workflow.RunService.WatchRuns:output_type -> flyteidl2.workflow.WatchRunsResponse + 23, // 76: flyteidl2.workflow.RunService.ListActions:output_type -> flyteidl2.workflow.ListActionsResponse + 25, // 77: flyteidl2.workflow.RunService.WatchActions:output_type -> flyteidl2.workflow.WatchActionsResponse + 27, // 78: flyteidl2.workflow.RunService.WatchClusterEvents:output_type -> flyteidl2.workflow.WatchClusterEventsResponse + 29, // 79: flyteidl2.workflow.RunService.AbortAction:output_type -> flyteidl2.workflow.AbortActionResponse + 31, // 80: flyteidl2.workflow.RunService.WatchGroups:output_type -> flyteidl2.workflow.WatchGroupsResponse + 15, // 81: flyteidl2.workflow.RunService.GetActionDataURIs:output_type -> flyteidl2.workflow.GetActionDataURIsResponse + 17, // 82: flyteidl2.workflow.RunService.GetActionLogContext:output_type -> flyteidl2.workflow.GetActionLogContextResponse + 67, // [67:83] is the sub-list for method output_type + 51, // [51:67] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { file_flyteidl2_workflow_run_service_proto_init() } @@ -2759,7 +2909,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRunsRequest); i { + switch v := v.(*GetActionLogContextRequest); i { case 0: return &v.state case 1: @@ -2771,7 +2921,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRunsResponse); i { + switch v := v.(*GetActionLogContextResponse); i { case 0: return &v.state case 1: @@ -2783,7 +2933,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchRunsRequest); i { + switch v := v.(*ListRunsRequest); i { case 0: return &v.state case 1: @@ -2795,7 +2945,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchRunsResponse); i { + switch v := v.(*ListRunsResponse); i { case 0: return &v.state case 1: @@ -2807,7 +2957,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListActionsRequest); i { + switch v := v.(*WatchRunsRequest); i { case 0: return &v.state case 1: @@ -2819,7 +2969,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListActionsResponse); i { + switch v := v.(*WatchRunsResponse); i { case 0: return &v.state case 1: @@ -2831,7 +2981,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchActionsRequest); i { + switch v := v.(*ListActionsRequest); i { case 0: return &v.state case 1: @@ -2843,7 +2993,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchActionsResponse); i { + switch v := v.(*ListActionsResponse); i { case 0: return &v.state case 1: @@ -2855,7 +3005,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterEventsRequest); i { + switch v := v.(*WatchActionsRequest); i { case 0: return &v.state case 1: @@ -2867,7 +3017,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterEventsResponse); i { + switch v := v.(*WatchActionsResponse); i { case 0: return &v.state case 1: @@ -2879,7 +3029,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortActionRequest); i { + switch v := v.(*WatchClusterEventsRequest); i { case 0: return &v.state case 1: @@ -2891,7 +3041,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortActionResponse); i { + switch v := v.(*WatchClusterEventsResponse); i { case 0: return &v.state case 1: @@ -2903,7 +3053,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchGroupsRequest); i { + switch v := v.(*AbortActionRequest); i { case 0: return &v.state case 1: @@ -2915,7 +3065,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchGroupsResponse); i { + switch v := v.(*AbortActionResponse); i { case 0: return &v.state case 1: @@ -2927,6 +3077,30 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchGroupsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_workflow_run_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchGroupsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_workflow_run_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchGroupsRequest_KnownSortField); i { case 0: return &v.state @@ -2949,23 +3123,23 @@ func file_flyteidl2_workflow_run_service_proto_init() { (*CreateRunRequest_OffloadedInputData)(nil), } file_flyteidl2_workflow_run_service_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_flyteidl2_workflow_run_service_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[18].OneofWrappers = []interface{}{ (*ListRunsRequest_Org)(nil), (*ListRunsRequest_ProjectId)(nil), (*ListRunsRequest_TriggerName)(nil), (*ListRunsRequest_TaskName)(nil), (*ListRunsRequest_TaskId)(nil), } - file_flyteidl2_workflow_run_service_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[20].OneofWrappers = []interface{}{ (*WatchRunsRequest_Org)(nil), (*WatchRunsRequest_ClusterId)(nil), (*WatchRunsRequest_ProjectId)(nil), (*WatchRunsRequest_TaskId)(nil), } - file_flyteidl2_workflow_run_service_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[30].OneofWrappers = []interface{}{ (*WatchGroupsRequest_ProjectId)(nil), } - file_flyteidl2_workflow_run_service_proto_msgTypes[30].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[32].OneofWrappers = []interface{}{ (*WatchGroupsRequest_KnownSortField_CreatedAt)(nil), } type x struct{} @@ -2974,7 +3148,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl2_workflow_run_service_proto_rawDesc, NumEnums: 0, - NumMessages: 31, + NumMessages: 33, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/flyteidl2/workflow/run_service.pb.validate.go b/gen/go/flyteidl2/workflow/run_service.pb.validate.go index 2f7146d431..5f3bcbe265 100644 --- a/gen/go/flyteidl2/workflow/run_service.pb.validate.go +++ b/gen/go/flyteidl2/workflow/run_service.pb.validate.go @@ -2410,6 +2410,273 @@ var _ interface { ErrorName() string } = GetActionDataURIsResponseValidationError{} +// Validate checks the field values on GetActionLogContextRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetActionLogContextRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetActionLogContextRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetActionLogContextRequestMultiError, or nil if none found. +func (m *GetActionLogContextRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetActionLogContextRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetActionId()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetActionLogContextRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetActionLogContextRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetActionId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetActionLogContextRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Attempt + + if len(errors) > 0 { + return GetActionLogContextRequestMultiError(errors) + } + + return nil +} + +// GetActionLogContextRequestMultiError is an error wrapping multiple +// validation errors returned by GetActionLogContextRequest.ValidateAll() if +// the designated constraints aren't met. +type GetActionLogContextRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetActionLogContextRequestMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetActionLogContextRequestMultiError) AllErrors() []error { return m } + +// GetActionLogContextRequestValidationError is the validation error returned +// by GetActionLogContextRequest.Validate if the designated constraints aren't met. +type GetActionLogContextRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetActionLogContextRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetActionLogContextRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetActionLogContextRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetActionLogContextRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetActionLogContextRequestValidationError) ErrorName() string { + return "GetActionLogContextRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e GetActionLogContextRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetActionLogContextRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetActionLogContextRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetActionLogContextRequestValidationError{} + +// Validate checks the field values on GetActionLogContextResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetActionLogContextResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetActionLogContextResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetActionLogContextResponseMultiError, or nil if none found. +func (m *GetActionLogContextResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetActionLogContextResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetLogContext()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetActionLogContextResponseValidationError{ + field: "LogContext", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetActionLogContextResponseValidationError{ + field: "LogContext", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLogContext()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetActionLogContextResponseValidationError{ + field: "LogContext", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Cluster + + if len(errors) > 0 { + return GetActionLogContextResponseMultiError(errors) + } + + return nil +} + +// GetActionLogContextResponseMultiError is an error wrapping multiple +// validation errors returned by GetActionLogContextResponse.ValidateAll() if +// the designated constraints aren't met. +type GetActionLogContextResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetActionLogContextResponseMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetActionLogContextResponseMultiError) AllErrors() []error { return m } + +// GetActionLogContextResponseValidationError is the validation error returned +// by GetActionLogContextResponse.Validate if the designated constraints +// aren't met. +type GetActionLogContextResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetActionLogContextResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetActionLogContextResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetActionLogContextResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetActionLogContextResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetActionLogContextResponseValidationError) ErrorName() string { + return "GetActionLogContextResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e GetActionLogContextResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetActionLogContextResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetActionLogContextResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetActionLogContextResponseValidationError{} + // Validate checks the field values on ListRunsRequest with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. diff --git a/gen/go/flyteidl2/workflow/run_service_grpc.pb.go b/gen/go/flyteidl2/workflow/run_service_grpc.pb.go index 0ad3aaf57b..bf099a10fb 100644 --- a/gen/go/flyteidl2/workflow/run_service_grpc.pb.go +++ b/gen/go/flyteidl2/workflow/run_service_grpc.pb.go @@ -19,21 +19,22 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - RunService_CreateRun_FullMethodName = "/flyteidl2.workflow.RunService/CreateRun" - RunService_AbortRun_FullMethodName = "/flyteidl2.workflow.RunService/AbortRun" - RunService_GetRunDetails_FullMethodName = "/flyteidl2.workflow.RunService/GetRunDetails" - RunService_WatchRunDetails_FullMethodName = "/flyteidl2.workflow.RunService/WatchRunDetails" - RunService_GetActionDetails_FullMethodName = "/flyteidl2.workflow.RunService/GetActionDetails" - RunService_WatchActionDetails_FullMethodName = "/flyteidl2.workflow.RunService/WatchActionDetails" - RunService_GetActionData_FullMethodName = "/flyteidl2.workflow.RunService/GetActionData" - RunService_ListRuns_FullMethodName = "/flyteidl2.workflow.RunService/ListRuns" - RunService_WatchRuns_FullMethodName = "/flyteidl2.workflow.RunService/WatchRuns" - RunService_ListActions_FullMethodName = "/flyteidl2.workflow.RunService/ListActions" - RunService_WatchActions_FullMethodName = "/flyteidl2.workflow.RunService/WatchActions" - RunService_WatchClusterEvents_FullMethodName = "/flyteidl2.workflow.RunService/WatchClusterEvents" - RunService_AbortAction_FullMethodName = "/flyteidl2.workflow.RunService/AbortAction" - RunService_WatchGroups_FullMethodName = "/flyteidl2.workflow.RunService/WatchGroups" - RunService_GetActionDataURIs_FullMethodName = "/flyteidl2.workflow.RunService/GetActionDataURIs" + RunService_CreateRun_FullMethodName = "/flyteidl2.workflow.RunService/CreateRun" + RunService_AbortRun_FullMethodName = "/flyteidl2.workflow.RunService/AbortRun" + RunService_GetRunDetails_FullMethodName = "/flyteidl2.workflow.RunService/GetRunDetails" + RunService_WatchRunDetails_FullMethodName = "/flyteidl2.workflow.RunService/WatchRunDetails" + RunService_GetActionDetails_FullMethodName = "/flyteidl2.workflow.RunService/GetActionDetails" + RunService_WatchActionDetails_FullMethodName = "/flyteidl2.workflow.RunService/WatchActionDetails" + RunService_GetActionData_FullMethodName = "/flyteidl2.workflow.RunService/GetActionData" + RunService_ListRuns_FullMethodName = "/flyteidl2.workflow.RunService/ListRuns" + RunService_WatchRuns_FullMethodName = "/flyteidl2.workflow.RunService/WatchRuns" + RunService_ListActions_FullMethodName = "/flyteidl2.workflow.RunService/ListActions" + RunService_WatchActions_FullMethodName = "/flyteidl2.workflow.RunService/WatchActions" + RunService_WatchClusterEvents_FullMethodName = "/flyteidl2.workflow.RunService/WatchClusterEvents" + RunService_AbortAction_FullMethodName = "/flyteidl2.workflow.RunService/AbortAction" + RunService_WatchGroups_FullMethodName = "/flyteidl2.workflow.RunService/WatchGroups" + RunService_GetActionDataURIs_FullMethodName = "/flyteidl2.workflow.RunService/GetActionDataURIs" + RunService_GetActionLogContext_FullMethodName = "/flyteidl2.workflow.RunService/GetActionLogContext" ) // RunServiceClient is the client API for RunService service. @@ -73,6 +74,8 @@ type RunServiceClient interface { WatchGroups(ctx context.Context, in *WatchGroupsRequest, opts ...grpc.CallOption) (RunService_WatchGroupsClient, error) // Get the storage URIs for an action's input and output data. GetActionDataURIs(ctx context.Context, in *GetActionDataURIsRequest, opts ...grpc.CallOption) (*GetActionDataURIsResponse, error) + // Get the logging context (pod name, namespace, cluster) for an action attempt. + GetActionLogContext(ctx context.Context, in *GetActionLogContextRequest, opts ...grpc.CallOption) (*GetActionLogContextResponse, error) } type runServiceClient struct { @@ -357,6 +360,15 @@ func (c *runServiceClient) GetActionDataURIs(ctx context.Context, in *GetActionD return out, nil } +func (c *runServiceClient) GetActionLogContext(ctx context.Context, in *GetActionLogContextRequest, opts ...grpc.CallOption) (*GetActionLogContextResponse, error) { + out := new(GetActionLogContextResponse) + err := c.cc.Invoke(ctx, RunService_GetActionLogContext_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // RunServiceServer is the server API for RunService service. // All implementations should embed UnimplementedRunServiceServer // for forward compatibility @@ -394,6 +406,8 @@ type RunServiceServer interface { WatchGroups(*WatchGroupsRequest, RunService_WatchGroupsServer) error // Get the storage URIs for an action's input and output data. GetActionDataURIs(context.Context, *GetActionDataURIsRequest) (*GetActionDataURIsResponse, error) + // Get the logging context (pod name, namespace, cluster) for an action attempt. + GetActionLogContext(context.Context, *GetActionLogContextRequest) (*GetActionLogContextResponse, error) } // UnimplementedRunServiceServer should be embedded to have forward compatible implementations. @@ -445,6 +459,9 @@ func (UnimplementedRunServiceServer) WatchGroups(*WatchGroupsRequest, RunService func (UnimplementedRunServiceServer) GetActionDataURIs(context.Context, *GetActionDataURIsRequest) (*GetActionDataURIsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetActionDataURIs not implemented") } +func (UnimplementedRunServiceServer) GetActionLogContext(context.Context, *GetActionLogContextRequest) (*GetActionLogContextResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetActionLogContext not implemented") +} // UnsafeRunServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RunServiceServer will @@ -745,6 +762,24 @@ func _RunService_GetActionDataURIs_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _RunService_GetActionLogContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetActionLogContextRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RunServiceServer).GetActionLogContext(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RunService_GetActionLogContext_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RunServiceServer).GetActionLogContext(ctx, req.(*GetActionLogContextRequest)) + } + return interceptor(ctx, in, info, handler) +} + // RunService_ServiceDesc is the grpc.ServiceDesc for RunService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -788,6 +823,10 @@ var RunService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetActionDataURIs", Handler: _RunService_GetActionDataURIs_Handler, }, + { + MethodName: "GetActionLogContext", + Handler: _RunService_GetActionLogContext_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go b/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go index 186d0449a2..7422492823 100644 --- a/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go +++ b/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go @@ -2076,6 +2076,74 @@ func (_c *RunServiceClient_GetActionDetails_Call) RunAndReturn(run func(context1 return _c } +// GetActionLogContext provides a mock function for the type RunServiceClient +func (_mock *RunServiceClient) GetActionLogContext(context1 context.Context, request *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error) { + ret := _mock.Called(context1, request) + + if len(ret) == 0 { + panic("no return value specified for GetActionLogContext") + } + + var r0 *connect.Response[workflow.GetActionLogContextResponse] + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error)); ok { + return returnFunc(context1, request) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) *connect.Response[workflow.GetActionLogContextResponse]); ok { + r0 = returnFunc(context1, request) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[workflow.GetActionLogContextResponse]) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) error); ok { + r1 = returnFunc(context1, request) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// RunServiceClient_GetActionLogContext_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetActionLogContext' +type RunServiceClient_GetActionLogContext_Call struct { + *mock.Call +} + +// GetActionLogContext is a helper method to define mock.On call +// - context1 context.Context +// - request *connect.Request[workflow.GetActionLogContextRequest] +func (_e *RunServiceClient_Expecter) GetActionLogContext(context1 interface{}, request interface{}) *RunServiceClient_GetActionLogContext_Call { + return &RunServiceClient_GetActionLogContext_Call{Call: _e.mock.On("GetActionLogContext", context1, request)} +} + +func (_c *RunServiceClient_GetActionLogContext_Call) Run(run func(context1 context.Context, request *connect.Request[workflow.GetActionLogContextRequest])) *RunServiceClient_GetActionLogContext_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *connect.Request[workflow.GetActionLogContextRequest] + if args[1] != nil { + arg1 = args[1].(*connect.Request[workflow.GetActionLogContextRequest]) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *RunServiceClient_GetActionLogContext_Call) Return(response *connect.Response[workflow.GetActionLogContextResponse], err error) *RunServiceClient_GetActionLogContext_Call { + _c.Call.Return(response, err) + return _c +} + +func (_c *RunServiceClient_GetActionLogContext_Call) RunAndReturn(run func(context1 context.Context, request *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error)) *RunServiceClient_GetActionLogContext_Call { + _c.Call.Return(run) + return _c +} + // GetRunDetails provides a mock function for the type RunServiceClient func (_mock *RunServiceClient) GetRunDetails(context1 context.Context, request *connect.Request[workflow.GetRunDetailsRequest]) (*connect.Response[workflow.GetRunDetailsResponse], error) { ret := _mock.Called(context1, request) @@ -3123,6 +3191,74 @@ func (_c *RunServiceHandler_GetActionDetails_Call) RunAndReturn(run func(context return _c } +// GetActionLogContext provides a mock function for the type RunServiceHandler +func (_mock *RunServiceHandler) GetActionLogContext(context1 context.Context, request *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error) { + ret := _mock.Called(context1, request) + + if len(ret) == 0 { + panic("no return value specified for GetActionLogContext") + } + + var r0 *connect.Response[workflow.GetActionLogContextResponse] + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error)); ok { + return returnFunc(context1, request) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) *connect.Response[workflow.GetActionLogContextResponse]); ok { + r0 = returnFunc(context1, request) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[workflow.GetActionLogContextResponse]) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) error); ok { + r1 = returnFunc(context1, request) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// RunServiceHandler_GetActionLogContext_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetActionLogContext' +type RunServiceHandler_GetActionLogContext_Call struct { + *mock.Call +} + +// GetActionLogContext is a helper method to define mock.On call +// - context1 context.Context +// - request *connect.Request[workflow.GetActionLogContextRequest] +func (_e *RunServiceHandler_Expecter) GetActionLogContext(context1 interface{}, request interface{}) *RunServiceHandler_GetActionLogContext_Call { + return &RunServiceHandler_GetActionLogContext_Call{Call: _e.mock.On("GetActionLogContext", context1, request)} +} + +func (_c *RunServiceHandler_GetActionLogContext_Call) Run(run func(context1 context.Context, request *connect.Request[workflow.GetActionLogContextRequest])) *RunServiceHandler_GetActionLogContext_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *connect.Request[workflow.GetActionLogContextRequest] + if args[1] != nil { + arg1 = args[1].(*connect.Request[workflow.GetActionLogContextRequest]) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *RunServiceHandler_GetActionLogContext_Call) Return(response *connect.Response[workflow.GetActionLogContextResponse], err error) *RunServiceHandler_GetActionLogContext_Call { + _c.Call.Return(response, err) + return _c +} + +func (_c *RunServiceHandler_GetActionLogContext_Call) RunAndReturn(run func(context1 context.Context, request *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error)) *RunServiceHandler_GetActionLogContext_Call { + _c.Call.Return(run) + return _c +} + // GetRunDetails provides a mock function for the type RunServiceHandler func (_mock *RunServiceHandler) GetRunDetails(context1 context.Context, request *connect.Request[workflow.GetRunDetailsRequest]) (*connect.Response[workflow.GetRunDetailsResponse], error) { ret := _mock.Called(context1, request) diff --git a/gen/go/flyteidl2/workflow/workflowconnect/run_logs_service.connect.go b/gen/go/flyteidl2/workflow/workflowconnect/run_logs_service.connect.go index ca9461070e..a500b7444e 100644 --- a/gen/go/flyteidl2/workflow/workflowconnect/run_logs_service.connect.go +++ b/gen/go/flyteidl2/workflow/workflowconnect/run_logs_service.connect.go @@ -45,6 +45,9 @@ var ( // RunLogsServiceClient is a client for the flyteidl2.workflow.RunLogsService service. type RunLogsServiceClient interface { + // Deprecated: Use DataProxyService.TailLogs instead. + // + // Deprecated: do not use. TailLogs(context.Context, *connect.Request[workflow.TailLogsRequest]) (*connect.ServerStreamForClient[workflow.TailLogsResponse], error) } @@ -74,12 +77,17 @@ type runLogsServiceClient struct { } // TailLogs calls flyteidl2.workflow.RunLogsService.TailLogs. +// +// Deprecated: do not use. func (c *runLogsServiceClient) TailLogs(ctx context.Context, req *connect.Request[workflow.TailLogsRequest]) (*connect.ServerStreamForClient[workflow.TailLogsResponse], error) { return c.tailLogs.CallServerStream(ctx, req) } // RunLogsServiceHandler is an implementation of the flyteidl2.workflow.RunLogsService service. type RunLogsServiceHandler interface { + // Deprecated: Use DataProxyService.TailLogs instead. + // + // Deprecated: do not use. TailLogs(context.Context, *connect.Request[workflow.TailLogsRequest], *connect.ServerStream[workflow.TailLogsResponse]) error } diff --git a/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go b/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go index 0135cedab6..4e83d65d71 100644 --- a/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go +++ b/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go @@ -70,26 +70,30 @@ const ( // RunServiceGetActionDataURIsProcedure is the fully-qualified name of the RunService's // GetActionDataURIs RPC. RunServiceGetActionDataURIsProcedure = "/flyteidl2.workflow.RunService/GetActionDataURIs" + // RunServiceGetActionLogContextProcedure is the fully-qualified name of the RunService's + // GetActionLogContext RPC. + RunServiceGetActionLogContextProcedure = "/flyteidl2.workflow.RunService/GetActionLogContext" ) // These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. var ( - runServiceServiceDescriptor = workflow.File_flyteidl2_workflow_run_service_proto.Services().ByName("RunService") - runServiceCreateRunMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("CreateRun") - runServiceAbortRunMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("AbortRun") - runServiceGetRunDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetRunDetails") - runServiceWatchRunDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchRunDetails") - runServiceGetActionDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionDetails") - runServiceWatchActionDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchActionDetails") - runServiceGetActionDataMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionData") - runServiceListRunsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("ListRuns") - runServiceWatchRunsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchRuns") - runServiceListActionsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("ListActions") - runServiceWatchActionsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchActions") - runServiceWatchClusterEventsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchClusterEvents") - runServiceAbortActionMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("AbortAction") - runServiceWatchGroupsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchGroups") - runServiceGetActionDataURIsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionDataURIs") + runServiceServiceDescriptor = workflow.File_flyteidl2_workflow_run_service_proto.Services().ByName("RunService") + runServiceCreateRunMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("CreateRun") + runServiceAbortRunMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("AbortRun") + runServiceGetRunDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetRunDetails") + runServiceWatchRunDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchRunDetails") + runServiceGetActionDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionDetails") + runServiceWatchActionDetailsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchActionDetails") + runServiceGetActionDataMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionData") + runServiceListRunsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("ListRuns") + runServiceWatchRunsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchRuns") + runServiceListActionsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("ListActions") + runServiceWatchActionsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchActions") + runServiceWatchClusterEventsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchClusterEvents") + runServiceAbortActionMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("AbortAction") + runServiceWatchGroupsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchGroups") + runServiceGetActionDataURIsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionDataURIs") + runServiceGetActionLogContextMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionLogContext") ) // RunServiceClient is a client for the flyteidl2.workflow.RunService service. @@ -128,6 +132,8 @@ type RunServiceClient interface { WatchGroups(context.Context, *connect.Request[workflow.WatchGroupsRequest]) (*connect.ServerStreamForClient[workflow.WatchGroupsResponse], error) // Get the storage URIs for an action's input and output data. GetActionDataURIs(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) + // Get the logging context (pod name, namespace, cluster) for an action attempt. + GetActionLogContext(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error) } // NewRunServiceClient constructs a client for the flyteidl2.workflow.RunService service. By @@ -236,26 +242,34 @@ func NewRunServiceClient(httpClient connect.HTTPClient, baseURL string, opts ... connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithClientOptions(opts...), ), + getActionLogContext: connect.NewClient[workflow.GetActionLogContextRequest, workflow.GetActionLogContextResponse]( + httpClient, + baseURL+RunServiceGetActionLogContextProcedure, + connect.WithSchema(runServiceGetActionLogContextMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), } } // runServiceClient implements RunServiceClient. type runServiceClient struct { - createRun *connect.Client[workflow.CreateRunRequest, workflow.CreateRunResponse] - abortRun *connect.Client[workflow.AbortRunRequest, workflow.AbortRunResponse] - getRunDetails *connect.Client[workflow.GetRunDetailsRequest, workflow.GetRunDetailsResponse] - watchRunDetails *connect.Client[workflow.WatchRunDetailsRequest, workflow.WatchRunDetailsResponse] - getActionDetails *connect.Client[workflow.GetActionDetailsRequest, workflow.GetActionDetailsResponse] - watchActionDetails *connect.Client[workflow.WatchActionDetailsRequest, workflow.WatchActionDetailsResponse] - getActionData *connect.Client[workflow.GetActionDataRequest, workflow.GetActionDataResponse] - listRuns *connect.Client[workflow.ListRunsRequest, workflow.ListRunsResponse] - watchRuns *connect.Client[workflow.WatchRunsRequest, workflow.WatchRunsResponse] - listActions *connect.Client[workflow.ListActionsRequest, workflow.ListActionsResponse] - watchActions *connect.Client[workflow.WatchActionsRequest, workflow.WatchActionsResponse] - watchClusterEvents *connect.Client[workflow.WatchClusterEventsRequest, workflow.WatchClusterEventsResponse] - abortAction *connect.Client[workflow.AbortActionRequest, workflow.AbortActionResponse] - watchGroups *connect.Client[workflow.WatchGroupsRequest, workflow.WatchGroupsResponse] - getActionDataURIs *connect.Client[workflow.GetActionDataURIsRequest, workflow.GetActionDataURIsResponse] + createRun *connect.Client[workflow.CreateRunRequest, workflow.CreateRunResponse] + abortRun *connect.Client[workflow.AbortRunRequest, workflow.AbortRunResponse] + getRunDetails *connect.Client[workflow.GetRunDetailsRequest, workflow.GetRunDetailsResponse] + watchRunDetails *connect.Client[workflow.WatchRunDetailsRequest, workflow.WatchRunDetailsResponse] + getActionDetails *connect.Client[workflow.GetActionDetailsRequest, workflow.GetActionDetailsResponse] + watchActionDetails *connect.Client[workflow.WatchActionDetailsRequest, workflow.WatchActionDetailsResponse] + getActionData *connect.Client[workflow.GetActionDataRequest, workflow.GetActionDataResponse] + listRuns *connect.Client[workflow.ListRunsRequest, workflow.ListRunsResponse] + watchRuns *connect.Client[workflow.WatchRunsRequest, workflow.WatchRunsResponse] + listActions *connect.Client[workflow.ListActionsRequest, workflow.ListActionsResponse] + watchActions *connect.Client[workflow.WatchActionsRequest, workflow.WatchActionsResponse] + watchClusterEvents *connect.Client[workflow.WatchClusterEventsRequest, workflow.WatchClusterEventsResponse] + abortAction *connect.Client[workflow.AbortActionRequest, workflow.AbortActionResponse] + watchGroups *connect.Client[workflow.WatchGroupsRequest, workflow.WatchGroupsResponse] + getActionDataURIs *connect.Client[workflow.GetActionDataURIsRequest, workflow.GetActionDataURIsResponse] + getActionLogContext *connect.Client[workflow.GetActionLogContextRequest, workflow.GetActionLogContextResponse] } // CreateRun calls flyteidl2.workflow.RunService.CreateRun. @@ -335,6 +349,11 @@ func (c *runServiceClient) GetActionDataURIs(ctx context.Context, req *connect.R return c.getActionDataURIs.CallUnary(ctx, req) } +// GetActionLogContext calls flyteidl2.workflow.RunService.GetActionLogContext. +func (c *runServiceClient) GetActionLogContext(ctx context.Context, req *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error) { + return c.getActionLogContext.CallUnary(ctx, req) +} + // RunServiceHandler is an implementation of the flyteidl2.workflow.RunService service. type RunServiceHandler interface { // Create a new run of the given task. @@ -371,6 +390,8 @@ type RunServiceHandler interface { WatchGroups(context.Context, *connect.Request[workflow.WatchGroupsRequest], *connect.ServerStream[workflow.WatchGroupsResponse]) error // Get the storage URIs for an action's input and output data. GetActionDataURIs(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) + // Get the logging context (pod name, namespace, cluster) for an action attempt. + GetActionLogContext(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error) } // NewRunServiceHandler builds an HTTP handler from the service implementation. It returns the path @@ -475,6 +496,13 @@ func NewRunServiceHandler(svc RunServiceHandler, opts ...connect.HandlerOption) connect.WithIdempotency(connect.IdempotencyNoSideEffects), connect.WithHandlerOptions(opts...), ) + runServiceGetActionLogContextHandler := connect.NewUnaryHandler( + RunServiceGetActionLogContextProcedure, + svc.GetActionLogContext, + connect.WithSchema(runServiceGetActionLogContextMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) return "/flyteidl2.workflow.RunService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case RunServiceCreateRunProcedure: @@ -507,6 +535,8 @@ func NewRunServiceHandler(svc RunServiceHandler, opts ...connect.HandlerOption) runServiceWatchGroupsHandler.ServeHTTP(w, r) case RunServiceGetActionDataURIsProcedure: runServiceGetActionDataURIsHandler.ServeHTTP(w, r) + case RunServiceGetActionLogContextProcedure: + runServiceGetActionLogContextHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -575,3 +605,7 @@ func (UnimplementedRunServiceHandler) WatchGroups(context.Context, *connect.Requ func (UnimplementedRunServiceHandler) GetActionDataURIs(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.workflow.RunService.GetActionDataURIs is not implemented")) } + +func (UnimplementedRunServiceHandler) GetActionLogContext(context.Context, *connect.Request[workflow.GetActionLogContextRequest]) (*connect.Response[workflow.GetActionLogContextResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.workflow.RunService.GetActionLogContext is not implemented")) +} diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py b/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py index 7b9f73b76a..e8b62f4325 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py @@ -29,6 +29,9 @@ async def create_download_link(self, request: flyteidl2_dot_dataproxy_dot_datapr async def get_action_data(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def tail_logs(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, ctx: RequestContext) -> AsyncIterator[flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse]: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + class DataProxyServiceASGIApplication(ConnectASGIApplication[DataProxyService]): def __init__(self, service: DataProxyService | AsyncGenerator[DataProxyService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: @@ -75,6 +78,16 @@ def __init__(self, service: DataProxyService | AsyncGenerator[DataProxyService], ), function=svc.get_action_data, ), + "/flyteidl2.dataproxy.DataProxyService/TailLogs": Endpoint.server_stream( + method=MethodInfo( + name="TailLogs", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.tail_logs, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -170,6 +183,26 @@ async def get_action_data( use_get=use_get, ) + def tail_logs( + self, + request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> AsyncIterator[flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse]: + return self.execute_server_stream( + request=request, + method=MethodInfo( + name="TailLogs", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + class DataProxyServiceSync(Protocol): def create_upload_location(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.CreateUploadLocationRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.CreateUploadLocationResponse: @@ -180,6 +213,8 @@ def create_download_link(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__s raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def get_action_data(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def tail_logs(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, ctx: RequestContext) -> Iterator[flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse]: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class DataProxyServiceWSGIApplication(ConnectWSGIApplication): @@ -226,6 +261,16 @@ def __init__(self, service: DataProxyServiceSync, interceptors: Iterable[Interce ), function=service.get_action_data, ), + "/flyteidl2.dataproxy.DataProxyService/TailLogs": EndpointSync.server_stream( + method=MethodInfo( + name="TailLogs", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.tail_logs, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -320,3 +365,23 @@ def get_action_data( timeout_ms=timeout_ms, use_get=use_get, ) + + def tail_logs( + self, + request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> Iterator[flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse]: + return self.execute_server_stream( + request=request, + method=MethodInfo( + name="TailLogs", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py index e8594096e7..d0fdb3d7ac 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py @@ -15,13 +15,14 @@ from flyteidl2.app import app_definition_pb2 as flyteidl2_dot_app_dot_app__definition__pb2 from flyteidl2.common import identifier_pb2 as flyteidl2_dot_common_dot_identifier__pb2 from flyteidl2.common import run_pb2 as flyteidl2_dot_common_dot_run__pb2 +from flyteidl2.logs.dataplane import payload_pb2 as flyteidl2_dot_logs_dot_dataplane_dot_payload__pb2 from flyteidl2.task import common_pb2 as flyteidl2_dot_task_dot_common__pb2 from flyteidl2.task import task_definition_pb2 as flyteidl2_dot_task_dot_task__definition__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+flyteidl2/dataproxy/dataproxy_service.proto\x12\x13\x66lyteidl2.dataproxy\x1a\x1b\x62uf/validate/validate.proto\x1a\"flyteidl2/app/app_definition.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a$flyteidl2/task/task_definition.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf8\x02\n\x1b\x43reateUploadLocationRequest\x12!\n\x07project\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07project\x12\x1f\n\x06\x64omain\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12(\n\x0b\x63ontent_md5\x18\x05 \x01(\x0c\x42\x07\xbaH\x04z\x02h\x10R\ncontentMd5\x12#\n\rfilename_root\x18\x06 \x01(\tR\x0c\x66ilenameRoot\x12\x37\n\x18\x61\x64\x64_content_md5_metadata\x18\x07 \x01(\x08R\x15\x61\x64\x64\x43ontentMd5Metadata\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\x12%\n\x0e\x63ontent_length\x18\t \x01(\x03R\rcontentLength\"\xad\x02\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12X\n\x07headers\x18\x04 \x03(\x0b\x32>.flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntryR\x07headers\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x99\x03\n\x13UploadInputsRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x02 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x03 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x04 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x05 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12.\n\x06inputs\x18\x06 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputsB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\"n\n\x14UploadInputsResponse\x12V\n\x14offloaded_input_data\x18\x01 \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataR\x12offloadedInputData\"i\n\rPreSignedURLs\x12\x1d\n\nsigned_url\x18\x01 \x03(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"\x80\x03\n\x19\x43reateDownloadLinkRequest\x12P\n\rartifact_type\x18\x01 \x01(\x0e\x32!.flyteidl2.dataproxy.ArtifactTypeB\x08\xbaH\x05\x82\x01\x02 \x00R\x0c\x61rtifactType\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12W\n\x11\x61\x63tion_attempt_id\x18\x03 \x01(\x0b\x32).flyteidl2.common.ActionAttemptIdentifierH\x00R\x0f\x61\x63tionAttemptId\x12\x32\n\x06\x61pp_id\x18\x04 \x01(\x0b\x32\x19.flyteidl2.app.IdentifierH\x00R\x05\x61ppId\x12\x39\n\x07task_id\x18\x05 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x0f\n\x06source\x12\x05\xbaH\x02\x08\x01\"h\n\x1a\x43reateDownloadLinkResponse\x12J\n\x0fpre_signed_urls\x18\x01 \x01(\x0b\x32\".flyteidl2.dataproxy.PreSignedURLsR\rpreSignedUrls\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs*f\n\x0c\x41rtifactType\x12\x1d\n\x19\x41RTIFACT_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x41RTIFACT_TYPE_REPORT\x10\x01\x12\x1d\n\x19\x41RTIFACT_TYPE_CODE_BUNDLE\x10\x02\x32\xde\x03\n\x10\x44\x61taProxyService\x12}\n\x14\x43reateUploadLocation\x12\x30.flyteidl2.dataproxy.CreateUploadLocationRequest\x1a\x31.flyteidl2.dataproxy.CreateUploadLocationResponse\"\x00\x12\x65\n\x0cUploadInputs\x12(.flyteidl2.dataproxy.UploadInputsRequest\x1a).flyteidl2.dataproxy.UploadInputsResponse\"\x00\x12w\n\x12\x43reateDownloadLink\x12..flyteidl2.dataproxy.CreateDownloadLinkRequest\x1a/.flyteidl2.dataproxy.CreateDownloadLinkResponse\"\x00\x12k\n\rGetActionData\x12).flyteidl2.dataproxy.GetActionDataRequest\x1a*.flyteidl2.dataproxy.GetActionDataResponse\"\x03\x90\x02\x01\x42\xd8\x01\n\x17\x63om.flyteidl2.dataproxyB\x15\x44\x61taproxyServiceProtoH\x02P\x01Z7github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy\xa2\x02\x03\x46\x44X\xaa\x02\x13\x46lyteidl2.Dataproxy\xca\x02\x13\x46lyteidl2\\Dataproxy\xe2\x02\x1f\x46lyteidl2\\Dataproxy\\GPBMetadata\xea\x02\x14\x46lyteidl2::Dataproxyb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+flyteidl2/dataproxy/dataproxy_service.proto\x12\x13\x66lyteidl2.dataproxy\x1a\x1b\x62uf/validate/validate.proto\x1a\"flyteidl2/app/app_definition.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a&flyteidl2/logs/dataplane/payload.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a$flyteidl2/task/task_definition.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf8\x02\n\x1b\x43reateUploadLocationRequest\x12!\n\x07project\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07project\x12\x1f\n\x06\x64omain\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12(\n\x0b\x63ontent_md5\x18\x05 \x01(\x0c\x42\x07\xbaH\x04z\x02h\x10R\ncontentMd5\x12#\n\rfilename_root\x18\x06 \x01(\tR\x0c\x66ilenameRoot\x12\x37\n\x18\x61\x64\x64_content_md5_metadata\x18\x07 \x01(\x08R\x15\x61\x64\x64\x43ontentMd5Metadata\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\x12%\n\x0e\x63ontent_length\x18\t \x01(\x03R\rcontentLength\"\xad\x02\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12X\n\x07headers\x18\x04 \x03(\x0b\x32>.flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntryR\x07headers\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x99\x03\n\x13UploadInputsRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x02 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x03 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x04 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x05 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12.\n\x06inputs\x18\x06 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputsB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\"n\n\x14UploadInputsResponse\x12V\n\x14offloaded_input_data\x18\x01 \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataR\x12offloadedInputData\"i\n\rPreSignedURLs\x12\x1d\n\nsigned_url\x18\x01 \x03(\tR\tsignedUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"\x80\x03\n\x19\x43reateDownloadLinkRequest\x12P\n\rartifact_type\x18\x01 \x01(\x0e\x32!.flyteidl2.dataproxy.ArtifactTypeB\x08\xbaH\x05\x82\x01\x02 \x00R\x0c\x61rtifactType\x12\x38\n\nexpires_in\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12W\n\x11\x61\x63tion_attempt_id\x18\x03 \x01(\x0b\x32).flyteidl2.common.ActionAttemptIdentifierH\x00R\x0f\x61\x63tionAttemptId\x12\x32\n\x06\x61pp_id\x18\x04 \x01(\x0b\x32\x19.flyteidl2.app.IdentifierH\x00R\x05\x61ppId\x12\x39\n\x07task_id\x18\x05 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x0f\n\x06source\x12\x05\xbaH\x02\x08\x01\"h\n\x1a\x43reateDownloadLinkResponse\x12J\n\x0fpre_signed_urls\x18\x01 \x01(\x0b\x32\".flyteidl2.dataproxy.PreSignedURLsR\rpreSignedUrls\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs\"}\n\x0fTailLogsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"\x93\x01\n\x10TailLogsResponse\x12>\n\x04logs\x18\x01 \x03(\x0b\x32*.flyteidl2.dataproxy.TailLogsResponse.LogsR\x04logs\x1a?\n\x04Logs\x12\x37\n\x05lines\x18\x01 \x03(\x0b\x32!.flyteidl2.logs.dataplane.LogLineR\x05lines*f\n\x0c\x41rtifactType\x12\x1d\n\x19\x41RTIFACT_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x41RTIFACT_TYPE_REPORT\x10\x01\x12\x1d\n\x19\x41RTIFACT_TYPE_CODE_BUNDLE\x10\x02\x32\xbb\x04\n\x10\x44\x61taProxyService\x12}\n\x14\x43reateUploadLocation\x12\x30.flyteidl2.dataproxy.CreateUploadLocationRequest\x1a\x31.flyteidl2.dataproxy.CreateUploadLocationResponse\"\x00\x12\x65\n\x0cUploadInputs\x12(.flyteidl2.dataproxy.UploadInputsRequest\x1a).flyteidl2.dataproxy.UploadInputsResponse\"\x00\x12w\n\x12\x43reateDownloadLink\x12..flyteidl2.dataproxy.CreateDownloadLinkRequest\x1a/.flyteidl2.dataproxy.CreateDownloadLinkResponse\"\x00\x12k\n\rGetActionData\x12).flyteidl2.dataproxy.GetActionDataRequest\x1a*.flyteidl2.dataproxy.GetActionDataResponse\"\x03\x90\x02\x01\x12[\n\x08TailLogs\x12$.flyteidl2.dataproxy.TailLogsRequest\x1a%.flyteidl2.dataproxy.TailLogsResponse\"\x00\x30\x01\x42\xd8\x01\n\x17\x63om.flyteidl2.dataproxyB\x15\x44\x61taproxyServiceProtoH\x02P\x01Z7github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy\xa2\x02\x03\x46\x44X\xaa\x02\x13\x46lyteidl2.Dataproxy\xca\x02\x13\x46lyteidl2\\Dataproxy\xe2\x02\x1f\x46lyteidl2\\Dataproxy\\GPBMetadata\xea\x02\x14\x46lyteidl2::Dataproxyb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -47,30 +48,40 @@ _CREATEDOWNLOADLINKREQUEST.fields_by_name['artifact_type']._serialized_options = b'\272H\005\202\001\002 \000' _GETACTIONDATAREQUEST.fields_by_name['action_id']._options = None _GETACTIONDATAREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' + _TAILLOGSREQUEST.fields_by_name['action_id']._options = None + _TAILLOGSREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' + _TAILLOGSREQUEST.fields_by_name['attempt']._options = None + _TAILLOGSREQUEST.fields_by_name['attempt']._serialized_options = b'\272H\004*\002 \000' _DATAPROXYSERVICE.methods_by_name['GetActionData']._options = None _DATAPROXYSERVICE.methods_by_name['GetActionData']._serialized_options = b'\220\002\001' - _globals['_ARTIFACTTYPE']._serialized_start=2356 - _globals['_ARTIFACTTYPE']._serialized_end=2458 - _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=329 - _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=705 - _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=708 - _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=1009 - _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_start=951 - _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_end=1009 - _globals['_UPLOADINPUTSREQUEST']._serialized_start=1012 - _globals['_UPLOADINPUTSREQUEST']._serialized_end=1421 - _globals['_UPLOADINPUTSRESPONSE']._serialized_start=1423 - _globals['_UPLOADINPUTSRESPONSE']._serialized_end=1533 - _globals['_PRESIGNEDURLS']._serialized_start=1535 - _globals['_PRESIGNEDURLS']._serialized_end=1640 - _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=1643 - _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=2027 - _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=2029 - _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=2133 - _globals['_GETACTIONDATAREQUEST']._serialized_start=2135 - _globals['_GETACTIONDATAREQUEST']._serialized_end=2230 - _globals['_GETACTIONDATARESPONSE']._serialized_start=2232 - _globals['_GETACTIONDATARESPONSE']._serialized_end=2354 - _globals['_DATAPROXYSERVICE']._serialized_start=2461 - _globals['_DATAPROXYSERVICE']._serialized_end=2939 + _globals['_ARTIFACTTYPE']._serialized_start=2673 + _globals['_ARTIFACTTYPE']._serialized_end=2775 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=369 + _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=745 + _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=748 + _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_end=1049 + _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_start=991 + _globals['_CREATEUPLOADLOCATIONRESPONSE_HEADERSENTRY']._serialized_end=1049 + _globals['_UPLOADINPUTSREQUEST']._serialized_start=1052 + _globals['_UPLOADINPUTSREQUEST']._serialized_end=1461 + _globals['_UPLOADINPUTSRESPONSE']._serialized_start=1463 + _globals['_UPLOADINPUTSRESPONSE']._serialized_end=1573 + _globals['_PRESIGNEDURLS']._serialized_start=1575 + _globals['_PRESIGNEDURLS']._serialized_end=1680 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_start=1683 + _globals['_CREATEDOWNLOADLINKREQUEST']._serialized_end=2067 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_start=2069 + _globals['_CREATEDOWNLOADLINKRESPONSE']._serialized_end=2173 + _globals['_GETACTIONDATAREQUEST']._serialized_start=2175 + _globals['_GETACTIONDATAREQUEST']._serialized_end=2270 + _globals['_GETACTIONDATARESPONSE']._serialized_start=2272 + _globals['_GETACTIONDATARESPONSE']._serialized_end=2394 + _globals['_TAILLOGSREQUEST']._serialized_start=2396 + _globals['_TAILLOGSREQUEST']._serialized_end=2521 + _globals['_TAILLOGSRESPONSE']._serialized_start=2524 + _globals['_TAILLOGSRESPONSE']._serialized_end=2671 + _globals['_TAILLOGSRESPONSE_LOGS']._serialized_start=2608 + _globals['_TAILLOGSRESPONSE_LOGS']._serialized_end=2671 + _globals['_DATAPROXYSERVICE']._serialized_start=2778 + _globals['_DATAPROXYSERVICE']._serialized_end=3349 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi index a0fca66c56..2468116c83 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi @@ -2,6 +2,7 @@ from buf.validate import validate_pb2 as _validate_pb2 from flyteidl2.app import app_definition_pb2 as _app_definition_pb2 from flyteidl2.common import identifier_pb2 as _identifier_pb2 from flyteidl2.common import run_pb2 as _run_pb2 +from flyteidl2.logs.dataplane import payload_pb2 as _payload_pb2 from flyteidl2.task import common_pb2 as _common_pb2 from flyteidl2.task import task_definition_pb2 as _task_definition_pb2 from google.protobuf import duration_pb2 as _duration_pb2 @@ -127,3 +128,22 @@ class GetActionDataResponse(_message.Message): inputs: _common_pb2.Inputs outputs: _common_pb2.Outputs def __init__(self, inputs: _Optional[_Union[_common_pb2.Inputs, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.Outputs, _Mapping]] = ...) -> None: ... + +class TailLogsRequest(_message.Message): + __slots__ = ["action_id", "attempt"] + ACTION_ID_FIELD_NUMBER: _ClassVar[int] + ATTEMPT_FIELD_NUMBER: _ClassVar[int] + action_id: _identifier_pb2.ActionIdentifier + attempt: int + def __init__(self, action_id: _Optional[_Union[_identifier_pb2.ActionIdentifier, _Mapping]] = ..., attempt: _Optional[int] = ...) -> None: ... + +class TailLogsResponse(_message.Message): + __slots__ = ["logs"] + class Logs(_message.Message): + __slots__ = ["lines"] + LINES_FIELD_NUMBER: _ClassVar[int] + lines: _containers.RepeatedCompositeFieldContainer[_payload_pb2.LogLine] + def __init__(self, lines: _Optional[_Iterable[_Union[_payload_pb2.LogLine, _Mapping]]] = ...) -> None: ... + LOGS_FIELD_NUMBER: _ClassVar[int] + logs: _containers.RepeatedCompositeFieldContainer[TailLogsResponse.Logs] + def __init__(self, logs: _Optional[_Iterable[_Union[TailLogsResponse.Logs, _Mapping]]] = ...) -> None: ... diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py index 760125d118..f28b619afa 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py @@ -35,6 +35,11 @@ def __init__(self, channel): request_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest.SerializeToString, response_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse.FromString, ) + self.TailLogs = channel.unary_stream( + '/flyteidl2.dataproxy.DataProxyService/TailLogs', + request_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest.SerializeToString, + response_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse.FromString, + ) class DataProxyServiceServicer(object): @@ -68,6 +73,13 @@ def GetActionData(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def TailLogs(self, request, context): + """Stream logs for an action attempt. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_DataProxyServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -91,6 +103,11 @@ def add_DataProxyServiceServicer_to_server(servicer, server): request_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest.FromString, response_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse.SerializeToString, ), + 'TailLogs': grpc.unary_stream_rpc_method_handler( + servicer.TailLogs, + request_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest.FromString, + response_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flyteidl2.dataproxy.DataProxyService', rpc_method_handlers) @@ -169,3 +186,20 @@ def GetActionData(request, flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def TailLogs(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream(request, target, '/flyteidl2.dataproxy.DataProxyService/TailLogs', + flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsRequest.SerializeToString, + flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.TailLogsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/gen/python/flyteidl2/workflow/run_logs_service_pb2.py b/gen/python/flyteidl2/workflow/run_logs_service_pb2.py index d74b4050db..5d01e66a25 100644 --- a/gen/python/flyteidl2/workflow/run_logs_service_pb2.py +++ b/gen/python/flyteidl2/workflow/run_logs_service_pb2.py @@ -16,7 +16,7 @@ from flyteidl2.logs.dataplane import payload_pb2 as flyteidl2_dot_logs_dot_dataplane_dot_payload__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)flyteidl2/workflow/run_logs_service.proto\x12\x12\x66lyteidl2.workflow\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a&flyteidl2/logs/dataplane/payload.proto\"}\n\x0fTailLogsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"\x92\x01\n\x10TailLogsResponse\x12=\n\x04logs\x18\x01 \x03(\x0b\x32).flyteidl2.workflow.TailLogsResponse.LogsR\x04logs\x1a?\n\x04Logs\x12\x37\n\x05lines\x18\x01 \x03(\x0b\x32!.flyteidl2.logs.dataplane.LogLineR\x05lines2n\n\x0eRunLogsService\x12\\\n\x08TailLogs\x12#.flyteidl2.workflow.TailLogsRequest\x1a$.flyteidl2.workflow.TailLogsResponse\"\x03\x90\x02\x01\x30\x01\x42\xd0\x01\n\x16\x63om.flyteidl2.workflowB\x13RunLogsServiceProtoH\x02P\x01Z6github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow\xa2\x02\x03\x46WX\xaa\x02\x12\x46lyteidl2.Workflow\xca\x02\x12\x46lyteidl2\\Workflow\xe2\x02\x1e\x46lyteidl2\\Workflow\\GPBMetadata\xea\x02\x13\x46lyteidl2::Workflowb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)flyteidl2/workflow/run_logs_service.proto\x12\x12\x66lyteidl2.workflow\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a&flyteidl2/logs/dataplane/payload.proto\"}\n\x0fTailLogsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"\x92\x01\n\x10TailLogsResponse\x12=\n\x04logs\x18\x01 \x03(\x0b\x32).flyteidl2.workflow.TailLogsResponse.LogsR\x04logs\x1a?\n\x04Logs\x12\x37\n\x05lines\x18\x01 \x03(\x0b\x32!.flyteidl2.logs.dataplane.LogLineR\x05lines2q\n\x0eRunLogsService\x12_\n\x08TailLogs\x12#.flyteidl2.workflow.TailLogsRequest\x1a$.flyteidl2.workflow.TailLogsResponse\"\x06\x88\x02\x01\x90\x02\x01\x30\x01\x42\xd0\x01\n\x16\x63om.flyteidl2.workflowB\x13RunLogsServiceProtoH\x02P\x01Z6github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow\xa2\x02\x03\x46WX\xaa\x02\x12\x46lyteidl2.Workflow\xca\x02\x12\x46lyteidl2\\Workflow\xe2\x02\x1e\x46lyteidl2\\Workflow\\GPBMetadata\xea\x02\x13\x46lyteidl2::Workflowb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,7 +29,7 @@ _TAILLOGSREQUEST.fields_by_name['attempt']._options = None _TAILLOGSREQUEST.fields_by_name['attempt']._serialized_options = b'\272H\004*\002 \000' _RUNLOGSSERVICE.methods_by_name['TailLogs']._options = None - _RUNLOGSSERVICE.methods_by_name['TailLogs']._serialized_options = b'\220\002\001' + _RUNLOGSSERVICE.methods_by_name['TailLogs']._serialized_options = b'\210\002\001\220\002\001' _globals['_TAILLOGSREQUEST']._serialized_start=169 _globals['_TAILLOGSREQUEST']._serialized_end=294 _globals['_TAILLOGSRESPONSE']._serialized_start=297 @@ -37,5 +37,5 @@ _globals['_TAILLOGSRESPONSE_LOGS']._serialized_start=380 _globals['_TAILLOGSRESPONSE_LOGS']._serialized_end=443 _globals['_RUNLOGSSERVICE']._serialized_start=445 - _globals['_RUNLOGSSERVICE']._serialized_end=555 + _globals['_RUNLOGSSERVICE']._serialized_end=558 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/flyteidl2/workflow/run_logs_service_pb2_grpc.py b/gen/python/flyteidl2/workflow/run_logs_service_pb2_grpc.py index 9e240e6d3e..dca37fbac0 100644 --- a/gen/python/flyteidl2/workflow/run_logs_service_pb2_grpc.py +++ b/gen/python/flyteidl2/workflow/run_logs_service_pb2_grpc.py @@ -27,7 +27,8 @@ class RunLogsServiceServicer(object): """ def TailLogs(self, request, context): - """Missing associated documentation comment in .proto file.""" + """Deprecated: Use DataProxyService.TailLogs instead. + """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') diff --git a/gen/python/flyteidl2/workflow/run_service_connect.py b/gen/python/flyteidl2/workflow/run_service_connect.py index feb5785bb8..bd46a44aa4 100644 --- a/gen/python/flyteidl2/workflow/run_service_connect.py +++ b/gen/python/flyteidl2/workflow/run_service_connect.py @@ -62,6 +62,9 @@ def watch_groups(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.Wat async def get_action_data_u_r_is(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def get_action_log_context(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + class RunServiceASGIApplication(ConnectASGIApplication[RunService]): def __init__(self, service: RunService | AsyncGenerator[RunService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: @@ -218,6 +221,16 @@ def __init__(self, service: RunService | AsyncGenerator[RunService], *, intercep ), function=svc.get_action_data_u_r_is, ), + "/flyteidl2.workflow.RunService/GetActionLogContext": Endpoint.unary( + method=MethodInfo( + name="GetActionLogContext", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + function=svc.get_action_log_context, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -543,6 +556,28 @@ async def get_action_data_u_r_is( use_get=use_get, ) + async def get_action_log_context( + self, + request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + use_get: bool = False, + ) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetActionLogContext", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + headers=headers, + timeout_ms=timeout_ms, + use_get=use_get, + ) + class RunServiceSync(Protocol): def create_run(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.CreateRunRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.CreateRunResponse: @@ -575,6 +610,8 @@ def watch_groups(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.Wat raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def get_action_data_u_r_is(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_action_log_context(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class RunServiceWSGIApplication(ConnectWSGIApplication): @@ -731,6 +768,16 @@ def __init__(self, service: RunServiceSync, interceptors: Iterable[InterceptorSy ), function=service.get_action_data_u_r_is, ), + "/flyteidl2.workflow.RunService/GetActionLogContext": EndpointSync.unary( + method=MethodInfo( + name="GetActionLogContext", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + function=service.get_action_log_context, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -1055,3 +1102,25 @@ def get_action_data_u_r_is( timeout_ms=timeout_ms, use_get=use_get, ) + + def get_action_log_context( + self, + request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + use_get: bool = False, + ) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetActionLogContext", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + headers=headers, + timeout_ms=timeout_ms, + use_get=use_get, + ) diff --git a/gen/python/flyteidl2/workflow/run_service_pb2.py b/gen/python/flyteidl2/workflow/run_service_pb2.py index 9cd6cde18d..8af46ceedb 100644 --- a/gen/python/flyteidl2/workflow/run_service_pb2.py +++ b/gen/python/flyteidl2/workflow/run_service_pb2.py @@ -15,6 +15,7 @@ from flyteidl2.common import identifier_pb2 as flyteidl2_dot_common_dot_identifier__pb2 from flyteidl2.common import list_pb2 as flyteidl2_dot_common_dot_list__pb2 from flyteidl2.common import run_pb2 as flyteidl2_dot_common_dot_run__pb2 +from flyteidl2.core import execution_pb2 as flyteidl2_dot_core_dot_execution__pb2 from flyteidl2.task import common_pb2 as flyteidl2_dot_task_dot_common__pb2 from flyteidl2.task import run_pb2 as flyteidl2_dot_task_dot_run__pb2 from flyteidl2.task import task_definition_pb2 as flyteidl2_dot_task_dot_task__definition__pb2 @@ -22,7 +23,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$flyteidl2/workflow/run_service.proto\x12\x12\x66lyteidl2.workflow\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1b\x66lyteidl2/common/list.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a\x18\x66lyteidl2/task/run.proto\x1a$flyteidl2/task/task_definition.proto\x1a\'flyteidl2/workflow/run_definition.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xee\x04\n\x10\x43reateRunRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x06 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x02 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x03 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x07 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12\x30\n\x06inputs\x18\x04 \x01(\x0b\x32\x16.flyteidl2.task.InputsH\x02R\x06inputs\x12X\n\x14offloaded_input_data\x18\t \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataH\x02R\x12offloadedInputData\x12\x32\n\x08run_spec\x18\x05 \x01(\x0b\x32\x17.flyteidl2.task.RunSpecR\x07runSpec\x12\x35\n\x06source\x18\x08 \x01(\x0e\x32\x1d.flyteidl2.workflow.RunSourceR\x06sourceB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\x42\x0f\n\rinput_wrapper\">\n\x11\x43reateRunResponse\x12)\n\x03run\x18\x01 \x01(\x0b\x32\x17.flyteidl2.workflow.RunR\x03run\"y\n\x0f\x41\x62ortRunRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\x12\n\x10\x41\x62ortRunResponse\"V\n\x14GetRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"Q\n\x15GetRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"X\n\x16WatchRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"S\n\x17WatchRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"b\n\x17GetActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"W\n\x18GetActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"d\n\x19WatchActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"Y\n\x1aWatchActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs\"c\n\x18GetActionDataURIsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"[\n\x19GetActionDataURIsResponse\x12\x1d\n\ninputs_uri\x18\x01 \x01(\tR\tinputsUri\x12\x1f\n\x0boutputs_uri\x18\x02 \x01(\tR\noutputsUri\"\x84\x03\n\x0fListRunsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x42\n\x0ctrigger_name\x18\x06 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x00R\x0btriggerName\x12\x37\n\ttask_name\x18\x07 \x01(\x0b\x32\x18.flyteidl2.task.TaskNameH\x00R\x08taskName\x12\x39\n\x07task_id\x18\x08 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"U\n\x10ListRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x02\n\x10WatchRunsRequest\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\ncluster_id\x18\x03 \x01(\x0b\x32#.flyteidl2.common.ClusterIdentifierH\x00R\tclusterId\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x05 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x0f\n\x06target\x12\x05\xbaH\x02\x08\x01\"@\n\x11WatchRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\"\x8d\x01\n\x12ListActionsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12>\n\x06run_id\x18\x02 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"a\n\x13ListActionsResponse\x12\x34\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x1a.flyteidl2.workflow.ActionR\x07\x61\x63tions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x01\n\x13WatchActionsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x30\n\x06\x66ilter\x18\x02 \x03(\x0b\x32\x18.flyteidl2.common.FilterR\x06\x66ilter\"e\n\x14WatchActionsResponse\x12M\n\x10\x65nriched_actions\x18\x01 \x03(\x0b\x32\".flyteidl2.workflow.EnrichedActionR\x0f\x65nrichedActions\"z\n\x19WatchClusterEventsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x02id\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"e\n\x1aWatchClusterEventsResponse\x12G\n\x0e\x63luster_events\x18\x01 \x03(\x0b\x32 .flyteidl2.workflow.ClusterEventR\rclusterEvents\"u\n\x12\x41\x62ortActionRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12\x16\n\x06reason\x18\x02 \x01(\tR\x06reason\"\x15\n\x13\x41\x62ortActionResponse\"\xe3\x03\n\x12WatchGroupsRequest\x12\x44\n\nproject_id\x18\x01 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x41\n\nstart_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\tstartDate\x12\x35\n\x08\x65nd_date\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndDate\x12\x37\n\x07request\x18\x04 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x61\n\x11known_sort_fields\x18\x05 \x03(\x0b\x32\x35.flyteidl2.workflow.WatchGroupsRequest.KnownSortFieldR\x0fknownSortFields\x1a^\n\x0eKnownSortField\x12\x41\n\ncreated_at\x18\x01 \x01(\x0e\x32 .flyteidl2.common.Sort.DirectionH\x00R\tcreatedAtB\t\n\x07sort_byB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01\"q\n\x13WatchGroupsResponse\x12>\n\x0btask_groups\x18\x01 \x03(\x0b\x32\x1d.flyteidl2.workflow.TaskGroupR\ntaskGroups\x12\x1a\n\x08sentinel\x18\x02 \x01(\x08R\x08sentinel2\xb3\x0c\n\nRunService\x12Z\n\tCreateRun\x12$.flyteidl2.workflow.CreateRunRequest\x1a%.flyteidl2.workflow.CreateRunResponse\"\x00\x12W\n\x08\x41\x62ortRun\x12#.flyteidl2.workflow.AbortRunRequest\x1a$.flyteidl2.workflow.AbortRunResponse\"\x00\x12i\n\rGetRunDetails\x12(.flyteidl2.workflow.GetRunDetailsRequest\x1a).flyteidl2.workflow.GetRunDetailsResponse\"\x03\x90\x02\x01\x12n\n\x0fWatchRunDetails\x12*.flyteidl2.workflow.WatchRunDetailsRequest\x1a+.flyteidl2.workflow.WatchRunDetailsResponse\"\x00\x30\x01\x12r\n\x10GetActionDetails\x12+.flyteidl2.workflow.GetActionDetailsRequest\x1a,.flyteidl2.workflow.GetActionDetailsResponse\"\x03\x90\x02\x01\x12w\n\x12WatchActionDetails\x12-.flyteidl2.workflow.WatchActionDetailsRequest\x1a..flyteidl2.workflow.WatchActionDetailsResponse\"\x00\x30\x01\x12l\n\rGetActionData\x12(.flyteidl2.workflow.GetActionDataRequest\x1a).flyteidl2.workflow.GetActionDataResponse\"\x06\x88\x02\x01\x90\x02\x01\x12Z\n\x08ListRuns\x12#.flyteidl2.workflow.ListRunsRequest\x1a$.flyteidl2.workflow.ListRunsResponse\"\x03\x90\x02\x01\x12\\\n\tWatchRuns\x12$.flyteidl2.workflow.WatchRunsRequest\x1a%.flyteidl2.workflow.WatchRunsResponse\"\x00\x30\x01\x12\x63\n\x0bListActions\x12&.flyteidl2.workflow.ListActionsRequest\x1a\'.flyteidl2.workflow.ListActionsResponse\"\x03\x90\x02\x01\x12\x65\n\x0cWatchActions\x12\'.flyteidl2.workflow.WatchActionsRequest\x1a(.flyteidl2.workflow.WatchActionsResponse\"\x00\x30\x01\x12w\n\x12WatchClusterEvents\x12-.flyteidl2.workflow.WatchClusterEventsRequest\x1a..flyteidl2.workflow.WatchClusterEventsResponse\"\x00\x30\x01\x12`\n\x0b\x41\x62ortAction\x12&.flyteidl2.workflow.AbortActionRequest\x1a\'.flyteidl2.workflow.AbortActionResponse\"\x00\x12\x62\n\x0bWatchGroups\x12&.flyteidl2.workflow.WatchGroupsRequest\x1a\'.flyteidl2.workflow.WatchGroupsResponse\"\x00\x30\x01\x12u\n\x11GetActionDataURIs\x12,.flyteidl2.workflow.GetActionDataURIsRequest\x1a-.flyteidl2.workflow.GetActionDataURIsResponse\"\x03\x90\x02\x01\x42\xcc\x01\n\x16\x63om.flyteidl2.workflowB\x0fRunServiceProtoH\x02P\x01Z6github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow\xa2\x02\x03\x46WX\xaa\x02\x12\x46lyteidl2.Workflow\xca\x02\x12\x46lyteidl2\\Workflow\xe2\x02\x1e\x46lyteidl2\\Workflow\\GPBMetadata\xea\x02\x13\x46lyteidl2::Workflowb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$flyteidl2/workflow/run_service.proto\x12\x12\x66lyteidl2.workflow\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1b\x66lyteidl2/common/list.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1e\x66lyteidl2/core/execution.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a\x18\x66lyteidl2/task/run.proto\x1a$flyteidl2/task/task_definition.proto\x1a\'flyteidl2/workflow/run_definition.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xee\x04\n\x10\x43reateRunRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x06 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x02 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x03 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x07 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12\x30\n\x06inputs\x18\x04 \x01(\x0b\x32\x16.flyteidl2.task.InputsH\x02R\x06inputs\x12X\n\x14offloaded_input_data\x18\t \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataH\x02R\x12offloadedInputData\x12\x32\n\x08run_spec\x18\x05 \x01(\x0b\x32\x17.flyteidl2.task.RunSpecR\x07runSpec\x12\x35\n\x06source\x18\x08 \x01(\x0e\x32\x1d.flyteidl2.workflow.RunSourceR\x06sourceB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\x42\x0f\n\rinput_wrapper\">\n\x11\x43reateRunResponse\x12)\n\x03run\x18\x01 \x01(\x0b\x32\x17.flyteidl2.workflow.RunR\x03run\"y\n\x0f\x41\x62ortRunRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\x12\n\x10\x41\x62ortRunResponse\"V\n\x14GetRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"Q\n\x15GetRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"X\n\x16WatchRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"S\n\x17WatchRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"b\n\x17GetActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"W\n\x18GetActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"d\n\x19WatchActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"Y\n\x1aWatchActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs\"c\n\x18GetActionDataURIsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"[\n\x19GetActionDataURIsResponse\x12\x1d\n\ninputs_uri\x18\x01 \x01(\tR\tinputsUri\x12\x1f\n\x0boutputs_uri\x18\x02 \x01(\tR\noutputsUri\"\x88\x01\n\x1aGetActionLogContextRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"t\n\x1bGetActionLogContextResponse\x12;\n\x0blog_context\x18\x01 \x01(\x0b\x32\x1a.flyteidl2.core.LogContextR\nlogContext\x12\x18\n\x07\x63luster\x18\x02 \x01(\tR\x07\x63luster\"\x84\x03\n\x0fListRunsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x42\n\x0ctrigger_name\x18\x06 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x00R\x0btriggerName\x12\x37\n\ttask_name\x18\x07 \x01(\x0b\x32\x18.flyteidl2.task.TaskNameH\x00R\x08taskName\x12\x39\n\x07task_id\x18\x08 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"U\n\x10ListRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x02\n\x10WatchRunsRequest\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\ncluster_id\x18\x03 \x01(\x0b\x32#.flyteidl2.common.ClusterIdentifierH\x00R\tclusterId\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x05 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x0f\n\x06target\x12\x05\xbaH\x02\x08\x01\"@\n\x11WatchRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\"\x8d\x01\n\x12ListActionsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12>\n\x06run_id\x18\x02 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"a\n\x13ListActionsResponse\x12\x34\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x1a.flyteidl2.workflow.ActionR\x07\x61\x63tions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x01\n\x13WatchActionsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x30\n\x06\x66ilter\x18\x02 \x03(\x0b\x32\x18.flyteidl2.common.FilterR\x06\x66ilter\"e\n\x14WatchActionsResponse\x12M\n\x10\x65nriched_actions\x18\x01 \x03(\x0b\x32\".flyteidl2.workflow.EnrichedActionR\x0f\x65nrichedActions\"z\n\x19WatchClusterEventsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x02id\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"e\n\x1aWatchClusterEventsResponse\x12G\n\x0e\x63luster_events\x18\x01 \x03(\x0b\x32 .flyteidl2.workflow.ClusterEventR\rclusterEvents\"u\n\x12\x41\x62ortActionRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12\x16\n\x06reason\x18\x02 \x01(\tR\x06reason\"\x15\n\x13\x41\x62ortActionResponse\"\xe3\x03\n\x12WatchGroupsRequest\x12\x44\n\nproject_id\x18\x01 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x41\n\nstart_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\tstartDate\x12\x35\n\x08\x65nd_date\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndDate\x12\x37\n\x07request\x18\x04 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x61\n\x11known_sort_fields\x18\x05 \x03(\x0b\x32\x35.flyteidl2.workflow.WatchGroupsRequest.KnownSortFieldR\x0fknownSortFields\x1a^\n\x0eKnownSortField\x12\x41\n\ncreated_at\x18\x01 \x01(\x0e\x32 .flyteidl2.common.Sort.DirectionH\x00R\tcreatedAtB\t\n\x07sort_byB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01\"q\n\x13WatchGroupsResponse\x12>\n\x0btask_groups\x18\x01 \x03(\x0b\x32\x1d.flyteidl2.workflow.TaskGroupR\ntaskGroups\x12\x1a\n\x08sentinel\x18\x02 \x01(\x08R\x08sentinel2\xb0\r\n\nRunService\x12Z\n\tCreateRun\x12$.flyteidl2.workflow.CreateRunRequest\x1a%.flyteidl2.workflow.CreateRunResponse\"\x00\x12W\n\x08\x41\x62ortRun\x12#.flyteidl2.workflow.AbortRunRequest\x1a$.flyteidl2.workflow.AbortRunResponse\"\x00\x12i\n\rGetRunDetails\x12(.flyteidl2.workflow.GetRunDetailsRequest\x1a).flyteidl2.workflow.GetRunDetailsResponse\"\x03\x90\x02\x01\x12n\n\x0fWatchRunDetails\x12*.flyteidl2.workflow.WatchRunDetailsRequest\x1a+.flyteidl2.workflow.WatchRunDetailsResponse\"\x00\x30\x01\x12r\n\x10GetActionDetails\x12+.flyteidl2.workflow.GetActionDetailsRequest\x1a,.flyteidl2.workflow.GetActionDetailsResponse\"\x03\x90\x02\x01\x12w\n\x12WatchActionDetails\x12-.flyteidl2.workflow.WatchActionDetailsRequest\x1a..flyteidl2.workflow.WatchActionDetailsResponse\"\x00\x30\x01\x12l\n\rGetActionData\x12(.flyteidl2.workflow.GetActionDataRequest\x1a).flyteidl2.workflow.GetActionDataResponse\"\x06\x88\x02\x01\x90\x02\x01\x12Z\n\x08ListRuns\x12#.flyteidl2.workflow.ListRunsRequest\x1a$.flyteidl2.workflow.ListRunsResponse\"\x03\x90\x02\x01\x12\\\n\tWatchRuns\x12$.flyteidl2.workflow.WatchRunsRequest\x1a%.flyteidl2.workflow.WatchRunsResponse\"\x00\x30\x01\x12\x63\n\x0bListActions\x12&.flyteidl2.workflow.ListActionsRequest\x1a\'.flyteidl2.workflow.ListActionsResponse\"\x03\x90\x02\x01\x12\x65\n\x0cWatchActions\x12\'.flyteidl2.workflow.WatchActionsRequest\x1a(.flyteidl2.workflow.WatchActionsResponse\"\x00\x30\x01\x12w\n\x12WatchClusterEvents\x12-.flyteidl2.workflow.WatchClusterEventsRequest\x1a..flyteidl2.workflow.WatchClusterEventsResponse\"\x00\x30\x01\x12`\n\x0b\x41\x62ortAction\x12&.flyteidl2.workflow.AbortActionRequest\x1a\'.flyteidl2.workflow.AbortActionResponse\"\x00\x12\x62\n\x0bWatchGroups\x12&.flyteidl2.workflow.WatchGroupsRequest\x1a\'.flyteidl2.workflow.WatchGroupsResponse\"\x00\x30\x01\x12u\n\x11GetActionDataURIs\x12,.flyteidl2.workflow.GetActionDataURIsRequest\x1a-.flyteidl2.workflow.GetActionDataURIsResponse\"\x03\x90\x02\x01\x12{\n\x13GetActionLogContext\x12..flyteidl2.workflow.GetActionLogContextRequest\x1a/.flyteidl2.workflow.GetActionLogContextResponse\"\x03\x90\x02\x01\x42\xcc\x01\n\x16\x63om.flyteidl2.workflowB\x0fRunServiceProtoH\x02P\x01Z6github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow\xa2\x02\x03\x46WX\xaa\x02\x12\x46lyteidl2.Workflow\xca\x02\x12\x46lyteidl2\\Workflow\xe2\x02\x1e\x46lyteidl2\\Workflow\\GPBMetadata\xea\x02\x13\x46lyteidl2::Workflowb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -48,6 +49,10 @@ _GETACTIONDATAREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' _GETACTIONDATAURISREQUEST.fields_by_name['action_id']._options = None _GETACTIONDATAURISREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' + _GETACTIONLOGCONTEXTREQUEST.fields_by_name['action_id']._options = None + _GETACTIONLOGCONTEXTREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' + _GETACTIONLOGCONTEXTREQUEST.fields_by_name['attempt']._options = None + _GETACTIONLOGCONTEXTREQUEST.fields_by_name['attempt']._serialized_options = b'\272H\004*\002 \000' _LISTRUNSREQUEST.oneofs_by_name['scope_by']._options = None _LISTRUNSREQUEST.oneofs_by_name['scope_by']._serialized_options = b'\272H\002\010\001' _LISTRUNSREQUEST.fields_by_name['org']._options = None @@ -82,68 +87,74 @@ _RUNSERVICE.methods_by_name['ListActions']._serialized_options = b'\220\002\001' _RUNSERVICE.methods_by_name['GetActionDataURIs']._options = None _RUNSERVICE.methods_by_name['GetActionDataURIs']._serialized_options = b'\220\002\001' - _globals['_CREATERUNREQUEST']._serialized_start=349 - _globals['_CREATERUNREQUEST']._serialized_end=971 - _globals['_CREATERUNRESPONSE']._serialized_start=973 - _globals['_CREATERUNRESPONSE']._serialized_end=1035 - _globals['_ABORTRUNREQUEST']._serialized_start=1037 - _globals['_ABORTRUNREQUEST']._serialized_end=1158 - _globals['_ABORTRUNRESPONSE']._serialized_start=1160 - _globals['_ABORTRUNRESPONSE']._serialized_end=1178 - _globals['_GETRUNDETAILSREQUEST']._serialized_start=1180 - _globals['_GETRUNDETAILSREQUEST']._serialized_end=1266 - _globals['_GETRUNDETAILSRESPONSE']._serialized_start=1268 - _globals['_GETRUNDETAILSRESPONSE']._serialized_end=1349 - _globals['_WATCHRUNDETAILSREQUEST']._serialized_start=1351 - _globals['_WATCHRUNDETAILSREQUEST']._serialized_end=1439 - _globals['_WATCHRUNDETAILSRESPONSE']._serialized_start=1441 - _globals['_WATCHRUNDETAILSRESPONSE']._serialized_end=1524 - _globals['_GETACTIONDETAILSREQUEST']._serialized_start=1526 - _globals['_GETACTIONDETAILSREQUEST']._serialized_end=1624 - _globals['_GETACTIONDETAILSRESPONSE']._serialized_start=1626 - _globals['_GETACTIONDETAILSRESPONSE']._serialized_end=1713 - _globals['_WATCHACTIONDETAILSREQUEST']._serialized_start=1715 - _globals['_WATCHACTIONDETAILSREQUEST']._serialized_end=1815 - _globals['_WATCHACTIONDETAILSRESPONSE']._serialized_start=1817 - _globals['_WATCHACTIONDETAILSRESPONSE']._serialized_end=1906 - _globals['_GETACTIONDATAREQUEST']._serialized_start=1908 - _globals['_GETACTIONDATAREQUEST']._serialized_end=2003 - _globals['_GETACTIONDATARESPONSE']._serialized_start=2005 - _globals['_GETACTIONDATARESPONSE']._serialized_end=2127 - _globals['_GETACTIONDATAURISREQUEST']._serialized_start=2129 - _globals['_GETACTIONDATAURISREQUEST']._serialized_end=2228 - _globals['_GETACTIONDATAURISRESPONSE']._serialized_start=2230 - _globals['_GETACTIONDATAURISRESPONSE']._serialized_end=2321 - _globals['_LISTRUNSREQUEST']._serialized_start=2324 - _globals['_LISTRUNSREQUEST']._serialized_end=2712 - _globals['_LISTRUNSRESPONSE']._serialized_start=2714 - _globals['_LISTRUNSRESPONSE']._serialized_end=2799 - _globals['_WATCHRUNSREQUEST']._serialized_start=2802 - _globals['_WATCHRUNSREQUEST']._serialized_end=3065 - _globals['_WATCHRUNSRESPONSE']._serialized_start=3067 - _globals['_WATCHRUNSRESPONSE']._serialized_end=3131 - _globals['_LISTACTIONSREQUEST']._serialized_start=3134 - _globals['_LISTACTIONSREQUEST']._serialized_end=3275 - _globals['_LISTACTIONSRESPONSE']._serialized_start=3277 - _globals['_LISTACTIONSRESPONSE']._serialized_end=3374 - _globals['_WATCHACTIONSREQUEST']._serialized_start=3377 - _globals['_WATCHACTIONSREQUEST']._serialized_end=3512 - _globals['_WATCHACTIONSRESPONSE']._serialized_start=3514 - _globals['_WATCHACTIONSRESPONSE']._serialized_end=3615 - _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_start=3617 - _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_end=3739 - _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_start=3741 - _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_end=3842 - _globals['_ABORTACTIONREQUEST']._serialized_start=3844 - _globals['_ABORTACTIONREQUEST']._serialized_end=3961 - _globals['_ABORTACTIONRESPONSE']._serialized_start=3963 - _globals['_ABORTACTIONRESPONSE']._serialized_end=3984 - _globals['_WATCHGROUPSREQUEST']._serialized_start=3987 - _globals['_WATCHGROUPSREQUEST']._serialized_end=4470 - _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_start=4357 - _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_end=4451 - _globals['_WATCHGROUPSRESPONSE']._serialized_start=4472 - _globals['_WATCHGROUPSRESPONSE']._serialized_end=4585 - _globals['_RUNSERVICE']._serialized_start=4588 - _globals['_RUNSERVICE']._serialized_end=6175 + _RUNSERVICE.methods_by_name['GetActionLogContext']._options = None + _RUNSERVICE.methods_by_name['GetActionLogContext']._serialized_options = b'\220\002\001' + _globals['_CREATERUNREQUEST']._serialized_start=381 + _globals['_CREATERUNREQUEST']._serialized_end=1003 + _globals['_CREATERUNRESPONSE']._serialized_start=1005 + _globals['_CREATERUNRESPONSE']._serialized_end=1067 + _globals['_ABORTRUNREQUEST']._serialized_start=1069 + _globals['_ABORTRUNREQUEST']._serialized_end=1190 + _globals['_ABORTRUNRESPONSE']._serialized_start=1192 + _globals['_ABORTRUNRESPONSE']._serialized_end=1210 + _globals['_GETRUNDETAILSREQUEST']._serialized_start=1212 + _globals['_GETRUNDETAILSREQUEST']._serialized_end=1298 + _globals['_GETRUNDETAILSRESPONSE']._serialized_start=1300 + _globals['_GETRUNDETAILSRESPONSE']._serialized_end=1381 + _globals['_WATCHRUNDETAILSREQUEST']._serialized_start=1383 + _globals['_WATCHRUNDETAILSREQUEST']._serialized_end=1471 + _globals['_WATCHRUNDETAILSRESPONSE']._serialized_start=1473 + _globals['_WATCHRUNDETAILSRESPONSE']._serialized_end=1556 + _globals['_GETACTIONDETAILSREQUEST']._serialized_start=1558 + _globals['_GETACTIONDETAILSREQUEST']._serialized_end=1656 + _globals['_GETACTIONDETAILSRESPONSE']._serialized_start=1658 + _globals['_GETACTIONDETAILSRESPONSE']._serialized_end=1745 + _globals['_WATCHACTIONDETAILSREQUEST']._serialized_start=1747 + _globals['_WATCHACTIONDETAILSREQUEST']._serialized_end=1847 + _globals['_WATCHACTIONDETAILSRESPONSE']._serialized_start=1849 + _globals['_WATCHACTIONDETAILSRESPONSE']._serialized_end=1938 + _globals['_GETACTIONDATAREQUEST']._serialized_start=1940 + _globals['_GETACTIONDATAREQUEST']._serialized_end=2035 + _globals['_GETACTIONDATARESPONSE']._serialized_start=2037 + _globals['_GETACTIONDATARESPONSE']._serialized_end=2159 + _globals['_GETACTIONDATAURISREQUEST']._serialized_start=2161 + _globals['_GETACTIONDATAURISREQUEST']._serialized_end=2260 + _globals['_GETACTIONDATAURISRESPONSE']._serialized_start=2262 + _globals['_GETACTIONDATAURISRESPONSE']._serialized_end=2353 + _globals['_GETACTIONLOGCONTEXTREQUEST']._serialized_start=2356 + _globals['_GETACTIONLOGCONTEXTREQUEST']._serialized_end=2492 + _globals['_GETACTIONLOGCONTEXTRESPONSE']._serialized_start=2494 + _globals['_GETACTIONLOGCONTEXTRESPONSE']._serialized_end=2610 + _globals['_LISTRUNSREQUEST']._serialized_start=2613 + _globals['_LISTRUNSREQUEST']._serialized_end=3001 + _globals['_LISTRUNSRESPONSE']._serialized_start=3003 + _globals['_LISTRUNSRESPONSE']._serialized_end=3088 + _globals['_WATCHRUNSREQUEST']._serialized_start=3091 + _globals['_WATCHRUNSREQUEST']._serialized_end=3354 + _globals['_WATCHRUNSRESPONSE']._serialized_start=3356 + _globals['_WATCHRUNSRESPONSE']._serialized_end=3420 + _globals['_LISTACTIONSREQUEST']._serialized_start=3423 + _globals['_LISTACTIONSREQUEST']._serialized_end=3564 + _globals['_LISTACTIONSRESPONSE']._serialized_start=3566 + _globals['_LISTACTIONSRESPONSE']._serialized_end=3663 + _globals['_WATCHACTIONSREQUEST']._serialized_start=3666 + _globals['_WATCHACTIONSREQUEST']._serialized_end=3801 + _globals['_WATCHACTIONSRESPONSE']._serialized_start=3803 + _globals['_WATCHACTIONSRESPONSE']._serialized_end=3904 + _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_start=3906 + _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_end=4028 + _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_start=4030 + _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_end=4131 + _globals['_ABORTACTIONREQUEST']._serialized_start=4133 + _globals['_ABORTACTIONREQUEST']._serialized_end=4250 + _globals['_ABORTACTIONRESPONSE']._serialized_start=4252 + _globals['_ABORTACTIONRESPONSE']._serialized_end=4273 + _globals['_WATCHGROUPSREQUEST']._serialized_start=4276 + _globals['_WATCHGROUPSREQUEST']._serialized_end=4759 + _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_start=4646 + _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_end=4740 + _globals['_WATCHGROUPSRESPONSE']._serialized_start=4761 + _globals['_WATCHGROUPSRESPONSE']._serialized_end=4874 + _globals['_RUNSERVICE']._serialized_start=4877 + _globals['_RUNSERVICE']._serialized_end=6589 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/flyteidl2/workflow/run_service_pb2.pyi b/gen/python/flyteidl2/workflow/run_service_pb2.pyi index d993da926b..9098013942 100644 --- a/gen/python/flyteidl2/workflow/run_service_pb2.pyi +++ b/gen/python/flyteidl2/workflow/run_service_pb2.pyi @@ -2,6 +2,7 @@ from buf.validate import validate_pb2 as _validate_pb2 from flyteidl2.common import identifier_pb2 as _identifier_pb2 from flyteidl2.common import list_pb2 as _list_pb2 from flyteidl2.common import run_pb2 as _run_pb2 +from flyteidl2.core import execution_pb2 as _execution_pb2 from flyteidl2.task import common_pb2 as _common_pb2 from flyteidl2.task import run_pb2 as _run_pb2_1 from flyteidl2.task import task_definition_pb2 as _task_definition_pb2 @@ -130,6 +131,22 @@ class GetActionDataURIsResponse(_message.Message): outputs_uri: str def __init__(self, inputs_uri: _Optional[str] = ..., outputs_uri: _Optional[str] = ...) -> None: ... +class GetActionLogContextRequest(_message.Message): + __slots__ = ["action_id", "attempt"] + ACTION_ID_FIELD_NUMBER: _ClassVar[int] + ATTEMPT_FIELD_NUMBER: _ClassVar[int] + action_id: _identifier_pb2.ActionIdentifier + attempt: int + def __init__(self, action_id: _Optional[_Union[_identifier_pb2.ActionIdentifier, _Mapping]] = ..., attempt: _Optional[int] = ...) -> None: ... + +class GetActionLogContextResponse(_message.Message): + __slots__ = ["log_context", "cluster"] + LOG_CONTEXT_FIELD_NUMBER: _ClassVar[int] + CLUSTER_FIELD_NUMBER: _ClassVar[int] + log_context: _execution_pb2.LogContext + cluster: str + def __init__(self, log_context: _Optional[_Union[_execution_pb2.LogContext, _Mapping]] = ..., cluster: _Optional[str] = ...) -> None: ... + class ListRunsRequest(_message.Message): __slots__ = ["request", "org", "project_id", "trigger_name", "task_name", "task_id"] REQUEST_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py b/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py index c956ed5c83..c0779d213a 100644 --- a/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py +++ b/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py @@ -90,6 +90,11 @@ def __init__(self, channel): request_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest.SerializeToString, response_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse.FromString, ) + self.GetActionLogContext = channel.unary_unary( + '/flyteidl2.workflow.RunService/GetActionLogContext', + request_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest.SerializeToString, + response_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse.FromString, + ) class RunServiceServicer(object): @@ -203,6 +208,13 @@ def GetActionDataURIs(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetActionLogContext(self, request, context): + """Get the logging context (pod name, namespace, cluster) for an action attempt. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_RunServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -281,6 +293,11 @@ def add_RunServiceServicer_to_server(servicer, server): request_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest.FromString, response_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse.SerializeToString, ), + 'GetActionLogContext': grpc.unary_unary_rpc_method_handler( + servicer.GetActionLogContext, + request_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest.FromString, + response_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flyteidl2.workflow.RunService', rpc_method_handlers) @@ -546,3 +563,20 @@ def GetActionDataURIs(request, flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetActionLogContext(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl2.workflow.RunService/GetActionLogContext', + flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextRequest.SerializeToString, + flyteidl2_dot_workflow_dot_run__service__pb2.GetActionLogContextResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/gen/rust/src/flyteidl2.dataproxy.rs b/gen/rust/src/flyteidl2.dataproxy.rs index 8df07c92fc..57b90da43d 100644 --- a/gen/rust/src/flyteidl2.dataproxy.rs +++ b/gen/rust/src/flyteidl2.dataproxy.rs @@ -198,6 +198,39 @@ pub struct GetActionDataResponse { #[prost(message, optional, tag="2")] pub outputs: ::core::option::Option, } +/// Request message for tailing logs. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TailLogsRequest { + /// The action id. + #[prost(message, optional, tag="1")] + pub action_id: ::core::option::Option, + /// The attempt number. + #[prost(uint32, tag="2")] + pub attempt: u32, +} +/// Reponse message for tailing logs. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TailLogsResponse { + /// One or more batches of logs. + #[prost(message, repeated, tag="1")] + pub logs: ::prost::alloc::vec::Vec, +} +/// Nested message and enum types in `TailLogsResponse`. +pub mod tail_logs_response { + /// A batch of logs. + #[pyo3::pyclass(dict, get_all, set_all)] + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] + pub struct Logs { + /// Structured log lines. + #[prost(message, repeated, tag="1")] + pub lines: ::prost::alloc::vec::Vec, + } +} /// ArtifactType defines the type of artifact to be downloaded. #[pyo3::pyclass(dict, get_all, set_all)] #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] @@ -233,7 +266,7 @@ impl ArtifactType { } /// Encoded file descriptor set for the `flyteidl2.dataproxy` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xc8, 0x52, 0x0a, 0x2b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, + 0x0a, 0xc8, 0x5b, 0x0a, 0x2b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, @@ -245,263 +278,296 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, - 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x02, 0x0a, 0x1b, 0x43, 0x72, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xf8, 0x02, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x28, 0x0a, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x7a, 0x02, 0x68, 0x10, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x64, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x64, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xad, 0x02, 0x0a, + 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x49, 0x6e, 0x12, 0x28, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, - 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xba, 0x48, 0x04, 0x7a, 0x02, 0x68, - 0x10, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x64, 0x35, 0x12, 0x23, 0x0a, - 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x4d, 0x64, 0x35, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x72, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x25, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0xad, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x58, - 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 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, 0x99, 0x03, 0x0a, 0x13, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, - 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, - 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x01, 0x52, - 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x42, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, - 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, - 0x22, 0x6e, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x14, 0x6f, 0x66, 0x66, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, - 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, 0x6f, 0x66, - 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x69, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, - 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x80, 0x03, 0x0a, 0x19, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, - 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x61, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x0c, 0x61, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x57, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x12, 0x32, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x68, - 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, - 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x50, 0x72, 0x65, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x99, 0x03, 0x0a, + 0x13, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x44, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, + 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, + 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x08, + 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x01, 0x52, + 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x0b, 0x0a, 0x02, + 0x69, 0x64, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x61, 0x73, + 0x6b, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x6e, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x56, 0x0a, 0x14, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x41, 0x74, 0x22, 0x80, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, + 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x12, 0x57, 0x0a, + 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, + 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x68, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, + 0x73, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, + 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x7d, 0x0a, + 0x0f, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, - 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x2a, 0x66, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1d, - 0x0a, 0x19, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x02, 0x32, 0xde, 0x03, - 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x65, 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, + 0x02, 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x93, 0x01, 0x0a, + 0x10, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x04, 0x6c, 0x6f, 0x67, + 0x73, 0x1a, 0x3f, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x69, 0x6e, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, + 0x65, 0x73, 0x2a, 0x66, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x41, + 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x02, 0x32, 0xbb, 0x04, 0x0a, 0x10, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x7d, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, + 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x08, 0x54, + 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x54, 0x61, + 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xd6, - 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, 0x61, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, - 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, 0x02, 0x03, 0x46, - 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xe2, 0x02, - 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x44, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x4a, 0xe9, 0x39, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, - 0xbf, 0x01, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, - 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1c, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, - 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2c, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, - 0x07, 0x00, 0x24, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x25, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, 0x09, 0x00, 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, - 0x03, 0x0a, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x29, 0x0a, - 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0d, 0x00, 0x4e, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, - 0x03, 0x0d, 0x00, 0x4e, 0x0a, 0x49, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x10, 0x00, 0x16, 0x01, - 0x1a, 0x3d, 0x20, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, - 0x62, 0x65, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x10, 0x05, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x05, - 0x00, 0x02, 0x00, 0x12, 0x03, 0x11, 0x02, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x11, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, - 0x03, 0x11, 0x1e, 0x1f, 0x0a, 0x78, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x13, 0x02, - 0x1b, 0x1a, 0x6b, 0x20, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x65, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x13, 0x02, 0x16, 0x0a, 0x0c, 0x0a, 0x05, - 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x13, 0x19, 0x1a, 0x0a, 0x65, 0x0a, 0x04, 0x05, 0x00, - 0x02, 0x02, 0x12, 0x03, 0x15, 0x02, 0x20, 0x1a, 0x58, 0x20, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4e, - 0x44, 0x4c, 0x45, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x28, 0x74, - 0x61, 0x72, 0x62, 0x61, 0x6c, 0x6c, 0x29, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x15, 0x02, 0x1b, 0x0a, - 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x15, 0x1e, 0x1f, 0x0a, 0x5d, 0x0a, - 0x02, 0x06, 0x00, 0x12, 0x04, 0x19, 0x00, 0x26, 0x01, 0x1a, 0x51, 0x20, 0x44, 0x61, 0x74, 0x61, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x06, 0x00, 0x01, 0x12, 0x03, 0x19, 0x08, 0x18, 0x0a, 0x70, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, - 0x12, 0x03, 0x1b, 0x02, 0x61, 0x1a, 0x63, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, - 0x55, 0x52, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x1b, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, - 0x02, 0x12, 0x03, 0x1b, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x1b, 0x41, 0x5d, 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1d, 0x02, - 0x49, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1d, 0x06, 0x12, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x1d, 0x13, 0x26, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1d, 0x31, 0x45, 0x0a, 0x5b, 0x0a, 0x04, 0x06, - 0x00, 0x02, 0x02, 0x12, 0x03, 0x20, 0x02, 0x5b, 0x1a, 0x4e, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, - 0x52, 0x4c, 0x28, 0x73, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, - 0x01, 0x12, 0x03, 0x20, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, - 0x03, 0x20, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x20, - 0x3d, 0x57, 0x0a, 0x38, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x23, 0x02, 0x25, 0x03, - 0x1a, 0x2a, 0x20, 0x47, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x23, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x03, 0x02, 0x12, 0x03, 0x23, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, - 0x03, 0x12, 0x03, 0x23, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, - 0x03, 0x24, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x03, 0x04, 0x22, 0x12, 0x03, - 0x24, 0x04, 0x2f, 0x0a, 0xaa, 0x03, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x2d, 0x00, 0x58, 0x01, + 0x6f, 0x78, 0x79, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0xd6, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, + 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, 0x02, 0x03, 0x46, 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, + 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xe2, 0x02, 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x4a, 0xcf, 0x3f, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xd8, 0x01, 0x01, 0x0a, 0x08, 0x0a, + 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, + 0x1c, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, + 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2c, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, + 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x24, 0x0a, 0x09, 0x0a, + 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x30, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, + 0x09, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x00, 0x2e, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, 0x12, + 0x03, 0x0c, 0x00, 0x29, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0e, 0x00, 0x4e, 0x0a, 0x09, + 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0e, 0x00, 0x4e, 0x0a, 0x49, 0x0a, 0x02, 0x05, 0x00, 0x12, + 0x04, 0x11, 0x00, 0x17, 0x01, 0x1a, 0x3d, 0x20, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x11, 0x05, 0x11, + 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x12, 0x02, 0x20, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x12, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x12, 0x1e, 0x1f, 0x0a, 0x78, 0x0a, 0x04, 0x05, 0x00, 0x02, + 0x01, 0x12, 0x03, 0x14, 0x02, 0x1b, 0x1a, 0x6b, 0x20, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x20, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x48, 0x54, 0x4d, 0x4c, + 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x66, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x14, 0x02, + 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x14, 0x19, 0x1a, 0x0a, + 0x65, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x02, 0x12, 0x03, 0x16, 0x02, 0x20, 0x1a, 0x58, 0x20, 0x41, + 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x20, 0x28, 0x74, 0x61, 0x72, 0x62, 0x61, 0x6c, 0x6c, 0x29, 0x20, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, 0x12, + 0x03, 0x16, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x16, + 0x1e, 0x1f, 0x0a, 0x5d, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x1a, 0x00, 0x2a, 0x01, 0x1a, 0x51, + 0x20, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x1a, 0x08, 0x18, 0x0a, 0x70, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x1c, 0x02, 0x61, 0x1a, 0x63, 0x20, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1c, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x1c, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1c, 0x41, 0x5d, 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, + 0x01, 0x12, 0x03, 0x1e, 0x02, 0x49, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x1e, 0x06, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x1e, + 0x13, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x31, 0x45, + 0x0a, 0x5b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, 0x21, 0x02, 0x5b, 0x1a, 0x4e, 0x20, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, + 0x6e, 0x6b, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x28, 0x73, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, + 0x65, 0x6e, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x21, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x21, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x21, 0x3d, 0x57, 0x0a, 0x38, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, + 0x04, 0x24, 0x02, 0x26, 0x03, 0x1a, 0x2a, 0x20, 0x47, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x24, 0x06, 0x13, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x24, 0x14, 0x28, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x24, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x25, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, + 0x03, 0x04, 0x22, 0x12, 0x03, 0x25, 0x04, 0x2f, 0x0a, 0x31, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, + 0x12, 0x03, 0x29, 0x02, 0x44, 0x1a, 0x24, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6c, + 0x6f, 0x67, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x29, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x04, 0x02, 0x12, 0x03, 0x29, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x06, + 0x12, 0x03, 0x29, 0x29, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, + 0x29, 0x30, 0x40, 0x0a, 0xaa, 0x03, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x31, 0x00, 0x5c, 0x01, 0x1a, 0x9d, 0x03, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, @@ -528,26 +594,26 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6d, 0x65, 0x20, 0x28, 0x69, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x29, 0x2e, 0x0a, - 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x2d, 0x08, 0x23, 0x0a, 0x44, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x30, 0x02, 0x3f, 0x1a, 0x37, 0x20, 0x50, 0x72, 0x6f, 0x6a, + 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x31, 0x08, 0x23, 0x0a, 0x44, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x34, 0x02, 0x3f, 0x1a, 0x37, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x30, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x30, 0x09, 0x10, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x30, 0x13, 0x14, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x30, 0x15, 0x3e, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, - 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x30, 0x16, 0x3d, 0x0a, 0x43, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x34, 0x02, 0x3e, 0x1a, 0x36, 0x20, 0x44, 0x6f, 0x6d, 0x61, + 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x34, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x34, 0x09, 0x10, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x34, 0x13, 0x14, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x34, 0x15, 0x3e, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, + 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x34, 0x16, 0x3d, 0x0a, 0x43, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x38, 0x02, 0x3e, 0x1a, 0x36, 0x20, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x34, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x34, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x34, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x01, 0x08, 0x12, 0x03, 0x34, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, - 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x34, 0x15, 0x3c, 0x0a, 0xfc, 0x01, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x38, 0x02, 0x16, 0x1a, 0xee, 0x01, 0x20, 0x46, 0x69, 0x6c, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x38, 0x02, 0x08, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x38, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x38, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x01, 0x08, 0x12, 0x03, 0x38, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, + 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x38, 0x15, 0x3c, 0x0a, 0xfc, 0x01, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x3c, 0x02, 0x16, 0x1a, 0xee, 0x01, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x20, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, @@ -563,9 +629,9 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6d, 0x65, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x02, 0x05, 0x12, 0x03, 0x38, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, - 0x01, 0x12, 0x03, 0x38, 0x09, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, - 0x03, 0x38, 0x14, 0x15, 0x0a, 0xe7, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x3d, + 0x02, 0x02, 0x05, 0x12, 0x03, 0x3c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, + 0x01, 0x12, 0x03, 0x3c, 0x09, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, + 0x03, 0x3c, 0x14, 0x15, 0x0a, 0xe7, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x41, 0x02, 0x2a, 0x1a, 0xd9, 0x01, 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, @@ -580,10 +646,10 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x3d, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x3d, 0x1b, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x03, 0x03, 0x12, 0x03, 0x3d, 0x28, 0x29, 0x0a, 0xa8, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x04, 0x12, 0x03, 0x42, 0x02, 0x3e, 0x1a, 0x9a, 0x01, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x41, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x41, 0x1b, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x03, 0x03, 0x12, 0x03, 0x41, 0x28, 0x29, 0x0a, 0xa8, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x04, 0x12, 0x03, 0x46, 0x02, 0x3e, 0x1a, 0x9a, 0x01, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x44, 0x35, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, @@ -593,12 +659,12 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6e, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x42, 0x02, - 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x42, 0x08, 0x13, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x42, 0x16, 0x17, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x04, 0x08, 0x12, 0x03, 0x42, 0x18, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, - 0x00, 0x02, 0x04, 0x08, 0x87, 0x09, 0x0f, 0x0d, 0x12, 0x03, 0x42, 0x19, 0x3c, 0x0a, 0xd2, 0x02, - 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x48, 0x02, 0x1b, 0x1a, 0xc4, 0x02, 0x20, 0x46, + 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x46, 0x02, + 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x46, 0x08, 0x13, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x46, 0x16, 0x17, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x04, 0x08, 0x12, 0x03, 0x46, 0x18, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, + 0x00, 0x02, 0x04, 0x08, 0x87, 0x09, 0x0f, 0x0d, 0x12, 0x03, 0x46, 0x19, 0x3c, 0x0a, 0xd2, 0x02, + 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x4c, 0x02, 0x1b, 0x1a, 0xc4, 0x02, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, @@ -619,10 +685,10 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x05, 0x12, 0x03, 0x48, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x48, 0x09, 0x16, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x48, 0x19, 0x1a, 0x0a, 0x89, 0x02, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x4e, 0x02, 0x24, 0x1a, 0xfb, 0x01, 0x20, 0x49, 0x66, + 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x05, 0x12, 0x03, 0x4c, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x4c, 0x09, 0x16, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x4c, 0x19, 0x1a, 0x0a, 0x89, 0x02, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x52, 0x02, 0x24, 0x1a, 0xfb, 0x01, 0x20, 0x49, 0x66, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x64, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, @@ -639,17 +705,17 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x61, 0x74, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, - 0x05, 0x12, 0x03, 0x4e, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, - 0x03, 0x4e, 0x07, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x4e, - 0x22, 0x23, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x52, 0x02, 0x11, 0x1a, + 0x05, 0x12, 0x03, 0x52, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, + 0x03, 0x52, 0x07, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x52, + 0x22, 0x23, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x56, 0x02, 0x11, 0x1a, 0x41, 0x20, 0x4f, 0x72, 0x67, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x05, 0x12, 0x03, 0x52, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x52, 0x09, 0x0c, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x52, 0x0f, 0x10, 0x0a, 0xae, 0x01, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, 0x57, 0x02, 0x1b, 0x1a, 0xa0, 0x01, 0x20, 0x43, 0x6f, + 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x05, 0x12, 0x03, 0x56, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x56, 0x09, 0x0c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x56, 0x0f, 0x10, 0x0a, 0xae, 0x01, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, 0x5b, 0x02, 0x1b, 0x1a, 0xa0, 0x01, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, @@ -660,17 +726,17 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x66, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x08, 0x05, 0x12, 0x03, 0x57, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x57, 0x08, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x08, 0x03, 0x12, 0x03, 0x57, 0x19, 0x1a, 0x0a, 0x63, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x5b, - 0x00, 0x67, 0x01, 0x1a, 0x57, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, + 0x05, 0x04, 0x00, 0x02, 0x08, 0x05, 0x12, 0x03, 0x5b, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x5b, 0x08, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x08, 0x03, 0x12, 0x03, 0x5b, 0x19, 0x1a, 0x0a, 0x63, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x5f, + 0x00, 0x6b, 0x01, 0x1a, 0x57, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x01, 0x01, 0x12, 0x03, 0x5b, 0x08, 0x24, 0x0a, 0x89, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, - 0x00, 0x12, 0x03, 0x5d, 0x02, 0x18, 0x1a, 0x7c, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, + 0x04, 0x01, 0x01, 0x12, 0x03, 0x5f, 0x08, 0x24, 0x0a, 0x89, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, + 0x00, 0x12, 0x03, 0x61, 0x02, 0x18, 0x1a, 0x7c, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, @@ -678,10 +744,10 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x65, 0x74, 0x2e, 0x73, 0x33, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x61, 0x77, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x2e, 0x74, 0x61, 0x72, 0x3f, 0x58, 0x2d, 0x2e, 0x2e, - 0x2e, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x5d, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5d, 0x09, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5d, 0x16, 0x17, 0x0a, 0x83, - 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x60, 0x02, 0x18, 0x1a, 0x76, 0x20, 0x4e, + 0x2e, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x61, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x61, 0x09, 0x13, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x61, 0x16, 0x17, 0x0a, 0x83, + 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x64, 0x02, 0x18, 0x1a, 0x76, 0x20, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, @@ -689,17 +755,17 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x69, 0x64, 0x65, 0x72, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x73, 0x33, 0x3a, 0x2f, 0x2f, 0x6d, 0x79, 0x2d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x2e, 0x74, 0x61, - 0x72, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x60, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x60, 0x09, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x60, 0x16, 0x17, 0x0a, 0x41, - 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x63, 0x02, 0x2b, 0x1a, 0x34, 0x20, 0x45, 0x78, + 0x72, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x64, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x64, 0x09, 0x13, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x64, 0x16, 0x17, 0x0a, 0x41, + 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x67, 0x02, 0x2b, 0x1a, 0x34, 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x06, 0x12, 0x03, 0x63, 0x02, 0x1b, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x63, 0x1c, 0x26, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x63, 0x29, 0x2a, 0x0a, 0x80, 0x01, 0x0a, 0x04, - 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x66, 0x02, 0x22, 0x1a, 0x73, 0x20, 0x48, 0x65, 0x61, 0x64, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x06, 0x12, 0x03, 0x67, 0x02, 0x1b, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x67, 0x1c, 0x26, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x67, 0x29, 0x2a, 0x0a, 0x80, 0x01, 0x0a, 0x04, + 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x6a, 0x02, 0x22, 0x1a, 0x73, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, @@ -707,28 +773,28 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, 0x03, 0x66, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x66, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x03, 0x03, 0x12, 0x03, 0x66, 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x05, - 0x69, 0x00, 0x85, 0x01, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x69, 0x08, - 0x1b, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x00, 0x12, 0x04, 0x6a, 0x02, 0x72, 0x03, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x01, 0x12, 0x03, 0x6a, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x08, 0x00, 0x02, 0x12, 0x03, 0x6b, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, - 0x02, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x6b, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, - 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x6e, 0x04, 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, 0x03, 0x6a, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x6a, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x03, 0x03, 0x12, 0x03, 0x6a, 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x05, + 0x6d, 0x00, 0x89, 0x01, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x6d, 0x08, + 0x1b, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x00, 0x12, 0x04, 0x6e, 0x02, 0x76, 0x03, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x01, 0x12, 0x03, 0x6e, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x02, 0x08, 0x00, 0x02, 0x12, 0x03, 0x6f, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, + 0x02, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x6f, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, + 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x72, 0x04, 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x6e, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6e, - 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6e, 0x22, 0x23, - 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x71, 0x04, 0x2c, 0x1a, 0x3a, 0x20, + 0x03, 0x72, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x72, + 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x72, 0x22, 0x23, + 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x75, 0x04, 0x2c, 0x1a, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x01, 0x06, 0x12, 0x03, 0x71, 0x04, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x71, 0x1d, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x71, 0x2a, 0x2b, 0x0a, 0xba, 0x01, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x01, 0x12, 0x05, 0x76, 0x02, - 0x81, 0x01, 0x03, 0x1a, 0xaa, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, + 0x01, 0x06, 0x12, 0x03, 0x75, 0x04, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, + 0x12, 0x03, 0x75, 0x1d, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, + 0x75, 0x2a, 0x2b, 0x0a, 0xba, 0x01, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x01, 0x12, 0x05, 0x7a, 0x02, + 0x85, 0x01, 0x03, 0x1a, 0xaa, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, @@ -739,161 +805,200 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6b, 0x65, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x01, 0x12, 0x03, 0x76, 0x08, 0x0c, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x02, 0x12, 0x03, 0x77, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, - 0x04, 0x02, 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x77, 0x04, 0x30, 0x0a, 0x22, 0x0a, - 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x7a, 0x04, 0x24, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x01, 0x12, 0x03, 0x7a, 0x08, 0x0c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x02, 0x12, 0x03, 0x7b, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, + 0x04, 0x02, 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x7b, 0x04, 0x30, 0x0a, 0x22, 0x0a, + 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x7e, 0x04, 0x24, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x06, 0x12, 0x03, 0x7a, 0x04, 0x17, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7a, 0x18, 0x1f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x03, 0x7a, 0x22, 0x23, 0x0a, 0x24, 0x0a, 0x04, 0x04, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x7d, 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x06, 0x12, 0x03, 0x7d, 0x04, 0x11, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x01, 0x12, 0x03, 0x7d, 0x12, 0x1b, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x03, 0x03, 0x12, 0x03, 0x7d, 0x1e, 0x1f, 0x0a, 0x28, 0x0a, 0x04, 0x04, - 0x02, 0x02, 0x04, 0x12, 0x04, 0x80, 0x01, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, - 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x06, 0x12, 0x04, - 0x80, 0x01, 0x04, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x01, 0x12, 0x04, 0x80, - 0x01, 0x17, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x03, 0x12, 0x04, 0x80, 0x01, - 0x26, 0x27, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x05, 0x12, 0x04, 0x84, 0x01, 0x02, 0x19, - 0x1a, 0x14, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x06, 0x12, - 0x04, 0x84, 0x01, 0x02, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x01, 0x12, 0x04, - 0x84, 0x01, 0x0e, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x03, 0x12, 0x04, 0x84, - 0x01, 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x06, 0x87, 0x01, 0x00, 0x89, 0x01, - 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0x87, 0x01, 0x08, 0x1c, 0x0a, 0x0c, - 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x04, 0x88, 0x01, 0x02, 0x35, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, 0x88, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x00, 0x01, 0x12, 0x04, 0x88, 0x01, 0x1c, 0x30, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x00, 0x03, 0x12, 0x04, 0x88, 0x01, 0x33, 0x34, 0x0a, 0x57, 0x0a, 0x02, 0x04, 0x04, 0x12, - 0x06, 0x8c, 0x01, 0x00, 0x92, 0x01, 0x01, 0x1a, 0x49, 0x20, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x20, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0x8c, 0x01, 0x08, 0x15, 0x0a, - 0x4f, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0x8e, 0x01, 0x02, 0x21, 0x1a, 0x41, 0x20, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, - 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8e, 0x01, 0x02, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, 0x04, 0x8e, 0x01, 0x0b, 0x11, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8e, 0x01, 0x12, 0x1c, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8e, 0x01, 0x1f, 0x20, 0x0a, 0x43, 0x0a, 0x04, - 0x04, 0x04, 0x02, 0x01, 0x12, 0x04, 0x91, 0x01, 0x02, 0x2b, 0x1a, 0x35, 0x20, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x77, - 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, - 0x52, 0x4c, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x06, 0x12, 0x04, 0x91, 0x01, 0x02, 0x1b, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x01, 0x12, 0x04, 0x91, 0x01, 0x1c, 0x26, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x03, 0x12, 0x04, 0x91, 0x01, 0x29, 0x2a, 0x0a, 0x5f, - 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x95, 0x01, 0x00, 0xaa, 0x01, 0x01, 0x1a, 0x51, 0x20, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, 0x0a, - 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0x95, 0x01, 0x08, 0x21, 0x0a, 0x4e, 0x0a, 0x04, - 0x04, 0x05, 0x02, 0x00, 0x12, 0x06, 0x98, 0x01, 0x02, 0x9a, 0x01, 0x05, 0x1a, 0x3e, 0x20, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x2e, - 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0x98, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x98, 0x01, 0x0f, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, - 0x02, 0x00, 0x03, 0x12, 0x04, 0x98, 0x01, 0x1f, 0x20, 0x0a, 0x0f, 0x0a, 0x05, 0x04, 0x05, 0x02, - 0x00, 0x08, 0x12, 0x06, 0x98, 0x01, 0x21, 0x9a, 0x01, 0x04, 0x0a, 0x12, 0x0a, 0x08, 0x04, 0x05, - 0x02, 0x00, 0x08, 0x87, 0x09, 0x10, 0x12, 0x06, 0x98, 0x01, 0x22, 0x9a, 0x01, 0x03, 0x0a, 0x12, - 0x0a, 0x0a, 0x04, 0x05, 0x02, 0x00, 0x08, 0x87, 0x09, 0x10, 0x04, 0x00, 0x12, 0x04, 0x99, 0x01, - 0x0d, 0x0e, 0x0a, 0xe9, 0x01, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x04, 0x9f, 0x01, 0x02, - 0x2a, 0x1a, 0xda, 0x01, 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x73, 0x2e, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x62, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, - 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x27, 0x73, 0x20, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, - 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x06, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x1a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x04, 0x9f, 0x01, 0x1b, 0x25, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x04, 0x9f, 0x01, 0x28, 0x29, 0x0a, 0x5a, 0x0a, 0x04, 0x04, - 0x05, 0x08, 0x00, 0x12, 0x06, 0xa2, 0x01, 0x02, 0xa9, 0x01, 0x03, 0x1a, 0x4a, 0x20, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, - 0x70, 0x74, 0x20, 0x77, 0x68, 0x6f, 0x73, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x08, 0x00, 0x01, - 0x12, 0x04, 0xa2, 0x01, 0x08, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x08, 0x00, 0x02, 0x12, - 0x04, 0xa3, 0x01, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x05, 0x08, 0x00, 0x02, 0x87, 0x09, - 0x01, 0x12, 0x04, 0xa3, 0x01, 0x04, 0x30, 0x0a, 0x6b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x02, 0x12, - 0x04, 0xa6, 0x01, 0x04, 0x39, 0x1a, 0x5d, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, - 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, - 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x06, 0x12, 0x04, 0xa6, - 0x01, 0x04, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x04, 0xa6, 0x01, - 0x23, 0x34, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, 0x04, 0xa6, 0x01, 0x37, - 0x38, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x03, 0x12, 0x04, 0xa7, 0x01, 0x04, 0x28, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x06, 0x12, 0x04, 0xa7, 0x01, 0x04, 0x1c, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x01, 0x12, 0x04, 0xa7, 0x01, 0x1d, 0x23, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x03, 0x03, 0x12, 0x04, 0xa7, 0x01, 0x26, 0x27, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x05, 0x02, 0x04, 0x12, 0x04, 0xa8, 0x01, 0x04, 0x2e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, - 0x02, 0x04, 0x06, 0x12, 0x04, 0xa8, 0x01, 0x04, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, - 0x04, 0x01, 0x12, 0x04, 0xa8, 0x01, 0x22, 0x29, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, - 0x03, 0x12, 0x04, 0xa8, 0x01, 0x2c, 0x2d, 0x0a, 0x61, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0xad, - 0x01, 0x00, 0xb0, 0x01, 0x01, 0x1a, 0x53, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x06, - 0x01, 0x12, 0x04, 0xad, 0x01, 0x08, 0x22, 0x0a, 0x51, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, - 0x04, 0xaf, 0x01, 0x02, 0x24, 0x1a, 0x43, 0x20, 0x50, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x55, 0x72, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xaf, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xaf, 0x01, 0x10, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xaf, 0x01, 0x22, 0x23, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x06, 0xb3, - 0x01, 0x00, 0xb6, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x04, 0xb3, 0x01, 0x08, 0x1c, 0x0a, - 0x20, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0xb5, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb5, 0x01, 0x02, 0x19, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb5, 0x01, 0x1a, 0x23, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb5, 0x01, 0x26, 0x27, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb5, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x07, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xb5, 0x01, 0x29, 0x4d, 0x0a, - 0x3a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, 0xb9, 0x01, 0x00, 0xbf, 0x01, 0x01, 0x1a, 0x2c, 0x20, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x08, 0x01, 0x12, 0x04, 0xb9, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, - 0x12, 0x04, 0xbb, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbb, 0x01, 0x02, 0x0d, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbb, 0x01, 0x0e, 0x14, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbb, 0x01, 0x17, 0x18, 0x0a, 0x27, 0x0a, - 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x04, 0xbe, 0x01, 0x02, 0x1b, 0x1a, 0x19, 0x20, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x06, 0x12, - 0x04, 0xbe, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x04, - 0xbe, 0x01, 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x04, 0xbe, - 0x01, 0x19, 0x1a, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x06, 0x12, 0x03, 0x7e, 0x04, 0x17, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7e, 0x18, 0x1f, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x03, 0x7e, 0x22, 0x23, 0x0a, 0x25, 0x0a, 0x04, 0x04, + 0x02, 0x02, 0x03, 0x12, 0x04, 0x81, 0x01, 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x06, 0x12, 0x04, 0x81, 0x01, 0x04, + 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x01, 0x12, 0x04, 0x81, 0x01, 0x12, 0x1b, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x03, 0x12, 0x04, 0x81, 0x01, 0x1e, 0x1f, 0x0a, + 0x28, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x04, 0x12, 0x04, 0x84, 0x01, 0x04, 0x28, 0x1a, 0x1a, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x04, 0x06, 0x12, 0x04, 0x84, 0x01, 0x04, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, + 0x01, 0x12, 0x04, 0x84, 0x01, 0x17, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x03, + 0x12, 0x04, 0x84, 0x01, 0x26, 0x27, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x05, 0x12, 0x04, + 0x88, 0x01, 0x02, 0x19, 0x1a, 0x14, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, + 0x6c, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x05, 0x06, 0x12, 0x04, 0x88, 0x01, 0x02, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x05, 0x01, 0x12, 0x04, 0x88, 0x01, 0x0e, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, + 0x03, 0x12, 0x04, 0x88, 0x01, 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x06, 0x8b, + 0x01, 0x00, 0x8d, 0x01, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0x8b, 0x01, + 0x08, 0x1c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x04, 0x8c, 0x01, 0x02, 0x35, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8c, 0x01, 0x02, 0x1b, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8c, 0x01, 0x1c, 0x30, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8c, 0x01, 0x33, 0x34, 0x0a, 0x57, 0x0a, + 0x02, 0x04, 0x04, 0x12, 0x06, 0x90, 0x01, 0x00, 0x96, 0x01, 0x01, 0x1a, 0x49, 0x20, 0x50, 0x72, + 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0x90, + 0x01, 0x08, 0x15, 0x0a, 0x4f, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0x92, 0x01, 0x02, + 0x21, 0x1a, 0x41, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x20, 0x61, 0x72, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x20, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x04, 0x92, + 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, 0x04, 0x92, 0x01, + 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x92, 0x01, 0x12, + 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x92, 0x01, 0x1f, 0x20, + 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x01, 0x12, 0x04, 0x95, 0x01, 0x02, 0x2b, 0x1a, 0x35, + 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x06, 0x12, 0x04, + 0x95, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x01, 0x12, 0x04, 0x95, + 0x01, 0x1c, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x03, 0x12, 0x04, 0x95, 0x01, + 0x29, 0x2a, 0x0a, 0x5f, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x99, 0x01, 0x00, 0xae, 0x01, 0x01, + 0x1a, 0x51, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x41, 0x50, + 0x49, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0x99, 0x01, 0x08, 0x21, + 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x06, 0x9c, 0x01, 0x02, 0x9e, 0x01, 0x05, + 0x1a, 0x3e, 0x20, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, + 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9c, 0x01, 0x02, 0x0e, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9c, 0x01, 0x0f, 0x1c, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9c, 0x01, 0x1f, 0x20, 0x0a, 0x0f, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x00, 0x08, 0x12, 0x06, 0x9c, 0x01, 0x21, 0x9e, 0x01, 0x04, 0x0a, 0x12, + 0x0a, 0x08, 0x04, 0x05, 0x02, 0x00, 0x08, 0x87, 0x09, 0x10, 0x12, 0x06, 0x9c, 0x01, 0x22, 0x9e, + 0x01, 0x03, 0x0a, 0x12, 0x0a, 0x0a, 0x04, 0x05, 0x02, 0x00, 0x08, 0x87, 0x09, 0x10, 0x04, 0x00, + 0x12, 0x04, 0x9d, 0x01, 0x0d, 0x0e, 0x0a, 0xe9, 0x01, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, + 0x04, 0xa3, 0x01, 0x02, 0x2a, 0x1a, 0xda, 0x01, 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x49, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x55, + 0x52, 0x4c, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, + 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x27, + 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x6d, 0x61, 0x78, + 0x69, 0x6d, 0x75, 0x6d, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x06, 0x12, 0x04, 0xa3, 0x01, 0x02, + 0x1a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x1b, 0x25, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa3, 0x01, 0x28, 0x29, 0x0a, + 0x5a, 0x0a, 0x04, 0x04, 0x05, 0x08, 0x00, 0x12, 0x06, 0xa6, 0x01, 0x02, 0xad, 0x01, 0x03, 0x1a, + 0x4a, 0x20, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, + 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x20, 0x77, 0x68, 0x6f, 0x73, 0x65, 0x20, 0x61, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x05, 0x08, 0x00, 0x01, 0x12, 0x04, 0xa6, 0x01, 0x08, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, + 0x08, 0x00, 0x02, 0x12, 0x04, 0xa7, 0x01, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x05, 0x08, + 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xa7, 0x01, 0x04, 0x30, 0x0a, 0x6b, 0x0a, 0x04, 0x04, + 0x05, 0x02, 0x02, 0x12, 0x04, 0xaa, 0x01, 0x04, 0x39, 0x1a, 0x5d, 0x20, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x49, 0x64, 0x20, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x63, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, + 0x20, 0x72, 0x75, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, + 0x06, 0x12, 0x04, 0xaa, 0x01, 0x04, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, + 0x12, 0x04, 0xaa, 0x01, 0x23, 0x34, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, + 0x04, 0xaa, 0x01, 0x37, 0x38, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x03, 0x12, 0x04, 0xab, + 0x01, 0x04, 0x28, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x06, 0x12, 0x04, 0xab, 0x01, + 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x01, 0x12, 0x04, 0xab, 0x01, 0x1d, + 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x03, 0x12, 0x04, 0xab, 0x01, 0x26, 0x27, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x04, 0x12, 0x04, 0xac, 0x01, 0x04, 0x2e, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x06, 0x12, 0x04, 0xac, 0x01, 0x04, 0x21, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x04, 0x01, 0x12, 0x04, 0xac, 0x01, 0x22, 0x29, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x05, 0x02, 0x04, 0x03, 0x12, 0x04, 0xac, 0x01, 0x2c, 0x2d, 0x0a, 0x61, 0x0a, 0x02, 0x04, + 0x06, 0x12, 0x06, 0xb1, 0x01, 0x00, 0xb4, 0x01, 0x01, 0x1a, 0x53, 0x20, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0xb1, 0x01, 0x08, 0x22, 0x0a, 0x51, 0x0a, 0x04, 0x04, + 0x06, 0x02, 0x00, 0x12, 0x04, 0xb3, 0x01, 0x02, 0x24, 0x1a, 0x43, 0x20, 0x50, 0x72, 0x65, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, + 0x4c, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb3, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb3, 0x01, 0x10, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb3, 0x01, 0x22, 0x23, 0x0a, 0x39, 0x0a, 0x02, 0x04, + 0x07, 0x12, 0x06, 0xb7, 0x01, 0x00, 0xba, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x04, 0xb7, + 0x01, 0x08, 0x1c, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0xb9, 0x01, 0x02, + 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, + 0xb9, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb9, + 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb9, 0x01, + 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb9, 0x01, 0x28, + 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xb9, + 0x01, 0x29, 0x4d, 0x0a, 0x3a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, 0xbd, 0x01, 0x00, 0xc3, 0x01, + 0x01, 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, + 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x04, 0xbd, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, + 0x04, 0x08, 0x02, 0x00, 0x12, 0x04, 0xbf, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbf, + 0x01, 0x02, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbf, 0x01, + 0x0e, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbf, 0x01, 0x17, + 0x18, 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x04, 0xc2, 0x01, 0x02, 0x1b, 0x1a, + 0x19, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, + 0x02, 0x01, 0x06, 0x12, 0x04, 0xc2, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, + 0x01, 0x01, 0x12, 0x04, 0xc2, 0x01, 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, + 0x03, 0x12, 0x04, 0xc2, 0x01, 0x19, 0x1a, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0xc6, + 0x01, 0x00, 0xcc, 0x01, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x09, + 0x01, 0x12, 0x04, 0xc6, 0x01, 0x08, 0x17, 0x0a, 0x1e, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, + 0x04, 0xc8, 0x01, 0x02, 0x4f, 0x1a, 0x10, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, + 0x12, 0x04, 0xc8, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, + 0x04, 0xc8, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, + 0xc8, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x08, 0x12, 0x04, 0xc8, + 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x09, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, + 0x04, 0xc8, 0x01, 0x29, 0x4d, 0x0a, 0x23, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x04, 0xcb, + 0x01, 0x02, 0x3a, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, + 0x02, 0x01, 0x05, 0x12, 0x04, 0xcb, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, + 0x01, 0x01, 0x12, 0x04, 0xcb, 0x01, 0x09, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, + 0x03, 0x12, 0x04, 0xcb, 0x01, 0x13, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x08, + 0x12, 0x04, 0xcb, 0x01, 0x15, 0x39, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x09, 0x02, 0x01, 0x08, 0x87, + 0x09, 0x05, 0x04, 0x12, 0x04, 0xcb, 0x01, 0x16, 0x38, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x0a, 0x12, + 0x06, 0xcf, 0x01, 0x00, 0xd8, 0x01, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, + 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, + 0x04, 0x0a, 0x01, 0x12, 0x04, 0xcf, 0x01, 0x08, 0x18, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x0a, 0x03, + 0x00, 0x12, 0x06, 0xd1, 0x01, 0x02, 0xd4, 0x01, 0x03, 0x1a, 0x12, 0x20, 0x41, 0x20, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0a, 0x03, 0x00, 0x01, 0x12, 0x04, 0xd1, 0x01, 0x0a, 0x0e, 0x0a, 0x27, 0x0a, 0x06, + 0x04, 0x0a, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xd3, 0x01, 0x04, 0x38, 0x1a, 0x17, 0x20, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x6c, 0x69, + 0x6e, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0a, 0x03, 0x00, 0x02, 0x00, 0x04, + 0x12, 0x04, 0xd3, 0x01, 0x04, 0x0c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0a, 0x03, 0x00, 0x02, 0x00, + 0x06, 0x12, 0x04, 0xd3, 0x01, 0x0d, 0x2d, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0a, 0x03, 0x00, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xd3, 0x01, 0x2e, 0x33, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0a, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xd3, 0x01, 0x36, 0x37, 0x0a, 0x2c, 0x0a, 0x04, 0x04, 0x0a, 0x02, + 0x00, 0x12, 0x04, 0xd7, 0x01, 0x02, 0x19, 0x1a, 0x1e, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x6f, 0x72, + 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6f, 0x66, + 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x04, + 0x12, 0x04, 0xd7, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, + 0x04, 0xd7, 0x01, 0x0b, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, + 0xd7, 0x01, 0x10, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd7, + 0x01, 0x17, 0x18, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("flyteidl2.dataproxy.tonic.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/gen/rust/src/flyteidl2.dataproxy.tonic.rs b/gen/rust/src/flyteidl2.dataproxy.tonic.rs index 4fcb1ab546..b894ae5407 100644 --- a/gen/rust/src/flyteidl2.dataproxy.tonic.rs +++ b/gen/rust/src/flyteidl2.dataproxy.tonic.rs @@ -204,6 +204,33 @@ pub mod data_proxy_service_client { ); self.inner.unary(req, path, codec).await } + pub async fn tail_logs( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response>, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/flyteidl2.dataproxy.DataProxyService/TailLogs", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("flyteidl2.dataproxy.DataProxyService", "TailLogs"), + ); + self.inner.server_streaming(req, path, codec).await + } } } /// Generated server implementations. @@ -241,6 +268,16 @@ pub mod data_proxy_service_server { tonic::Response, tonic::Status, >; + /// Server streaming response type for the TailLogs method. + type TailLogsStream: tonic::codegen::tokio_stream::Stream< + Item = std::result::Result, + > + + Send + + 'static; + async fn tail_logs( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status>; } #[derive(Debug)] pub struct DataProxyServiceServer { @@ -508,6 +545,52 @@ pub mod data_proxy_service_server { }; Box::pin(fut) } + "/flyteidl2.dataproxy.DataProxyService/TailLogs" => { + #[allow(non_camel_case_types)] + struct TailLogsSvc(pub Arc); + impl< + T: DataProxyService, + > tonic::server::ServerStreamingService + for TailLogsSvc { + type Response = super::TailLogsResponse; + type ResponseStream = T::TailLogsStream; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::tail_logs(&inner, request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = TailLogsSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.server_streaming(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok( diff --git a/gen/rust/src/flyteidl2.workflow.rs b/gen/rust/src/flyteidl2.workflow.rs index 83d580db3a..9f3cdb2615 100644 --- a/gen/rust/src/flyteidl2.workflow.rs +++ b/gen/rust/src/flyteidl2.workflow.rs @@ -1334,6 +1334,30 @@ pub struct GetActionDataUrIsResponse { #[prost(string, tag="2")] pub outputs_uri: ::prost::alloc::string::String, } +/// Request message for getting action log context. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActionLogContextRequest { + /// Action to query. + #[prost(message, optional, tag="1")] + pub action_id: ::core::option::Option, + /// The attempt number. + #[prost(uint32, tag="2")] + pub attempt: u32, +} +/// Response message for getting action log context. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActionLogContextResponse { + /// The logging context for the action attempt. + #[prost(message, optional, tag="1")] + pub log_context: ::core::option::Option, + /// The cluster where the action attempt is running. + #[prost(string, tag="2")] + pub cluster: ::prost::alloc::string::String, +} /// Request message for listing runs. #[pyo3::pyclass(dict, get_all, set_all)] #[allow(clippy::derive_partial_eq_without_eq)] @@ -4495,7 +4519,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x15, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x15, 0x19, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x15, 0x24, 0x25, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, 0x0a, 0xdd, 0x0c, 0x0a, 0x29, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x6f, 0x33, 0x0a, 0xb3, 0x0d, 0x0a, 0x29, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x72, 0x75, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, @@ -4523,1447 +4547,1527 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, - 0x32, 0x6e, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x23, + 0x32, 0x71, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x08, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x30, 0x01, - 0x42, 0xce, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x13, 0x52, 0x75, 0x6e, - 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, - 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, - 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x4a, 0xd6, 0x06, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x24, 0x01, 0x0a, 0x08, 0x0a, 0x01, - 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, - 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, - 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, - 0x30, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x08, 0x00, 0x4d, 0x0a, 0x09, 0x0a, 0x02, 0x08, - 0x0b, 0x12, 0x03, 0x08, 0x00, 0x4d, 0x0a, 0x46, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x0b, 0x00, - 0x0f, 0x01, 0x1a, 0x3a, 0x20, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, - 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x08, 0x16, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x00, 0x12, 0x04, 0x0c, 0x02, 0x0e, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x0c, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, - 0x03, 0x0c, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x0c, - 0x29, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0c, 0x30, 0x40, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0d, 0x04, 0x2f, 0x0a, 0x0d, - 0x0a, 0x06, 0x06, 0x00, 0x02, 0x00, 0x04, 0x22, 0x12, 0x03, 0x0d, 0x04, 0x2f, 0x0a, 0x2f, 0x0a, - 0x02, 0x04, 0x00, 0x12, 0x04, 0x12, 0x00, 0x18, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x12, 0x08, 0x17, 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x00, 0x12, 0x03, 0x14, 0x02, 0x4f, 0x1a, 0x10, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x00, 0x06, 0x12, 0x03, 0x14, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x14, 0x1a, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x14, 0x26, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x14, 0x28, - 0x4e, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x03, 0x14, - 0x29, 0x4d, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x17, 0x02, 0x3a, 0x1a, - 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x20, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x17, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x17, - 0x09, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x17, 0x13, 0x14, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x08, 0x12, 0x03, 0x17, 0x15, 0x39, 0x0a, 0x10, - 0x0a, 0x09, 0x04, 0x00, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, 0x04, 0x12, 0x03, 0x17, 0x16, 0x38, - 0x0a, 0x2f, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x1b, 0x00, 0x24, 0x01, 0x1a, 0x23, 0x20, 0x52, - 0x65, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x1b, 0x08, 0x18, 0x0a, 0x20, 0x0a, - 0x04, 0x04, 0x01, 0x03, 0x00, 0x12, 0x04, 0x1d, 0x02, 0x20, 0x03, 0x1a, 0x12, 0x20, 0x41, 0x20, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x03, 0x00, 0x01, 0x12, 0x03, 0x1d, 0x0a, 0x0e, 0x0a, 0x26, 0x0a, - 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x1f, 0x04, 0x38, 0x1a, 0x17, 0x20, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x6c, 0x69, - 0x6e, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x04, - 0x12, 0x03, 0x1f, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x06, - 0x12, 0x03, 0x1f, 0x0d, 0x2d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x1f, 0x2e, 0x33, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x1f, 0x36, 0x37, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x23, - 0x02, 0x19, 0x1a, 0x1e, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, - 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x67, 0x73, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, 0x23, 0x02, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x23, 0x0b, 0x0f, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x23, 0x10, 0x14, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x23, 0x17, 0x18, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, 0x0a, 0xc4, 0x8e, 0x01, 0x0a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x72, 0x75, 0x6e, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x72, 0x75, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x72, 0x75, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, - 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x72, 0x75, 0x6e, 0x5f, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xee, 0x04, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, - 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, - 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, - 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x01, - 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x48, 0x02, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, - 0x58, 0x0a, 0x14, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, 0x90, 0x02, + 0x01, 0x30, 0x01, 0x42, 0xce, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x13, + 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, + 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x4a, 0xa9, 0x07, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x26, 0x01, 0x0a, + 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, + 0x02, 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, + 0x03, 0x06, 0x00, 0x30, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x08, 0x00, 0x4d, 0x0a, 0x09, + 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x08, 0x00, 0x4d, 0x0a, 0x46, 0x0a, 0x02, 0x06, 0x00, 0x12, + 0x04, 0x0b, 0x00, 0x11, 0x01, 0x1a, 0x3a, 0x20, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, + 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x08, 0x16, 0x0a, 0x42, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x0d, 0x02, 0x10, 0x03, 0x1a, 0x34, 0x20, 0x44, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x20, 0x55, 0x73, 0x65, 0x20, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, + 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x06, 0x0e, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0d, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x0d, 0x29, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0d, 0x30, 0x40, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x00, 0x04, 0x12, 0x03, 0x0e, 0x04, 0x1d, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x00, 0x04, + 0x21, 0x12, 0x03, 0x0e, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x0f, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x00, 0x04, 0x22, 0x12, 0x03, + 0x0f, 0x04, 0x2f, 0x0a, 0x2f, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x14, 0x00, 0x1a, 0x01, 0x1a, + 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x14, 0x08, 0x17, + 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x16, 0x02, 0x4f, 0x1a, 0x10, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x16, 0x02, 0x19, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x16, 0x1a, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x26, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x00, 0x08, 0x12, 0x03, 0x16, 0x28, 0x4e, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, 0x08, + 0x87, 0x09, 0x19, 0x12, 0x03, 0x16, 0x29, 0x4d, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, + 0x12, 0x03, 0x19, 0x02, 0x3a, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x19, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x19, 0x09, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x19, 0x13, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x08, 0x12, + 0x03, 0x19, 0x15, 0x39, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, + 0x04, 0x12, 0x03, 0x19, 0x16, 0x38, 0x0a, 0x2f, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x1d, 0x00, + 0x26, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, + 0x1d, 0x08, 0x18, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x00, 0x12, 0x04, 0x1f, 0x02, 0x22, + 0x03, 0x1a, 0x12, 0x20, 0x41, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x6c, + 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x03, 0x00, 0x01, 0x12, 0x03, + 0x1f, 0x0a, 0x0e, 0x0a, 0x26, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x21, + 0x04, 0x38, 0x1a, 0x17, 0x20, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x6c, 0x6f, 0x67, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, + 0x01, 0x03, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x21, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, + 0x01, 0x03, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x21, 0x0d, 0x2d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, + 0x01, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x21, 0x2e, 0x33, 0x0a, 0x0e, 0x0a, 0x07, 0x04, + 0x01, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x21, 0x36, 0x37, 0x0a, 0x2b, 0x0a, 0x04, 0x04, + 0x01, 0x02, 0x00, 0x12, 0x03, 0x25, 0x02, 0x19, 0x1a, 0x1e, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x6f, + 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6f, + 0x66, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, + 0x04, 0x12, 0x03, 0x25, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x25, 0x0b, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x25, + 0x10, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x25, 0x17, 0x18, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xf6, 0x97, 0x01, 0x0a, 0x24, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2f, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x72, 0x75, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x72, 0x75, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2f, 0x72, 0x75, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xee, 0x04, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x72, + 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, + 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, + 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, + 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x48, 0x02, 0x52, 0x06, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, + 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x12, 0x6f, 0x66, 0x66, + 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x32, 0x0a, 0x08, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, + 0x73, 0x6b, 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0x0a, 0x02, 0x69, 0x64, + 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, + 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x22, 0x3e, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, + 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, + 0x75, 0x6e, 0x52, 0x03, 0x72, 0x75, 0x6e, 0x22, 0x79, 0x0a, 0x0f, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, + 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, + 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x51, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x58, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, + 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, + 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0x62, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x64, 0x0a, + 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x75, 0x6e, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x52, 0x75, 0x6e, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x42, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, - 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, - 0x42, 0x0f, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, - 0x72, 0x22, 0x3e, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x03, 0x72, 0x75, - 0x6e, 0x22, 0x79, 0x0a, 0x0f, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, - 0x75, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x56, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5f, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, + 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x22, 0x88, 0x01, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, + 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x74, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x6f, + 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x84, + 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, + 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x42, + 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x48, + 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, + 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, + 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, + 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, + 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x02, 0x0a, + 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, + 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, + 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, + 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, + 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x40, 0x0a, 0x11, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, + 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, + 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, - 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x38, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x58, 0x0a, 0x16, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, - 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x38, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x62, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, + 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x13, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, + 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, + 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x45, 0x6e, 0x72, + 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, 0x72, + 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7a, 0x0a, 0x19, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, + 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x65, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x57, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x64, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x59, 0x0a, - 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, - 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x22, 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, - 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, - 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, - 0x08, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, - 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x02, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, - 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, - 0x40, 0x0a, 0x11, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, - 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, - 0x64, 0x22, 0x61, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, - 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, - 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, - 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7a, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, - 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x22, 0x65, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x47, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, - 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, - 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe3, 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, - 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, - 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, - 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, - 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, - 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, - 0xb3, 0x0c, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, - 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, - 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe3, 0x03, + 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, + 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, + 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, + 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x2e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, + 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, + 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, + 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, + 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, + 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, 0xb0, 0x0d, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x23, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, - 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, - 0x02, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, 0x90, 0x02, 0x01, + 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x09, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x0b, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, + 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x75, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, - 0x52, 0x49, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7b, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xca, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, - 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, - 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x4a, 0xcd, 0x5c, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xf2, 0x02, 0x01, 0x0a, 0x08, - 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, - 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, - 0x06, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x24, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, - 0x03, 0x09, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x00, 0x2e, 0x0a, - 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, - 0x12, 0x03, 0x0c, 0x00, 0x29, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0e, 0x00, 0x4d, 0x0a, - 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0e, 0x00, 0x4d, 0x0a, 0x41, 0x0a, 0x02, 0x06, 0x00, - 0x12, 0x04, 0x11, 0x00, 0x4d, 0x01, 0x1a, 0x35, 0x20, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x11, 0x08, 0x12, 0x0a, 0x32, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x00, 0x12, 0x03, 0x13, 0x02, 0x40, 0x1a, 0x25, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, - 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x13, 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x13, 0x10, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x13, 0x2b, 0x3c, 0x0a, 0x1b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, - 0x03, 0x16, 0x02, 0x3d, 0x1a, 0x0e, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x20, 0x61, 0x20, 0x72, - 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x16, - 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x16, 0x0f, 0x1e, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x16, 0x29, 0x39, 0x0a, 0x35, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x19, 0x02, 0x1b, 0x03, 0x1a, 0x27, 0x20, 0x47, - 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, - 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, - 0x19, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x19, 0x14, - 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x19, 0x33, 0x48, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1a, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, - 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, 0x03, 0x1a, 0x04, 0x2f, 0x0a, 0x7e, 0x0a, 0x04, - 0x06, 0x00, 0x02, 0x03, 0x12, 0x03, 0x1e, 0x02, 0x59, 0x1a, 0x71, 0x20, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, - 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, - 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1e, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x03, 0x02, 0x12, 0x03, 0x1e, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, - 0x06, 0x12, 0x03, 0x1e, 0x37, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, - 0x03, 0x1e, 0x3e, 0x55, 0x0a, 0x39, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x21, 0x02, - 0x23, 0x03, 0x1a, 0x2b, 0x20, 0x47, 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x21, 0x06, 0x16, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x21, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x21, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x04, 0x04, 0x12, 0x03, 0x22, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x04, 0x04, - 0x22, 0x12, 0x03, 0x22, 0x04, 0x2f, 0x0a, 0x85, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, - 0x03, 0x26, 0x02, 0x62, 0x1a, 0x78, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, - 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xca, 0x01, 0x0a, 0x16, 0x63, 0x6f, + 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, + 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, + 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4a, 0xe1, 0x62, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0x8a, + 0x03, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, + 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, + 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, + 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, + 0x00, 0x24, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x28, 0x0a, 0x09, 0x0a, + 0x02, 0x03, 0x05, 0x12, 0x03, 0x09, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, + 0x0a, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x2e, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x08, 0x12, 0x03, 0x0c, 0x00, 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x09, 0x12, + 0x03, 0x0d, 0x00, 0x29, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0f, 0x00, 0x4d, 0x0a, 0x09, + 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0f, 0x00, 0x4d, 0x0a, 0x41, 0x0a, 0x02, 0x06, 0x00, 0x12, + 0x04, 0x12, 0x00, 0x53, 0x01, 0x1a, 0x35, 0x20, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, + 0x06, 0x00, 0x01, 0x12, 0x03, 0x12, 0x08, 0x12, 0x0a, 0x32, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, + 0x12, 0x03, 0x14, 0x02, 0x40, 0x1a, 0x25, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x6e, 0x65, 0x77, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x14, 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x00, 0x02, 0x12, 0x03, 0x14, 0x10, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, + 0x03, 0x12, 0x03, 0x14, 0x2b, 0x3c, 0x0a, 0x1b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x03, + 0x17, 0x02, 0x3d, 0x1a, 0x0e, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x17, 0x06, + 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x17, 0x0f, 0x1e, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x17, 0x29, 0x39, 0x0a, 0x35, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x1a, 0x02, 0x1c, 0x03, 0x1a, 0x27, 0x20, 0x47, 0x65, + 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, + 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x1a, + 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x1a, 0x14, 0x28, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x1a, 0x33, 0x48, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1b, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, + 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, 0x03, 0x1b, 0x04, 0x2f, 0x0a, 0x7e, 0x0a, 0x04, 0x06, + 0x00, 0x02, 0x03, 0x12, 0x03, 0x1f, 0x02, 0x59, 0x1a, 0x71, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, + 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x26, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x26, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x05, 0x06, 0x12, 0x03, 0x26, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, - 0x03, 0x12, 0x03, 0x26, 0x44, 0x5e, 0x0a, 0x47, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x06, 0x12, 0x04, - 0x29, 0x02, 0x2c, 0x03, 0x1a, 0x39, 0x20, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x3a, 0x20, 0x55, 0x73, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x29, 0x06, 0x13, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, 0x03, 0x29, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x29, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x06, 0x04, 0x12, 0x03, 0x2a, 0x04, 0x1d, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, - 0x21, 0x12, 0x03, 0x2a, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, - 0x03, 0x2b, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, 0x22, 0x12, 0x03, - 0x2b, 0x04, 0x2f, 0x0a, 0x40, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x07, 0x12, 0x04, 0x2f, 0x02, 0x31, - 0x03, 0x1a, 0x32, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, - 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, - 0x2f, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x02, 0x12, 0x03, 0x2f, 0x0f, - 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x2f, 0x29, 0x39, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x04, 0x12, 0x03, 0x30, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, - 0x06, 0x06, 0x00, 0x02, 0x07, 0x04, 0x22, 0x12, 0x03, 0x30, 0x04, 0x2f, 0x0a, 0xb5, 0x01, 0x0a, - 0x04, 0x06, 0x00, 0x02, 0x08, 0x12, 0x03, 0x35, 0x02, 0x47, 0x1a, 0xa7, 0x01, 0x20, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x20, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x65, 0x64, 0x0a, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x35, - 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x02, 0x12, 0x03, 0x35, 0x10, 0x20, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x35, 0x2b, 0x31, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x35, 0x32, 0x43, 0x0a, 0x31, 0x0a, 0x04, - 0x06, 0x00, 0x02, 0x09, 0x12, 0x04, 0x38, 0x02, 0x3a, 0x03, 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, - 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x01, 0x12, 0x03, 0x38, 0x06, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x09, 0x02, 0x12, 0x03, 0x38, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x09, 0x03, 0x12, 0x03, 0x38, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x09, 0x04, 0x12, 0x03, 0x39, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x09, 0x04, - 0x22, 0x12, 0x03, 0x39, 0x04, 0x2f, 0x0a, 0xa6, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0a, 0x12, - 0x03, 0x3e, 0x02, 0x50, 0x1a, 0x98, 0x01, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x72, 0x75, - 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x0a, 0x20, 0x74, - 0x6f, 0x20, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x65, 0x73, - 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, - 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x3e, 0x06, 0x12, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x0a, 0x02, 0x12, 0x03, 0x3e, 0x13, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x3e, 0x31, 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x0a, 0x03, 0x12, 0x03, 0x3e, 0x38, 0x4c, 0x0a, 0x42, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0b, 0x12, - 0x03, 0x41, 0x02, 0x62, 0x1a, 0x35, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, - 0x20, 0x6b, 0x38, 0x73, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x72, 0x65, 0x61, - 0x64, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x0b, 0x01, 0x12, 0x03, 0x41, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x0b, 0x02, 0x12, 0x03, 0x41, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x06, - 0x12, 0x03, 0x41, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x03, 0x12, 0x03, - 0x41, 0x44, 0x5e, 0x0a, 0x7a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0c, 0x12, 0x03, 0x44, 0x02, 0x46, - 0x1a, 0x6d, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, - 0x62, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, - 0x79, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0c, 0x01, 0x12, 0x03, 0x44, 0x06, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x0c, 0x02, 0x12, 0x03, 0x44, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x0c, 0x03, 0x12, 0x03, 0x44, 0x2f, 0x42, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x0d, 0x12, 0x03, 0x47, 0x02, 0x4d, 0x1a, 0x47, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, - 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, 0x01, 0x12, 0x03, 0x47, 0x06, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x0d, 0x02, 0x12, 0x03, 0x47, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x0d, 0x06, 0x12, 0x03, 0x47, 0x2f, 0x35, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x0d, 0x03, 0x12, 0x03, 0x47, 0x36, 0x49, 0x0a, 0x4b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0e, 0x12, - 0x04, 0x4a, 0x02, 0x4c, 0x03, 0x1a, 0x3d, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x55, 0x52, 0x49, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, 0x20, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x01, 0x12, 0x03, 0x4a, - 0x06, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x02, 0x12, 0x03, 0x4a, 0x18, 0x30, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x03, 0x12, 0x03, 0x4a, 0x3b, 0x54, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x04, 0x12, 0x03, 0x4b, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, - 0x06, 0x00, 0x02, 0x0e, 0x04, 0x22, 0x12, 0x03, 0x4b, 0x04, 0x2f, 0x0a, 0x31, 0x0a, 0x02, 0x04, - 0x00, 0x12, 0x04, 0x50, 0x00, 0x77, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x50, 0x08, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, - 0x08, 0x00, 0x12, 0x04, 0x51, 0x02, 0x59, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, - 0x01, 0x12, 0x03, 0x51, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x02, 0x12, - 0x03, 0x52, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, - 0x12, 0x03, 0x52, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x55, - 0x04, 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x55, 0x04, 0x18, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x55, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x55, 0x22, 0x23, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x01, 0x12, 0x03, 0x58, 0x04, 0x2c, 0x1a, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, - 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, - 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x58, 0x04, 0x1c, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x58, 0x1d, 0x27, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x58, 0x2a, 0x2b, 0x0a, 0x20, 0x0a, 0x04, - 0x04, 0x00, 0x08, 0x01, 0x12, 0x04, 0x5c, 0x02, 0x67, 0x03, 0x1a, 0x12, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x08, 0x01, 0x01, 0x12, 0x03, 0x5c, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x08, 0x01, 0x02, 0x12, 0x03, 0x5d, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, - 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x5d, 0x04, 0x30, 0x0a, 0x22, 0x0a, 0x04, 0x04, - 0x00, 0x02, 0x02, 0x12, 0x03, 0x60, 0x04, 0x24, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, - 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x60, 0x04, 0x17, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x60, 0x18, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x60, 0x22, 0x23, 0x0a, 0x24, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x03, 0x12, 0x03, 0x63, 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, - 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x63, 0x04, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x63, 0x12, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x63, 0x1e, 0x1f, 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x04, 0x12, 0x03, 0x66, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x06, 0x12, 0x03, 0x66, 0x04, 0x16, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x66, 0x17, 0x23, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x66, 0x26, 0x27, 0x0a, 0x1e, 0x0a, 0x04, - 0x04, 0x00, 0x08, 0x02, 0x12, 0x04, 0x6a, 0x02, 0x6e, 0x03, 0x1a, 0x10, 0x20, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x08, 0x02, 0x01, 0x12, 0x03, 0x6a, 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x05, 0x12, 0x03, 0x6b, 0x04, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x06, - 0x12, 0x03, 0x6b, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, - 0x6b, 0x10, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x6b, 0x19, - 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x6d, 0x04, 0x37, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x06, 0x12, 0x03, 0x6d, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x6d, 0x1e, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x06, 0x03, 0x12, 0x03, 0x6d, 0x35, 0x36, 0x0a, 0x23, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, - 0x12, 0x03, 0x71, 0x02, 0x1c, 0x1a, 0x16, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, - 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x71, 0x02, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x71, 0x0f, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x07, 0x03, 0x12, 0x03, 0x71, 0x1a, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, - 0x03, 0x74, 0x02, 0x17, 0x1a, 0x29, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, - 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x74, 0x02, 0x0b, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x74, 0x0c, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x74, 0x15, 0x16, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x01, 0x12, - 0x04, 0x7a, 0x00, 0x7c, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x7a, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, - 0x00, 0x12, 0x03, 0x7b, 0x02, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x7b, 0x02, 0x05, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7b, - 0x06, 0x09, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7b, 0x0c, 0x0d, - 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x05, 0x7f, 0x00, 0x85, 0x01, 0x01, 0x1a, 0x25, 0x20, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, - 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x7f, 0x08, 0x17, - 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x04, 0x81, 0x01, 0x02, 0x49, 0x1a, 0x0f, - 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x04, 0x81, 0x01, 0x02, 0x16, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x04, 0x81, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x04, 0x81, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, 0x04, 0x81, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, - 0x02, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x81, 0x01, 0x23, 0x47, 0x0a, 0x3b, 0x0a, - 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x04, 0x84, 0x01, 0x02, 0x1d, 0x1a, 0x2d, 0x20, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x01, 0x04, 0x12, 0x04, 0x84, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x01, 0x05, 0x12, 0x04, 0x84, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, - 0x01, 0x12, 0x04, 0x84, 0x01, 0x12, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, - 0x12, 0x04, 0x84, 0x01, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x88, 0x01, - 0x00, 0x1b, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, - 0x01, 0x12, 0x04, 0x88, 0x01, 0x08, 0x18, 0x0a, 0x4d, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x06, 0x8b, - 0x01, 0x00, 0x8e, 0x01, 0x01, 0x1a, 0x3f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, + 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1f, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x03, 0x02, 0x12, 0x03, 0x1f, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x06, + 0x12, 0x03, 0x1f, 0x37, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, + 0x1f, 0x3e, 0x55, 0x0a, 0x39, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x22, 0x02, 0x24, + 0x03, 0x1a, 0x2b, 0x20, 0x47, 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x22, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x22, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x04, 0x03, 0x12, 0x03, 0x22, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, + 0x04, 0x12, 0x03, 0x23, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x04, 0x04, 0x22, + 0x12, 0x03, 0x23, 0x04, 0x2f, 0x0a, 0x85, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x03, + 0x27, 0x02, 0x62, 0x1a, 0x78, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, + 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, + 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x27, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x27, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x05, 0x06, 0x12, 0x03, 0x27, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, + 0x12, 0x03, 0x27, 0x44, 0x5e, 0x0a, 0x47, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x06, 0x12, 0x04, 0x2a, + 0x02, 0x2d, 0x03, 0x1a, 0x39, 0x20, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x3a, 0x20, 0x55, 0x73, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x2a, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, 0x03, 0x2a, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x06, 0x03, 0x12, 0x03, 0x2a, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, + 0x04, 0x12, 0x03, 0x2b, 0x04, 0x1d, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, 0x21, + 0x12, 0x03, 0x2b, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, 0x03, + 0x2c, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, 0x22, 0x12, 0x03, 0x2c, + 0x04, 0x2f, 0x0a, 0x40, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x07, 0x12, 0x04, 0x30, 0x02, 0x32, 0x03, + 0x1a, 0x32, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, 0x73, + 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, + 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x30, + 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x02, 0x12, 0x03, 0x30, 0x0f, 0x1e, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x30, 0x29, 0x39, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x04, 0x12, 0x03, 0x31, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, + 0x06, 0x00, 0x02, 0x07, 0x04, 0x22, 0x12, 0x03, 0x31, 0x04, 0x2f, 0x0a, 0xb5, 0x01, 0x0a, 0x04, + 0x06, 0x00, 0x02, 0x08, 0x12, 0x03, 0x36, 0x02, 0x47, 0x1a, 0xa7, 0x01, 0x20, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x20, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x65, 0x64, 0x0a, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x36, 0x06, + 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x02, 0x12, 0x03, 0x36, 0x10, 0x20, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x36, 0x2b, 0x31, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x36, 0x32, 0x43, 0x0a, 0x31, 0x0a, 0x04, 0x06, + 0x00, 0x02, 0x09, 0x12, 0x04, 0x39, 0x02, 0x3b, 0x03, 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, 0x74, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x01, 0x12, 0x03, 0x39, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x09, 0x02, 0x12, 0x03, 0x39, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x09, 0x03, 0x12, 0x03, 0x39, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, + 0x04, 0x12, 0x03, 0x3a, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x09, 0x04, 0x22, + 0x12, 0x03, 0x3a, 0x04, 0x2f, 0x0a, 0xa6, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0a, 0x12, 0x03, + 0x3f, 0x02, 0x50, 0x1a, 0x98, 0x01, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, + 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x0a, 0x20, 0x74, 0x6f, + 0x20, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x65, 0x73, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x3f, 0x06, 0x12, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x0a, 0x02, 0x12, 0x03, 0x3f, 0x13, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x0a, 0x06, 0x12, 0x03, 0x3f, 0x31, 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, + 0x03, 0x12, 0x03, 0x3f, 0x38, 0x4c, 0x0a, 0x42, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0b, 0x12, 0x03, + 0x42, 0x02, 0x62, 0x1a, 0x35, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x20, + 0x6b, 0x38, 0x73, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x0b, 0x01, 0x12, 0x03, 0x42, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, + 0x02, 0x12, 0x03, 0x42, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x06, 0x12, + 0x03, 0x42, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x03, 0x12, 0x03, 0x42, + 0x44, 0x5e, 0x0a, 0x7a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0c, 0x12, 0x03, 0x45, 0x02, 0x46, 0x1a, + 0x6d, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, + 0x6f, 0x72, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x6f, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, + 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0c, 0x01, 0x12, 0x03, 0x45, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x0c, 0x02, 0x12, 0x03, 0x45, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x0c, 0x03, 0x12, 0x03, 0x45, 0x2f, 0x42, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0d, + 0x12, 0x03, 0x48, 0x02, 0x4d, 0x1a, 0x47, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, 0x01, 0x12, 0x03, 0x48, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x0d, 0x02, 0x12, 0x03, 0x48, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x0d, 0x06, 0x12, 0x03, 0x48, 0x2f, 0x35, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, + 0x03, 0x12, 0x03, 0x48, 0x36, 0x49, 0x0a, 0x4b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0e, 0x12, 0x04, + 0x4b, 0x02, 0x4d, 0x03, 0x1a, 0x3d, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x55, 0x52, 0x49, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x01, 0x12, 0x03, 0x4b, 0x06, + 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x02, 0x12, 0x03, 0x4b, 0x18, 0x30, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x03, 0x12, 0x03, 0x4b, 0x3b, 0x54, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x0e, 0x04, 0x12, 0x03, 0x4c, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, + 0x00, 0x02, 0x0e, 0x04, 0x22, 0x12, 0x03, 0x4c, 0x04, 0x2f, 0x0a, 0x5d, 0x0a, 0x04, 0x06, 0x00, + 0x02, 0x0f, 0x12, 0x04, 0x50, 0x02, 0x52, 0x03, 0x1a, 0x4f, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x20, 0x28, 0x70, 0x6f, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2c, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x0f, 0x01, 0x12, 0x03, 0x50, 0x06, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0f, 0x02, + 0x12, 0x03, 0x50, 0x1a, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0f, 0x03, 0x12, 0x03, + 0x50, 0x3f, 0x5a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0f, 0x04, 0x12, 0x03, 0x51, 0x04, + 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x0f, 0x04, 0x22, 0x12, 0x03, 0x51, 0x04, 0x2f, + 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x56, 0x00, 0x7d, 0x01, 0x1a, 0x25, 0x20, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x56, 0x08, 0x18, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x00, 0x12, 0x04, 0x57, 0x02, 0x5f, 0x03, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x08, 0x00, 0x01, 0x12, 0x03, 0x57, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x08, 0x00, 0x02, 0x12, 0x03, 0x58, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x08, + 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x58, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x00, + 0x02, 0x00, 0x12, 0x03, 0x5b, 0x04, 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x20, + 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x5b, + 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5b, 0x19, 0x1f, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5b, 0x22, 0x23, 0x0a, 0x47, + 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x5e, 0x04, 0x2c, 0x1a, 0x3a, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, + 0x12, 0x03, 0x5e, 0x04, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, + 0x5e, 0x1d, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5e, 0x2a, + 0x2b, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x01, 0x12, 0x04, 0x62, 0x02, 0x6d, 0x03, 0x1a, + 0x12, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x01, 0x01, 0x12, 0x03, 0x62, 0x08, + 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x01, 0x02, 0x12, 0x03, 0x63, 0x04, 0x30, 0x0a, + 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x63, 0x04, 0x30, + 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x66, 0x04, 0x24, 0x1a, 0x15, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, + 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x66, + 0x04, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x66, 0x18, 0x1f, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x66, 0x22, 0x23, 0x0a, 0x24, + 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x69, 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, + 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x69, + 0x04, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x69, 0x12, 0x1b, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x69, 0x1e, 0x1f, 0x0a, 0x27, + 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x6c, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, + 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x06, + 0x12, 0x03, 0x6c, 0x04, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, + 0x6c, 0x17, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x6c, 0x26, + 0x27, 0x0a, 0x1e, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x02, 0x12, 0x04, 0x70, 0x02, 0x74, 0x03, 0x1a, + 0x10, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x02, 0x01, 0x12, 0x03, 0x70, 0x08, 0x15, 0x0a, + 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x71, 0x04, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x05, 0x06, 0x12, 0x03, 0x71, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x05, 0x01, 0x12, 0x03, 0x71, 0x10, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, + 0x03, 0x12, 0x03, 0x71, 0x19, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, + 0x73, 0x04, 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x06, 0x12, 0x03, 0x73, 0x04, + 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x73, 0x1e, 0x32, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x73, 0x35, 0x36, 0x0a, 0x23, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x77, 0x02, 0x1c, 0x1a, 0x16, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x72, 0x75, 0x6e, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x77, 0x02, 0x0e, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x77, 0x0f, 0x17, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x77, 0x1a, 0x1b, 0x0a, 0x36, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, 0x7a, 0x02, 0x17, 0x1a, 0x29, 0x20, 0x49, 0x6e, 0x64, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, + 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x7a, + 0x02, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x7a, 0x0c, 0x12, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x7a, 0x15, 0x16, 0x0a, 0x34, + 0x0a, 0x02, 0x04, 0x01, 0x12, 0x06, 0x80, 0x01, 0x00, 0x82, 0x01, 0x01, 0x1a, 0x26, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, + 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x04, 0x80, 0x01, 0x08, + 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x04, 0x81, 0x01, 0x02, 0x0e, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x04, 0x81, 0x01, 0x02, 0x05, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x04, 0x81, 0x01, 0x06, 0x09, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x04, 0x81, 0x01, 0x0c, 0x0d, 0x0a, 0x33, 0x0a, 0x02, + 0x04, 0x02, 0x12, 0x06, 0x85, 0x01, 0x00, 0x8b, 0x01, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x04, 0x85, 0x01, 0x08, 0x17, 0x0a, 0x1d, + 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x04, 0x87, 0x01, 0x02, 0x49, 0x1a, 0x0f, 0x20, 0x52, + 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x04, 0x87, 0x01, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x04, 0x87, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x00, 0x03, 0x12, 0x04, 0x87, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x00, 0x08, 0x12, 0x04, 0x87, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x02, 0x02, + 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x87, 0x01, 0x23, 0x47, 0x0a, 0x3b, 0x0a, 0x04, 0x04, + 0x02, 0x02, 0x01, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x1d, 0x1a, 0x2d, 0x20, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, + 0x04, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, + 0x12, 0x04, 0x8a, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, + 0x04, 0x8a, 0x01, 0x12, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x04, + 0x8a, 0x01, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x8e, 0x01, 0x00, 0x1b, + 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, + 0x04, 0x8e, 0x01, 0x08, 0x18, 0x0a, 0x4d, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x06, 0x91, 0x01, 0x00, + 0x94, 0x01, 0x01, 0x1a, 0x3f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, + 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0x91, 0x01, 0x08, + 0x1c, 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0x93, 0x01, 0x02, 0x49, 0x1a, + 0x0f, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, 0x93, 0x01, 0x02, 0x16, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x01, 0x17, 0x1d, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x00, 0x08, 0x12, 0x04, 0x93, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, + 0x04, 0x04, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x93, 0x01, 0x23, 0x47, 0x0a, 0x4e, + 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x97, 0x01, 0x00, 0x9a, 0x01, 0x01, 0x1a, 0x40, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0x97, 0x01, 0x08, 0x1d, 0x0a, 0x33, 0x0a, 0x04, 0x04, + 0x05, 0x02, 0x00, 0x12, 0x04, 0x99, 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0x99, 0x01, 0x02, 0x0c, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x99, 0x01, 0x0d, 0x14, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0x99, 0x01, 0x17, 0x18, 0x0a, 0x4e, 0x0a, + 0x02, 0x04, 0x06, 0x12, 0x06, 0x9d, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x1a, 0x40, 0x20, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0x9d, 0x01, 0x08, 0x1e, 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x06, + 0x02, 0x00, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, + 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, + 0x00, 0x06, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, + 0x01, 0x12, 0x04, 0x9f, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, + 0x12, 0x04, 0x9f, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x08, 0x12, + 0x04, 0x9f, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x06, 0x02, 0x00, 0x08, 0x87, 0x09, + 0x19, 0x12, 0x04, 0x9f, 0x01, 0x23, 0x47, 0x0a, 0x4f, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x06, 0xa3, + 0x01, 0x00, 0xa6, 0x01, 0x01, 0x1a, 0x41, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, + 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, + 0x04, 0xa3, 0x01, 0x08, 0x1f, 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0xa5, + 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xa5, 0x01, 0x0d, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xa5, 0x01, 0x17, 0x18, 0x0a, 0x51, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, 0xa9, + 0x01, 0x00, 0xac, 0x01, 0x01, 0x1a, 0x43, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, - 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0x8b, - 0x01, 0x08, 0x1c, 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0x8d, 0x01, 0x02, - 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8d, 0x01, 0x02, - 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8d, 0x01, 0x17, 0x1d, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8d, 0x01, 0x20, 0x21, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x08, 0x12, 0x04, 0x8d, 0x01, 0x22, 0x48, 0x0a, 0x10, - 0x0a, 0x08, 0x04, 0x04, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x8d, 0x01, 0x23, 0x47, - 0x0a, 0x4e, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x91, 0x01, 0x00, 0x94, 0x01, 0x01, 0x1a, 0x40, - 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, - 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0x91, 0x01, 0x08, 0x1d, 0x0a, 0x33, 0x0a, - 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x04, 0x93, 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0x93, 0x01, 0x02, - 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x01, 0x0d, 0x14, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, 0x01, 0x17, 0x18, 0x0a, - 0x4e, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0x97, 0x01, 0x00, 0x9a, 0x01, 0x01, 0x1a, 0x40, 0x20, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0x97, 0x01, 0x08, 0x1e, 0x0a, 0x1d, 0x0a, 0x04, - 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0x99, 0x01, 0x02, 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, 0x6e, - 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x06, 0x02, 0x00, 0x06, 0x12, 0x04, 0x99, 0x01, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, - 0x02, 0x00, 0x01, 0x12, 0x04, 0x99, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, - 0x00, 0x03, 0x12, 0x04, 0x99, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, - 0x08, 0x12, 0x04, 0x99, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x06, 0x02, 0x00, 0x08, - 0x87, 0x09, 0x19, 0x12, 0x04, 0x99, 0x01, 0x23, 0x47, 0x0a, 0x4f, 0x0a, 0x02, 0x04, 0x07, 0x12, - 0x06, 0x9d, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x1a, 0x41, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, - 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, - 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, - 0x01, 0x12, 0x04, 0x9d, 0x01, 0x08, 0x1f, 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, - 0x04, 0x9f, 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, - 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9f, 0x01, 0x0d, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x00, 0x03, 0x12, 0x04, 0x9f, 0x01, 0x17, 0x18, 0x0a, 0x51, 0x0a, 0x02, 0x04, 0x08, 0x12, - 0x06, 0xa3, 0x01, 0x00, 0xa6, 0x01, 0x01, 0x1a, 0x43, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, - 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, - 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, - 0x04, 0x08, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x08, 0x1f, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x08, 0x02, - 0x00, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x00, 0x01, 0x12, 0x04, 0xa5, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, - 0x00, 0x03, 0x12, 0x04, 0xa5, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, - 0x08, 0x12, 0x04, 0xa5, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x08, 0x02, 0x00, 0x08, - 0x87, 0x09, 0x19, 0x12, 0x04, 0xa5, 0x01, 0x29, 0x4d, 0x0a, 0x52, 0x0a, 0x02, 0x04, 0x09, 0x12, - 0x06, 0xa9, 0x01, 0x00, 0xac, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, - 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, 0xa9, 0x01, 0x08, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x09, - 0x02, 0x00, 0x12, 0x04, 0xab, 0x01, 0x02, 0x1c, 0x1a, 0x28, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x08, + 0x01, 0x12, 0x04, 0xa9, 0x01, 0x08, 0x1f, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, + 0x04, 0xab, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, + 0x00, 0x06, 0x12, 0x04, 0xab, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x01, 0x12, 0x04, 0xab, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, + 0x12, 0x04, 0xab, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x08, 0x12, + 0x04, 0xab, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x08, 0x02, 0x00, 0x08, 0x87, 0x09, + 0x19, 0x12, 0x04, 0xab, 0x01, 0x29, 0x4d, 0x0a, 0x52, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0xaf, + 0x01, 0x00, 0xb2, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, + 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, + 0x09, 0x01, 0x12, 0x04, 0xaf, 0x01, 0x08, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, + 0x12, 0x04, 0xb1, 0x01, 0x02, 0x1c, 0x1a, 0x28, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, + 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb1, 0x01, 0x02, 0x0f, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb1, 0x01, 0x10, 0x17, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb1, 0x01, 0x1a, 0x1b, 0x0a, 0x52, 0x0a, + 0x02, 0x04, 0x0a, 0x12, 0x06, 0xb5, 0x01, 0x00, 0xb8, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, 0xab, 0x01, 0x02, - 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0xab, 0x01, 0x10, 0x17, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0xab, 0x01, 0x1a, 0x1b, 0x0a, - 0x52, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x06, 0xaf, 0x01, 0x00, 0xb2, 0x01, 0x01, 0x1a, 0x44, 0x20, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0xb5, 0x01, 0x08, 0x21, 0x0a, 0x20, + 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x19, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb7, 0x01, 0x1a, 0x23, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb7, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb7, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, + 0x04, 0x0a, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xb7, 0x01, 0x29, 0x4d, 0x0a, 0x53, + 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xbb, 0x01, 0x00, 0xbe, 0x01, 0x01, 0x1a, 0x45, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0xaf, 0x01, 0x08, 0x21, - 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0xb1, 0x01, 0x02, 0x4f, 0x1a, 0x12, - 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb1, 0x01, 0x02, - 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb1, 0x01, 0x1a, 0x23, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb1, 0x01, 0x26, 0x27, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb1, 0x01, 0x28, 0x4e, 0x0a, 0x10, - 0x0a, 0x08, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xb1, 0x01, 0x29, 0x4d, - 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xb5, 0x01, 0x00, 0xb8, 0x01, 0x01, 0x1a, 0x45, - 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x04, 0xb5, 0x01, - 0x08, 0x22, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x1c, - 0x1a, 0x28, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xb7, 0x01, 0x10, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xb7, 0x01, 0x1a, 0x1b, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x06, 0xbb, - 0x01, 0x00, 0xbe, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, 0xbb, 0x01, 0x08, 0x1c, 0x0a, - 0x20, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x19, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbd, 0x01, 0x1a, 0x23, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbd, 0x01, 0x26, 0x27, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x08, 0x12, 0x04, 0xbd, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x0c, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xbd, 0x01, 0x29, 0x4d, 0x0a, - 0x3a, 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x06, 0xc1, 0x01, 0x00, 0xc7, 0x01, 0x01, 0x1a, 0x2c, 0x20, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x0d, 0x01, 0x12, 0x04, 0xc1, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, - 0x12, 0x04, 0xc3, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x0d, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x01, 0x0e, 0x14, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x01, 0x17, 0x18, 0x0a, 0x27, 0x0a, - 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x04, 0xc6, 0x01, 0x02, 0x1b, 0x1a, 0x19, 0x20, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x06, 0x12, - 0x04, 0xc6, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x04, - 0xc6, 0x01, 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, 0x04, 0xc6, - 0x01, 0x19, 0x1a, 0x0a, 0x3d, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x06, 0xca, 0x01, 0x00, 0xcd, 0x01, - 0x01, 0x1a, 0x2f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x55, 0x52, 0x49, 0x73, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, 0xca, 0x01, 0x08, 0x20, 0x0a, - 0x20, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0xcc, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x06, 0x12, 0x04, 0xcc, 0x01, 0x02, 0x19, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcc, 0x01, 0x1a, 0x23, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcc, 0x01, 0x26, 0x27, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x12, 0x04, 0xcc, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xcc, 0x01, 0x29, 0x4d, 0x0a, - 0x3e, 0x0a, 0x02, 0x04, 0x0f, 0x12, 0x06, 0xd0, 0x01, 0x00, 0xd6, 0x01, 0x01, 0x1a, 0x30, 0x20, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x04, 0xbb, 0x01, 0x08, 0x22, + 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x1c, 0x1a, 0x28, + 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, + 0x06, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, + 0x12, 0x04, 0xbd, 0x01, 0x10, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, + 0x04, 0xbd, 0x01, 0x1a, 0x1b, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x06, 0xc1, 0x01, 0x00, + 0xc4, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, + 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, 0xc1, 0x01, 0x08, 0x1c, 0x0a, 0x20, 0x0a, + 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x19, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0c, 0x02, 0x00, 0x08, 0x12, 0x04, 0xc3, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, + 0x0c, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xc3, 0x01, 0x29, 0x4d, 0x0a, 0x3a, 0x0a, + 0x02, 0x04, 0x0d, 0x12, 0x06, 0xc7, 0x01, 0x00, 0xcd, 0x01, 0x01, 0x1a, 0x2c, 0x20, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0d, 0x01, + 0x12, 0x04, 0xc7, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x04, + 0xc9, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc9, 0x01, 0x02, 0x0d, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc9, 0x01, 0x0e, 0x14, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc9, 0x01, 0x17, 0x18, 0x0a, 0x27, 0x0a, 0x04, 0x04, + 0x0d, 0x02, 0x01, 0x12, 0x04, 0xcc, 0x01, 0x02, 0x1b, 0x1a, 0x19, 0x20, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x06, 0x12, 0x04, 0xcc, + 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x04, 0xcc, 0x01, + 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, 0x04, 0xcc, 0x01, 0x19, + 0x1a, 0x0a, 0x3d, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x06, 0xd0, 0x01, 0x00, 0xd3, 0x01, 0x01, 0x1a, + 0x2f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x55, 0x52, 0x49, 0x73, 0x2e, 0x0a, + 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, 0xd0, 0x01, 0x08, 0x20, 0x0a, 0x20, 0x0a, + 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x06, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x19, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd2, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd2, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0e, 0x02, 0x00, 0x08, 0x12, 0x04, 0xd2, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, + 0x0e, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xd2, 0x01, 0x29, 0x4d, 0x0a, 0x3e, 0x0a, + 0x02, 0x04, 0x0f, 0x12, 0x06, 0xd6, 0x01, 0x00, 0xdc, 0x01, 0x01, 0x1a, 0x30, 0x20, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x55, 0x52, 0x49, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x0f, 0x01, 0x12, 0x04, 0xd6, 0x01, 0x08, 0x21, 0x0a, 0x30, 0x0a, 0x04, 0x04, 0x0f, + 0x02, 0x00, 0x12, 0x04, 0xd8, 0x01, 0x02, 0x18, 0x1a, 0x22, 0x20, 0x55, 0x52, 0x49, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, 0x20, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0f, 0x02, 0x00, 0x05, 0x12, 0x04, 0xd8, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd8, 0x01, 0x09, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xd8, 0x01, 0x16, 0x17, 0x0a, 0x65, 0x0a, 0x04, 0x04, 0x0f, 0x02, + 0x01, 0x12, 0x04, 0xdb, 0x01, 0x02, 0x19, 0x1a, 0x57, 0x20, 0x55, 0x52, 0x49, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, 0x20, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x20, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x20, 0x69, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, 0x73, 0x6e, + 0x27, 0x74, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, + 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x05, 0x12, 0x04, 0xdb, 0x01, 0x02, 0x08, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x01, 0x12, 0x04, 0xdb, 0x01, 0x09, 0x14, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x03, 0x12, 0x04, 0xdb, 0x01, 0x17, 0x18, 0x0a, 0x3f, 0x0a, + 0x02, 0x04, 0x10, 0x12, 0x06, 0xdf, 0x01, 0x00, 0xe5, 0x01, 0x01, 0x1a, 0x31, 0x20, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x0a, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x10, 0x01, 0x12, 0x04, 0xdf, 0x01, 0x08, 0x22, 0x0a, 0x20, 0x0a, 0x04, 0x04, + 0x10, 0x02, 0x00, 0x12, 0x04, 0xe1, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x10, 0x02, 0x00, 0x06, 0x12, 0x04, 0xe1, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x10, 0x02, 0x00, 0x01, 0x12, 0x04, 0xe1, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x10, 0x02, 0x00, 0x03, 0x12, 0x04, 0xe1, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, + 0x02, 0x00, 0x08, 0x12, 0x04, 0xe1, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x10, 0x02, + 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xe1, 0x01, 0x29, 0x4d, 0x0a, 0x23, 0x0a, 0x04, 0x04, + 0x10, 0x02, 0x01, 0x12, 0x04, 0xe4, 0x01, 0x02, 0x3a, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x05, 0x12, 0x04, 0xe4, 0x01, 0x02, 0x08, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x01, 0x12, 0x04, 0xe4, 0x01, 0x09, 0x10, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, 0x12, 0x04, 0xe4, 0x01, 0x13, 0x14, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x10, 0x02, 0x01, 0x08, 0x12, 0x04, 0xe4, 0x01, 0x15, 0x39, 0x0a, 0x11, 0x0a, 0x09, + 0x04, 0x10, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, 0x04, 0x12, 0x04, 0xe4, 0x01, 0x16, 0x38, 0x0a, + 0x40, 0x0a, 0x02, 0x04, 0x11, 0x12, 0x06, 0xe8, 0x01, 0x00, 0xee, 0x01, 0x01, 0x1a, 0x32, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x55, 0x52, 0x49, 0x73, 0x2e, 0x0a, 0x0a, - 0x0b, 0x0a, 0x03, 0x04, 0x0f, 0x01, 0x12, 0x04, 0xd0, 0x01, 0x08, 0x21, 0x0a, 0x30, 0x0a, 0x04, - 0x04, 0x0f, 0x02, 0x00, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x18, 0x1a, 0x22, 0x20, 0x55, 0x52, 0x49, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, - 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x05, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd2, 0x01, 0x09, 0x13, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd2, 0x01, 0x16, 0x17, 0x0a, 0x65, 0x0a, 0x04, 0x04, - 0x0f, 0x02, 0x01, 0x12, 0x04, 0xd5, 0x01, 0x02, 0x19, 0x1a, 0x57, 0x20, 0x55, 0x52, 0x49, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, - 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x20, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, - 0x73, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x6f, - 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x05, 0x12, 0x04, 0xd5, 0x01, 0x02, - 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x01, 0x12, 0x04, 0xd5, 0x01, 0x09, 0x14, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x03, 0x12, 0x04, 0xd5, 0x01, 0x17, 0x18, 0x0a, - 0x31, 0x0a, 0x02, 0x04, 0x10, 0x12, 0x06, 0xd9, 0x01, 0x00, 0xf1, 0x01, 0x01, 0x1a, 0x23, 0x20, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x10, 0x01, 0x12, 0x04, 0xd9, 0x01, 0x08, 0x17, 0x0a, - 0x19, 0x0a, 0x03, 0x04, 0x10, 0x09, 0x12, 0x04, 0xda, 0x01, 0x02, 0x10, 0x22, 0x0c, 0x20, 0x44, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, - 0x09, 0x00, 0x12, 0x04, 0xda, 0x01, 0x0b, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x00, - 0x01, 0x12, 0x04, 0xda, 0x01, 0x0b, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x00, 0x02, - 0x12, 0x04, 0xda, 0x01, 0x0b, 0x0c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, 0x09, 0x01, 0x12, 0x04, - 0xda, 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x01, 0x01, 0x12, 0x04, 0xda, - 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x01, 0x02, 0x12, 0x04, 0xda, 0x01, - 0x0e, 0x0f, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x00, 0x12, 0x04, 0xdd, 0x01, 0x02, 0x21, - 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x06, 0x12, 0x04, 0xdd, 0x01, - 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x01, 0x12, 0x04, 0xdd, 0x01, 0x15, - 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x03, 0x12, 0x04, 0xdd, 0x01, 0x1f, 0x20, - 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x10, 0x08, 0x00, 0x12, 0x06, 0xdf, 0x01, 0x02, 0xf0, 0x01, 0x03, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x08, 0x00, 0x01, 0x12, 0x04, 0xdf, 0x01, 0x08, 0x10, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x08, 0x00, 0x02, 0x12, 0x04, 0xe0, 0x01, 0x04, 0x30, 0x0a, 0x10, - 0x0a, 0x08, 0x04, 0x10, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xe0, 0x01, 0x04, 0x30, - 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, 0x04, 0xe3, 0x01, 0x04, 0x3d, 0x1a, 0x27, - 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x05, - 0x12, 0x04, 0xe3, 0x01, 0x04, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x01, 0x12, - 0x04, 0xe3, 0x01, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, 0x12, 0x04, - 0xe3, 0x01, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x08, 0x12, 0x04, 0xe3, - 0x01, 0x13, 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x10, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, - 0x12, 0x04, 0xe3, 0x01, 0x14, 0x3b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x02, 0x12, 0x04, - 0xe6, 0x01, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x10, 0x02, 0x02, 0x06, 0x12, 0x04, 0xe6, 0x01, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x10, 0x02, 0x02, 0x01, 0x12, 0x04, 0xe6, 0x01, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x10, 0x02, 0x02, 0x03, 0x12, 0x04, 0xe6, 0x01, 0x2a, 0x2b, 0x0a, 0x31, 0x0a, 0x04, 0x04, - 0x10, 0x02, 0x03, 0x12, 0x04, 0xe9, 0x01, 0x04, 0x28, 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, 0x74, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, - 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x06, 0x12, 0x04, 0xe9, 0x01, 0x04, 0x16, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x10, 0x02, 0x03, 0x01, 0x12, 0x04, 0xe9, 0x01, 0x17, 0x23, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x10, 0x02, 0x03, 0x03, 0x12, 0x04, 0xe9, 0x01, 0x26, 0x27, 0x0a, 0x2c, 0x0a, 0x04, 0x04, - 0x10, 0x02, 0x04, 0x12, 0x04, 0xec, 0x01, 0x04, 0x20, 0x1a, 0x1e, 0x20, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x04, 0x06, 0x12, 0x04, 0xec, 0x01, 0x04, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x04, - 0x01, 0x12, 0x04, 0xec, 0x01, 0x12, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x04, 0x03, - 0x12, 0x04, 0xec, 0x01, 0x1e, 0x1f, 0x0a, 0x32, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x05, 0x12, 0x04, - 0xef, 0x01, 0x04, 0x24, 0x1a, 0x24, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x02, 0x05, 0x06, 0x12, 0x04, 0xef, 0x01, 0x04, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x05, 0x01, 0x12, 0x04, 0xef, 0x01, 0x18, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x05, - 0x03, 0x12, 0x04, 0xef, 0x01, 0x22, 0x23, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x11, 0x12, 0x06, 0xf4, - 0x01, 0x00, 0xfa, 0x01, 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x11, 0x01, 0x12, 0x04, 0xf4, 0x01, 0x08, 0x18, 0x0a, 0x3a, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x00, - 0x12, 0x04, 0xf6, 0x01, 0x02, 0x18, 0x1a, 0x2c, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, - 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x04, 0x12, 0x04, 0xf6, - 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x06, 0x12, 0x04, 0xf6, 0x01, - 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x01, 0x12, 0x04, 0xf6, 0x01, 0x0f, - 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x03, 0x12, 0x04, 0xf6, 0x01, 0x16, 0x17, - 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x01, 0x12, 0x04, 0xf9, 0x01, 0x02, 0x13, 0x1a, 0x36, - 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x66, - 0x20, 0x61, 0x6e, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x05, 0x12, - 0x04, 0xf9, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x01, 0x12, 0x04, - 0xf9, 0x01, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf9, - 0x01, 0x11, 0x12, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x12, 0x12, 0x06, 0xfd, 0x01, 0x00, 0x8a, 0x02, - 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x12, 0x01, 0x12, 0x04, - 0xfd, 0x01, 0x08, 0x18, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x12, 0x08, 0x00, 0x12, 0x06, 0xfe, 0x01, - 0x02, 0x89, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x08, 0x00, 0x01, 0x12, 0x04, 0xfe, - 0x01, 0x08, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x08, 0x00, 0x02, 0x12, 0x04, 0xff, 0x01, - 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x12, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, - 0xff, 0x01, 0x04, 0x30, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x00, 0x12, 0x04, 0x82, 0x02, - 0x04, 0x3d, 0x1a, 0x27, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x12, 0x02, 0x00, 0x05, 0x12, 0x04, 0x82, 0x02, 0x04, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, - 0x02, 0x00, 0x01, 0x12, 0x04, 0x82, 0x02, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, - 0x00, 0x03, 0x12, 0x04, 0x82, 0x02, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, - 0x08, 0x12, 0x04, 0x82, 0x02, 0x13, 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x12, 0x02, 0x00, 0x08, - 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, 0x82, 0x02, 0x14, 0x3b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x12, - 0x02, 0x01, 0x12, 0x04, 0x84, 0x02, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x06, 0x12, 0x04, 0x84, 0x02, 0x04, - 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x01, 0x12, 0x04, 0x84, 0x02, 0x1d, 0x27, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x03, 0x12, 0x04, 0x84, 0x02, 0x2a, 0x2b, 0x0a, - 0x36, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x02, 0x12, 0x04, 0x86, 0x02, 0x04, 0x2c, 0x1a, 0x28, 0x20, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x06, - 0x12, 0x04, 0x86, 0x02, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x01, 0x12, - 0x04, 0x86, 0x02, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x03, 0x12, 0x04, - 0x86, 0x02, 0x2a, 0x2b, 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x03, 0x12, 0x04, 0x88, 0x02, - 0x04, 0x24, 0x1a, 0x25, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, - 0x03, 0x06, 0x12, 0x04, 0x88, 0x02, 0x04, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, - 0x01, 0x12, 0x04, 0x88, 0x02, 0x18, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, 0x03, - 0x12, 0x04, 0x88, 0x02, 0x22, 0x23, 0x0a, 0x33, 0x0a, 0x02, 0x04, 0x13, 0x12, 0x06, 0x8d, 0x02, - 0x00, 0x90, 0x02, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x13, 0x01, 0x12, 0x04, 0x8d, 0x02, 0x08, 0x19, 0x0a, 0x41, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x00, - 0x12, 0x04, 0x8f, 0x02, 0x02, 0x18, 0x1a, 0x33, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x13, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8f, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, - 0x02, 0x00, 0x06, 0x12, 0x04, 0x8f, 0x02, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, - 0x00, 0x01, 0x12, 0x04, 0x8f, 0x02, 0x0f, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, - 0x03, 0x12, 0x04, 0x8f, 0x02, 0x16, 0x17, 0x0a, 0x34, 0x0a, 0x02, 0x04, 0x14, 0x12, 0x06, 0x93, - 0x02, 0x00, 0x99, 0x02, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, + 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x11, 0x01, 0x12, 0x04, 0xe8, 0x01, 0x08, 0x23, 0x0a, 0x3b, + 0x0a, 0x04, 0x04, 0x11, 0x02, 0x00, 0x12, 0x04, 0xea, 0x01, 0x02, 0x2c, 0x1a, 0x2d, 0x20, 0x54, + 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x11, 0x02, 0x00, 0x06, 0x12, 0x04, 0xea, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, + 0x02, 0x00, 0x01, 0x12, 0x04, 0xea, 0x01, 0x1c, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, + 0x00, 0x03, 0x12, 0x04, 0xea, 0x01, 0x2a, 0x2b, 0x0a, 0x40, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x01, + 0x12, 0x04, 0xed, 0x01, 0x02, 0x15, 0x1a, 0x32, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x20, 0x69, 0x73, + 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, + 0x02, 0x01, 0x05, 0x12, 0x04, 0xed, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, + 0x01, 0x01, 0x12, 0x04, 0xed, 0x01, 0x09, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, + 0x03, 0x12, 0x04, 0xed, 0x01, 0x13, 0x14, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x12, 0x12, 0x06, 0xf1, + 0x01, 0x00, 0x89, 0x02, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x14, 0x01, 0x12, 0x04, 0x93, 0x02, 0x08, 0x1a, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x14, - 0x02, 0x00, 0x12, 0x04, 0x95, 0x02, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x12, + 0x01, 0x12, 0x04, 0xf1, 0x01, 0x08, 0x17, 0x0a, 0x19, 0x0a, 0x03, 0x04, 0x12, 0x09, 0x12, 0x04, + 0xf2, 0x01, 0x02, 0x10, 0x22, 0x0c, 0x20, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x12, 0x09, 0x00, 0x12, 0x04, 0xf2, 0x01, 0x0b, 0x0c, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x09, 0x00, 0x01, 0x12, 0x04, 0xf2, 0x01, 0x0b, 0x0c, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x09, 0x00, 0x02, 0x12, 0x04, 0xf2, 0x01, 0x0b, 0x0c, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x12, 0x09, 0x01, 0x12, 0x04, 0xf2, 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x12, 0x09, 0x01, 0x01, 0x12, 0x04, 0xf2, 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x12, 0x09, 0x01, 0x02, 0x12, 0x04, 0xf2, 0x01, 0x0e, 0x0f, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x12, + 0x02, 0x00, 0x12, 0x04, 0xf5, 0x01, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x14, 0x02, 0x00, 0x06, 0x12, 0x04, 0x95, 0x02, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, - 0x02, 0x00, 0x01, 0x12, 0x04, 0x95, 0x02, 0x15, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, - 0x00, 0x03, 0x12, 0x04, 0x95, 0x02, 0x1f, 0x20, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x01, - 0x12, 0x04, 0x98, 0x02, 0x02, 0x49, 0x1a, 0x27, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x06, 0x12, 0x04, 0x98, 0x02, 0x02, 0x16, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x01, 0x12, 0x04, 0x98, 0x02, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x14, 0x02, 0x01, 0x03, 0x12, 0x04, 0x98, 0x02, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x14, 0x02, 0x01, 0x08, 0x12, 0x04, 0x98, 0x02, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, - 0x14, 0x02, 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x98, 0x02, 0x23, 0x47, 0x0a, 0x35, 0x0a, - 0x02, 0x04, 0x15, 0x12, 0x06, 0x9c, 0x02, 0x00, 0xa5, 0x02, 0x01, 0x1a, 0x27, 0x20, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x15, 0x01, 0x12, 0x04, 0x9c, 0x02, 0x08, - 0x1b, 0x0a, 0x3d, 0x0a, 0x04, 0x04, 0x15, 0x02, 0x00, 0x12, 0x04, 0x9e, 0x02, 0x02, 0x1e, 0x1a, - 0x2f, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x04, 0x12, 0x04, 0x9e, 0x02, 0x02, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9e, 0x02, 0x0b, 0x11, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9e, 0x02, 0x12, 0x19, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x15, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9e, 0x02, 0x1c, 0x1d, 0x0a, 0x44, 0x0a, 0x04, - 0x04, 0x15, 0x02, 0x01, 0x12, 0x04, 0xa1, 0x02, 0x02, 0x13, 0x1a, 0x36, 0x20, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa1, 0x02, 0x02, - 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa1, 0x02, 0x09, 0x0e, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa1, 0x02, 0x11, 0x12, 0x0a, - 0x35, 0x0a, 0x02, 0x04, 0x16, 0x12, 0x06, 0xa8, 0x02, 0x00, 0xb1, 0x02, 0x01, 0x1a, 0x27, 0x20, + 0x12, 0x02, 0x00, 0x06, 0x12, 0x04, 0xf5, 0x01, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, + 0x02, 0x00, 0x01, 0x12, 0x04, 0xf5, 0x01, 0x15, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, + 0x00, 0x03, 0x12, 0x04, 0xf5, 0x01, 0x1f, 0x20, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x12, 0x08, 0x00, + 0x12, 0x06, 0xf7, 0x01, 0x02, 0x88, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x08, 0x00, + 0x01, 0x12, 0x04, 0xf7, 0x01, 0x08, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x08, 0x00, 0x02, + 0x12, 0x04, 0xf8, 0x01, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x12, 0x08, 0x00, 0x02, 0x87, + 0x09, 0x01, 0x12, 0x04, 0xf8, 0x01, 0x04, 0x30, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x01, + 0x12, 0x04, 0xfb, 0x01, 0x04, 0x3d, 0x1a, 0x27, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x05, 0x12, 0x04, 0xfb, 0x01, 0x04, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x01, 0x12, 0x04, 0xfb, 0x01, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x12, 0x02, 0x01, 0x03, 0x12, 0x04, 0xfb, 0x01, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x12, 0x02, 0x01, 0x08, 0x12, 0x04, 0xfb, 0x01, 0x13, 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, + 0x12, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, 0xfb, 0x01, 0x14, 0x3b, 0x0a, 0x36, + 0x0a, 0x04, 0x04, 0x12, 0x02, 0x02, 0x12, 0x04, 0xfe, 0x01, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, + 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x06, 0x12, + 0x04, 0xfe, 0x01, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x01, 0x12, 0x04, + 0xfe, 0x01, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x03, 0x12, 0x04, 0xfe, + 0x01, 0x2a, 0x2b, 0x0a, 0x31, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x03, 0x12, 0x04, 0x81, 0x02, 0x04, + 0x28, 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, 0x06, 0x12, + 0x04, 0x81, 0x02, 0x04, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, 0x01, 0x12, 0x04, + 0x81, 0x02, 0x17, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, 0x03, 0x12, 0x04, 0x81, + 0x02, 0x26, 0x27, 0x0a, 0x2c, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x04, 0x12, 0x04, 0x84, 0x02, 0x04, + 0x20, 0x1a, 0x1e, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x04, 0x06, 0x12, 0x04, 0x84, 0x02, 0x04, 0x11, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x04, 0x01, 0x12, 0x04, 0x84, 0x02, 0x12, 0x1b, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x04, 0x03, 0x12, 0x04, 0x84, 0x02, 0x1e, 0x1f, 0x0a, 0x32, + 0x0a, 0x04, 0x04, 0x12, 0x02, 0x05, 0x12, 0x04, 0x87, 0x02, 0x04, 0x24, 0x1a, 0x24, 0x20, 0x54, + 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, + 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x05, 0x06, 0x12, 0x04, 0x87, 0x02, 0x04, + 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x05, 0x01, 0x12, 0x04, 0x87, 0x02, 0x18, 0x1f, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x05, 0x03, 0x12, 0x04, 0x87, 0x02, 0x22, 0x23, 0x0a, + 0x32, 0x0a, 0x02, 0x04, 0x13, 0x12, 0x06, 0x8c, 0x02, 0x00, 0x92, 0x02, 0x01, 0x1a, 0x24, 0x20, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, + 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x13, 0x01, 0x12, 0x04, 0x8c, 0x02, 0x08, 0x18, + 0x0a, 0x3a, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x00, 0x12, 0x04, 0x8e, 0x02, 0x02, 0x18, 0x1a, 0x2c, + 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x13, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8e, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x13, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8e, 0x02, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, + 0x02, 0x00, 0x01, 0x12, 0x04, 0x8e, 0x02, 0x0f, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, + 0x00, 0x03, 0x12, 0x04, 0x8e, 0x02, 0x16, 0x17, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x01, + 0x12, 0x04, 0x91, 0x02, 0x02, 0x13, 0x1a, 0x36, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x05, 0x12, 0x04, 0x91, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x13, 0x02, 0x01, 0x01, 0x12, 0x04, 0x91, 0x02, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x13, 0x02, 0x01, 0x03, 0x12, 0x04, 0x91, 0x02, 0x11, 0x12, 0x0a, 0x32, 0x0a, 0x02, 0x04, + 0x14, 0x12, 0x06, 0x95, 0x02, 0x00, 0xa2, 0x02, 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x14, 0x01, 0x12, 0x04, 0x95, 0x02, 0x08, 0x18, 0x0a, 0x0e, 0x0a, 0x04, + 0x04, 0x14, 0x08, 0x00, 0x12, 0x06, 0x96, 0x02, 0x02, 0xa1, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x14, 0x08, 0x00, 0x01, 0x12, 0x04, 0x96, 0x02, 0x08, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x14, 0x08, 0x00, 0x02, 0x12, 0x04, 0x97, 0x02, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x14, + 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0x97, 0x02, 0x04, 0x30, 0x0a, 0x35, 0x0a, 0x04, + 0x04, 0x14, 0x02, 0x00, 0x12, 0x04, 0x9a, 0x02, 0x04, 0x3d, 0x1a, 0x27, 0x20, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, + 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x05, 0x12, 0x04, 0x9a, 0x02, + 0x04, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9a, 0x02, 0x0b, + 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9a, 0x02, 0x11, 0x12, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x08, 0x12, 0x04, 0x9a, 0x02, 0x13, 0x3c, 0x0a, + 0x11, 0x0a, 0x09, 0x04, 0x14, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, 0x9a, 0x02, + 0x14, 0x3b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x01, 0x12, 0x04, 0x9c, 0x02, 0x04, 0x2c, + 0x1a, 0x28, 0x20, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, + 0x02, 0x01, 0x06, 0x12, 0x04, 0x9c, 0x02, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, + 0x01, 0x01, 0x12, 0x04, 0x9c, 0x02, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, + 0x03, 0x12, 0x04, 0x9c, 0x02, 0x2a, 0x2b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x02, 0x12, + 0x04, 0x9e, 0x02, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x02, 0x06, 0x12, 0x04, 0x9e, 0x02, 0x04, 0x1c, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x14, 0x02, 0x02, 0x01, 0x12, 0x04, 0x9e, 0x02, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x14, 0x02, 0x02, 0x03, 0x12, 0x04, 0x9e, 0x02, 0x2a, 0x2b, 0x0a, 0x33, 0x0a, 0x04, + 0x04, 0x14, 0x02, 0x03, 0x12, 0x04, 0xa0, 0x02, 0x04, 0x24, 0x1a, 0x25, 0x20, 0x54, 0x61, 0x73, + 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x03, 0x06, 0x12, 0x04, 0xa0, 0x02, 0x04, 0x17, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x03, 0x01, 0x12, 0x04, 0xa0, 0x02, 0x18, 0x1f, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x03, 0x03, 0x12, 0x04, 0xa0, 0x02, 0x22, 0x23, 0x0a, 0x33, + 0x0a, 0x02, 0x04, 0x15, 0x12, 0x06, 0xa5, 0x02, 0x00, 0xa8, 0x02, 0x01, 0x1a, 0x25, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, + 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x15, 0x01, 0x12, 0x04, 0xa5, 0x02, 0x08, 0x19, + 0x0a, 0x41, 0x0a, 0x04, 0x04, 0x15, 0x02, 0x00, 0x12, 0x04, 0xa7, 0x02, 0x02, 0x18, 0x1a, 0x33, + 0x20, 0x4e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x04, 0x12, 0x04, 0xa7, 0x02, + 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x06, 0x12, 0x04, 0xa7, 0x02, 0x0b, + 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa7, 0x02, 0x0f, 0x13, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa7, 0x02, 0x16, 0x17, 0x0a, + 0x34, 0x0a, 0x02, 0x04, 0x16, 0x12, 0x06, 0xab, 0x02, 0x00, 0xb1, 0x02, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x16, 0x01, 0x12, 0x04, 0xa8, - 0x02, 0x08, 0x1b, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x16, 0x02, 0x00, 0x12, 0x04, 0xaa, 0x02, 0x02, - 0x49, 0x1a, 0x27, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xaa, 0x02, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xaa, 0x02, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xaa, 0x02, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, 0x08, - 0x12, 0x04, 0xaa, 0x02, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x16, 0x02, 0x00, 0x08, 0x87, - 0x09, 0x19, 0x12, 0x04, 0xaa, 0x02, 0x23, 0x47, 0x0a, 0x83, 0x03, 0x0a, 0x04, 0x04, 0x16, 0x02, - 0x01, 0x12, 0x04, 0xb0, 0x02, 0x02, 0x24, 0x1a, 0xf4, 0x02, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x73, 0x29, 0x20, 0x63, 0x72, - 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x3a, 0x0a, 0x20, 0x2d, 0x20, 0x4e, 0x41, 0x4d, 0x45, 0x20, 0x28, 0x6d, 0x75, 0x73, 0x74, 0x20, - 0x75, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x4f, 0x4e, - 0x54, 0x41, 0x49, 0x4e, 0x53, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x4e, - 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x29, 0x3a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, 0x61, 0x74, 0x65, 0x76, 0x65, 0x72, 0x20, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, - 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x61, 0x73, - 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x2e, 0x0a, 0x20, 0x2d, 0x20, 0x50, 0x48, 0x41, 0x53, 0x45, 0x20, 0x28, - 0x6d, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x49, 0x4e, 0x29, 0x3a, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, - 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x79, - 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x73, 0x20, 0x28, 0x69, 0x2e, 0x65, - 0x2e, 0x20, 0x5b, 0x22, 0x31, 0x22, 0x2c, 0x20, 0x22, 0x34, 0x22, 0x5d, 0x29, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x04, 0x12, 0x04, 0xb0, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x16, 0x02, 0x01, 0x06, 0x12, 0x04, 0xb0, 0x02, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x16, 0x02, 0x01, 0x01, 0x12, 0x04, 0xb0, 0x02, 0x19, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x16, 0x02, 0x01, 0x03, 0x12, 0x04, 0xb0, 0x02, 0x22, 0x23, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x17, - 0x12, 0x06, 0xb4, 0x02, 0x00, 0xb7, 0x02, 0x01, 0x1a, 0x4d, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x6e, 0x72, - 0x69, 0x63, 0x68, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x17, 0x01, 0x12, 0x04, - 0xb4, 0x02, 0x08, 0x1c, 0x0a, 0x69, 0x0a, 0x04, 0x04, 0x17, 0x02, 0x00, 0x12, 0x04, 0xb6, 0x02, - 0x02, 0x2f, 0x1a, 0x5b, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, - 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x20, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, - 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x04, 0x12, 0x04, 0xb6, 0x02, 0x02, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb6, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x17, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb6, 0x02, 0x1a, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x17, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb6, 0x02, 0x2d, 0x2e, 0x0a, 0x0c, 0x0a, 0x02, 0x04, - 0x18, 0x12, 0x06, 0xb9, 0x02, 0x00, 0xbd, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x18, 0x01, - 0x12, 0x04, 0xb9, 0x02, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x00, 0x12, 0x04, - 0xba, 0x02, 0x02, 0x48, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x06, 0x12, 0x04, 0xba, - 0x02, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x01, 0x12, 0x04, 0xba, 0x02, - 0x1a, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x03, 0x12, 0x04, 0xba, 0x02, 0x1f, - 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x08, 0x12, 0x04, 0xba, 0x02, 0x21, 0x47, - 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x18, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xba, 0x02, - 0x22, 0x46, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x01, 0x12, 0x04, 0xbc, 0x02, 0x02, 0x3a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x05, 0x12, 0x04, 0xbc, 0x02, 0x02, 0x08, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x01, 0x12, 0x04, 0xbc, 0x02, 0x09, 0x10, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x03, 0x12, 0x04, 0xbc, 0x02, 0x13, 0x14, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x18, 0x02, 0x01, 0x08, 0x12, 0x04, 0xbc, 0x02, 0x15, 0x39, 0x0a, 0x11, 0x0a, 0x09, - 0x04, 0x18, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, 0x04, 0x12, 0x04, 0xbc, 0x02, 0x16, 0x38, 0x0a, - 0x0c, 0x0a, 0x02, 0x04, 0x19, 0x12, 0x06, 0xbf, 0x02, 0x00, 0xc1, 0x02, 0x01, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x19, 0x01, 0x12, 0x04, 0xbf, 0x02, 0x08, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x19, - 0x02, 0x00, 0x12, 0x04, 0xc0, 0x02, 0x02, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, - 0x04, 0x12, 0x04, 0xc0, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x06, - 0x12, 0x04, 0xc0, 0x02, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x01, 0x12, - 0x04, 0xc0, 0x02, 0x18, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x03, 0x12, 0x04, - 0xc0, 0x02, 0x29, 0x2a, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x1a, 0x12, 0x06, 0xc3, 0x02, 0x00, 0xc9, - 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1a, 0x01, 0x12, 0x04, 0xc3, 0x02, 0x08, 0x1a, 0x0a, - 0x20, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x00, 0x12, 0x04, 0xc5, 0x02, 0x02, 0x4f, 0x1a, 0x12, 0x20, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc5, 0x02, 0x02, 0x19, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc5, 0x02, 0x1a, 0x23, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc5, 0x02, 0x26, 0x27, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xc5, 0x02, 0x28, 0x4e, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x1a, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xc5, 0x02, 0x29, 0x4d, 0x0a, - 0x38, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x01, 0x12, 0x04, 0xc8, 0x02, 0x02, 0x14, 0x1a, 0x2a, 0x20, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, - 0x01, 0x05, 0x12, 0x04, 0xc8, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xc8, 0x02, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x03, - 0x12, 0x04, 0xc8, 0x02, 0x12, 0x13, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x1b, 0x12, 0x04, 0xcb, 0x02, - 0x00, 0x1e, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1b, 0x01, 0x12, 0x04, 0xcb, 0x02, 0x08, 0x1b, 0x0a, - 0x0c, 0x0a, 0x02, 0x04, 0x1c, 0x12, 0x06, 0xcd, 0x02, 0x00, 0xe7, 0x02, 0x01, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x1c, 0x01, 0x12, 0x04, 0xcd, 0x02, 0x08, 0x1a, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x1c, - 0x08, 0x00, 0x12, 0x06, 0xce, 0x02, 0x02, 0xd2, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, - 0x08, 0x00, 0x01, 0x12, 0x04, 0xce, 0x02, 0x08, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x08, - 0x00, 0x02, 0x12, 0x04, 0xcf, 0x02, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1c, 0x08, 0x00, - 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xcf, 0x02, 0x04, 0x30, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x1c, - 0x02, 0x00, 0x12, 0x04, 0xd1, 0x02, 0x04, 0x2c, 0x1a, 0x20, 0x20, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xd1, 0x02, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xd1, 0x02, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xd1, 0x02, 0x2a, 0x2b, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x01, 0x12, - 0x04, 0xd5, 0x02, 0x02, 0x52, 0x1a, 0x36, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, - 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, - 0x29, 0x2e, 0x20, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x1c, 0x02, 0x01, 0x06, 0x12, 0x04, 0xd5, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x1c, 0x02, 0x01, 0x01, 0x12, 0x04, 0xd5, 0x02, 0x1c, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x1c, 0x02, 0x01, 0x03, 0x12, 0x04, 0xd5, 0x02, 0x29, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, - 0x02, 0x01, 0x08, 0x12, 0x04, 0xd5, 0x02, 0x2b, 0x51, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1c, 0x02, - 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xd5, 0x02, 0x2c, 0x50, 0x0a, 0xa6, 0x01, 0x0a, 0x04, - 0x04, 0x1c, 0x02, 0x02, 0x12, 0x04, 0xda, 0x02, 0x02, 0x29, 0x1a, 0x97, 0x01, 0x20, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x75, - 0x6c, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x6f, 0x6e, 0x63, - 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x02, 0x06, 0x12, 0x04, 0xda, - 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x02, 0x01, 0x12, 0x04, 0xda, 0x02, - 0x1c, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x02, 0x03, 0x12, 0x04, 0xda, 0x02, 0x27, - 0x28, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x03, 0x12, 0x04, 0xdd, 0x02, 0x02, 0x21, 0x1a, - 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x03, 0x06, 0x12, 0x04, 0xdd, 0x02, 0x02, - 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x03, 0x01, 0x12, 0x04, 0xdd, 0x02, 0x15, 0x1c, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x03, 0x03, 0x12, 0x04, 0xdd, 0x02, 0x1f, 0x20, 0x0a, - 0x0e, 0x0a, 0x04, 0x04, 0x1c, 0x03, 0x00, 0x12, 0x06, 0xdf, 0x02, 0x02, 0xe3, 0x02, 0x03, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x03, 0x00, 0x01, 0x12, 0x04, 0xdf, 0x02, 0x0a, 0x18, 0x0a, 0x10, - 0x0a, 0x06, 0x04, 0x1c, 0x03, 0x00, 0x08, 0x00, 0x12, 0x06, 0xe0, 0x02, 0x04, 0xe2, 0x02, 0x05, - 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x08, 0x00, 0x01, 0x12, 0x04, 0xe0, 0x02, 0x0a, - 0x11, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xe1, 0x02, 0x06, - 0x2b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x06, 0x12, 0x04, 0xe1, 0x02, - 0x06, 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xe1, - 0x02, 0x1c, 0x26, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, - 0xe1, 0x02, 0x29, 0x2a, 0x0a, 0x30, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x04, 0x12, 0x04, 0xe6, 0x02, - 0x02, 0x30, 0x1a, 0x22, 0x20, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x20, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x04, 0x12, - 0x04, 0xe6, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x06, 0x12, 0x04, - 0xe6, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x01, 0x12, 0x04, 0xe6, - 0x02, 0x1a, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x03, 0x12, 0x04, 0xe6, 0x02, - 0x2e, 0x2f, 0x0a, 0x3a, 0x0a, 0x02, 0x04, 0x1d, 0x12, 0x06, 0xea, 0x02, 0x00, 0xf2, 0x02, 0x01, - 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x16, 0x01, 0x12, 0x04, 0xab, 0x02, + 0x08, 0x1a, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x16, 0x02, 0x00, 0x12, 0x04, 0xad, 0x02, 0x02, 0x21, + 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, 0x06, 0x12, 0x04, 0xad, 0x02, + 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, 0x01, 0x12, 0x04, 0xad, 0x02, 0x15, + 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, 0x03, 0x12, 0x04, 0xad, 0x02, 0x1f, 0x20, + 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x16, 0x02, 0x01, 0x12, 0x04, 0xb0, 0x02, 0x02, 0x49, 0x1a, 0x27, + 0x20, 0x52, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x06, + 0x12, 0x04, 0xb0, 0x02, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x01, 0x12, + 0x04, 0xb0, 0x02, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x03, 0x12, 0x04, + 0xb0, 0x02, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x08, 0x12, 0x04, 0xb0, + 0x02, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x16, 0x02, 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, + 0x04, 0xb0, 0x02, 0x23, 0x47, 0x0a, 0x35, 0x0a, 0x02, 0x04, 0x17, 0x12, 0x06, 0xb4, 0x02, 0x00, + 0xbd, 0x02, 0x01, 0x1a, 0x27, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, + 0x04, 0x17, 0x01, 0x12, 0x04, 0xb4, 0x02, 0x08, 0x1b, 0x0a, 0x3d, 0x0a, 0x04, 0x04, 0x17, 0x02, + 0x00, 0x12, 0x04, 0xb6, 0x02, 0x02, 0x1e, 0x1a, 0x2f, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, + 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, + 0x04, 0x12, 0x04, 0xb6, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x06, + 0x12, 0x04, 0xb6, 0x02, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x01, 0x12, + 0x04, 0xb6, 0x02, 0x12, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x03, 0x12, 0x04, + 0xb6, 0x02, 0x1c, 0x1d, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x17, 0x02, 0x01, 0x12, 0x04, 0xb9, 0x02, + 0x02, 0x13, 0x1a, 0x36, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, + 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x2c, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, + 0x02, 0x01, 0x05, 0x12, 0x04, 0xb9, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, + 0x01, 0x01, 0x12, 0x04, 0xb9, 0x02, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x01, + 0x03, 0x12, 0x04, 0xb9, 0x02, 0x11, 0x12, 0x0a, 0x35, 0x0a, 0x02, 0x04, 0x18, 0x12, 0x06, 0xc0, + 0x02, 0x00, 0xc9, 0x02, 0x01, 0x1a, 0x27, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x18, 0x01, 0x12, 0x04, 0xc0, 0x02, 0x08, 0x1b, 0x0a, 0x35, 0x0a, 0x04, 0x04, + 0x18, 0x02, 0x00, 0x12, 0x04, 0xc2, 0x02, 0x02, 0x49, 0x1a, 0x27, 0x20, 0x52, 0x75, 0x6e, 0x20, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc2, 0x02, 0x02, + 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc2, 0x02, 0x17, 0x1d, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc2, 0x02, 0x20, 0x21, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x08, 0x12, 0x04, 0xc2, 0x02, 0x22, 0x48, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x18, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xc2, 0x02, 0x23, 0x47, + 0x0a, 0x83, 0x03, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x01, 0x12, 0x04, 0xc8, 0x02, 0x02, 0x24, 0x1a, + 0xf4, 0x02, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x28, 0x73, 0x29, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x20, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x0a, 0x20, 0x2d, 0x20, 0x4e, 0x41, 0x4d, + 0x45, 0x20, 0x28, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x5f, 0x43, 0x41, + 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x29, 0x3a, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, + 0x61, 0x74, 0x65, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, + 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x61, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, + 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x0a, 0x20, 0x2d, + 0x20, 0x50, 0x48, 0x41, 0x53, 0x45, 0x20, 0x28, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, + 0x49, 0x4e, 0x29, 0x3a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x68, 0x61, + 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, + 0x61, 0x73, 0x73, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x61, + 0x73, 0x65, 0x73, 0x20, 0x28, 0x69, 0x2e, 0x65, 0x2e, 0x20, 0x5b, 0x22, 0x31, 0x22, 0x2c, 0x20, + 0x22, 0x34, 0x22, 0x5d, 0x29, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x04, 0x12, + 0x04, 0xc8, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x06, 0x12, 0x04, + 0xc8, 0x02, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x01, 0x12, 0x04, 0xc8, + 0x02, 0x19, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x03, 0x12, 0x04, 0xc8, 0x02, + 0x22, 0x23, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x19, 0x12, 0x06, 0xcc, 0x02, 0x00, 0xcf, 0x02, 0x01, + 0x1a, 0x4d, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, - 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, - 0x0a, 0x03, 0x04, 0x1d, 0x01, 0x12, 0x04, 0xea, 0x02, 0x08, 0x1b, 0x0a, 0xb3, 0x01, 0x0a, 0x04, - 0x04, 0x1d, 0x02, 0x00, 0x12, 0x04, 0xee, 0x02, 0x02, 0x25, 0x1a, 0xa4, 0x01, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, - 0x20, 0x46, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x74, 0x68, - 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x04, 0x12, 0x04, 0xee, 0x02, 0x02, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x06, 0x12, 0x04, 0xee, 0x02, 0x0b, 0x14, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xee, 0x02, 0x15, 0x20, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xee, 0x02, 0x23, 0x24, 0x0a, 0x66, 0x0a, - 0x04, 0x04, 0x1d, 0x02, 0x01, 0x12, 0x04, 0xf1, 0x02, 0x02, 0x14, 0x1a, 0x58, 0x20, 0x49, 0x6e, - 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, - 0x6c, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x2c, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x01, 0x05, 0x12, 0x04, - 0xf1, 0x02, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x01, 0x01, 0x12, 0x04, 0xf1, - 0x02, 0x07, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf1, 0x02, - 0x12, 0x13, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x97, 0x1c, 0x0a, 0x2b, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x1e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x96, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, - 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x39, 0x0a, - 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x20, 0x4c, 0x69, 0x74, 0x65, + 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x19, 0x01, 0x12, 0x04, 0xcc, 0x02, 0x08, 0x1c, 0x0a, 0x69, 0x0a, 0x04, + 0x04, 0x19, 0x02, 0x00, 0x12, 0x04, 0xce, 0x02, 0x02, 0x2f, 0x1a, 0x5b, 0x20, 0x4e, 0x65, 0x77, + 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x2e, 0x20, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x04, + 0x12, 0x04, 0xce, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x06, 0x12, + 0x04, 0xce, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x01, 0x12, 0x04, + 0xce, 0x02, 0x1a, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x03, 0x12, 0x04, 0xce, + 0x02, 0x2d, 0x2e, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x1a, 0x12, 0x06, 0xd1, 0x02, 0x00, 0xd5, 0x02, + 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1a, 0x01, 0x12, 0x04, 0xd1, 0x02, 0x08, 0x21, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x00, 0x12, 0x04, 0xd2, 0x02, 0x02, 0x48, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x1a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xd2, 0x02, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x1a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd2, 0x02, 0x1a, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xd2, 0x02, 0x1f, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, + 0x00, 0x08, 0x12, 0x04, 0xd2, 0x02, 0x21, 0x47, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1a, 0x02, 0x00, + 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xd2, 0x02, 0x22, 0x46, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x1a, + 0x02, 0x01, 0x12, 0x04, 0xd4, 0x02, 0x02, 0x3a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, + 0x05, 0x12, 0x04, 0xd4, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x01, + 0x12, 0x04, 0xd4, 0x02, 0x09, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x03, 0x12, + 0x04, 0xd4, 0x02, 0x13, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x08, 0x12, 0x04, + 0xd4, 0x02, 0x15, 0x39, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x1a, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, + 0x04, 0x12, 0x04, 0xd4, 0x02, 0x16, 0x38, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x1b, 0x12, 0x06, 0xd7, + 0x02, 0x00, 0xd9, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1b, 0x01, 0x12, 0x04, 0xd7, 0x02, + 0x08, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x1b, 0x02, 0x00, 0x12, 0x04, 0xd8, 0x02, 0x02, 0x2b, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, 0x04, 0x12, 0x04, 0xd8, 0x02, 0x02, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, 0x06, 0x12, 0x04, 0xd8, 0x02, 0x0b, 0x17, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd8, 0x02, 0x18, 0x26, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x1b, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd8, 0x02, 0x29, 0x2a, 0x0a, 0x0c, 0x0a, 0x02, + 0x04, 0x1c, 0x12, 0x06, 0xdb, 0x02, 0x00, 0xe1, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1c, + 0x01, 0x12, 0x04, 0xdb, 0x02, 0x08, 0x1a, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x00, 0x12, + 0x04, 0xdd, 0x02, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, + 0x00, 0x06, 0x12, 0x04, 0xdd, 0x02, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x00, + 0x01, 0x12, 0x04, 0xdd, 0x02, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x00, 0x03, + 0x12, 0x04, 0xdd, 0x02, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x00, 0x08, 0x12, + 0x04, 0xdd, 0x02, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1c, 0x02, 0x00, 0x08, 0x87, 0x09, + 0x19, 0x12, 0x04, 0xdd, 0x02, 0x29, 0x4d, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x01, 0x12, + 0x04, 0xe0, 0x02, 0x02, 0x14, 0x1a, 0x2a, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x01, 0x05, 0x12, 0x04, 0xe0, 0x02, 0x02, 0x08, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x01, 0x01, 0x12, 0x04, 0xe0, 0x02, 0x09, 0x0f, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x01, 0x03, 0x12, 0x04, 0xe0, 0x02, 0x12, 0x13, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x1d, 0x12, 0x04, 0xe3, 0x02, 0x00, 0x1e, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1d, + 0x01, 0x12, 0x04, 0xe3, 0x02, 0x08, 0x1b, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x1e, 0x12, 0x06, 0xe5, + 0x02, 0x00, 0xff, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1e, 0x01, 0x12, 0x04, 0xe5, 0x02, + 0x08, 0x1a, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x1e, 0x08, 0x00, 0x12, 0x06, 0xe6, 0x02, 0x02, 0xea, + 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x08, 0x00, 0x01, 0x12, 0x04, 0xe6, 0x02, 0x08, + 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x08, 0x00, 0x02, 0x12, 0x04, 0xe7, 0x02, 0x04, 0x30, + 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1e, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xe7, 0x02, + 0x04, 0x30, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x1e, 0x02, 0x00, 0x12, 0x04, 0xe9, 0x02, 0x04, 0x2c, + 0x1a, 0x20, 0x20, 0x57, 0x61, 0x74, 0x63, 0x68, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x00, 0x06, 0x12, 0x04, 0xe9, 0x02, 0x04, + 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x00, 0x01, 0x12, 0x04, 0xe9, 0x02, 0x1d, 0x27, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x00, 0x03, 0x12, 0x04, 0xe9, 0x02, 0x2a, 0x2b, 0x0a, + 0x44, 0x0a, 0x04, 0x04, 0x1e, 0x02, 0x01, 0x12, 0x04, 0xed, 0x02, 0x02, 0x52, 0x1a, 0x36, 0x20, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x61, 0x66, + 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x2e, 0x20, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x01, 0x06, 0x12, 0x04, + 0xed, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x01, 0x01, 0x12, 0x04, 0xed, + 0x02, 0x1c, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x01, 0x03, 0x12, 0x04, 0xed, 0x02, + 0x29, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x01, 0x08, 0x12, 0x04, 0xed, 0x02, 0x2b, + 0x51, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1e, 0x02, 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xed, + 0x02, 0x2c, 0x50, 0x0a, 0xa6, 0x01, 0x0a, 0x04, 0x04, 0x1e, 0x02, 0x02, 0x12, 0x04, 0xf2, 0x02, + 0x02, 0x29, 0x1a, 0x97, 0x01, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, + 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x75, 0x70, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6e, 0x75, 0x6c, 0x6c, + 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6c, + 0x6f, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x1e, 0x02, 0x02, 0x06, 0x12, 0x04, 0xf2, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x1e, 0x02, 0x02, 0x01, 0x12, 0x04, 0xf2, 0x02, 0x1c, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, + 0x02, 0x02, 0x03, 0x12, 0x04, 0xf2, 0x02, 0x27, 0x28, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x1e, 0x02, + 0x03, 0x12, 0x04, 0xf5, 0x02, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, + 0x02, 0x03, 0x06, 0x12, 0x04, 0xf5, 0x02, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, + 0x03, 0x01, 0x12, 0x04, 0xf5, 0x02, 0x15, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x03, + 0x03, 0x12, 0x04, 0xf5, 0x02, 0x1f, 0x20, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x1e, 0x03, 0x00, 0x12, + 0x06, 0xf7, 0x02, 0x02, 0xfb, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1e, 0x03, 0x00, 0x01, + 0x12, 0x04, 0xf7, 0x02, 0x0a, 0x18, 0x0a, 0x10, 0x0a, 0x06, 0x04, 0x1e, 0x03, 0x00, 0x08, 0x00, + 0x12, 0x06, 0xf8, 0x02, 0x04, 0xfa, 0x02, 0x05, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1e, 0x03, 0x00, + 0x08, 0x00, 0x01, 0x12, 0x04, 0xf8, 0x02, 0x0a, 0x11, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x1e, 0x03, + 0x00, 0x02, 0x00, 0x12, 0x04, 0xf9, 0x02, 0x06, 0x2b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1e, 0x03, + 0x00, 0x02, 0x00, 0x06, 0x12, 0x04, 0xf9, 0x02, 0x06, 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1e, + 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xf9, 0x02, 0x1c, 0x26, 0x0a, 0x0f, 0x0a, 0x07, 0x04, + 0x1e, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xf9, 0x02, 0x29, 0x2a, 0x0a, 0x30, 0x0a, 0x04, + 0x04, 0x1e, 0x02, 0x04, 0x12, 0x04, 0xfe, 0x02, 0x02, 0x30, 0x1a, 0x22, 0x20, 0x4b, 0x6e, 0x6f, + 0x77, 0x6e, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x69, + 0x6e, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x1e, 0x02, 0x04, 0x04, 0x12, 0x04, 0xfe, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x1e, 0x02, 0x04, 0x06, 0x12, 0x04, 0xfe, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x1e, 0x02, 0x04, 0x01, 0x12, 0x04, 0xfe, 0x02, 0x1a, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x1e, 0x02, 0x04, 0x03, 0x12, 0x04, 0xfe, 0x02, 0x2e, 0x2f, 0x0a, 0x3a, 0x0a, 0x02, 0x04, 0x1f, + 0x12, 0x06, 0x82, 0x03, 0x00, 0x8a, 0x03, 0x01, 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1f, 0x01, 0x12, 0x04, 0x82, + 0x03, 0x08, 0x1b, 0x0a, 0xb3, 0x01, 0x0a, 0x04, 0x04, 0x1f, 0x02, 0x00, 0x12, 0x04, 0x86, 0x03, + 0x02, 0x25, 0x1a, 0xa4, 0x01, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, + 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, + 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1f, 0x02, + 0x00, 0x04, 0x12, 0x04, 0x86, 0x03, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1f, 0x02, 0x00, + 0x06, 0x12, 0x04, 0x86, 0x03, 0x0b, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1f, 0x02, 0x00, 0x01, + 0x12, 0x04, 0x86, 0x03, 0x15, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1f, 0x02, 0x00, 0x03, 0x12, + 0x04, 0x86, 0x03, 0x23, 0x24, 0x0a, 0x66, 0x0a, 0x04, 0x04, 0x1f, 0x02, 0x01, 0x12, 0x04, 0x89, + 0x03, 0x02, 0x14, 0x1a, 0x58, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x1f, 0x02, 0x01, 0x05, 0x12, 0x04, 0x89, 0x03, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x1f, 0x02, 0x01, 0x01, 0x12, 0x04, 0x89, 0x03, 0x07, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x1f, 0x02, 0x01, 0x03, 0x12, 0x04, 0x89, 0x03, 0x12, 0x13, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, 0x0a, 0x97, 0x1c, 0x0a, 0x2b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, + 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, - 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, - 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x1f, 0x4c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, - 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x20, 0x4c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, - 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0x58, 0x0a, 0x1f, 0x54, 0x61, 0x73, 0x6b, 0x53, - 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, - 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, - 0x63, 0x22, 0x4f, 0x0a, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, - 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, - 0x61, 0x70, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x58, - 0x0a, 0x1c, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, - 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, - 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, - 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x32, 0xba, 0x04, 0x0a, 0x11, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8a, - 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, - 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x18, - 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x61, - 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, - 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x54, 0x61, 0x73, + 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x22, 0x4f, 0x0a, 0x20, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, + 0x6e, 0x22, 0x4e, 0x0a, 0x1f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, + 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, + 0x6e, 0x22, 0x5c, 0x0a, 0x20, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, + 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, + 0x58, 0x0a, 0x1f, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x22, 0x4f, 0x0a, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, - 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, - 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, - 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x14, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e, + 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, + 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4a, + 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x1c, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x32, 0xba, 0x04, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, + 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, + 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, + 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, + 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, + 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xd1, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x42, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, - 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4a, 0x90, 0x0e, 0x0a, 0x06, 0x12, 0x04, - 0x00, 0x00, 0x45, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, - 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, - 0x04, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x25, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, - 0x03, 0x07, 0x00, 0x26, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x09, 0x00, 0x4d, 0x0a, 0x09, - 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x09, 0x00, 0x4d, 0x0a, 0x6e, 0x0a, 0x02, 0x06, 0x00, 0x12, - 0x04, 0x0c, 0x00, 0x19, 0x01, 0x1a, 0x62, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, - 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x64, 0x69, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, - 0x12, 0x03, 0x0c, 0x08, 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x0d, - 0x02, 0x0f, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x06, - 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0d, 0x1f, 0x3e, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0d, 0x49, 0x69, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0e, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, - 0x00, 0x02, 0x00, 0x04, 0x22, 0x12, 0x03, 0x0e, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x01, 0x12, 0x04, 0x10, 0x02, 0x12, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x10, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, - 0x03, 0x10, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x10, - 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x11, 0x04, 0x2f, - 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x01, 0x04, 0x22, 0x12, 0x03, 0x11, 0x04, 0x2f, 0x0a, - 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x13, 0x02, 0x15, 0x03, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x13, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x13, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x03, 0x12, 0x03, 0x13, 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, - 0x12, 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, - 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x16, 0x02, - 0x18, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x16, 0x06, 0x1a, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x16, 0x1b, 0x36, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x16, 0x41, 0x5d, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x17, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, - 0x02, 0x03, 0x04, 0x22, 0x12, 0x03, 0x17, 0x04, 0x2f, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, - 0x04, 0x1b, 0x00, 0x1f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x1b, 0x08, - 0x27, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x1d, 0x02, 0x2a, 0x1a, 0x22, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x4a, 0x53, 0x4f, 0x4e, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1d, 0x02, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x1d, 0x0b, 0x1c, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1d, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, 0x28, 0x29, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x01, 0x12, 0x03, 0x1e, 0x02, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, - 0x12, 0x03, 0x1e, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x1e, 0x1d, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x29, - 0x2a, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x21, 0x00, 0x24, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x21, 0x08, 0x28, 0x0a, 0x29, 0x0a, 0x04, 0x04, 0x01, 0x02, - 0x00, 0x12, 0x03, 0x23, 0x02, 0x22, 0x1a, 0x1c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, - 0x4e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x23, - 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x23, 0x19, 0x1d, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x23, 0x20, 0x21, 0x0a, 0x0a, - 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x26, 0x00, 0x29, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, - 0x01, 0x12, 0x03, 0x26, 0x08, 0x27, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, - 0x28, 0x02, 0x22, 0x1a, 0x29, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x28, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x28, 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x28, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, - 0x2b, 0x00, 0x2e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x2b, 0x08, 0x28, - 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x2d, 0x02, 0x2a, 0x1a, 0x2e, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x2d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2d, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x2d, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x2d, 0x28, 0x29, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x30, 0x00, 0x34, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x30, 0x08, 0x27, 0x0a, 0x5f, 0x0a, - 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x33, 0x02, 0x28, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2e, 0x0a, 0x20, - 0x4d, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x33, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x33, 0x1a, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x33, 0x26, 0x27, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, - 0x36, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x36, 0x08, 0x28, - 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x38, 0x02, 0x22, 0x1a, 0x1d, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x38, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x38, 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x38, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x3b, 0x00, - 0x40, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x3b, 0x08, 0x23, 0x0a, 0x54, - 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3d, 0x02, 0x2b, 0x1a, 0x47, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x28, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x29, - 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3d, - 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3d, 0x1d, 0x26, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3d, 0x29, 0x2a, 0x0a, 0x3a, - 0x0a, 0x04, 0x04, 0x06, 0x02, 0x01, 0x12, 0x03, 0x3f, 0x02, 0x24, 0x1a, 0x2d, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, - 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, - 0x02, 0x01, 0x06, 0x12, 0x03, 0x3f, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x3f, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x03, 0x12, - 0x03, 0x3f, 0x22, 0x23, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x42, 0x00, 0x45, 0x01, - 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x42, 0x08, 0x24, 0x0a, 0x56, 0x0a, 0x04, - 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x44, 0x02, 0x2a, 0x1a, 0x49, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, - 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x04, 0x12, 0x03, 0x44, - 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x44, 0x0b, 0x1c, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, 0x44, 0x1d, 0x25, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x44, 0x28, 0x29, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, + 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, + 0x14, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xd1, 0x01, + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, + 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x4a, 0x90, 0x0e, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x45, 0x01, 0x0a, 0x08, 0x0a, 0x01, + 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, + 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, + 0x01, 0x12, 0x03, 0x05, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, + 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x26, 0x0a, 0x08, 0x0a, 0x01, + 0x08, 0x12, 0x03, 0x09, 0x00, 0x4d, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x09, 0x00, + 0x4d, 0x0a, 0x6e, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x0c, 0x00, 0x19, 0x01, 0x1a, 0x62, 0x20, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x64, 0x69, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0c, 0x08, 0x19, 0x0a, 0x0c, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x0d, 0x02, 0x0f, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x00, 0x02, 0x12, 0x03, 0x0d, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x0d, 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, + 0x0e, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x00, 0x04, 0x22, 0x12, 0x03, 0x0e, + 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x10, 0x02, 0x12, 0x03, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x10, 0x06, 0x1e, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x10, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x10, 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x01, 0x04, 0x12, 0x03, 0x11, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x01, + 0x04, 0x22, 0x12, 0x03, 0x11, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, + 0x04, 0x13, 0x02, 0x15, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, + 0x13, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x13, 0x1f, + 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x13, 0x49, 0x69, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, + 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, + 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x16, 0x02, 0x18, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x01, 0x12, 0x03, 0x16, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x02, 0x12, 0x03, 0x16, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x16, 0x41, 0x5d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x17, + 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x03, 0x04, 0x22, 0x12, 0x03, 0x17, 0x04, + 0x2f, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x1b, 0x00, 0x1f, 0x01, 0x0a, 0x0a, 0x0a, + 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x1b, 0x08, 0x27, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x00, 0x12, 0x03, 0x1d, 0x02, 0x2a, 0x1a, 0x22, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x20, 0x74, 0x6f, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x00, 0x04, 0x12, 0x03, 0x1d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, + 0x06, 0x12, 0x03, 0x1d, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, + 0x03, 0x1d, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, + 0x28, 0x29, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1e, 0x02, 0x2b, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x1e, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1e, 0x1d, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x29, 0x2a, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, + 0x04, 0x21, 0x00, 0x24, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x21, 0x08, + 0x28, 0x0a, 0x29, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x23, 0x02, 0x22, 0x1a, 0x1c, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x23, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x00, 0x01, 0x12, 0x03, 0x23, 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, + 0x03, 0x12, 0x03, 0x23, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x26, 0x00, + 0x29, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x26, 0x08, 0x27, 0x0a, 0x36, + 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x28, 0x02, 0x22, 0x1a, 0x29, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x74, 0x6f, + 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x28, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x28, + 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x28, 0x20, 0x21, + 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x2b, 0x00, 0x2e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x03, 0x01, 0x12, 0x03, 0x2b, 0x08, 0x28, 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, + 0x12, 0x03, 0x2d, 0x02, 0x2a, 0x1a, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, + 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, + 0x2d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2d, 0x0b, + 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2d, 0x1d, 0x25, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2d, 0x28, 0x29, 0x0a, 0x0a, 0x0a, + 0x02, 0x04, 0x04, 0x12, 0x04, 0x30, 0x00, 0x34, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, + 0x12, 0x03, 0x30, 0x08, 0x27, 0x0a, 0x5f, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x33, + 0x02, 0x28, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, + 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2e, 0x0a, 0x20, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x33, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x33, + 0x1a, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x33, 0x26, 0x27, + 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x36, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x05, 0x01, 0x12, 0x03, 0x36, 0x08, 0x28, 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, + 0x12, 0x03, 0x38, 0x02, 0x22, 0x1a, 0x1d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x38, + 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x38, 0x19, 0x1d, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x38, 0x20, 0x21, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x3b, 0x00, 0x40, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, + 0x01, 0x12, 0x03, 0x3b, 0x08, 0x23, 0x0a, 0x54, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, + 0x3d, 0x02, 0x2b, 0x1a, 0x47, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x29, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, + 0x02, 0x00, 0x01, 0x12, 0x03, 0x3d, 0x1d, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, + 0x03, 0x12, 0x03, 0x3d, 0x29, 0x2a, 0x0a, 0x3a, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x01, 0x12, 0x03, + 0x3f, 0x02, 0x24, 0x1a, 0x2d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x4a, 0x53, + 0x4f, 0x4e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x06, 0x12, 0x03, 0x3f, 0x02, 0x18, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3f, 0x19, 0x1f, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3f, 0x22, 0x23, 0x0a, 0x0a, 0x0a, 0x02, + 0x04, 0x07, 0x12, 0x04, 0x42, 0x00, 0x45, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, + 0x03, 0x42, 0x08, 0x24, 0x0a, 0x56, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x44, 0x02, + 0x2a, 0x1a, 0x49, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, + 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x00, 0x04, 0x12, 0x03, 0x44, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x44, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x44, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x44, 0x28, 0x29, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("flyteidl2.workflow.tonic.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/gen/rust/src/flyteidl2.workflow.tonic.rs b/gen/rust/src/flyteidl2.workflow.tonic.rs index ade96581d9..0397110264 100644 --- a/gen/rust/src/flyteidl2.workflow.tonic.rs +++ b/gen/rust/src/flyteidl2.workflow.tonic.rs @@ -2691,6 +2691,36 @@ pub mod run_service_client { ); self.inner.unary(req, path, codec).await } + pub async fn get_action_log_context( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/flyteidl2.workflow.RunService/GetActionLogContext", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "flyteidl2.workflow.RunService", + "GetActionLogContext", + ), + ); + self.inner.unary(req, path, codec).await + } } } /// Generated server implementations. @@ -2844,6 +2874,13 @@ pub mod run_service_server { tonic::Response, tonic::Status, >; + async fn get_action_log_context( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; } #[derive(Debug)] pub struct RunServiceServer { @@ -3608,6 +3645,52 @@ pub mod run_service_server { }; Box::pin(fut) } + "/flyteidl2.workflow.RunService/GetActionLogContext" => { + #[allow(non_camel_case_types)] + struct GetActionLogContextSvc(pub Arc); + impl< + T: RunService, + > tonic::server::UnaryService + for GetActionLogContextSvc { + type Response = super::GetActionLogContextResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::get_action_log_context(&inner, request) + .await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = GetActionLogContextSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok( diff --git a/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts b/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts index 3b1846b027..1c4654f9ba 100644 --- a/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts +++ b/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts @@ -11,6 +11,8 @@ import type { ActionAttemptIdentifier, ActionIdentifier, ProjectIdentifier, RunI import { file_flyteidl2_common_identifier } from "../common/identifier_pb.ts"; import type { OffloadedInputData } from "../common/run_pb.ts"; import { file_flyteidl2_common_run } from "../common/run_pb.ts"; +import type { LogLine } from "../logs/dataplane/payload_pb.ts"; +import { file_flyteidl2_logs_dataplane_payload } from "../logs/dataplane/payload_pb.ts"; import type { Inputs, Outputs } from "../task/common_pb.ts"; import { file_flyteidl2_task_common } from "../task/common_pb.ts"; import type { TaskIdentifier, TaskSpec } from "../task/task_definition_pb.ts"; @@ -23,7 +25,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file flyteidl2/dataproxy/dataproxy_service.proto. */ export const file_flyteidl2_dataproxy_dataproxy_service: GenFile = /*@__PURE__*/ - fileDesc("CitmbHl0ZWlkbDIvZGF0YXByb3h5L2RhdGFwcm94eV9zZXJ2aWNlLnByb3RvEhNmbHl0ZWlkbDIuZGF0YXByb3h5Io0CChtDcmVhdGVVcGxvYWRMb2NhdGlvblJlcXVlc3QSGAoHcHJvamVjdBgBIAEoCUIHukgEcgIQARIXCgZkb21haW4YAiABKAlCB7pIBHICEAESEAoIZmlsZW5hbWUYAyABKAkSLQoKZXhwaXJlc19pbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIcCgtjb250ZW50X21kNRgFIAEoDEIHukgEegJoEBIVCg1maWxlbmFtZV9yb290GAYgASgJEiAKGGFkZF9jb250ZW50X21kNV9tZXRhZGF0YRgHIAEoCBILCgNvcmcYCCABKAkSFgoOY29udGVudF9sZW5ndGgYCSABKAMi9wEKHENyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2USEgoKc2lnbmVkX3VybBgBIAEoCRISCgpuYXRpdmVfdXJsGAIgASgJEi4KCmV4cGlyZXNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk8KB2hlYWRlcnMYBCADKAsyPi5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2UuSGVhZGVyc0VudHJ5Gi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuACChNVcGxvYWRJbnB1dHNSZXF1ZXN0EjEKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckgAEjkKCnByb2plY3RfaWQYAiABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASMQoHdGFza19pZBgDIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySAESLQoJdGFza19zcGVjGAQgASgLMhguZmx5dGVpZGwyLnRhc2suVGFza1NwZWNIARI1Cgx0cmlnZ2VyX25hbWUYBSABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLlRyaWdnZXJOYW1lSAESJgoGaW5wdXRzGAYgASgLMhYuZmx5dGVpZGwyLnRhc2suSW5wdXRzQgsKAmlkEgW6SAIIAUINCgR0YXNrEgW6SAIIASJaChRVcGxvYWRJbnB1dHNSZXNwb25zZRJCChRvZmZsb2FkZWRfaW5wdXRfZGF0YRgBIAEoCzIkLmZseXRlaWRsMi5jb21tb24uT2ZmbG9hZGVkSW5wdXREYXRhIlMKDVByZVNpZ25lZFVSTHMSEgoKc2lnbmVkX3VybBgBIAMoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLHAgoZQ3JlYXRlRG93bmxvYWRMaW5rUmVxdWVzdBJCCg1hcnRpZmFjdF90eXBlGAEgASgOMiEuZmx5dGVpZGwyLmRhdGFwcm94eS5BcnRpZmFjdFR5cGVCCLpIBYIBAiAAEi0KCmV4cGlyZXNfaW4YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SRgoRYWN0aW9uX2F0dGVtcHRfaWQYAyABKAsyKS5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbkF0dGVtcHRJZGVudGlmaWVySAASKwoGYXBwX2lkGAQgASgLMhkuZmx5dGVpZGwyLmFwcC5JZGVudGlmaWVySAASMQoHdGFza19pZBgFIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySABCDwoGc291cmNlEgW6SAIIASJZChpDcmVhdGVEb3dubG9hZExpbmtSZXNwb25zZRI7Cg9wcmVfc2lnbmVkX3VybHMYASABKAsyIi5mbHl0ZWlkbDIuZGF0YXByb3h5LlByZVNpZ25lZFVSTHMiVQoUR2V0QWN0aW9uRGF0YVJlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQEiaQoVR2V0QWN0aW9uRGF0YVJlc3BvbnNlEiYKBmlucHV0cxgBIAEoCzIWLmZseXRlaWRsMi50YXNrLklucHV0cxIoCgdvdXRwdXRzGAIgASgLMhcuZmx5dGVpZGwyLnRhc2suT3V0cHV0cypmCgxBcnRpZmFjdFR5cGUSHQoZQVJUSUZBQ1RfVFlQRV9VTlNQRUNJRklFRBAAEhgKFEFSVElGQUNUX1RZUEVfUkVQT1JUEAESHQoZQVJUSUZBQ1RfVFlQRV9DT0RFX0JVTkRMRRACMt4DChBEYXRhUHJveHlTZXJ2aWNlEn0KFENyZWF0ZVVwbG9hZExvY2F0aW9uEjAuZmx5dGVpZGwyLmRhdGFwcm94eS5DcmVhdGVVcGxvYWRMb2NhdGlvblJlcXVlc3QaMS5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2UiABJlCgxVcGxvYWRJbnB1dHMSKC5mbHl0ZWlkbDIuZGF0YXByb3h5LlVwbG9hZElucHV0c1JlcXVlc3QaKS5mbHl0ZWlkbDIuZGF0YXByb3h5LlVwbG9hZElucHV0c1Jlc3BvbnNlIgASdwoSQ3JlYXRlRG93bmxvYWRMaW5rEi4uZmx5dGVpZGwyLmRhdGFwcm94eS5DcmVhdGVEb3dubG9hZExpbmtSZXF1ZXN0Gi8uZmx5dGVpZGwyLmRhdGFwcm94eS5DcmVhdGVEb3dubG9hZExpbmtSZXNwb25zZSIAEmsKDUdldEFjdGlvbkRhdGESKS5mbHl0ZWlkbDIuZGF0YXByb3h5LkdldEFjdGlvbkRhdGFSZXF1ZXN0GiouZmx5dGVpZGwyLmRhdGFwcm94eS5HZXRBY3Rpb25EYXRhUmVzcG9uc2UiA5ACAULYAQoXY29tLmZseXRlaWRsMi5kYXRhcHJveHlCFURhdGFwcm94eVNlcnZpY2VQcm90b0gCUAFaN2dpdGh1Yi5jb20vZmx5dGVvcmcvZmx5dGUvdjIvZ2VuL2dvL2ZseXRlaWRsMi9kYXRhcHJveHmiAgNGRFiqAhNGbHl0ZWlkbDIuRGF0YXByb3h5ygITRmx5dGVpZGwyXERhdGFwcm94eeICH0ZseXRlaWRsMlxEYXRhcHJveHlcR1BCTWV0YWRhdGHqAhRGbHl0ZWlkbDI6OkRhdGFwcm94eWIGcHJvdG8z", [file_buf_validate_validate, file_flyteidl2_app_app_definition, file_flyteidl2_common_identifier, file_flyteidl2_common_run, file_flyteidl2_task_common, file_flyteidl2_task_task_definition, file_google_protobuf_duration, file_google_protobuf_timestamp]); + fileDesc("CitmbHl0ZWlkbDIvZGF0YXByb3h5L2RhdGFwcm94eV9zZXJ2aWNlLnByb3RvEhNmbHl0ZWlkbDIuZGF0YXByb3h5Io0CChtDcmVhdGVVcGxvYWRMb2NhdGlvblJlcXVlc3QSGAoHcHJvamVjdBgBIAEoCUIHukgEcgIQARIXCgZkb21haW4YAiABKAlCB7pIBHICEAESEAoIZmlsZW5hbWUYAyABKAkSLQoKZXhwaXJlc19pbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIcCgtjb250ZW50X21kNRgFIAEoDEIHukgEegJoEBIVCg1maWxlbmFtZV9yb290GAYgASgJEiAKGGFkZF9jb250ZW50X21kNV9tZXRhZGF0YRgHIAEoCBILCgNvcmcYCCABKAkSFgoOY29udGVudF9sZW5ndGgYCSABKAMi9wEKHENyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2USEgoKc2lnbmVkX3VybBgBIAEoCRISCgpuYXRpdmVfdXJsGAIgASgJEi4KCmV4cGlyZXNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk8KB2hlYWRlcnMYBCADKAsyPi5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2UuSGVhZGVyc0VudHJ5Gi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuACChNVcGxvYWRJbnB1dHNSZXF1ZXN0EjEKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckgAEjkKCnByb2plY3RfaWQYAiABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASMQoHdGFza19pZBgDIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySAESLQoJdGFza19zcGVjGAQgASgLMhguZmx5dGVpZGwyLnRhc2suVGFza1NwZWNIARI1Cgx0cmlnZ2VyX25hbWUYBSABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLlRyaWdnZXJOYW1lSAESJgoGaW5wdXRzGAYgASgLMhYuZmx5dGVpZGwyLnRhc2suSW5wdXRzQgsKAmlkEgW6SAIIAUINCgR0YXNrEgW6SAIIASJaChRVcGxvYWRJbnB1dHNSZXNwb25zZRJCChRvZmZsb2FkZWRfaW5wdXRfZGF0YRgBIAEoCzIkLmZseXRlaWRsMi5jb21tb24uT2ZmbG9hZGVkSW5wdXREYXRhIlMKDVByZVNpZ25lZFVSTHMSEgoKc2lnbmVkX3VybBgBIAMoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLHAgoZQ3JlYXRlRG93bmxvYWRMaW5rUmVxdWVzdBJCCg1hcnRpZmFjdF90eXBlGAEgASgOMiEuZmx5dGVpZGwyLmRhdGFwcm94eS5BcnRpZmFjdFR5cGVCCLpIBYIBAiAAEi0KCmV4cGlyZXNfaW4YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SRgoRYWN0aW9uX2F0dGVtcHRfaWQYAyABKAsyKS5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbkF0dGVtcHRJZGVudGlmaWVySAASKwoGYXBwX2lkGAQgASgLMhkuZmx5dGVpZGwyLmFwcC5JZGVudGlmaWVySAASMQoHdGFza19pZBgFIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySABCDwoGc291cmNlEgW6SAIIASJZChpDcmVhdGVEb3dubG9hZExpbmtSZXNwb25zZRI7Cg9wcmVfc2lnbmVkX3VybHMYASABKAsyIi5mbHl0ZWlkbDIuZGF0YXByb3h5LlByZVNpZ25lZFVSTHMiVQoUR2V0QWN0aW9uRGF0YVJlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQEiaQoVR2V0QWN0aW9uRGF0YVJlc3BvbnNlEiYKBmlucHV0cxgBIAEoCzIWLmZseXRlaWRsMi50YXNrLklucHV0cxIoCgdvdXRwdXRzGAIgASgLMhcuZmx5dGVpZGwyLnRhc2suT3V0cHV0cyJqCg9UYWlsTG9nc1JlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQESGAoHYXR0ZW1wdBgCIAEoDUIHukgEKgIgACKGAQoQVGFpbExvZ3NSZXNwb25zZRI4CgRsb2dzGAEgAygLMiouZmx5dGVpZGwyLmRhdGFwcm94eS5UYWlsTG9nc1Jlc3BvbnNlLkxvZ3MaOAoETG9ncxIwCgVsaW5lcxgBIAMoCzIhLmZseXRlaWRsMi5sb2dzLmRhdGFwbGFuZS5Mb2dMaW5lKmYKDEFydGlmYWN0VHlwZRIdChlBUlRJRkFDVF9UWVBFX1VOU1BFQ0lGSUVEEAASGAoUQVJUSUZBQ1RfVFlQRV9SRVBPUlQQARIdChlBUlRJRkFDVF9UWVBFX0NPREVfQlVORExFEAIyuwQKEERhdGFQcm94eVNlcnZpY2USfQoUQ3JlYXRlVXBsb2FkTG9jYXRpb24SMC5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVxdWVzdBoxLmZseXRlaWRsMi5kYXRhcHJveHkuQ3JlYXRlVXBsb2FkTG9jYXRpb25SZXNwb25zZSIAEmUKDFVwbG9hZElucHV0cxIoLmZseXRlaWRsMi5kYXRhcHJveHkuVXBsb2FkSW5wdXRzUmVxdWVzdBopLmZseXRlaWRsMi5kYXRhcHJveHkuVXBsb2FkSW5wdXRzUmVzcG9uc2UiABJ3ChJDcmVhdGVEb3dubG9hZExpbmsSLi5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZURvd25sb2FkTGlua1JlcXVlc3QaLy5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZURvd25sb2FkTGlua1Jlc3BvbnNlIgASawoNR2V0QWN0aW9uRGF0YRIpLmZseXRlaWRsMi5kYXRhcHJveHkuR2V0QWN0aW9uRGF0YVJlcXVlc3QaKi5mbHl0ZWlkbDIuZGF0YXByb3h5LkdldEFjdGlvbkRhdGFSZXNwb25zZSIDkAIBElsKCFRhaWxMb2dzEiQuZmx5dGVpZGwyLmRhdGFwcm94eS5UYWlsTG9nc1JlcXVlc3QaJS5mbHl0ZWlkbDIuZGF0YXByb3h5LlRhaWxMb2dzUmVzcG9uc2UiADABQtgBChdjb20uZmx5dGVpZGwyLmRhdGFwcm94eUIVRGF0YXByb3h5U2VydmljZVByb3RvSAJQAVo3Z2l0aHViLmNvbS9mbHl0ZW9yZy9mbHl0ZS92Mi9nZW4vZ28vZmx5dGVpZGwyL2RhdGFwcm94eaICA0ZEWKoCE0ZseXRlaWRsMi5EYXRhcHJveHnKAhNGbHl0ZWlkbDJcRGF0YXByb3h54gIfRmx5dGVpZGwyXERhdGFwcm94eVxHUEJNZXRhZGF0YeoCFEZseXRlaWRsMjo6RGF0YXByb3h5YgZwcm90bzM", [file_buf_validate_validate, file_flyteidl2_app_app_definition, file_flyteidl2_common_identifier, file_flyteidl2_common_run, file_flyteidl2_logs_dataplane_payload, file_flyteidl2_task_common, file_flyteidl2_task_task_definition, file_google_protobuf_duration, file_google_protobuf_timestamp]); /** * CreateUploadLocationRequest specifies the request for the CreateUploadLocation API. @@ -409,6 +411,76 @@ export type GetActionDataResponse = Message<"flyteidl2.dataproxy.GetActionDataRe export const GetActionDataResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 8); +/** + * Request message for tailing logs. + * + * @generated from message flyteidl2.dataproxy.TailLogsRequest + */ +export type TailLogsRequest = Message<"flyteidl2.dataproxy.TailLogsRequest"> & { + /** + * The action id. + * + * @generated from field: flyteidl2.common.ActionIdentifier action_id = 1; + */ + actionId?: ActionIdentifier; + + /** + * The attempt number. + * + * @generated from field: uint32 attempt = 2; + */ + attempt: number; +}; + +/** + * Describes the message flyteidl2.dataproxy.TailLogsRequest. + * Use `create(TailLogsRequestSchema)` to create a new message. + */ +export const TailLogsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 9); + +/** + * Reponse message for tailing logs. + * + * @generated from message flyteidl2.dataproxy.TailLogsResponse + */ +export type TailLogsResponse = Message<"flyteidl2.dataproxy.TailLogsResponse"> & { + /** + * One or more batches of logs. + * + * @generated from field: repeated flyteidl2.dataproxy.TailLogsResponse.Logs logs = 1; + */ + logs: TailLogsResponse_Logs[]; +}; + +/** + * Describes the message flyteidl2.dataproxy.TailLogsResponse. + * Use `create(TailLogsResponseSchema)` to create a new message. + */ +export const TailLogsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 10); + +/** + * A batch of logs. + * + * @generated from message flyteidl2.dataproxy.TailLogsResponse.Logs + */ +export type TailLogsResponse_Logs = Message<"flyteidl2.dataproxy.TailLogsResponse.Logs"> & { + /** + * Structured log lines. + * + * @generated from field: repeated flyteidl2.logs.dataplane.LogLine lines = 1; + */ + lines: LogLine[]; +}; + +/** + * Describes the message flyteidl2.dataproxy.TailLogsResponse.Logs. + * Use `create(TailLogsResponse_LogsSchema)` to create a new message. + */ +export const TailLogsResponse_LogsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 10, 0); + /** * ArtifactType defines the type of artifact to be downloaded. * @@ -485,6 +557,16 @@ export const DataProxyService: GenService<{ input: typeof GetActionDataRequestSchema; output: typeof GetActionDataResponseSchema; }, + /** + * Stream logs for an action attempt. + * + * @generated from rpc flyteidl2.dataproxy.DataProxyService.TailLogs + */ + tailLogs: { + methodKind: "server_streaming"; + input: typeof TailLogsRequestSchema; + output: typeof TailLogsResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_flyteidl2_dataproxy_dataproxy_service, 0); diff --git a/gen/ts/flyteidl2/workflow/run_logs_service_pb.ts b/gen/ts/flyteidl2/workflow/run_logs_service_pb.ts index adf198d430..4c22e1cab9 100644 --- a/gen/ts/flyteidl2/workflow/run_logs_service_pb.ts +++ b/gen/ts/flyteidl2/workflow/run_logs_service_pb.ts @@ -15,7 +15,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file flyteidl2/workflow/run_logs_service.proto. */ export const file_flyteidl2_workflow_run_logs_service: GenFile = /*@__PURE__*/ - fileDesc("CilmbHl0ZWlkbDIvd29ya2Zsb3cvcnVuX2xvZ3Nfc2VydmljZS5wcm90bxISZmx5dGVpZGwyLndvcmtmbG93ImoKD1RhaWxMb2dzUmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBARIYCgdhdHRlbXB0GAIgASgNQge6SAQqAiAAIoUBChBUYWlsTG9nc1Jlc3BvbnNlEjcKBGxvZ3MYASADKAsyKS5mbHl0ZWlkbDIud29ya2Zsb3cuVGFpbExvZ3NSZXNwb25zZS5Mb2dzGjgKBExvZ3MSMAoFbGluZXMYASADKAsyIS5mbHl0ZWlkbDIubG9ncy5kYXRhcGxhbmUuTG9nTGluZTJuCg5SdW5Mb2dzU2VydmljZRJcCghUYWlsTG9ncxIjLmZseXRlaWRsMi53b3JrZmxvdy5UYWlsTG9nc1JlcXVlc3QaJC5mbHl0ZWlkbDIud29ya2Zsb3cuVGFpbExvZ3NSZXNwb25zZSIDkAIBMAFC0AEKFmNvbS5mbHl0ZWlkbDIud29ya2Zsb3dCE1J1bkxvZ3NTZXJ2aWNlUHJvdG9IAlABWjZnaXRodWIuY29tL2ZseXRlb3JnL2ZseXRlL3YyL2dlbi9nby9mbHl0ZWlkbDIvd29ya2Zsb3eiAgNGV1iqAhJGbHl0ZWlkbDIuV29ya2Zsb3fKAhJGbHl0ZWlkbDJcV29ya2Zsb3fiAh5GbHl0ZWlkbDJcV29ya2Zsb3dcR1BCTWV0YWRhdGHqAhNGbHl0ZWlkbDI6OldvcmtmbG93YgZwcm90bzM", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_logs_dataplane_payload]); + fileDesc("CilmbHl0ZWlkbDIvd29ya2Zsb3cvcnVuX2xvZ3Nfc2VydmljZS5wcm90bxISZmx5dGVpZGwyLndvcmtmbG93ImoKD1RhaWxMb2dzUmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBARIYCgdhdHRlbXB0GAIgASgNQge6SAQqAiAAIoUBChBUYWlsTG9nc1Jlc3BvbnNlEjcKBGxvZ3MYASADKAsyKS5mbHl0ZWlkbDIud29ya2Zsb3cuVGFpbExvZ3NSZXNwb25zZS5Mb2dzGjgKBExvZ3MSMAoFbGluZXMYASADKAsyIS5mbHl0ZWlkbDIubG9ncy5kYXRhcGxhbmUuTG9nTGluZTJxCg5SdW5Mb2dzU2VydmljZRJfCghUYWlsTG9ncxIjLmZseXRlaWRsMi53b3JrZmxvdy5UYWlsTG9nc1JlcXVlc3QaJC5mbHl0ZWlkbDIud29ya2Zsb3cuVGFpbExvZ3NSZXNwb25zZSIGiAIBkAIBMAFC0AEKFmNvbS5mbHl0ZWlkbDIud29ya2Zsb3dCE1J1bkxvZ3NTZXJ2aWNlUHJvdG9IAlABWjZnaXRodWIuY29tL2ZseXRlb3JnL2ZseXRlL3YyL2dlbi9nby9mbHl0ZWlkbDIvd29ya2Zsb3eiAgNGV1iqAhJGbHl0ZWlkbDIuV29ya2Zsb3fKAhJGbHl0ZWlkbDJcV29ya2Zsb3fiAh5GbHl0ZWlkbDJcV29ya2Zsb3dcR1BCTWV0YWRhdGHqAhNGbHl0ZWlkbDI6OldvcmtmbG93YgZwcm90bzM", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_logs_dataplane_payload]); /** * Request message for tailing logs. @@ -94,7 +94,10 @@ export const TailLogsResponse_LogsSchema: GenMessage = /* */ export const RunLogsService: GenService<{ /** + * Deprecated: Use DataProxyService.TailLogs instead. + * * @generated from rpc flyteidl2.workflow.RunLogsService.TailLogs + * @deprecated */ tailLogs: { methodKind: "server_streaming"; diff --git a/gen/ts/flyteidl2/workflow/run_service_pb.ts b/gen/ts/flyteidl2/workflow/run_service_pb.ts index d3bb4c0464..6c0feef592 100644 --- a/gen/ts/flyteidl2/workflow/run_service_pb.ts +++ b/gen/ts/flyteidl2/workflow/run_service_pb.ts @@ -11,6 +11,8 @@ import type { Filter, ListRequest, Sort_Direction } from "../common/list_pb.ts"; import { file_flyteidl2_common_list } from "../common/list_pb.ts"; import type { OffloadedInputData } from "../common/run_pb.ts"; import { file_flyteidl2_common_run } from "../common/run_pb.ts"; +import type { LogContext } from "../core/execution_pb.ts"; +import { file_flyteidl2_core_execution } from "../core/execution_pb.ts"; import type { Inputs, Outputs } from "../task/common_pb.ts"; import { file_flyteidl2_task_common } from "../task/common_pb.ts"; import type { RunSpec } from "../task/run_pb.ts"; @@ -27,7 +29,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file flyteidl2/workflow/run_service.proto. */ export const file_flyteidl2_workflow_run_service: GenFile = /*@__PURE__*/ - fileDesc("CiRmbHl0ZWlkbDIvd29ya2Zsb3cvcnVuX3NlcnZpY2UucHJvdG8SEmZseXRlaWRsMi53b3JrZmxvdyKQBAoQQ3JlYXRlUnVuUmVxdWVzdBIxCgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAYgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYAiABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgBEi0KCXRhc2tfc3BlYxgDIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tTcGVjSAESNQoMdHJpZ2dlcl9uYW1lGAcgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgBEigKBmlucHV0cxgEIAEoCzIWLmZseXRlaWRsMi50YXNrLklucHV0c0gCEkQKFG9mZmxvYWRlZF9pbnB1dF9kYXRhGAkgASgLMiQuZmx5dGVpZGwyLmNvbW1vbi5PZmZsb2FkZWRJbnB1dERhdGFIAhIpCghydW5fc3BlYxgFIAEoCzIXLmZseXRlaWRsMi50YXNrLlJ1blNwZWMSLQoGc291cmNlGAggASgOMh0uZmx5dGVpZGwyLndvcmtmbG93LlJ1blNvdXJjZUILCgJpZBIFukgCCAFCDQoEdGFzaxIFukgCCAFCDwoNaW5wdXRfd3JhcHBlciI5ChFDcmVhdGVSdW5SZXNwb25zZRIkCgNydW4YASABKAsyFy5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuImoKD0Fib3J0UnVuUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARITCgZyZWFzb24YAiABKAlIAIgBAUIJCgdfcmVhc29uIhIKEEFib3J0UnVuUmVzcG9uc2UiTwoUR2V0UnVuRGV0YWlsc1JlcXVlc3QSNwoGcnVuX2lkGAEgASgLMh8uZmx5dGVpZGwyLmNvbW1vbi5SdW5JZGVudGlmaWVyQga6SAPIAQEiSAoVR2V0UnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJRChZXYXRjaFJ1bkRldGFpbHNSZXF1ZXN0EjcKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIkoKF1dhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJYChdHZXRBY3Rpb25EZXRhaWxzUmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBASJOChhHZXRBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIloKGVdhdGNoQWN0aW9uRGV0YWlsc1JlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQEiUAoaV2F0Y2hBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIlUKFEdldEFjdGlvbkRhdGFSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBImkKFUdldEFjdGlvbkRhdGFSZXNwb25zZRImCgZpbnB1dHMYASABKAsyFi5mbHl0ZWlkbDIudGFzay5JbnB1dHMSKAoHb3V0cHV0cxgCIAEoCzIXLmZseXRlaWRsMi50YXNrLk91dHB1dHMiWQoYR2V0QWN0aW9uRGF0YVVSSXNSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBIkQKGUdldEFjdGlvbkRhdGFVUklzUmVzcG9uc2USEgoKaW5wdXRzX3VyaRgBIAEoCRITCgtvdXRwdXRzX3VyaRgCIAEoCSLMAgoPTGlzdFJ1bnNSZXF1ZXN0Ei4KB3JlcXVlc3QYASABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0EhYKA29yZxgCIAEoCUIHukgEcgIQAUgAEjkKCnByb2plY3RfaWQYBCABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASNQoMdHJpZ2dlcl9uYW1lGAYgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgAEi0KCXRhc2tfbmFtZRgHIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tOYW1lSAASMQoHdGFza19pZBgIIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySABCEQoIc2NvcGVfYnkSBbpIAggBSgQIAxAESgQIBRAGIkgKEExpc3RSdW5zUmVzcG9uc2USJQoEcnVucxgBIAMoCzIXLmZseXRlaWRsMi53b3JrZmxvdy5SdW4SDQoFdG9rZW4YAiABKAki5AEKEFdhdGNoUnVuc1JlcXVlc3QSFgoDb3JnGAIgASgJQge6SARyAhABSAASOQoKY2x1c3Rlcl9pZBgDIAEoCzIjLmZseXRlaWRsMi5jb21tb24uQ2x1c3RlcklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAQgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYBSABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgAQg8KBnRhcmdldBIFukgCCAEiOgoRV2F0Y2hSdW5zUmVzcG9uc2USJQoEcnVucxgBIAMoCzIXLmZseXRlaWRsMi53b3JrZmxvdy5SdW4ifQoSTGlzdEFjdGlvbnNSZXF1ZXN0Ei4KB3JlcXVlc3QYASABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0EjcKBnJ1bl9pZBgCIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIlEKE0xpc3RBY3Rpb25zUmVzcG9uc2USKwoHYWN0aW9ucxgBIAMoCzIaLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb24SDQoFdG9rZW4YAiABKAkieAoTV2F0Y2hBY3Rpb25zUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARIoCgZmaWx0ZXIYAiADKAsyGC5mbHl0ZWlkbDIuY29tbW9uLkZpbHRlciJUChRXYXRjaEFjdGlvbnNSZXNwb25zZRI8ChBlbnJpY2hlZF9hY3Rpb25zGAEgAygLMiIuZmx5dGVpZGwyLndvcmtmbG93LkVucmljaGVkQWN0aW9uIm0KGVdhdGNoQ2x1c3RlckV2ZW50c1JlcXVlc3QSNgoCaWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBARIYCgdhdHRlbXB0GAIgASgNQge6SAQqAiAAIlYKGldhdGNoQ2x1c3RlckV2ZW50c1Jlc3BvbnNlEjgKDmNsdXN0ZXJfZXZlbnRzGAEgAygLMiAuZmx5dGVpZGwyLndvcmtmbG93LkNsdXN0ZXJFdmVudCJjChJBYm9ydEFjdGlvblJlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQESDgoGcmVhc29uGAIgASgJIhUKE0Fib3J0QWN0aW9uUmVzcG9uc2UinwMKEldhdGNoR3JvdXBzUmVxdWVzdBI5Cgpwcm9qZWN0X2lkGAEgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjYKCnN0YXJ0X2RhdGUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESLAoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KB3JlcXVlc3QYBCABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0ElAKEWtub3duX3NvcnRfZmllbGRzGAUgAygLMjUuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoR3JvdXBzUmVxdWVzdC5Lbm93blNvcnRGaWVsZBpTCg5Lbm93blNvcnRGaWVsZBI2CgpjcmVhdGVkX2F0GAEgASgOMiAuZmx5dGVpZGwyLmNvbW1vbi5Tb3J0LkRpcmVjdGlvbkgAQgkKB3NvcnRfYnlCEQoIc2NvcGVfYnkSBbpIAggBIlsKE1dhdGNoR3JvdXBzUmVzcG9uc2USMgoLdGFza19ncm91cHMYASADKAsyHS5mbHl0ZWlkbDIud29ya2Zsb3cuVGFza0dyb3VwEhAKCHNlbnRpbmVsGAIgASgIMrMMCgpSdW5TZXJ2aWNlEloKCUNyZWF0ZVJ1bhIkLmZseXRlaWRsMi53b3JrZmxvdy5DcmVhdGVSdW5SZXF1ZXN0GiUuZmx5dGVpZGwyLndvcmtmbG93LkNyZWF0ZVJ1blJlc3BvbnNlIgASVwoIQWJvcnRSdW4SIy5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRSdW5SZXF1ZXN0GiQuZmx5dGVpZGwyLndvcmtmbG93LkFib3J0UnVuUmVzcG9uc2UiABJpCg1HZXRSdW5EZXRhaWxzEiguZmx5dGVpZGwyLndvcmtmbG93LkdldFJ1bkRldGFpbHNSZXF1ZXN0GikuZmx5dGVpZGwyLndvcmtmbG93LkdldFJ1bkRldGFpbHNSZXNwb25zZSIDkAIBEm4KD1dhdGNoUnVuRGV0YWlscxIqLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaFJ1bkRldGFpbHNSZXF1ZXN0GisuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlIgAwARJyChBHZXRBY3Rpb25EZXRhaWxzEisuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRldGFpbHNSZXF1ZXN0GiwuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRldGFpbHNSZXNwb25zZSIDkAIBEncKEldhdGNoQWN0aW9uRGV0YWlscxItLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEFjdGlvbkRldGFpbHNSZXF1ZXN0Gi4uZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uRGV0YWlsc1Jlc3BvbnNlIgAwARJsCg1HZXRBY3Rpb25EYXRhEiguZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRhdGFSZXF1ZXN0GikuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRhdGFSZXNwb25zZSIGiAIBkAIBEloKCExpc3RSdW5zEiMuZmx5dGVpZGwyLndvcmtmbG93Lkxpc3RSdW5zUmVxdWVzdBokLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0UnVuc1Jlc3BvbnNlIgOQAgESXAoJV2F0Y2hSdW5zEiQuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuc1JlcXVlc3QaJS5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hSdW5zUmVzcG9uc2UiADABEmMKC0xpc3RBY3Rpb25zEiYuZmx5dGVpZGwyLndvcmtmbG93Lkxpc3RBY3Rpb25zUmVxdWVzdBonLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0QWN0aW9uc1Jlc3BvbnNlIgOQAgESZQoMV2F0Y2hBY3Rpb25zEicuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uc1JlcXVlc3QaKC5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hBY3Rpb25zUmVzcG9uc2UiADABEncKEldhdGNoQ2x1c3RlckV2ZW50cxItLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaENsdXN0ZXJFdmVudHNSZXF1ZXN0Gi4uZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQ2x1c3RlckV2ZW50c1Jlc3BvbnNlIgAwARJgCgtBYm9ydEFjdGlvbhImLmZseXRlaWRsMi53b3JrZmxvdy5BYm9ydEFjdGlvblJlcXVlc3QaJy5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRBY3Rpb25SZXNwb25zZSIAEmIKC1dhdGNoR3JvdXBzEiYuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoR3JvdXBzUmVxdWVzdBonLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEdyb3Vwc1Jlc3BvbnNlIgAwARJ1ChFHZXRBY3Rpb25EYXRhVVJJcxIsLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EYXRhVVJJc1JlcXVlc3QaLS5mbHl0ZWlkbDIud29ya2Zsb3cuR2V0QWN0aW9uRGF0YVVSSXNSZXNwb25zZSIDkAIBQswBChZjb20uZmx5dGVpZGwyLndvcmtmbG93Qg9SdW5TZXJ2aWNlUHJvdG9IAlABWjZnaXRodWIuY29tL2ZseXRlb3JnL2ZseXRlL3YyL2dlbi9nby9mbHl0ZWlkbDIvd29ya2Zsb3eiAgNGV1iqAhJGbHl0ZWlkbDIuV29ya2Zsb3fKAhJGbHl0ZWlkbDJcV29ya2Zsb3fiAh5GbHl0ZWlkbDJcV29ya2Zsb3dcR1BCTWV0YWRhdGHqAhNGbHl0ZWlkbDI6OldvcmtmbG93YgZwcm90bzM", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_common_list, file_flyteidl2_common_run, file_flyteidl2_task_common, file_flyteidl2_task_run, file_flyteidl2_task_task_definition, file_flyteidl2_workflow_run_definition, file_google_protobuf_timestamp]); + fileDesc("CiRmbHl0ZWlkbDIvd29ya2Zsb3cvcnVuX3NlcnZpY2UucHJvdG8SEmZseXRlaWRsMi53b3JrZmxvdyKQBAoQQ3JlYXRlUnVuUmVxdWVzdBIxCgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAYgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYAiABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgBEi0KCXRhc2tfc3BlYxgDIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tTcGVjSAESNQoMdHJpZ2dlcl9uYW1lGAcgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgBEigKBmlucHV0cxgEIAEoCzIWLmZseXRlaWRsMi50YXNrLklucHV0c0gCEkQKFG9mZmxvYWRlZF9pbnB1dF9kYXRhGAkgASgLMiQuZmx5dGVpZGwyLmNvbW1vbi5PZmZsb2FkZWRJbnB1dERhdGFIAhIpCghydW5fc3BlYxgFIAEoCzIXLmZseXRlaWRsMi50YXNrLlJ1blNwZWMSLQoGc291cmNlGAggASgOMh0uZmx5dGVpZGwyLndvcmtmbG93LlJ1blNvdXJjZUILCgJpZBIFukgCCAFCDQoEdGFzaxIFukgCCAFCDwoNaW5wdXRfd3JhcHBlciI5ChFDcmVhdGVSdW5SZXNwb25zZRIkCgNydW4YASABKAsyFy5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuImoKD0Fib3J0UnVuUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARITCgZyZWFzb24YAiABKAlIAIgBAUIJCgdfcmVhc29uIhIKEEFib3J0UnVuUmVzcG9uc2UiTwoUR2V0UnVuRGV0YWlsc1JlcXVlc3QSNwoGcnVuX2lkGAEgASgLMh8uZmx5dGVpZGwyLmNvbW1vbi5SdW5JZGVudGlmaWVyQga6SAPIAQEiSAoVR2V0UnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJRChZXYXRjaFJ1bkRldGFpbHNSZXF1ZXN0EjcKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIkoKF1dhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJYChdHZXRBY3Rpb25EZXRhaWxzUmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBASJOChhHZXRBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIloKGVdhdGNoQWN0aW9uRGV0YWlsc1JlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQEiUAoaV2F0Y2hBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIlUKFEdldEFjdGlvbkRhdGFSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBImkKFUdldEFjdGlvbkRhdGFSZXNwb25zZRImCgZpbnB1dHMYASABKAsyFi5mbHl0ZWlkbDIudGFzay5JbnB1dHMSKAoHb3V0cHV0cxgCIAEoCzIXLmZseXRlaWRsMi50YXNrLk91dHB1dHMiWQoYR2V0QWN0aW9uRGF0YVVSSXNSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBIkQKGUdldEFjdGlvbkRhdGFVUklzUmVzcG9uc2USEgoKaW5wdXRzX3VyaRgBIAEoCRITCgtvdXRwdXRzX3VyaRgCIAEoCSJ1ChpHZXRBY3Rpb25Mb2dDb250ZXh0UmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBARIYCgdhdHRlbXB0GAIgASgNQge6SAQqAiAAIl8KG0dldEFjdGlvbkxvZ0NvbnRleHRSZXNwb25zZRIvCgtsb2dfY29udGV4dBgBIAEoCzIaLmZseXRlaWRsMi5jb3JlLkxvZ0NvbnRleHQSDwoHY2x1c3RlchgCIAEoCSLMAgoPTGlzdFJ1bnNSZXF1ZXN0Ei4KB3JlcXVlc3QYASABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0EhYKA29yZxgCIAEoCUIHukgEcgIQAUgAEjkKCnByb2plY3RfaWQYBCABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASNQoMdHJpZ2dlcl9uYW1lGAYgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgAEi0KCXRhc2tfbmFtZRgHIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tOYW1lSAASMQoHdGFza19pZBgIIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySABCEQoIc2NvcGVfYnkSBbpIAggBSgQIAxAESgQIBRAGIkgKEExpc3RSdW5zUmVzcG9uc2USJQoEcnVucxgBIAMoCzIXLmZseXRlaWRsMi53b3JrZmxvdy5SdW4SDQoFdG9rZW4YAiABKAki5AEKEFdhdGNoUnVuc1JlcXVlc3QSFgoDb3JnGAIgASgJQge6SARyAhABSAASOQoKY2x1c3Rlcl9pZBgDIAEoCzIjLmZseXRlaWRsMi5jb21tb24uQ2x1c3RlcklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAQgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYBSABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgAQg8KBnRhcmdldBIFukgCCAEiOgoRV2F0Y2hSdW5zUmVzcG9uc2USJQoEcnVucxgBIAMoCzIXLmZseXRlaWRsMi53b3JrZmxvdy5SdW4ifQoSTGlzdEFjdGlvbnNSZXF1ZXN0Ei4KB3JlcXVlc3QYASABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0EjcKBnJ1bl9pZBgCIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIlEKE0xpc3RBY3Rpb25zUmVzcG9uc2USKwoHYWN0aW9ucxgBIAMoCzIaLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb24SDQoFdG9rZW4YAiABKAkieAoTV2F0Y2hBY3Rpb25zUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARIoCgZmaWx0ZXIYAiADKAsyGC5mbHl0ZWlkbDIuY29tbW9uLkZpbHRlciJUChRXYXRjaEFjdGlvbnNSZXNwb25zZRI8ChBlbnJpY2hlZF9hY3Rpb25zGAEgAygLMiIuZmx5dGVpZGwyLndvcmtmbG93LkVucmljaGVkQWN0aW9uIm0KGVdhdGNoQ2x1c3RlckV2ZW50c1JlcXVlc3QSNgoCaWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBARIYCgdhdHRlbXB0GAIgASgNQge6SAQqAiAAIlYKGldhdGNoQ2x1c3RlckV2ZW50c1Jlc3BvbnNlEjgKDmNsdXN0ZXJfZXZlbnRzGAEgAygLMiAuZmx5dGVpZGwyLndvcmtmbG93LkNsdXN0ZXJFdmVudCJjChJBYm9ydEFjdGlvblJlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQESDgoGcmVhc29uGAIgASgJIhUKE0Fib3J0QWN0aW9uUmVzcG9uc2UinwMKEldhdGNoR3JvdXBzUmVxdWVzdBI5Cgpwcm9qZWN0X2lkGAEgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjYKCnN0YXJ0X2RhdGUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESLAoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KB3JlcXVlc3QYBCABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0ElAKEWtub3duX3NvcnRfZmllbGRzGAUgAygLMjUuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoR3JvdXBzUmVxdWVzdC5Lbm93blNvcnRGaWVsZBpTCg5Lbm93blNvcnRGaWVsZBI2CgpjcmVhdGVkX2F0GAEgASgOMiAuZmx5dGVpZGwyLmNvbW1vbi5Tb3J0LkRpcmVjdGlvbkgAQgkKB3NvcnRfYnlCEQoIc2NvcGVfYnkSBbpIAggBIlsKE1dhdGNoR3JvdXBzUmVzcG9uc2USMgoLdGFza19ncm91cHMYASADKAsyHS5mbHl0ZWlkbDIud29ya2Zsb3cuVGFza0dyb3VwEhAKCHNlbnRpbmVsGAIgASgIMrANCgpSdW5TZXJ2aWNlEloKCUNyZWF0ZVJ1bhIkLmZseXRlaWRsMi53b3JrZmxvdy5DcmVhdGVSdW5SZXF1ZXN0GiUuZmx5dGVpZGwyLndvcmtmbG93LkNyZWF0ZVJ1blJlc3BvbnNlIgASVwoIQWJvcnRSdW4SIy5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRSdW5SZXF1ZXN0GiQuZmx5dGVpZGwyLndvcmtmbG93LkFib3J0UnVuUmVzcG9uc2UiABJpCg1HZXRSdW5EZXRhaWxzEiguZmx5dGVpZGwyLndvcmtmbG93LkdldFJ1bkRldGFpbHNSZXF1ZXN0GikuZmx5dGVpZGwyLndvcmtmbG93LkdldFJ1bkRldGFpbHNSZXNwb25zZSIDkAIBEm4KD1dhdGNoUnVuRGV0YWlscxIqLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaFJ1bkRldGFpbHNSZXF1ZXN0GisuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlIgAwARJyChBHZXRBY3Rpb25EZXRhaWxzEisuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRldGFpbHNSZXF1ZXN0GiwuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRldGFpbHNSZXNwb25zZSIDkAIBEncKEldhdGNoQWN0aW9uRGV0YWlscxItLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEFjdGlvbkRldGFpbHNSZXF1ZXN0Gi4uZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uRGV0YWlsc1Jlc3BvbnNlIgAwARJsCg1HZXRBY3Rpb25EYXRhEiguZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRhdGFSZXF1ZXN0GikuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRhdGFSZXNwb25zZSIGiAIBkAIBEloKCExpc3RSdW5zEiMuZmx5dGVpZGwyLndvcmtmbG93Lkxpc3RSdW5zUmVxdWVzdBokLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0UnVuc1Jlc3BvbnNlIgOQAgESXAoJV2F0Y2hSdW5zEiQuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuc1JlcXVlc3QaJS5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hSdW5zUmVzcG9uc2UiADABEmMKC0xpc3RBY3Rpb25zEiYuZmx5dGVpZGwyLndvcmtmbG93Lkxpc3RBY3Rpb25zUmVxdWVzdBonLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0QWN0aW9uc1Jlc3BvbnNlIgOQAgESZQoMV2F0Y2hBY3Rpb25zEicuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uc1JlcXVlc3QaKC5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hBY3Rpb25zUmVzcG9uc2UiADABEncKEldhdGNoQ2x1c3RlckV2ZW50cxItLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaENsdXN0ZXJFdmVudHNSZXF1ZXN0Gi4uZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQ2x1c3RlckV2ZW50c1Jlc3BvbnNlIgAwARJgCgtBYm9ydEFjdGlvbhImLmZseXRlaWRsMi53b3JrZmxvdy5BYm9ydEFjdGlvblJlcXVlc3QaJy5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRBY3Rpb25SZXNwb25zZSIAEmIKC1dhdGNoR3JvdXBzEiYuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoR3JvdXBzUmVxdWVzdBonLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEdyb3Vwc1Jlc3BvbnNlIgAwARJ1ChFHZXRBY3Rpb25EYXRhVVJJcxIsLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EYXRhVVJJc1JlcXVlc3QaLS5mbHl0ZWlkbDIud29ya2Zsb3cuR2V0QWN0aW9uRGF0YVVSSXNSZXNwb25zZSIDkAIBEnsKE0dldEFjdGlvbkxvZ0NvbnRleHQSLi5mbHl0ZWlkbDIud29ya2Zsb3cuR2V0QWN0aW9uTG9nQ29udGV4dFJlcXVlc3QaLy5mbHl0ZWlkbDIud29ya2Zsb3cuR2V0QWN0aW9uTG9nQ29udGV4dFJlc3BvbnNlIgOQAgFCzAEKFmNvbS5mbHl0ZWlkbDIud29ya2Zsb3dCD1J1blNlcnZpY2VQcm90b0gCUAFaNmdpdGh1Yi5jb20vZmx5dGVvcmcvZmx5dGUvdjIvZ2VuL2dvL2ZseXRlaWRsMi93b3JrZmxvd6ICA0ZXWKoCEkZseXRlaWRsMi5Xb3JrZmxvd8oCEkZseXRlaWRsMlxXb3JrZmxvd+ICHkZseXRlaWRsMlxXb3JrZmxvd1xHUEJNZXRhZGF0YeoCE0ZseXRlaWRsMjo6V29ya2Zsb3diBnByb3RvMw", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_common_list, file_flyteidl2_common_run, file_flyteidl2_core_execution, file_flyteidl2_task_common, file_flyteidl2_task_run, file_flyteidl2_task_task_definition, file_flyteidl2_workflow_run_definition, file_google_protobuf_timestamp]); /** * Request message for creating a run. @@ -456,6 +458,62 @@ export type GetActionDataURIsResponse = Message<"flyteidl2.workflow.GetActionDat export const GetActionDataURIsResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_flyteidl2_workflow_run_service, 15); +/** + * Request message for getting action log context. + * + * @generated from message flyteidl2.workflow.GetActionLogContextRequest + */ +export type GetActionLogContextRequest = Message<"flyteidl2.workflow.GetActionLogContextRequest"> & { + /** + * Action to query. + * + * @generated from field: flyteidl2.common.ActionIdentifier action_id = 1; + */ + actionId?: ActionIdentifier; + + /** + * The attempt number. + * + * @generated from field: uint32 attempt = 2; + */ + attempt: number; +}; + +/** + * Describes the message flyteidl2.workflow.GetActionLogContextRequest. + * Use `create(GetActionLogContextRequestSchema)` to create a new message. + */ +export const GetActionLogContextRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_workflow_run_service, 16); + +/** + * Response message for getting action log context. + * + * @generated from message flyteidl2.workflow.GetActionLogContextResponse + */ +export type GetActionLogContextResponse = Message<"flyteidl2.workflow.GetActionLogContextResponse"> & { + /** + * The logging context for the action attempt. + * + * @generated from field: flyteidl2.core.LogContext log_context = 1; + */ + logContext?: LogContext; + + /** + * The cluster where the action attempt is running. + * + * @generated from field: string cluster = 2; + */ + cluster: string; +}; + +/** + * Describes the message flyteidl2.workflow.GetActionLogContextResponse. + * Use `create(GetActionLogContextResponseSchema)` to create a new message. + */ +export const GetActionLogContextResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_workflow_run_service, 17); + /** * Request message for listing runs. * @@ -520,7 +578,7 @@ export type ListRunsRequest = Message<"flyteidl2.workflow.ListRunsRequest"> & { * Use `create(ListRunsRequestSchema)` to create a new message. */ export const ListRunsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 16); + messageDesc(file_flyteidl2_workflow_run_service, 18); /** * Response message for listing runs. @@ -548,7 +606,7 @@ export type ListRunsResponse = Message<"flyteidl2.workflow.ListRunsResponse"> & * Use `create(ListRunsResponseSchema)` to create a new message. */ export const ListRunsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 17); + messageDesc(file_flyteidl2_workflow_run_service, 19); /** * Request message for watching runs. @@ -599,7 +657,7 @@ export type WatchRunsRequest = Message<"flyteidl2.workflow.WatchRunsRequest"> & * Use `create(WatchRunsRequestSchema)` to create a new message. */ export const WatchRunsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 18); + messageDesc(file_flyteidl2_workflow_run_service, 20); /** * Response message for watching runs. @@ -620,7 +678,7 @@ export type WatchRunsResponse = Message<"flyteidl2.workflow.WatchRunsResponse"> * Use `create(WatchRunsResponseSchema)` to create a new message. */ export const WatchRunsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 19); + messageDesc(file_flyteidl2_workflow_run_service, 21); /** * Request message for listing actions. @@ -648,7 +706,7 @@ export type ListActionsRequest = Message<"flyteidl2.workflow.ListActionsRequest" * Use `create(ListActionsRequestSchema)` to create a new message. */ export const ListActionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 20); + messageDesc(file_flyteidl2_workflow_run_service, 22); /** * Response message for listing actions. @@ -676,7 +734,7 @@ export type ListActionsResponse = Message<"flyteidl2.workflow.ListActionsRespons * Use `create(ListActionsResponseSchema)` to create a new message. */ export const ListActionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 21); + messageDesc(file_flyteidl2_workflow_run_service, 23); /** * Request message for watching actions. @@ -707,7 +765,7 @@ export type WatchActionsRequest = Message<"flyteidl2.workflow.WatchActionsReques * Use `create(WatchActionsRequestSchema)` to create a new message. */ export const WatchActionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 22); + messageDesc(file_flyteidl2_workflow_run_service, 24); /** * Response message for watching actions, comes with enriched action metadata. @@ -728,7 +786,7 @@ export type WatchActionsResponse = Message<"flyteidl2.workflow.WatchActionsRespo * Use `create(WatchActionsResponseSchema)` to create a new message. */ export const WatchActionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 23); + messageDesc(file_flyteidl2_workflow_run_service, 25); /** * @generated from message flyteidl2.workflow.WatchClusterEventsRequest @@ -750,7 +808,7 @@ export type WatchClusterEventsRequest = Message<"flyteidl2.workflow.WatchCluster * Use `create(WatchClusterEventsRequestSchema)` to create a new message. */ export const WatchClusterEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 24); + messageDesc(file_flyteidl2_workflow_run_service, 26); /** * @generated from message flyteidl2.workflow.WatchClusterEventsResponse @@ -767,7 +825,7 @@ export type WatchClusterEventsResponse = Message<"flyteidl2.workflow.WatchCluste * Use `create(WatchClusterEventsResponseSchema)` to create a new message. */ export const WatchClusterEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 25); + messageDesc(file_flyteidl2_workflow_run_service, 27); /** * @generated from message flyteidl2.workflow.AbortActionRequest @@ -793,7 +851,7 @@ export type AbortActionRequest = Message<"flyteidl2.workflow.AbortActionRequest" * Use `create(AbortActionRequestSchema)` to create a new message. */ export const AbortActionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 26); + messageDesc(file_flyteidl2_workflow_run_service, 28); /** * @generated from message flyteidl2.workflow.AbortActionResponse @@ -806,7 +864,7 @@ export type AbortActionResponse = Message<"flyteidl2.workflow.AbortActionRespons * Use `create(AbortActionResponseSchema)` to create a new message. */ export const AbortActionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 27); + messageDesc(file_flyteidl2_workflow_run_service, 29); /** * @generated from message flyteidl2.workflow.WatchGroupsRequest @@ -861,7 +919,7 @@ export type WatchGroupsRequest = Message<"flyteidl2.workflow.WatchGroupsRequest" * Use `create(WatchGroupsRequestSchema)` to create a new message. */ export const WatchGroupsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 28); + messageDesc(file_flyteidl2_workflow_run_service, 30); /** * @generated from message flyteidl2.workflow.WatchGroupsRequest.KnownSortField @@ -884,7 +942,7 @@ export type WatchGroupsRequest_KnownSortField = Message<"flyteidl2.workflow.Watc * Use `create(WatchGroupsRequest_KnownSortFieldSchema)` to create a new message. */ export const WatchGroupsRequest_KnownSortFieldSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 28, 0); + messageDesc(file_flyteidl2_workflow_run_service, 30, 0); /** * Response message for watching task groups. @@ -914,7 +972,7 @@ export type WatchGroupsResponse = Message<"flyteidl2.workflow.WatchGroupsRespons * Use `create(WatchGroupsResponseSchema)` to create a new message. */ export const WatchGroupsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 29); + messageDesc(file_flyteidl2_workflow_run_service, 31); /** * RunService provides an interface for managing runs. @@ -1075,6 +1133,16 @@ export const RunService: GenService<{ input: typeof GetActionDataURIsRequestSchema; output: typeof GetActionDataURIsResponseSchema; }, + /** + * Get the logging context (pod name, namespace, cluster) for an action attempt. + * + * @generated from rpc flyteidl2.workflow.RunService.GetActionLogContext + */ + getActionLogContext: { + methodKind: "unary"; + input: typeof GetActionLogContextRequestSchema; + output: typeof GetActionLogContextResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_flyteidl2_workflow_run_service, 0); diff --git a/runs/service/run_service.go b/runs/service/run_service.go index 8b11287575..abcbabeada 100644 --- a/runs/service/run_service.go +++ b/runs/service/run_service.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "encoding/json" + "errors" "fmt" "sort" "strings" @@ -948,6 +949,20 @@ func (s *RunService) GetActionDataURIs( return connect.NewResponse(resp), nil } +func (s *RunService) GetActionLogContext( + ctx context.Context, + req *connect.Request[workflow.GetActionLogContextRequest], +) (*connect.Response[workflow.GetActionLogContextResponse], error) { + logContext, cluster, err := getLogContextAndClusterForAttempt(ctx, s.repo, req.Msg.GetActionId(), req.Msg.GetAttempt()) + if err != nil { + return nil, err + } + return connect.NewResponse(&workflow.GetActionLogContextResponse{ + LogContext: logContext, + Cluster: cluster, + }), nil +} + // AbortAction aborts a specific action func (s *RunService) AbortAction( ctx context.Context, @@ -1379,6 +1394,28 @@ func (s *RunService) actionModelToDetails(action *models.Action, actionID *commo } } +// getLogContextAndClusterForAttempt is like getLogContextForAttempt but also returns the cluster name. +func getLogContextAndClusterForAttempt(ctx context.Context, repo interfaces.Repository, actionID *common.ActionIdentifier, attempt uint32) (*core.LogContext, string, error) { + m, err := repo.ActionRepo().GetLatestEventByAttempt(ctx, actionID, attempt) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return nil, "", connect.NewError(connect.CodeNotFound, fmt.Errorf("no event found for action %v attempt %d", actionID, attempt)) + } + return nil, "", connect.NewError(connect.CodeInternal, fmt.Errorf("failed to get event for action %v attempt %d: %w", actionID, attempt, err)) + } + + event, err := m.ToActionEvent() + if err != nil { + return nil, "", connect.NewError(connect.CodeInternal, fmt.Errorf("failed to deserialize event: %w", err)) + } + + if event.GetLogContext() == nil { + return nil, "", connect.NewError(connect.CodeNotFound, fmt.Errorf("no log context found for action %v attempt %d", actionID, attempt)) + } + + return event.GetLogContext(), event.GetCluster(), nil +} + func setActionDetailsSpecFromActionSpec(details *workflow.ActionDetails, actionSpecBytes []byte) { specMsg := extractActionSpec(actionSpecBytes) if specMsg == nil { @@ -1934,7 +1971,6 @@ func extractShortName(name string) string { return name } - func fetchTaskSpecByID(ctx context.Context, taskRepo interfaces.TaskRepo, taskID *task.TaskIdentifier) (*task.TaskSpec, error) { taskModel, err := taskRepo.GetTask(ctx, transformers.ToTaskKey(taskID)) if err != nil { diff --git a/runs/service/run_service_test.go b/runs/service/run_service_test.go index 17893d3b95..624b8b15a9 100644 --- a/runs/service/run_service_test.go +++ b/runs/service/run_service_test.go @@ -1692,3 +1692,109 @@ func TestGetActionDataURIs(t *testing.T) { }) } +func TestGetActionLogContext(t *testing.T) { + actionID := &common.ActionIdentifier{ + Run: &common.RunIdentifier{ + Org: "test-org", Project: "test-project", Domain: "test-domain", Name: "rtest12345", + }, + Name: "a0", + } + + logContext := &core.LogContext{ + PrimaryPodName: "my-pod", + Pods: []*core.PodLogContext{ + {PodName: "my-pod", Namespace: "ns"}, + }, + } + + mustMarshalEvent := func(event *workflow.ActionEvent) []byte { + b, err := proto.Marshal(event) + require.NoError(t, err) + return b + } + + t.Run("success returns log context and cluster", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetLatestEventByAttempt", mock.Anything, matchActionID(actionID), uint32(1)).Return(&models.ActionEvent{ + Info: mustMarshalEvent(&workflow.ActionEvent{ + Id: actionID, + Attempt: 1, + LogContext: logContext, + Cluster: "c1", + }), + }, nil) + + resp, err := svc.GetActionLogContext(context.Background(), connect.NewRequest(&workflow.GetActionLogContextRequest{ + ActionId: actionID, + Attempt: 1, + })) + + require.NoError(t, err) + assert.Equal(t, "c1", resp.Msg.GetCluster()) + assert.Equal(t, "my-pod", resp.Msg.GetLogContext().GetPrimaryPodName()) + }) + + t.Run("no event found returns NotFound", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetLatestEventByAttempt", mock.Anything, matchActionID(actionID), uint32(1)).Return(nil, sql.ErrNoRows) + + resp, err := svc.GetActionLogContext(context.Background(), connect.NewRequest(&workflow.GetActionLogContextRequest{ + ActionId: actionID, + Attempt: 1, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }) + + t.Run("repo error returns Internal", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetLatestEventByAttempt", mock.Anything, matchActionID(actionID), uint32(1)).Return(nil, errors.New("db blew up")) + + resp, err := svc.GetActionLogContext(context.Background(), connect.NewRequest(&workflow.GetActionLogContextRequest{ + ActionId: actionID, + Attempt: 1, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeInternal, connect.CodeOf(err)) + }) + + t.Run("event without log context returns NotFound", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetLatestEventByAttempt", mock.Anything, matchActionID(actionID), uint32(1)).Return(&models.ActionEvent{ + Info: mustMarshalEvent(&workflow.ActionEvent{ + Id: actionID, + Attempt: 1, + Cluster: "c1", + }), + }, nil) + + resp, err := svc.GetActionLogContext(context.Background(), connect.NewRequest(&workflow.GetActionLogContextRequest{ + ActionId: actionID, + Attempt: 1, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }) + + t.Run("undeserializable event returns Internal", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetLatestEventByAttempt", mock.Anything, matchActionID(actionID), uint32(1)).Return(&models.ActionEvent{ + Info: []byte("not-a-proto"), + }, nil) + + resp, err := svc.GetActionLogContext(context.Background(), connect.NewRequest(&workflow.GetActionLogContextRequest{ + ActionId: actionID, + Attempt: 1, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeInternal, connect.CodeOf(err)) + }) +}